Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    100

    Dove sta l'errore in questo codice?

    Dovrebbe vedere se due stringhe sono uguali.

    #include <iostream.h>
    #include <stdlib.h>
    #include <stdio.h>

    int main()
    { char c[100],f[100];
    bool h=true;
    int i,j;
    gets (c);

    gets (f);
    i=0;
    j=0;
    while ((c[i]!='\0')&&(f[j]!='\0'))
    { if (c[i]==f[j])
    { i++;
    j++;
    }
    else
    {h=false;
    }
    }


    cout << h;

    system("PAUSE");
    return 0;
    }

  2. #2
    Ti dimentichi di incrementare i e j nel else..

    Comunque non mescolare C++ e C pls

  3. #3
    1)Dopo h=false; ci va un break per evitare di ciclare per tutta la stringa.

    2)includi la vecchia <iostream.h> che non è standard, devi includere <iostream> senza .h e scrivere std::cout << h

    3)in C++ non si usa gets, usa piuttosto cin, i miscugli C e C++ fanno confusione, anche se a volte si usano lo stesso, è meglio cercare di evitarli.

    4)usi 2 variabili indice quando ne basta una

    5)non controlli che la stringa in input sia sufficiente a contenere l'input dell'utente, ma va bene lo stesso visto che è un'esercizio.

    6)Probabilmente l'algoritmo funziona ma non ti da output perchè cout << h non stampa nulla, almeno con la mia iostream.h, mentre con iostream stampa bene.

    Eccoti una soluzione + professionale al tuo esercizio
    codice:
    #include <iostream> 
    
    const char const * TrueFalse[] = {"false", "true"};
    
    int main() 
    { 
    	char c[100],f[100]; 
    	bool h=true; 
    	int i=0;
    	
    	std::cin >> c; 	
    	std::cin >> f; 
    
    	while (c[i] != '\0' && f[i]!='\0' && c[i] == f[i]) 
    		++i;
    
    	h = c[i] == f[i];
    
    	std::cout << TrueFalse[static_cast<int>(h)] << "\n"; 
    	
    	system("PAUSE"); 
    	return 0; 
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    100
    Grazie per le risposte.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    100
    Ragazzi visto che siete molto più bravi di me non è che potete dirmi dove sbaglio in questi due esercizi?
    A me non funzionano.
    1) Date due stringhe S e T si determini il numero delle volte e le posizioni in cui S è contenuta in t.

    #include <iostream.h>
    #include <stdlib.h>
    #include <stdio.h>

    //programma che conta la stringa contenuta in un'altra

    int main()
    {char S[]="";
    char T[]="";
    int i,j,cont,pos,conte,sottrai;
    gets(S);
    gets(T);
    cont=0; pos=0; conte=0;
    i=0;j=0;

    //toglie gli spazi bianchi iniziali
    while (S[i]!='\0')
    {if(S[i]==' ');
    i++;

    }
    while (T[j]!='\0')
    {if(T[j]==' ');
    j++;
    }

    while ((S[i]!='\0')&(T[i]!='\0'))
    {i=0;
    if (S[i]== T[j])
    {cont=cont+1; //posizione in cui iniziare di nuovo la ricerca se i primi elem sono diversi
    do {
    i++;
    j++;
    sottrai=j-1;
    }while ((S[i]==T[j]) & (S[i]!='\0')&(T[i]!='\0'));
    if (S[i]=='\0')
    { conte=conte+1;
    pos =j-sottrai;
    }
    else j=cont;
    }
    else j++;
    }

    cout <<pos;
    cout <<cont;







    system("PAUSE");
    return 0;
    }

    2) Dati due vettori A e B si ordino in senso crescente e si determini un nuovo vettore C ottenuto dalla fusione dei due mantenedo l'ordinamento.
    #include <iostream.h>
    #include <stdlib.h>
    #include <stdio.h>

    void leggivett(float a[],int dim, int *rie);
    void ordinavett (float V[], int riemp);
    void stampavett (float g[],int ri);

    int main()
    { float S[100],T[100],R[200];
    int i,j,k,r1,r2;
    leggivett (S,100,&r1);
    leggivett (T,100,&r2);
    ordinavett (S,r1);
    ordinavett (T,r2);


    //Fusione dei due vettori in un terzo

    i=0; j=0; k=0;
    while ((i<r1)||(j<r2))
    { if (S[i]<T[j])
    { R[k]=S[i];
    i++;
    k++;
    }
    else
    { R[k]=T[j];
    j++;
    k++;
    }
    }

    //Se il primo vettore è finito mette il secondo nel terzo

    if (i==r1)
    {for (i=k; i<r1+r2; i++)
    {R[i]=T[j];
    j++;

    }
    }
    //Se è esaurito il secondo vettore mette il primo nel terzo

    if (j==r2)
    {for (j=k;j<r1+r2;j++)
    {R[j]=S[i];
    i++;
    }

    }

    stampavett (R,r1+r2);


    system("PAUSE");
    return 0;
    }

    void leggivett(float a[],int dim, int *rie)
    {int i;
    do{
    printf ("Inserire il numero di elementi di un vettore\n");
    scanf ("%d",rie);
    }while ((*rie >dim)||(*rie<0));

    for (i=0; i<*rie; i++)
    { printf ("Inserire elemento: %d \t",i+1);
    scanf ("%f",&a[i]);

    }

    }

    void stampavett (float g[],int ri)
    {int i;
    printf("Ecco il Vettore ""FUSO"" e Ordinato: \n");
    for (i=0; i<ri; i++)
    { printf ("%f \n",g[i]);

    }
    }


    void ordinavett (float V[], int riemp)
    { int i,j;
    float swap;
    for (j=0; j<riemp-1;j++)
    {for (i=0; i<riemp-1-j; i++)
    { if (V[i]>V[i+1])
    {swap=V[i];
    V[i]=V[i+1];
    V[i+1]=swap;
    }
    }
    }

    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.