Problema in c/c++ argh - Pag 4
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Pag 4 di 5 PrimoPrimo 12345 UltimoUltimo
Visualizzazione risultati da 46 a 60 di 67

Discussione: Problema in c/c++ argh

Cambio titolo
  1. #46
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057
    ?

    Se immetto una stringa con scanf la stringa viene salvata nell'apposita cella iesima del vettore di stringhe, se poi c'è il terminatore non lo so, dovrebbe esserci di default!
    Quando lo eseguo semplicemente immetto 10 stringhe di sole lettere e basta, il resto viene eseguito correttamente, tranne l'ultima parte.

    Lo riposto completo:
    Codice:
    #include <stdio.h>
    #include <string.h>
    #define M 100
    #define N 10
    #define BIG 1000
    typedef char str100[M];
    typedef char str1000[BIG];
    
    int findMinS(str100 v[], int l, int s){
    	int i, pos;
    	str100 min;
    
    	strcpy(min, v[s]);
    	pos=s;
    
    	for(i=s; i<l; i++){
    		if(strcmp(v[i], min)==-1){
    			strcpy(min, v[i]);
    			pos=i;
    		}
    	}
    
    	return pos;
    }
    
    void selSort(str100 v[], int l){
    	int i, min;
    	str100 t;
    
    	for(i=0; i<l-1; i++){
    		min=findMinS(v, l, i);
    
    		strcpy(t, v[i]);
    		strcpy(v[i], v[min]);
    		strcpy(v[min], t);
    	}
    
    	return;
    }
    
    int main(){
    	str100 vect[N];
    	int i;
    
    	for(i=0; i<N; i++){
    		printf("Inserisci la stringa %d: ",i);
    		scanf("%s",&vect[i]);
    	}
    
    	printf("\n");
    
    	selSort(vect, N);
    
    	for(i=0; i<N; i++)
    		printf("%s \n",vect[i]);
    
    	printf("\n");
    
    	str1000 all;
    
    	for(i=0; i<N-1; i++){
    		strcat(all, vect[i]);
    		strcat(all, "#");
    	}
    
    	strcat(all, vect[N-1]);
    
    	printf("%s",all);
    
    	return 0;
    }
    Compilandolo non mi dà alcun errore, tra l'altro
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  2. #47
    janky
    Ospite
    a me funziona...

  3. #48
    janky
    Ospite
    Citazione Drizzt
    Quelle due funzioni servono per trovare il minimo nel vettore di stringhe (in questo caso, la stringa che viene prima delle altre in ordine alfabetico, visto che usiamo strcmp) e per scambiare il minimo con l'elemento i del vettore. Alla fine del ciclo gli elementi del vettore sono ordinati in ordine crescente. Praticamente usiamo la selSort unita alla findMinS per realizzare il metodo detto di Bubble-Sorting per ordinare degli insiemi finiti di elementi (vettori nel nostro caso)
    non ho capito, deve ordinare le stringhe in ordine alfabetico?

  4. #49
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057
    Citazione janky
    non ho capito, deve ordinare le stringhe in ordine alfabetico?
    Ma mica ti funziona?

    Cmq se immetti blabla, topolino, pippo, antonio, l'output è antonio, blabla, pippo, topolino. Ok?
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  5. #50
    janky
    Ospite
    Citazione Drizzt
    Ma mica ti funziona?

    Cmq se immetti blabla, topolino, pippo, antonio, l'output è antonio, blabla, pippo, topolino. Ok?
    appunto questo chiedevo, perchè non ordina un beneamato

    per questo ero perplesso....

  6. #51
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057
    Ma che minchia dici o_O
    Ah ci sono, forse il tuo compilatore contiene una libreria strcmp che ritorna valori diversi da quelli del mio, e in findMinS c'è
    Codice:
    if(strcmp(vect[i], min)==-1);
    ...ce l'ha detto il prof che le librerie non sono standardizzate.

    Ecco lo screen di quel che fa a me:
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  7. #52
    janky
    Ospite
    le librerie sono standard, cmq io sapevo che la strcmp ritornava 0 se le stringhe sono uguali, una valore maggiore di zero casuale, non per forza 1 se la prima è maggiore della seconda e un valore minore di 0 casuale non per forza -1 se la seconda è maggiore della prima.

    cmq quindi deve essere un problema del compilatore

  8. #53
    janky
    Ospite
    si, ho controllato, il borland ritorna un valore casuale

  9. #54
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057
    Beh, metti if(strcmp(v[i], min)<0 e vedrai che tutto sarà ordinato

    Cmq ti risultano tutte quelle Z? o_o
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  10. #55
    janky
    Ospite
    no nessuna z

  11. #56
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057
    Sarà di nuovo il compilatore...forse anche la strcat è diversa in lcc
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  12. #57
    janky
    Ospite
    io lo cambiarei, perchè queste sono cose standard, è il tuo compilatore che non lo è

  13. #58
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057
    Beh non lo cambio, è quello che usa il mio prof all'uni ^^
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  14. #59
    Utente
    Registrato il
    12-02
    Località
    Venezia
    Messaggi
    110
    Codice:
    str1000 all = "";
    BTW, le stringhe ASCIIZ terminano con uno 0 (zero), che corrisponde al char '\0'.
    man is your friend

  15. #60
    janky
    Ospite
    Citazione 3y34|v|31337
    Codice:
      str1000 all = "";
    BTW, le stringhe ASCIIZ terminano con uno 0 (zero), che corrisponde al char '\0'.
    probabilmente stiamo dicendo la stessa cosa, ma voglio esserne sicuro (lo so sono pignolo )

    il carattere \0 corrisponde al primo del codice ASCII, è equivalente alla costante numerica zero (0) e non ha niente a che vedere con il carattere 0, che corrisponde a 00110000.

    è questo che intendi?

    BTW che significa? by the way?

Pag 4 di 5 PrimoPrimo 12345 UltimoUltimo

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •