PDA

Visualizza la versione completa : [C++] Contare il numero di occorrenze in una stringa


lollinof19sm
04-12-2011, 18:51
ciao a tutti! buona domenica. Devo scrivere un programma che conti il numero di occorrenze di una determinata coppia di caratteri in una stringa...


#include <stdio.h>
#include <string.h>
#define N 10

int occorrenze (char A[], char B[]);

int occorrenze (char A[], char B[]){
int i, j=0, l=0, dim=0;

printf ("Inserire frase: ");
scanf ("%s", &A);

printf ("Inserirre occorrenza: ");
scanf ("%s", &B);

dim= strlen(A);

for (i=0; i<N; i++){
if (A[i]==B[l] && A[i+1]==B[l+1]){
j++;
i--;}
l=0;

}
return j;
}

int main()
{
char v[N], v_1[N];
occorrenze (v, v_1);
return 0;
}


Purtroppo mi da errore quando compilo: "EXc_BAD_ACCES" alla riga dim=strelen(A);.

oregon
04-12-2011, 19:11
scanf ("%s", A);

scanf ("%s", B);

lollinof19sm
04-12-2011, 19:17
svista... ti ringrazio ma pur compilando non funziona. non so dove sbaglio cavolo!

oregon
04-12-2011, 19:19
Nel tuo codice hai usato la strlen e inizializzato la variabile dim ... ma dove l'hai usato?

lollinof19sm
04-12-2011, 19:20
scusa ho fatto una modifica dopo:

dim= strlen(A);

for (i=0; i<dim; i++){
if (A[i]==B[l] && A[i+1]==B[l+1]){
j++;
i--;}
l=0;

}
return j;

oregon
04-12-2011, 19:26
Beh ... devi sempre farci vedere il codice di cui parli altrimenti non si capisce nulla.

Adesso, quale codice usi? Spiega in poche parole a cosa ti serve ogni riga ...
Dicci anche quale prova fai, cosa metti in input e cosa ottieni in output (ma dove sono le istruzioni per l'output?)

lollinof19sm
04-12-2011, 19:28
#include <stdio.h>
#include <string.h>
#define N 10

int occorrenze (char A[], char B[]);

int occorrenze (char A[], char B[]){
int i, j=0, l=0, dim=0;

printf ("Inserire frase: ");
scanf ("%s", A);

printf ("Inserirre occorrenza: ");
scanf ("%s", B);

dim= strlen(A);

for (i=0; i<dim; i++){
if (A[i]==B[l] && A[i+1]==B[l+1])
j++;
l=0;

}
return j;
}

int main()
{
char v[N], v_1[N];
occorrenze (v, v_1);
return 0;
}

In input metto "tre" e poi "tr", mi dovrebbe ridare 1 (ovvero 1 ricorrenza). ma non fa niente... Pensavo che con return j; mi desse il numero!

oregon
04-12-2011, 19:31
Pensavo che con return j; mi desse il numero!

Devi ripassare le basi del linguaggio ...

Il return restituisce il valore dalla funzione al main, ma certamente non lo visualizza ...

Cosa si usa per visualizzare dei dati a video in C?

lollinof19sm
04-12-2011, 19:32
ah... ok, quindi metto un printf?

lollinof19sm
04-12-2011, 19:34
Inserire frase: tre tre tre
Inserirre occorrenza: 1Program ended with exit code: 0

Questo l'output... se metto solo "tre" mi d 1.
se metto una frase (quindi con spazi...) non mi fa mettere l'occorrenza da cercare...

Loading