Informatică, întrebare adresată de Nika1219, 9 ani în urmă

Elaborati o funcție care calculează numarul de aparitii ale silabei 'MA' intr-un sir de caractere. Ajutați ma va rog frumos:( 


Razzvy: e cam incurcata
Razzvy: trebuie sa vezi regulile de despartire in silabe
express: Incearca sa folosesti functia strstr...daca ar fi fost mai bine formulata cu restrictii si precizari ar fi fost chiar tentant s-o rezolv.

Răspunsuri la întrebare

Răspuns de express
0
Ti-am facut o sursa in C++ folosind functia strstr. Am mai folosit si alte doua siruri auxiliare dar important este de fapt numararea silabelor. Problema am extras-o dintr-o varianta de bac si am adaptat-o. Succes!
#include <bits/stdc++.h>using namespace std;int n, i, k;char s[260], *p, t[260] = "MA", aux[260];int main(){    cin.getline(s, sizeof(s));
    p = strstr(s, t);    while(p != NULL)    {        n = strlen(s);        memset(aux, 0, sizeof(t));        strncpy(aux, s, n - strlen(p));        strcat(aux, p + strlen(t));        memset(s, 0, sizeof(s));        strcpy(s, aux);        k ++;        p = strstr(p, t);        if(p == NULL) break;    }    cout << k;    return 0;}

Razzvy: Dar in exemplul "amar", despartirea in silabe este a-mar, deci nu exista nici o silaba "ma", ci "mar"
express: Tu ai citit enuntul ? E vorba de a numara frecventa silabei "MA". Problema ar fi extrem de complicata, practic imposibil de rezolvat fara niste reguli de despartire in silabe...ar fi mai grea decat o problema de lot.
Alte întrebări interesante