|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jan 2005
Messaggi: 13
|
[PROGRAMMAZIONE IN C] Problema bubble sort
Ciao, devo fare un esercizio per il 2 febbraio, ma c'è qualcosa che non va:
il testo dell'esercizio è su http://vigna.dsi.unimi.it/labprog/prog.php, ma il mio programma non fa l'ordinamento del vettore come lo vorrei io... qualcuno sa darmi una mano? Grazie... ![]() -------------------------------------------------------------------- #include <stdio.h> #include <ctype.h> #include <stdlib.h> FILE *input; FILE *output; void aggiungi_iniziale (char c, int iniziali[26]) { int ris; ris = c-'a'; if ((ris>=0) && (ris<26 )) { printf("\nInserisco %c in %d;",c,ris); iniziali[ris]++; getchar(); }else{ printf("\nErrore in add_initials"); } } void bubble_sort (int* iniziali, char* letterale) { int i,k; int num_temp; char let_temp; for(i=0;i<25;i++){ for(k=i;k<25;k++){ if(iniziali[k]<iniziali[k+1]){ printf("\n %c %d e %c %d...",iniziali[k],letterale[k],iniziali[k+1],letterale[k+1]); num_temp=iniziali[k]; let_temp=letterale[k]; iniziali[k]=iniziali[k+1]; letterale[k]=letterale[k+1]; iniziali[k+1]=num_temp; letterale[k+1]=let_temp; } } } getchar(); } int main () { int i; char buff; char letterale[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O', 'P' , 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; int iniziali[26] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0}; input = fopen("input.txt" , "r"); output = fopen("output.txt", "w+" ); /* Cancellare la riga sottostante e vedere se funziona lo stesso...*/ if(isalpha('’')==1) printf("Qualcosa non torna\n"); else printf("Qualcosa Š tornato\n"); getchar(); printf("\nComincio analisi file..."); buff = tolower (getc (input)); while (buff != EOF){ if (isalpha(buff)){ aggiungi_iniziale(tolower(buff),iniziali); } while(isalpha(buff)){ if(buff==EOF) break; buff=getc(input); } while(!isalpha(buff)){ if(buff==EOF) break; buff=getc(input); } } if(buff==EOF){ printf("\nControllo file completato...\n"); getchar(); fclose(input); }else{ printf("\nC'e' qualche errore...\n"); } bubble_sort (iniziali, letterale); for(i=0;i<26 && iniziali[i]!=0;i++){ fprintf (output, "%c %d\n", letterale[i], iniziali[i]); printf("\nLettera %c presente %d volte...",letterale[i],iniziali[i]); getchar(); } fclose (output); printf("\nOK!!"); getchar(); return 0 ; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:03.