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

Un cuvânt este sufix al unui alt cuvânt dacă se obține din acesta, prin eliminarea primelor sale litere.
Scrieți un program C/C++ care citește de la tastatură două numere naturale n și k (n[2,20],
k[1,n]) și apoi n cuvinte distincte, fiecare fiind format din cel mult 20 de caractere, numai litere mici
ale alfabetului englez.
La introducerea datelor, după fiecare cuvânt se tastează Enter. Programul
afișează pe ecran, separate prin câte un spațiu, cuvintele care îl au drept sufix
pe al k-lea cuvânt citit, ca în exemplu. Dacă nu există astfel de cuvinte, se
afișează pe ecran mesajul nu exista.
Exemplu: dacă n=7, k=3 și se citesc cuvintele alăturate, pe ecran se afișează
paratirisi hiritisi (10p.)(C++)

isihast
paratirisi
isi
meremetisire
acolisitor
hiritisi
paraponisit

Răspunsuri la întrebare

Răspuns de Utilizator anonim
4

#include <iostream>

#include <string.h>

using namespace std;

int main()

{

   char cuvinte[21][20]{ '\0' };

   int n, k;

   cin >> n >> k;

   cin.ignore();

   for (int index = 1; index <= n; index++)

       cin.getline(cuvinte[index], 20);

   bool există = false;

   for (int index = 1; index <= n; index++) {

       if (index == k) continue;

       int index_prefix = strlen(cuvinte[k]) - 1;

       for (int index_aux = strlen(cuvinte[index]) - 1; index_aux >= 0 && index_prefix >= 0; index_aux--, index_prefix--)

           if (cuvinte[index][index_aux] != cuvinte[k][index_prefix])

               break;

       if (index_prefix == -1) {

           există = true;

           for (int index_aux = 0; index_aux < strlen(cuvinte[index]); index_aux++)

               cout << cuvinte[index][index_aux];

           cout << ' ';

       }

   }

   if (!există)

       cout << "nu exista";

   return 0;

}

Știu că ai mai dat de mine la o întrebare, deci hi :))


mihaelaciobanu1: nu inteleg nimic aici ,am nevoie c++
Utilizator anonim: c++ este.. :)) poți să-l copiezi și să îl bagi în codeblocks și o să vezi că face exact ce cere problema
mihaelaciobanu1: ce e cu cin.ignore()
mihaelaciobanu1: nu am intalnit asa ceva pana acum
mihaelaciobanu1: nu merge citit pur si simplu cu cin.get(cuvinte,20)
Utilizator anonim: Am folosit cin.ignore() deoarece după citirea lui "n" și a lui "k" în buffer rămâne un caracter de linie nouă și următoarea instrucțiune cin.getline() ar fi luat ca prim cuvânt acel caracter de linie nouă. Astfel, cu ajutorul lui cin.ignore() acel caracter e ignorat și programul poate funcționa cum trebuie
mihaelaciobanu1: mda tot nu o inteleg asa
Utilizator anonim: ;(
Alte întrebări interesante