No. Ne fa di più, ed inoltre il codice è duplicato.Originariamente inviato da Laikius91
Bè, alla fine fa gli stessi cicli che fa il tuo, solo che li fa in due funzioni separate in modo da allegerire il tutto, non credo si duplichi niente...
No. Ne fa di più, ed inoltre il codice è duplicato.Originariamente inviato da Laikius91
Bè, alla fine fa gli stessi cicli che fa il tuo, solo che li fa in due funzioni separate in modo da allegerire il tutto, non credo si duplichi niente...
non sta il carattere + frequente ma il primo carattere che immetto da "scanf"...a parte che la scanf + di due caratteri con size n=5 "esempio"....non me le fà immetterecodice:#include <stdlib.h> #include <stdio.h> void frequenza(char [],int); int main() {char a[10]; int i,n; printf("inserisci il size dell array:"); scanf("%d",&n); printf("inserisci gli elementi dell array:"); for(i=0;i<n;i++) scanf("%c",&a[i]); frequenza(a,n); system("PAUSE"); } void frequenza(char a[],int n) {int i,j; char max_char=a[0]; int frequenza=0; for(i=0;i<n-1;i++){ frequenza=1; for(j=i+i;j<n;j++){ if(a[i]==a[j]) frequenza=frequenza+1; } for(i=0;i<n;i++){ if(a[i]>max_char) max_char=a[i]; } } printf("frequenza:%d\t",frequenza); printf("\til carattere + frequente :%c\n",max_char); }
codice:code
Allora: il tuo fa un ciclo grande e per ogni elemento fa un ciclo per verificare le frequenze, quindi fa un ciclo per ogni carattere, pur facendolo nella stessa funzione... Il mio fa il ciclo grande in una funzione e i sottocicli in un'altra funzione....Originariamente inviato da VincenzoTheBest
No. Ne fa di più, ed inoltre il codice è duplicato.
Credo che non ci sia nessuna duplicazione o nessuna perdita di efficienza rispetto alla tua versione...
@asteroid: non si è capito cosa intendi... in ogni caso, se vuoi usare la scanf per riempire un array di caratteri devi fare un ciclo e leggere un carattere alla volta...
Salute a voi, da Laikius!
--> Faber est suae quisque fortunae <--
Se nella funzione howManyChars scorri sempre l'intera stringa allora non fai lo stesso numero di scansioni, ed inoltre perdi efficienza.Originariamente inviato da Laikius91
Allora: il tuo fa un ciclo grande e per ogni elemento fa un ciclo per verificare le frequenze, quindi fa un ciclo per ogni carattere, pur facendolo nella stessa funzione... Il mio fa il ciclo grande in una funzione e i sottocicli in un'altra funzione....
Credo che non ci sia nessuna duplicazione o nessuna perdita di efficienza rispetto alla tua versione...
non mi legge sia la scanf...e sia la getchar, per far inserire i valori, questo è il problemacodice:#include <stdlib.h> #include <stdio.h> void frequenza_char(char [],int); int main() {char a[10]; int i,n; printf("inserisci il size dell array:"); scanf("%d",&n); printf("inserisci gli elementi dell array:"); for(i=0;i<n;i++) (a[i]=getchar()); /*<----------------------*/ frequenza_char(a,n); system("PAUSE"); } void frequenza_char(char a[],int n) {int i,j; char max_char=a[0]; int frequenza; for(i=0;i<n-1;i++){ frequenza=1; for(j=i+1;j<n;j++){ if(a[i]==a[j]) frequenza=frequenza+1; } } for(i=0;i<n;i++){ if(a[i]>max_char) max_char=a[i]; } printf("frequenza:%d\t",frequenza); printf("\til carattere + frequente :%c\n",max_char); }
codice:code
devo usare per forza la scanf("s",&a[i]) e riesco a visualizzarecodice:#include <stdlib.h> #include <stdio.h> void frequenza_char(char [],int); int main() {char a[10]; int i,n; printf("inserisci il size dell array:"); scanf("%d",&n); printf("inserisci gli elementi dell array:"); for(i=0;i<n;i++) scanf("%s",&a[i]); frequenza_char(a,n); system("PAUSE"); } void frequenza_char(char a[],int n) {int i,j; char max_char=a[0]; char t; for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(a[i]==a[j]){ t=a[i]; max_char=a[j]; a[j]=t; a[i]=max_char; if(a[i]>=max_char) max_char=a[i]; } } } printf("\til carattere + frequente :%c\n",max_char); }![]()
codice:code