Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di abbax
    Registrato dal
    Feb 2009
    Messaggi
    227

    [c] stringhe ricerca vocali

    Devo inserire una stringa di lettere minuscole, vedere quante vocali ci sono e dire qual'è la più frequente. Allore mi sono detto: uso lo switch case:
    codice:
    n_a=0;
    n_e=0;
    n_i=0;
    n_o=0;
    n_u=0;
    for(i=0;i<lenght;i++){
           switch(frase[i]){
               case 'a': n_a+=1;
               break;
               case 'e': n_e+=1;
               break;
               case 'i': n_i+=1;
               break;
               case 'o': n_o+=1;
               break;
               case 'u': n_u+=1;
               break;
               }}
      voc=n_a + n_e + n_i + n_o + n_u;
    printf("\nCi sono %d vocali", voc);
    Però adesso come si fa a vedere quella che compare più volte?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    In che senso non funziona? Qual è il problema? La stringa che dai in input contiene qualsiasi lettera (anche consonanti) ? Se è così, devi prevedere anche il caso in cui il carattere i-esimo non sia una vocale... cioè, se è una 'a', incrementa il contatore delle 'a', se è una 'e' incrementa il contatore delle 'e' e così via... ma se è una 'f', una 'g' o altro?
    every day above ground is a good one

  3. #3
    Utente di HTML.it L'avatar di abbax
    Registrato dal
    Feb 2009
    Messaggi
    227
    nono funziona... avevo fatto anche con le maiuscole durante la prova e ovviamente non me le contava... però adesso devo determinare quella che compare più volte ed in questo ho un po' di difficoltà... cioè è semplicissimo se facessi un vettore di 5 elementi (n° di vocali) i cui elementi sono quante volte compare ogni vocale... però vorrei evitare di fare il vettore, ma non mi viene nulla in mente.Inoltre mi direbbequante volte compare e non chi compare più volte...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Così senza pensarci troppo non vedo altre possibilità se non quella di dichiarare un vettore di 5 elementi. Tra l'altro, qual è la differenza tra dichiarare 5 variabili intere e un vettore di 5 interi? Se vogliamo, la seconda è una soluzione anche un po' più ordinata.

    Per quanto riguarda questo:

    Inoltre mi direbbe quante volte compare e non chi compare più volte
    puoi semplicemente stabilire che nel primo elemento del vettore ci va la frequenza di 'a', nel secondo quella di 'e' e così via... quindi, quando vai a fare la ricerca del massimo nell'array, una volta trovato il massimo ti memorizzi pure l'indice dell'elemento dell'array in cui lo hai trovato e, a seconda del suo valore (0, 1, 2...) concludi qual è la vocale presente più volte (a, e, i...).
    every day above ground is a good one

  5. #5
    Utente di HTML.it L'avatar di abbax
    Registrato dal
    Feb 2009
    Messaggi
    227
    Perfetto... speravo che ci fosse un metodo un po' meno laborioso... per fare una cavolatina ci sono volute un bel po' di righe. Comunque grazie mille. Dovrai sopportarmi fino a lunedì e poi ti lascerò in pace dato che avrò l'esame.. se andrà bene lo dovrò soprattutto a te

  6. #6
    Utente di HTML.it L'avatar di abbax
    Registrato dal
    Feb 2009
    Messaggi
    227
    Occhio che domani farò un altro esercizio e ti rimanderò domande... ora tregua
    l'esercizio dice: dato un array ordinato levare gli elementi che si ripetono e aggiungere tanti 0 in coda per tornare alla lunghezza iniziale. Immagino che sia tutto di malloc e realloc giusto?

  7. #7
    Utente di HTML.it L'avatar di abbax
    Registrato dal
    Feb 2009
    Messaggi
    227
    Come promesso sono tornato. Avevo letto maluccio l'esercizio: praticamente ho un vettore orninato e devo creare un nuovo vettore dove levo i doppioni del primo e metto tanti zeri quanti doppioni ho tolto. Purtroppo nella sostituzione c'è qualcosa che non torna. Il vettore si chiama v con indice i, il vettore nuovo è w con indice j e la lunghezza è n:

    codice:
    count=0;
           for(i=1, j=1; i<n; i++, j++){
                  if(v[i]!=v[i-1]){
                     w[j]=v[i];
                     count+=1;}
                  else
                  ;
                  }
           for(j=count; j<n; j++)
               w[j]=0;
           printf("\n\n\n Vettore finale:       ");
            for(j=0; j<n; j++){
                    printf("%3d", w[j]);}

  8. #8
    Utente di HTML.it L'avatar di abbax
    Registrato dal
    Feb 2009
    Messaggi
    227
    non lo leggere nemmeno sopra... ho trovato l'errore (incrementavo sempre la j anche quando non allocavo nulla)...
    però giusto per completezza vorrei mettere un controllo che dica se il vettore è ordinato o no... non so però se c'è un comando che mi faccia uscire dal programma se il vettore non è ordinato
    Ho fatto così, però non fa nulla....
    codice:
     cont=0               
    for (i=(n-2); i=0; i--){
                        if(v[i]>v[i+1])
                        cont+=1;
                        else
                        ;}
           if (cont!=0){
                        printf("\nVettore non ordinato");
                       exit(0);}
           else;

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    abbax ci sono un paio di cose che non vanno (non dico nell'esercizio); non spetta a me fare il moderatore, ma poiché la cosa mi riguarda in prima persona te lo dico:

    1) rivolgersi ad un determinato utente quando si scrive su un forum non sta bene. Fin quando uno prende in esame il tuo problema, allora ha senso rivolgersi a lui in prima persona come interlocutore (ciò non toglie, comunque, che chiunque può entrare nella discussione in un secondo momento), ma se vieni qui a proporne un altro non è detto che debba essere lo stesso utente a risponderti... io non faccio tutorato online, e poi ci sono un bel po' di utenti molto più capaci di me;

    2) se hai un esercizio diverso su cui hai problemi, devi aprire un nuovo topic. Questo thread non si intitola "i problemi di abbax", ma "[c] stringhe ricerca vocali".

    Comunque, per arrestare il programma potresti ricorrere alla funzione exit() definita in stdlib.h

    http://www.cplusplus.com/reference/c...dlib/exit.html
    http://digilander.libero.it/uzappi/C...ioni/exit.html
    every day above ground is a good one

  10. #10
    Utente di HTML.it L'avatar di abbax
    Registrato dal
    Feb 2009
    Messaggi
    227
    ok, pardon. Comunque come vedi l'ho messa nel ciclo e ho detto che non fa nulla

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.