URGENT!!
Să se scrie un program C++ care conține o (singură) funcție ce returnează numărul de apariții ale subșirului sir2 in șirul sir1, precum și indecșii de la care încep subșirurile sir2 in sir1.
sir1 conține maxim 1000 de caractere, iar sir2 maxim 100 caractere.
NU se folosesc funcții din biblioteca cstring. Prelucrarile se fac la nivel de caracter.
În funcția main() se citesc datele de intrare, se apelează funcția și se afișează pe 2 linii separate: numărul de apariții, respectiv indecșii separați de un spațiu.
NU se folosesc variabile globale.
Date de intrare:
sir1 sir2
Date de ieșire:
Linia 1: Numărul de apariții ale sir2 in sir1. În cazul în care sir2 nu se găsește in interiorul sir1, se va afișa 0.
Linia 2: indecșii de la care încep sir2 în sir1, separați prin spațiu. Daca sir2 nu se găsește în sir1, Linia 2 rămâne goală.
Exemplu:
Date de intrare:
anaaremereareana are
Date de ieșire:
2
3 10
Răspunsuri la întrebare
Răspuns de
2
Răspuns:
#include <iostream>
int sir_in_sir(char *sir1, char *sir2, int *pozitii)
{
int rezultat = 0;
for (int i = 0; sir1[i]; i++) {
bool gasit = true;
for (int j = 0; sir2[j]; j++) {
if (sir1[i + j] != sir2[j]) {
gasit = false;
break;
}
}
if (gasit) {
pozitii[rezultat] = i;
rezultat++;
}
}
return rezultat;
}
int main()
{
char sir1[1000], sir2[100];
std::cin >> sir1 >> sir2;
int pozitii[1000];
int numar = sir_in_sir(sir1, sir2, pozitii);
std::cout << numar << std::endl;
for (int i = 0; i < numar; i++) {
std::cout << pozitii[i] << " ";
}
std::cout << std::endl;
}
Explicație:
Alte întrebări interesante
Chimie,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Geografie,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Franceza,
9 ani în urmă