Informatică, întrebare adresată de MintGum, 8 ani în urmă

Într-un text cu cel mult 100 de caractere cuvintele sunt formate numai din litere mari și mici ale alfabetului englez și sunt separate prin câte un spațiu. Scrieți un program care citește de la tastatură un text de tipul precizat, apoi un număr natural, n, n∈[1,102), şi afişează pe ecran, pe linii separate, cuvintele din text care au exact n litere. Cuvintele sunt afișate în ordinea apariției lor în text, iar dacă nu există niciun astfel de cuvânt, se afișează pe ecran mesajul nu exista.

Programul citește de la tastatură numărul textul dat, apoi numărul n.

Programul va afișa pe ecran cuvintele din text cu exact n litere, fiecare pe câte o linie.

1 ≤ n < 100

textul conține cel mult 100 de caractere; cuvintele sunt formate numai din litere mari și mici ale alfabetului englez și sunt separate prin câte un spațiu

Problema e de pe pbinfo si cu codul facut de mine nu iau decat 60 de puncte. Imi poate explica cineva de ce?

#include
#include
using namespace std;
int main()
{
char s[100];
int n, gasit = 0;
cin.get(s,100);
cin >> n;
char *tok = strtok(s," ");
while(tok)
{if(strlen(tok) == n)
{cout << tok << endl;
gasit++;
}
tok = strtok(NULL," ");
}

if(gasit == 0) cout << "nu exista";

return 0;
}


boiustef: şi dacă e de pe pbinfo ce nume are? de ce nu scrii din start?
boiustef: tr. să declari
char s[101];
MintGum: nu face vreo diferenta daca declar char s[101]; sau char s[100];
e problema #3112 Bac_Cuvinte

Răspunsuri la întrebare

Răspuns de boiustef
5

Răspuns:

#include <iostream>

#include <cstring>

using namespace std;

char s[101], *p;

int n,exista;

int main()

{

   cin.getline(s,101);

   cin >> n;

   p=strtok(s," ");

   while (p)

   {

       if (strlen(p)==n)

           { cout << p << "\n"; exista=1;}

       p=strtok(NULL, " ");

   }

   if (!exista) cout << "nu exista" << endl;

   return 0;

}

Explicație:

aproape acelasi cod, dar 100

Alte întrebări interesante