Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    10

    Programma per calcolo lunghezze parole

    Ciao a tutti!
    Ultimamente mi sono iniziato ad interessare al C++ per il corso di Informatica ke sto seguendo all'uni...
    Volevo kiedere a voi ke ne sapete sicuramente molto più di me come si potrebbe impostare un programma il quale, una volta inserita una frase casuale da parte dell'utente, ti scrive il numero di parole inserite e il numero di lettere della parola più lunga della frase...

    Per favore aiutatemi, ke sto da una settimana a tentarci e non ci riesco...

    Ps.Considerate ke sono un neofita del C++, quindise possibile aiutatemi passo passo...

    Grazie dell'attenzione, CiAuZ a tutti!

    [Se non fossi stato kiaro nella descrizione faccio n'esempio:
    Io inserisco "Pippo e Pluto sono personaggi della Disney" e lui scrive
    Num parole: 7
    Num lettere parola più lunga: 10]

    Ri-CiAuZ

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Dato che ci provi da una settimana, avrai scritto del codice di prova ... postalo e vediamo di commentarlo passo passo in modo da correggere gli errori ed arrivare insieme alla soluzione ...


    P.S. E dato che questo non e' un SMS, per una migliore comprensibilita', scrivi senza k e abbreviazioni strane ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di iiba88
    Registrato dal
    May 2008
    Messaggi
    11
    Se è da poco che ti stai approcciando alla programmazione forse è meglio fare qualche esercizietto piu facile se invece hai gia fatto cio e ti sei bloccato su questo devi provare a ragionare e a pensare quali sono i vincoli:
    ALLORA

    Prendiamo la frase che hai inserito tu:Pippo e Pluto sono personaggi della Disney

    per calcolare da quante parole è formata questa frase bisogna scandire carattere per carattere tutta la frase e nel momento in cui trovi uno spazio omegli siccome il c interpreta questi spazi in codice ascii ci vuole un ciclo non predeterminato (while) che scandisce carattere per carattere e una condizione che confronta ogni carattere con quello dello spazio se i caratteri coincidono allora se la conzizione è vera(true) allora incrementi un contatore alla fine della frase dovresi ottenere in questo contatore il numero di parole io non ho implementato il codice ma credo che logicamente dovrebbe funzionare,l'unica cosa di cui non sono certo è se aggiungere uno per l'ultima parola perchè l'ultimocarattere della stringa dovrebbe essere \n.

    per quanto riguarda la lunghezza delle parole bisogna separarle una ad una e verificarne la lunghezza con una funzione di libreria strlen(parola) questa funzione riceve la parola e conta il numero di caratteri e puoi inizializzare una variabile max a 0 e effettuare un confronto se max<strlen(parola) assegnare a max strlen(parola)

    non so se sono stato chiaro ma ti ho spiegato un po concettualmente cosa bisogna fare provaci e magari se hai dubbi chiedi pure e se puoi post anche il codice che produci

    ciao...
    Un ingegnera deve avere sempre la soluzione giusta ed efficiente!!!

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Suddividi la stringa dagli spazi con strtok.
    Finchè il valore ritornato da strtok è != da null, strlen sul puntatore ricevuto, i++ per il conteggio delle parole.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    10
    Ecco, appunto, io avevo impostato come mi aveva detto iba...
    ...Solo che non capisco come faccio a dire alla macchina "se la lettera inserita è diversa da spazio"...
    Quale codice devo utilizzare?Dovrei fare un IF carattere != spazio...ma come si scrive in linguaggio C++?

  6. #6
    Un'idea di codice:
    codice:
    char ch;
    int numberOfSpace = 0;
    int max, count;
    
    max = 0;
    count = 0;
    
    /*Prende un carattere dallo stdin fino a quando non incontra '\n'*/
    while((ch = getchar()) != '\n'){
       
       /*Se incontra uno spazio significa, che ha "letto" una parola*/
       if(ch == ' '){
          
          /*Contare il numero di spazi equivale a contare il numero delle parole*/
          numberOfSpace++;
          /*Se il numero di caratteri letti fino allo spazio è maggiore di max, allora il massimo di caratteri diventa count*/
          if(max < count) max = count;
          /*Azzera count per contare i caratteri della successiva parola*/
          count = 0;
          
       }
       
       /*Incrementa count*/
       count++;
       
    }

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da Aqua3o
    ...Solo che non capisco come faccio a dire alla macchina "se la lettera inserita è diversa da spazio"...
    Quale codice devo utilizzare?Dovrei fare un IF carattere != spazio...ma come si scrive in linguaggio C++?
    Quindi il tuo problema non e' nel definire l'algoritmo o il meccanismo logico con cui risolvere il problema, ma nella semplice "non conoscenza" delle basi del linguaggio C ...

    Secondo me, sarebbe bene che tu facessi una bella rilettura del tuo libro (qualunque esso sia) del linguaggio C e rivedessi le istruzioni di base ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it L'avatar di iiba88
    Registrato dal
    May 2008
    Messaggi
    11
    non so perchè essere cosi crudi con qualcuno che si sta approcciando alla programmazione,caro oregon cosi non sei d'aiuto proprio a nessuno.

    io sono da poco iscritto a questo forum e credo che questo forum abbia l'intento di aiutare chi si trova in difficolta e non di scoraggiarlo come stai facendo tu...

    Allora se il tuo problema è quell if ti ha fatto vedere menphisx nel suo codice postato, lo spazio si indica tra virgolette,come daltronde tutti i confronti vengono fatti cosi che poi vengono tradotte dal compilatore com caratteri ascii pero soltanto se includi la stringa o il carattere da confrontare tra una virgoletta cosi per esempio 'a' in questo caso vogliamo confrontare il carattere a con qualche altro carattere da input.


    if(ch == ' ') questa è la condizione dove ch sta per il carattere che sta leggendo il compilatore dalla stringa e lo confronta conun carattere vuoto...

    se ci sono altri problemi stiamo qua
    Un ingegnera deve avere sempre la soluzione giusta ed efficiente!!!

  9. #9
    Originariamente inviato da iiba88

    Allora se il tuo problema è quell if ti ha fatto vedere menphisx nel suo codice postato, lo spazio si indica tra virgolette,come daltronde tutti i confronti vengono fatti cosi che poi vengono tradotte dal compilatore com caratteri ascii pero soltanto se includi la stringa o il carattere da confrontare tra una virgoletta cosi per esempio 'a' in questo caso vogliamo confrontare il carattere a con qualche altro carattere da input.


    if(ch == ' ') questa è la condizione dove ch sta per il carattere che sta leggendo il compilatore dalla stringa e lo confronta conun carattere vuoto...

    se ci sono altri problemi stiamo qua
    Meglio insegnare subito le cose giuste: nei confronti la costante SEMPRE a sinistra!
    http://www.isidoroghezzi.net/assegna...r_sbaglio.html
    ;-)

  10. #10
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Originariamente inviato da iiba88
    non so perchè essere cosi crudi con qualcuno che si sta approcciando alla programmazione,caro oregon cosi non sei d'aiuto proprio a nessuno.

    io sono da poco iscritto a questo forum e credo che questo forum abbia l'intento di aiutare chi si trova in difficolta e non di scoraggiarlo come stai facendo tu...
    Non esageriamo adesso.
    Il consiglio dato da Oregon è piu' che giusto: se l'amico che chiede aiuto non conosce le basi del linguaggio, è inutile proporre una soluzione: molto probabilmente non riuscirebbe a capire, e mi sembra altamente inutile cominciare a scrivere
    Dunque per fare il confronto devi fare == 'c', se vuoi confrontare una stringa devi fare strcmp, se poi vuoi andare a capo dai un endl nel cout...

    Arriverebbero delle domande a cui porre risposta è ancor piu' difficile:
    perchè 'c' si può fare e non posso fare == "parolina"? Perchè devo usare strcmp? endl che significa? se voglio fare un mio indicatore dello stream che devo fare? Per misurare la grandezza di una parola come faccio?

    Sarebbe il caso quindi, di avere le basi (ma proprio le basi) del linguaggio prima di chiedere effettivamente come si fa una certa cosa.
    E se vogliamo dirla tutta il regolamento dice che prima di postare si devono leggere le pillole.
    Se lo avesse fatto, sarebbe arrivato facilmente qui

    Inoltre (senza togliere niente a nessuno, per carità) qui chi conosce il linguaggio è lui e qualcun'altro. Se se ne vanno, qui possiamo chiudere baracca.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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.