Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Adaptor usb3.1gigabit vs Adaptor ...

La multi ani @Atreides!

La multi ani @KENSINGTON!

La multi ani @burebista!
 La multi ani de Florii!

Stihl fs 70 c-e

Challengers (2024)

Care mai sunt mediile de admitere...
 Laptop cu HDD atasare memorie MMC...

Hartile google nu mai au chenarul...

Tomate in ghiveci la curte?

Idei cale de actiune recuperare g...
 Intoleranța lactoza- vegan v...

Tobe acustice insonorizare in blo...

Cine canta? Fragment din melodie...

Tablou sigurante Dacia Sandero 2012
 

Cuvinte care contin cel putin "k" vocale

- - - - -
  • Please log in to reply
3 replies to this topic

#1
popescubianca27

popescubianca27

    New Member

  • Grup: Candidate Members
  • Posts: 5
  • Înscris: 29.07.2022
Se dă un număr k și un text aflat pe mai multe linii. Să se afișeze toate cuvintele care conțin cel puțin k vocale. Considerăm că un cuvânt este o succesiune continuă de litere.
Date de intrare
De pe prima linie se va citi numărul k, iar de pe următoarele linii se va citi textul.
Date de ieșire
Pe ecran se vor afișa cuvintele care conțin cel puțin k vocale. Cuvintele vor fi afișate câte unul pe o linie
Restricții
Textul va conține maxim 260 de caractere
Exemplu
Date de intrare Date de ieșire
3
Anamaria
ia nota buna la...bacalaureat Anamaria
bacalaureat


Eu am incercat sa rezolv problema in felul urmator:
Am creat o functie ce imi returneaza "1" in cazul in care caracterul citit este o litera, 0 in sens contrar.
Intr-o structura repetitiva "while" citesc toate cuvintele dintr-un fisier text.
Am delimitat lungimea fiecarui cuvant folosind functia strlen.
Intr-un "for" iau fiecare element din cuvantul citit si verific daca este sau nu o litera.
Daca este litera, o variabila de tip flag ia valoarea 1. In cazul in care nu este o litera, variabila ia valoarea 0.
Daca este o litera, aflu daca este sau nu o vocala si contorizez numarul lor.
In caz ca nu este o litera, resetez contorul vocalelor. Daca se termina cuvantul printr-un spatiu, resetez de asemenea contorul vocalelor.
Eu doresc sa salvez in 2 variabile pozitia de inceput si sfarsit al cuvantului cautat de mine. Atunci cand gasesc un caracter non-litera, sa fac parcurgerea de la inceput pana la sfarsit al cuvantului si daca are cel putin "k" vocale, sa afisez acel cuvant. Nu reusesc sa fac delimitarea propriu zisa...am incercat cu foaia si pixul, dar pur si simplu am un blocaj de cateva zile deja la aceasta problema.

#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;
int este_litera(char s) {
if (('a' <= s && s <= 'z') || ('A' <= s && s <= 'Z')) {
    return 1;
  }
  return 0;
}

int main(){
ifstream fin("date.in");
const int LIM = 261;
const int LIMV = 11;
char vocale[LIMV] = "aeiouAEIOU";
char s[LIM];
int k;
cin >> k;
int start = 0;
int nrVocale = 0;
int finish = 0;
int contor = 0;
int cuvant = 0;
while (fin >> s) {
    int n = strlen(s);
    int am_cuvant = 0;
    for (int i = 0; i < n; ++i) {
  if (este_litera(s[i])) {
    am_cuvant = 1;
    if(contor == 0) {
    start = i;
    }
    if (strchr(vocale,s[i])){
    ++nrVocale;
    }
    cout <<s[i]; //Aici m-am verificat daca delimitez corect cuvintele, separandu-le de semnele de punctuatie "...".
  } else if (am_cuvant == 1) {
  start = 0;
  nrVocale = 0;
  am_cuvant = 0;
  contor = 0;
  cout <<"\n";
  }
    }
    cout << "\n";
    contor = 0;
    nrVocale = 0;
}
return 0;
}

#2
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,043
  • Înscris: 24.02.2006
- din ce C mai stiu eu, chestia asta te face sa sari primul caracter din text:
for (int i = 0; i < n; ++i)

pentru ca ++i incrementeaza variabila inainte de a o folosi (probabil ca vroiai sa folosesti i++)

- variabila contor nu vad sa fie setata cu 1 nicaieri (si din cauza asta o sa tot resetezi si variabila "start")

#3
darkangel2

darkangel2

    Senior Member

  • Grup: Senior Members
  • Posts: 3,379
  • Înscris: 26.01.2019

View Post_Smiley_, on 05 decembrie 2022 - 08:31, said:

pentru ca ++i incrementeaza variabila inainte de a o folosi (probabil ca vroiai sa folosesti i++)

Singura diferenta dintre "++i" si "i++" este valoarea intoarsa (ambele constructii incrementeaza valoarea variabilei); insa valoarea intoarsa de a 3-a componenta a unui ciclu "for" nu are niciun impact (este ignorata).
Deci ambele forme produc acelasi efect in acest caz...

P.S. A doua componenta a "for" ("i < n") nu foloseste valoarea intoarsa de a 3-a componenta, ci valoarea variabilei "i" dupa executia completa a componentei 3 (si ignorarea valorii intoarse de aceasta executie).
Ar fi fost o diferenta daca a doua componenta ar fi fost "++i < n" vs. "i++ < n"; pentru aceasta forma, (mai) corect era "++i < n" deoarece "asteptarea" este ca valoarea variabilei la inceputul executiei corpului "for" sa respecte conditia.

Edited by darkangel2, 05 December 2022 - 09:21.


#4
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,445
  • Înscris: 10.08.2005

Quote

Eu doresc sa salvez in 2 variabile pozitia de inceput si sfarsit al cuvantului cautat de mine. Atunci cand gasesc un caracter non-litera, sa fac parcurgerea de la inceput pana la sfarsit al cuvantului si daca are cel putin "k" vocale, sa afisez acel cuvant. Nu reusesc sa fac delimitarea propriu zisa...am incercat cu foaia si pixul, dar pur si simplu am un blocaj de cateva zile deja la aceasta problema.


citeste (propozitie)
pentru fiecare cuvant din propozitie
daca numara_vocale(cuvant) mai mare decat numar_arbitrar afiseaza cuvant


-----------------------------------
numara_vocale(cuvant)
pentru fiecare literea din cuvant
creste contor daca esteVocala

Edited by MarianG, 05 December 2022 - 11:10.


Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate