Esercizio con stringhe

di il
8 risposte

Esercizio con stringhe

Salve,devo sviluppare una function C che, data come parametro di input una stringa che rappresenta un testo in italiano,
determina e restituisce come parametro di output il numero di parole contenute nel testo che hanno almeno 5
vocali. Nel testo le parole sono separate da un unico spazio.
#include<stdio.h>
#include<string.h>
int cvocali(char[]);
int main(){
char testo[100];
int occorrenze;
printf("Quante parole hanno almeno 4 vocali? \n");
printf("Inserire testo: ");
gets(testo);
printf("\nHai inserito: ");
puts(testo);
occorrenze=cvocali(testo);
printf("Le parole che hanno almeno 4 vocali sono: %d",occorrenze);
}

int cvocali(char testo[]){
int  i,n,cntVocali=0,corrispondenze=0;
n=strlen(testo);
for(i=0;i<n;i++){

if(testo[i] == 'a' || testo[i] =='A')
cntVocali++;
if(testo[i] == 'e' || testo[i] =='E')
cntVocali++;
if(testo[i] == 'i' || testo[i] =='I')
cntVocali++;
if(testo[i] == 'o' || testo[i] =='O')
cntVocali++;
if(testo[i] == 'u' || testo[i] =='U')
cntVocali++;

if(testo[i] == ' ' || testo[i]=='\0'){
if(cntVocali>=4 )
{
corrispondenze++;
}
cntVocali=0;
}
}
return corrispondenze;
}
Questo è il mio codice ma non fa quello che deve,qualcuno puo aiutarmi?

8 Risposte

  • Re: Esercizio con stringhe

    Innanzitutto mi scuso se non ho rispettato le regole per creare un post.Poi volevo ringraziarti per l'aiuto e in tal proposito volevo farti una domada.Dal libro dove sto studiando,mi dice che la gets mi permette di leggere un intera riga dell'input mentre la scanf salta gli spazi bianchi.Quindi secondo il tuo consiglio,come posso leggere un testo da tastiera?
  • Re: Esercizio con stringhe

    Ho seguito un corso di programmazione 1 e ora mi sto esercitando.Il libro da cui sto studiando è Programmazione in C di Kim N. King
  • Re: Esercizio con stringhe

    Volevo fare solo una considerazione.
    Ma perché uno, se non è obbligato, deve mettersi a studiare il C invece del C++?
    A mio avviso non c'è niente che si possa implementare in C e non, meglio, farlo in C++ Il C++ per mezzo delle std mette a disposizione strumenti che ti possono permettere di programmare in C++ come se lo facessi in java o php senza curarti della gestione della memoria, vedi, per esempio, gli smart pointer.
    Ma perché poi devono esistere ancora corsi in C?
    Il C++ inoltre non ha neanche bisogno di essere conosciuto in tutti i suoi aspetti per scrivere degli ottimi programmi.
    Il programma in oggetto sarebbe molto più espressivo se realizzato in C++.
  • Re: Esercizio con stringhe

    Prova a scrivere qualcosa per unix o se vuoi per linux. Sai quanto pesano le #include coma la stdio.h che sembra una banalitá? Quando hai poca memoria o devi agire in maniera incisiva in maniera conbinata con il SO e devi usare istruzioni di basso livello hai bisogno del C. Un mio collega programmava elettrostimolatori e altra roba del genere: indovina il linguaggio? Su quelle macchine non arrivi a 1Mb di memoria...devi essere snello!!!
  • Re: Esercizio con stringhe

    Diciamo anche che oggi, con l'enorme disponibilita' di linguaggi di programmazione, insegnare il C e' come insegnare ad andare ancora a cavallo: utile (esistono le motociclette) ma decisamente anacronistico.

    Il C e' un linguaggio semplice per modo di dire: sintatticamente e' semplice, ma la gestione della memoria e' un vero incubo, ed infatti i linguaggi di nuova generazione usano tecniche di gestione della memoria decisamente piu' raffinate, togliendone il controllo al programmatore medio che, nel 99.99999% dei casi, sa fare solo pasticci. Per non parlare della limitata disponibilita' di librerie per fare cose un po' piu' complesse....

    C e C++ sono linguaggi utili quando bisogna grattare il ferro: ma per farlo, non si puo' essere programmatori alle prime armi (o, almeno, non lo si dovrebbe essere).

    Invece c'e' molta richiesta di programmatori che lavorino a piu' alto livello: quindi C#, Java, Python, PHP, Swift, ecc...

    PS: non e' programmazione funzionale, MA programmazione procedurale
    Le altre affermazioni sono un po' sopra le righe
    Diciamo: licenza poetica
  • Re: Esercizio con stringhe

    wrugg25 ha scritto:


    migliorabile ha scritto:


    (*)Tanto per capirci: io ho iniziato, a 12 anni, con il Visual Basic (al tempo non ancora "net-tizzato"), ...
    Non sapevo che si giocava a chi ha più cicatrici
    Abbiamo un inizio in comune, io però non visual. Il mio era un basic di un olivetti P6060, che assomigliava più ad una grossa macchina da scrivere che a un calcolatore (si chiamavano così). Nell’istituto dove preparavo la tesi c’era poi un HP, che non aveva neanche un linguaggio di programmazione se non il suo assembler, gestiva tutto in pochi kb, comuni a programma e dati.
    I programmi tecnici si facevano in fortran, il 77 era l’ultimo grido, ed avevo una copia delle Numerical Recipies in Fortran, penso le prime pubblicate, i programmi amministrativi erano in pascal (delphi era lungi da venire) o in cobol, ma chi se lo fila più?. A breve nascevano i primi calcolatori da ufficio, avevano un sistema operativo che si chiamava CP/M e si programmavano in basic, erano i tempi in cui era uscito l’apple 2e, rivoluzionario, il suo sistema operativo si chiamava “monitor”, e disponevo del suo sorgente in assembler. Le macchine apple al tempo erano “aperte”, il contrario di quanto lo siano adesso. I programmi si scrivevano in applesoft, ancora una sorta basic. E poi i primi PC e ms/dos (che era compatibile con il cp/m,).
    La borland distribuiva un turbopascal e aveva in catalogo anche un turbobasic, che, per l’epoca, era rivoluzionario, essendo un basic compilato, ma non ebbe gran successo, si preferiva qbasic. Acquistai il primo libro di K&R che mi parlava di unix (misterioso sistema operativo) e poi lo Straustrup acquistato in una edicola alla stazione di milano.

    Un giorno mosè si sedette nell’aula di rabbi akiva e ascoltò una delle sue lezioni, ma non ne capì nulla. Un alunno chiese a rabbi akiva: “Ma da dove viene tutta questa sapienza?”, e rabbi akiva rispose “da quanto ci ha trasmesso mosè”.
    L’aneddoto è più complesso, lo potete trovare nel talmud, ma sta a significare che la sapienza di oggi si basa su un processo di crescita del sapere ed è con questa sapienza che noi dobbiamo confrontarci.

    Quando studiavo il c++ e la standard library non esisteva, o meglio, io non ne conoscevo l’esistenza, scrissi diverse utiliy, una classe string, una hash, una sort, una vector, una matrix.
    Ci persi tantissimo tempo e fu un dispiacere per me sostituirle con le corrispondenti std (in realtà la classe matrix l’ho utilizzata di recente per fare il prodotto tra due matrici).
    Ma oggi sono ben felice di poter scrivere un programma c++ concentrandomi solo sul suo scopo e non sui dettagli implementativi.

    Con la “sapienza” di oggi utilizzando gli ultimi standard c++11 e c++14 si può scrivere un programma c++ in cui non più il programmatore ma la macchina si fa carico della gestione delle risorse, cosa che non è possibile con il C.

    Le tue argomentazioni sono sicuramente valide ma io rimango ancora della mia opinione e se uno deve scegliere tra imparare il C o il C++, l’opzione del c++ deve imprescindibilmente essere tenuta in conto.
  • Re: Esercizio con stringhe

    Wrung25 eppure all'uni, attualmente il corso di fondamenti di informatica lo si fa con c++ (primo anno). Poi architetture di calcolatori, assembly e C ( secondo anno)...

    Sebaldar il C é vecchio, surclassato, antico sicuramente, peró prova a scrivere il software interno di una macchina fotografica o piú semplicemente di una stampante multifunzione. Ti devi ridurre al minimo indispensabile perché il costruttore vuole che la memoria a disposizione sia quella per il buffer della coda di stampa e non qyekka per il soft di gestione interno. Nel caso di un sistema operativo poi ci sono altri discorsi da fare. Come eccezioni che con un linguaggio tipizzato non potresti gestire mentre con un linguaggio tipo C riesci a bypassare...d'altro canto su alcune situazioni essendo meno rigido non hai controllo (il linguaggio non si prende carico di alcuni meccanismi) ed il rischio é di fare danni che sono poi introvabili...quindi di fatto ti devi autocontrollare il che ti puó aiutare nel lavoro informatico...ma questa é una mia idea in merito.

    Un saluto
  • Re: Esercizio con stringhe

    Scusa permettimi di contraddirti.
    Io sono a tor vergata. Si inizia con C++(fondamenti di info) si passa per python (ingegneria degli algoritmi) java per OOP; si torna all'assy ed al C per architetture dei calcolatori.
Devi accedere o registrarti per scrivere nel forum
8 risposte