Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99

    [C]ordinare le stringhe?

    ciao a tutti, sto scrivendo un banale codice per ordinare le stringhe: viene richiesto 10 volte di inserire una stringa e questa viene salvata, poi vengono riordinate in ordine alfabetico e poi scritte su schermo, il problema si pone nel riordinarle, infatti quando avvio il programma (compilato senza errori) mi si blocca dopo che ho inserito l'ultima stringa... ecco il codice, qualche aiuto?
    codice:
    #include<stdio.h>
    #include<ctype.h>
    #include<string.h>
    int main(void)
    {
    	char *strings[10];
    	char *temp;
    	int i;
    	for(i=0;i<10;i++){
    		gets(&strings[i]);		
    	}
    	for(i=0;i<9;i++){
    		if(strcmp(strings[i],strings[i+1])>0){
    			temp=strings[i];
    			strings[i]=strings[i+1];
    			strings[i+1]=temp;
    		}
    		else;
    	}
    	for(i=0;i<10;i++){
    		puts(&strings[i]);		
    	}
    	return 0;
    }
    grazie in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Un primo problema che vedo è che non stai allocando lo spazio per le stringhe.
    Hai dichiarato un array di 10 stringhe, ma per nessuna di esse, prima della lettura, allochi lo spazio necessario a contenerla (non fai uso della malloc).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    Grazie per la risposta ma non l'ho ancora studiato malloc c'è un qualche alto modo?

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Originariamente inviato da glukosio
    Grazie per la risposta ma non l'ho ancora studiato malloc c'è un qualche alto modo?
    codice:
    char nome_variabile[NUMERO_STRINGHE][NUMERO_CARATTERI];
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    99
    Originariamente inviato da Scara95
    codice:
    char nome_variabile[NUMERO_STRINGHE][NUMERO_CARATTERI];
    ho risolto, grazie mille
    ho anche dovuto cambiare l'assegnamento con l'uguale usando strcpy, e avevo dimenticato il ciclo for più esterno! ecco qui il codice funzionante
    codice:
    #include<stdio.h>
    #include<ctype.h>
    #include<string.h>
    int main(void)
    {
    	char strings[10][80];
    	char *temp;
    	int i,j;
    	for(i=0;i<10;i++){
    		gets(&strings[i]);		
    	}
    	printf("\n");
    	for(j=0;j<10;j++){
    		for(i=0;i<9;i++){
    			if(strcmp(strings[i],strings[i+1])>0){
    				strcpy(temp,strings[i]);
    				strcpy(strings[i],strings[i+1]);
    				strcpy(strings[i+1],temp);
    			}
    		}
    	}
    	for(i=0;i<10;i++){
    		puts(&strings[i]);		
    	}
    	return 0;
    }

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.