Oppure

Loading
19/05/10 13:28
u_boss
Ragazzi questo è il mio codice.
Praticamente l'utente immette una frase(quel che vuole) ed il programma deve leggere la frase e terminare di memorizzare le parole immesse quando ne trova due uguali.

Il problema è che il l'algoritmo dovrebbe essere giusto,ma eseguendolo non mi stampa niente. Dove è l'errore?
Sono duee giorni che ci sono sopra e non riesco a capire cosa c'è che non va!
GRazie in anticipo per l'aiuto.
P.S. Sono un neofita del C :);)


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxchar 21
#define maxparole 10

void reverse_lett(char word[maxchar]);/*funzione per invertire l'ordine delle lettere nella stringa*/

int main()
{
    enum {SI,NO};
    int i=0,j,ESCI;
    ESCI=NO;/*verifica l'uscita dal ciclo*/
    char parole[maxparole][maxchar],temp[maxchar]={" "};
    printf("Inserire serie di parole\n");
    while(ESCI==NO)/*ciclo while per riempire il vettore di stringhe*/
    {
        scanf("%s",temp);  /*variabile temporanea*/
        if((strcmp(temp,parole[i-1])==0))    /*confronto*/
        ESCI=SI;
        else
        {
            strcpy(parole[i],temp);/*copia della stringa nel vettore*/
            i++;
        }
    }
    for(j=0;j<=i;j++)
    /*ciclo per mandare alla funzione tutte le stringhe immesse*/
    {
        reverse_lett(parole[j]);/*funzione*/
    }
    return EXIT_SUCCESS;
}
/*-----inizio funzione reverse------*/
void reverse_lett(char word[maxchar])
{
    int k,lung=strlen(word);
    int x=strlen(word);
    char temp;
    for(k=0;k<(lung/2);k++)
    {
        temp=word[k];
        word[k]=word[x];
        word[x]=temp;
        x--;
    }
    /*ora la stringa è rovesciata*/
    printf("%s",word);/*stampa*/
}
aaa
19/05/10 13:30
Cosa c'entra quello che hai detto (terminare due stringhe ...) con l'inversione di cui parli nel titolo?

E poi, facci un esempio, usando il tuo codice, di una frase inserita e di cosa succede ...
19/05/10 13:34
u_boss
Innanzitutto grazie per avermi risposto.

ad esempio io scrivo nella shell
<ciao mamma stasera sono bravo bravo>
il programma memorizza in un vettore di stringhe parole[][]
parole[1] ciao
parole[2] mamma
parole[3] stasera
parole[4] sono
parole[5] bravo

memorizza solo questo perchè si ferma quando trova due parole uguali.
aaa
19/05/10 13:37
u_boss
ed inverte le parole memorizzate,in questo caso:
oaic ammam onos ovarb
Ultima modifica effettuata da u_boss 19/05/10 13:39
aaa
19/05/10 13:58
Ok ... e quindi, il problema qual e'?

Cioe', senza doverlo copiare e compilare, il tuo programma cosa sbaglia?
19/05/10 14:01
u_boss
praticamente non mi stampa niente e si chiude.
aaa
19/05/10 14:18
Gli errori sono nelle linee che ti posto corrette

    ...

    for(j=0;j<i;j++)   // < e non <=

    ...

    int x=lung-1;  // uguale alla lunghezza - 1

    ...

    printf("%s\n",word); // aggiunto un \n per chiarezza
19/05/10 14:34
u_boss
Ora và!!;);)
ma perchè per invertire deve partire da x=lung-1?!
perchè la lunghezza della stringa mi conta anche la posizione del terminatore??
aaa