PDA

Visualizza la versione completa : [C] programmino


zanna5
17-01-2011, 16:55
Implementare la funzione int conta(char* str) che stampa a video la frequenza di ogni carattere alfabetico
contenuto nella stringa e restituisce la lunghezza della stringa stessa str.
Per esempio, nel caso str = ‘‘Amaca’’ la funzione dovrebbe ritornare il valore 5 e stampare a video ‘‘3A1M1C’’.

La funzione deve essere case-insensitive, ovvero non deve fare distinzione tra caratteri maiuscoli e minuscoli.
• Non e’ possibile utilizzare la funzione int strlen(char* s);
• E’ possibile utilizzare le funzioni char toupper(char x) e int isalpha(char x) (ctype.h);
• Non implementare funzioni non necessarie o non esplicitamente richieste.

non riesco proprio a fare questo programma sia perché ci capisco veramente poco, sia perché non mi hanno mai spiegato bene.. qualcuno può scrivermi il codice sotto per favore? grazie mille a tutti.


P.S.: è un tema di esame di informatica di base..so che vi farà sorridere però sono proprio negato

linoma
17-01-2011, 17:03
int conta(char *str)
{
unsigned long lettere[30];
unsigned int len;
int lettera;

memset(lettere,0,sizeof(lettere));
for(len = 0;*str != 0;len++,str++){
if(!isalpha(*str))
continue;
lettera = toupper(*str) - 'A';
lettere[lettera]++;
}
for(lettera = 0;lettera < sizeof(lettere) / sizeof(unsigned long);lettera++){
if(lettere[lettera] == 0)
continue;
printf("%c%d",(char)(lettera + 'A'),lettere[lettera]);
}
return (int)len;
}


Cmq nn puoi fare richieste del genere la funzione nn è stata compilata e 6 fortnato. :ciauz:

zanna5
17-01-2011, 17:11
Originariamente inviato da linoma


int conta(char *str)
{
unsigned long lettere[30];
unsigned int len;
int lettera;

memset(lettere,0,sizeof(lettere));
for(len = 0;*str != 0;len++,str++){
if(!isalpha(*str))
continue;
lettera = toupper(*str) - 'A';
lettere[lettera]++;
}
for(lettera = 0;lettera < sizeof(lettere) / sizeof(unsigned long);lettera++){
if(lettere[lettera] == 0)
continue;
printf("%c%d",(char)(lettera + 'A'),lettere[lettera]);
}
return (int)len;
}


Cmq nn puoi fare richieste del genere la funzione nn è stata compilata e 6 fortnato. :ciauz:

ciao scusa sono nuovo del forum.. in che senso non posso fare richieste del genere? così magari prossima volta evito di scrivere cose che non dovrei.. grazie mille per l'aiuto comunque..

LeleFT
17-01-2011, 17:11
Originariamente inviato da zanna5
qualcuno può scrivermi il codice sotto per favore? grazie mille a tutti.


No.
Come espressamente detto nel Regolamento interno (http://forum.html.it/forum/showthread.php?s=&threadid=973887), questo genere di richieste non sono ammissibili in quest'area.

Per farsi fare i compiti per casa c'è il forum "Offro Lavoro / Collaborazione".

Devo chiudere.


Ciao. :ciauz:

Loading