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

Buna, in c++ cum pot cauta un prefix? De ex

5

pre

preadmitere

eprezicere

pre

prezentare

practica

Am aceste date de intrare la output o sa afiseze 2, pentru ca doua cuvinte se potrivesc primul cuvant.

Programul va citi de pe prima linie numărul natural n, reprezentând numărul de cuvinte din listă, de pe linia următoare șirul de caractere care reprezintă începutul expresiei regulare, conform cerinței de mai sus, iar de pe următoarele n linii câte un singur cuvânt format doar din litere mici ale alfabetului englez.


Stiu sa parcurg sirul pentru a afla un prefix dar nu prea imi iese cand trb sa le pun pe mai multe linii:)), o idee?


Madalin77: e de pe pbinfo problema?
Madalin77: daca da, poti spune numarul

Răspunsuri la întrebare

Răspuns de Madalin77
2

Răspuns:

#include<iostream>

#include<fstream>

#include<string.h>

using namespace std;

ifstream f("cuvinte.in");

int main()

{

   int n,cnt = 0;

   f>>n;

   char prefix[10];

   f>>prefix;

   for(int i = 0 ; i<n;i++){

       char aux[101];

       f>>aux;

       if(strncmp(aux,prefix,strlen(prefix)) == 0 && strlen(prefix)!=strlen(aux)){

           cnt++;

       }

   }

   cout<<cnt;

   return 0;

}

Explicație:


LegendDow: Ms, fix cand ai dat tu reusisem sa o fac :)), auzi pentru sufix, as putea face in acelas mod?
Madalin77: la sufix te poti deplasa pe cuvantul care vrei sa cauti sufixul,adica strcmp(str+strlen(str)-strlen(sufix),sufix) == 0
LegendDow: Deci te referi la str ca la acle auxiliar?
LegendDow: Acel*
Madalin77: da
LegendDow: Da, am reusit, multumesc.
LegendDow: if(strncmp(aux + strlen(aux) - strlen(sufix), sufix, strlen(sufix)) == 0 && strlen(sufix) != strlen(aux)) e ok asa, nu?
Madalin77: e ok, dar daca te-ai deplasat pana la ultimele strlen(sufix) pozitii, nu mai ai nevoie de strncmp
LegendDow: Adica sa nu mai folosesc strncmp? Pai deplasarea in for o fac normal, doar conditia am schimbat o
LegendDow: Vrei sa te referi sa parcurg sirul invers?
Alte întrebări interesante