Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] Ordinamento matrice char

    Ho una matrice di char, di 28 colonne e 12 righe. Ogni riga rappresenta una stringa che quindi sarà lunga 12 caratteri.

    Ora la matrice conterrà un elenco di cognomi, uno per riga. Conoscete qualche algoritmo di ordinamento stringhe?

    Potreste riportarmelo qui di seguito?


    Un altra domanda, per acquisire le stringhe la scanf non riconosce gli spazi nelle stringhe. Quale funzione potrei usare?

    Grazie mille,
    Guylmaster.

  2. #2

  3. #3
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    per ordinare le stringhe va bene anche bubble sort:

    codice:
    ...
    for (i=0; i<n-1; i++) {
      for (j=0; j<n-1-i; j++)
        if (a[j+1] < a[j]) {  /* compare the two neighbors */
          tmp = a[j];         /* swap a[j] and a[j+1]      */
          a[j] = a[j+1];
          a[j+1] = tmp;
      }
    }
    ...
    per confrontare le stringhe devi usare la funzione strcmp di string.h mentre per copiarle nel temp e dal temp al posto giusto strcpy sempre della stessa libreria.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  4. #4
    Originariamente inviato da netarrow
    per ordinare le stringhe va bene anche bubble sort:

    codice:
    ...
    for (i=0; i<n-1; i++) {
      for (j=0; j<n-1-i; j++)
        if (a[j+1] < a[j]) {  /* compare the two neighbors */
          tmp = a[j];         /* swap a[j] and a[j+1]      */
          a[j] = a[j+1];
          a[j+1] = tmp;
      }
    }
    ...
    per confrontare le stringhe devi usare la funzione strcmp di string.h mentre per copiarle nel temp e dal temp al posto giusto strcpy sempre della stessa libreria.


    Emm non è che mi faresti l'esempio funzionante che in C sono un pò arruginito?

  5. #5
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    codice:
    #include <stdio.h>
    #include <string.h>
    
    int main() {
    	int i, j, x;
    	char tmp[15];
    	char s[4][15] = {
    		"ciao",
    	    "aiuto",
    		"tutti",
    		"dimmi come va?"
    	};
        int n =4;
    	printf("Prima:\n\n");
    	for(x = 0; x < 4; x++) {
    		printf("%s\n", s[x]);
    	}
    	for (i=0; i<n-1; i++) {
    		for (j=0; j<n-1-i; j++) {
        if (strcmp(s[j+1], s[j]) < 0) {  
          strcpy(tmp, s[j]);
          strcpy(s[j], s[j+1]);
          strcpy(s[j+1], tmp);
    	}
      }
    	}
       printf("\n\nDopo:\n\n");
       for(x = 0; x < 4; x++) {
    		printf("%s\n", s[x]);
       }
    }
    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

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.