Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 33

Hybrid View

  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Diverse ambiguità si risolvono proprio secondo logica, così come hai fatto notare.
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    ... una lettera che non appare è certamente la lettera con minor frequenza...
    Chiaramente si intende tra le lettere presenti nella stringa.

    Inoltre non è specificato se maiuscole e minuscole siano da considerarsi equivalenti.
    Direi di si dato che non è specificato di fare la distinzione.
    Per quanto riguarda l'inserimento della frase: è da assumersi la possibilità di inserire spazi?! Altrimenti non hanno senso i punti 1 e 2.
    Perciò sono ammesse frasi con spazi.


    L'unico vero dubbio è su
    Vorrei puntualizzare che i punti 3 e 4 sono ambigui in quanto possono esserci lettere con ugual frequenza.
    Non si sa se si devono dire tutte le lettere o una a caso, per fare una cosa fatta bene direi che andrebbero elencate tutte le eventuali a pari merito, ma visto il livello di difficoltà dell'esercizio probabilmente va bene una a caso (verosimilmente la prima trovata con frequenza massima).

  2. #2
    Sto cercando di farlo punto per punto,per il punto richiesto dall'esercizio può esserci qualcosa di giusto?van bene,non va bene o solo in parte.

    #include <stdio.h>
    #include <string.h>


    unsigned lunghezza = 0;
    char stringa[100];


    int main(void)
    {
    printf("Inserire parola: ");


    fgets(stringa, 99, stdin);






    stringa[strlen(stringa)-1]=0;


    lunghezza=strlen(stringa);


    printf("La lunghezza e': %d \n",lunghezza);
    }

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Comincia dalla prima richiesta: inserisci una frase che preveda solo lettere (e spazi).

    Puoi usare le funzioni isalpha e isspace dalla libreria ctype.h
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Svolgi quindi il secondo compito: scrivi una funzione che stampa il menu e legge la scelta e la ritorna al main (controllando che la scelta effettuata sia una scelta valida cioè sia compresa tra [1,8]).

    Ora svolgi i vari punti:
    1) usa un loop e isalpha per contare le lettere
    2) usa un loop e isspace per contare gli spazi
    5) la funzione d'inserimento usata all'inizio
    6) usa un loop e toupper (da ctype.h)
    7) usa un loop e tolower (da ctype.h)
    8) esci dal loop che avrai creato nel main
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Ciao scara come già saprai sono alle prime armi di programmazione e non riesco a muovermi bene ho molte difficoltà penso che l'esercizio che mi sia stato dato è abbastanza difficile ma nn ho altra possibilità che farlo.Diciamo che aiutandomi a farlo potrei poi a programma completato capire un qualcosa di più avere un quadro più chiaro.Io ho iniziato dal primo punto e ho fatto così però nn so se sia giusto o cos'è che nn va.

    #include <stdio.h>
    #include <string.h>


    unsigned lunghezza = 0;
    char stringa[100];


    int main(void)
    {
    printf("Inserire parola: ");


    fgets(stringa, 99, stdin);






    stringa[strlen(stringa)-1]=0;


    lunghezza=strlen(stringa);


    printf("La lunghezza e': %d \n",lunghezza);
    }

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da Frank119933 Visualizza il messaggio
    Ciao scara come già saprai sono alle prime armi di programmazione e non riesco a muovermi bene ho molte difficoltà penso che l'esercizio che mi sia stato dato è abbastanza difficile ma nn ho altra possibilità che farlo.Diciamo che aiutandomi a farlo potrei poi a programma completato capire un qualcosa di più avere un quadro più chiaro.Io ho iniziato dal primo punto e ho fatto così però nn so se sia giusto o cos'è che nn va.

    #include <stdio.h>
    #include <string.h>


    unsigned lunghezza = 0;
    char stringa[100];


    int main(void)
    {
    printf("Inserire parola: ");


    fgets(stringa, 99, stdin);






    stringa[strlen(stringa)-1]=0;


    lunghezza=strlen(stringa);


    printf("La lunghezza e': %d \n",lunghezza);
    }
    Non è quella la prima richiesta: la prima richiesta è "inserimento di una frase costituita solo da lettere maiuscole e minuscole [e spazi]"

    edit: Ti ho guidato l'esercizio, ora almeno segui la guida. Non lo scrivo io per te.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Quote Originariamente inviata da Frank119933 Visualizza il messaggio
    Ciao scara come già saprai sono alle prime armi di programmazione e non riesco a muovermi bene ho molte difficoltà penso che l'esercizio che mi sia stato dato è abbastanza difficile ma nn ho altra possibilità che farlo.Diciamo che aiutandomi a farlo potrei poi a programma completato capire un qualcosa di più avere un quadro più chiaro.Io ho iniziato dal primo punto e ho fatto così però nn so se sia giusto o cos'è che nn va.

    #include <stdio.h>
    #include <string.h>

    unsigned lunghezza = 0;
    char stringa[100];

    int main(void)
    {
    printf("Inserire parola: ");


    fgets(stringa, 99, stdin);

    stringa[strlen(stringa)-1]=0;

    lunghezza=strlen(stringa);

    printf("La lunghezza e': %d \n",lunghezza);
    }
    L'esercizio non è per niente difficile, si tratta solo di manipolare stringhe, direi che il professore è stato più che clemente nel darti questo esercizio.
    Diciamo le cose come stanno: è una materia che non ti piace e non l'hai studiata.

    Non ti dico questo per mortificarti o prenderti in giro, te lo dico perché non se ne può più di sentire gente che non studia e poi si lamenta: questo che ti è stato dato è un esercizio veramente stupido, non saperlo risolvere vuol dire non aver mai fatto nulla.

    Detto ciò: il tuo codice dice la lunghezza della stringa, compresi gli spazi, il che non è ciò che ti viene chiesto dal punto 1) il punto 1) ti chiede la lunghezza "senza" spazi, quindi devi contare il numero di spazi presenti nella stringa e sottrarli alla lunghezza della stessa, il numero che viene fuori è ciò che ti si chiede.

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Dato che parlare è inutile e visto le confidenze che hai scritto in privato e di cui per questa volta voglio fidarmi ti posto una soluzione dell'esercizio (non del tutto sicura visto l'uso di gets, ma sei liberissimo di migliorarla dopo averla compresa). Tuttavia pretendo che in questi giorni la studi e chiedi chiarimento per ogni passaggio che non comprendi.
    codice:
    #include <stdio.h>
    #include <ctype.h>
    #include <stdbool.h>
    #include <string.h>
    
    #define BUFF_SIZE 1024
    
    int menu(void) {
        int scelta;
        do {
            puts(
                "1) Stampa numero di lettere senza spazi.\n"
                "2) Stampa del numero di spazi\n"
                "3) Stampa della lettera che si ripete il maggior numero di volte\n"
                "4) Stampa della lettera che si ripete il minor numero di volte\n"
                "5) Re-inserimento della frase\n"
                "6) Stampa della frase tutta maiuscola\n"
                "7) Stampa della frase tutta minuscola\n"
                "8) Uscita\n"
                "Operazione n°: "
            );
            scanf("%d", &scelta);
        } while(scelta<1 || scelta>8);
        return scelta;
    }
    
    void m1(char *s) {
        int nspaces = 0;
        int i;
        for(i = 0; i < strlen(s); ++i)
            if(!isspace(s[i]))
                ++nspaces;
        printf("Lettere: %d\n", nspaces);
    }
    
    void m2(char *s) {
        int spaces = 0;
        int i;
        for(i = 0; i < strlen(s); ++i)
            if(isspace(s[i]))
                ++spaces;
        printf("Spazi: %d\n", spaces);
    }
    
    void string_to_upper(char *s) {
        int i;
        for(i = 0; i < strlen(s); ++i)
            s[i] = toupper(s[i]);
    }
    
    void string_to_lower(char *s) {
        int i;
        for(i = 0; i < strlen(s); ++i)
            s[i] = tolower(s[i]);
    }
    
    void m3(char *s) {
        char tmp[BUFF_SIZE];
        strcpy(tmp, s);
        string_to_upper(tmp);
        int table['Z'-'A'+1];
        int i;
        for(i = 0; i < 'Z'-'A'+1; ++i)
            table[i] = 0;
        for(i = 0; i < strlen(tmp); ++i)
            ++table[(tmp[i])-'A'];
        int max = table[0];
        int i_max = 0;
        for(i = 1; i < 'Z'-'A'+1; ++i)
            if(table[i] > max){
                max = table[i];
                i_max = i;
            }
        printf("Lettera più frequente: %c\n", i_max+'A');
    }
    
    void m4(char *s) {
        char tmp[BUFF_SIZE];
        strcpy(tmp, s);
        string_to_upper(tmp);
        int table['Z'-'A'+1];
        int i;
        for(i = 0; i < 'Z'-'A'+1; ++i)
            table[i] = 0;
        for(i = 0; i < strlen(tmp); ++i)
            ++table[(tmp[i])-'A'];
        int min = table[0];
        int i_min = 0;
        for(i = 1; i < 'Z'-'A'+1; ++i)
            if((table[i] != 0 && table[i] < min) || min == 0){
                min = table[i];
                i_min = i;
            }
        printf("Lettera meno frequente: %c\n", i_min+'A');
    }
    
    void m5(char *s) {
        bool repeat;
        int i;
        do {
            puts("Inserisci una frase composta di soli caratteri alfanumerici e spazi:");
            repeat = false;
            gets(s);
            for(i = 0; i < strlen(s); ++i)
                if(!(isalpha(s[i]) || isspace(s[i]))) {
                    repeat = true;
                    break;
                }
        } while(repeat);
    }
    
    void m6(char *s) {
        char tmp[BUFF_SIZE];
        strcpy(tmp, s);
        string_to_upper(tmp);
        printf("Frase in maiuscolo: %s\n", tmp);
    }
    
    void m7(char *s) {
        char tmp[BUFF_SIZE];
        strcpy(tmp, s);
        string_to_lower(tmp);
        printf("Frase in minuscolo: %s\n", tmp);
    }
    
    int main(void) {
        char s[BUFF_SIZE];
        bool quit = false; 
        m5(s);
        while(!quit)
            switch(menu()) {
                case 1: m1(s); break;
                case 2: m2(s); break;
                case 3: m3(s); break;
                case 4: m4(s); break;
                case 5: m5(s); break;
                case 6: m6(s); break;
                case 7: m7(s); break;
                case 8: quit = true; break;
            }
        return 0;
    }
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Dato che parlare è inutile e visto le confidenze che hai scritto in privato e di cui per questa volta voglio fidarmi ti posto una soluzione dell'esercizio (non del tutto sicura visto l'uso di gets, ma sei liberissimo di migliorarla dopo averla compresa). Tuttavia pretendo che in questi giorni la studi e chiedi chiarimento per ogni passaggio che non comprendi. ...
    Ti invito a rileggere cosa ho scritto nella prima pagina, fornire la soluzione ad un esercizio d'esame è reato.


    Discussione segnalata.
    Ultima modifica di Alhazred; 17-06-2014 a 20:03

  10. #10
    Alhazred non è un esame è solo un esercizio che mi è stato dato per prepararmi al recupero dell'esame dunque nn è reato.Grazie mille scara come promesso ripreso da questo duro colpo che mi ha colpito e per ricambiare la fiducia da te concessa mi metterò sotto sui libri e farò un esame eccellente per te perché te lo devo

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 © 2026 vBulletin Solutions, Inc. All rights reserved.