Problemino programma in C - stringhe

di il
15 risposte

Problemino programma in C - stringhe

Buona sera a tutti, mi chiamo Giuseppe e sono nuovo del forum.
Chiedo un vostro aiutino in quanto mi sto avvicinando alla programmazione in C per un esame all'uni.
Ecco dovrei scrivere un programma in c che faccia questo:
scrivere un programma C che legga da input 10 stringhe di caratteri. Il programma deve:
1. Calcolare la lunghezza di ogni parola e stamparla a video.
2. Stampare a video la lunghezza totale delle parole.

Esempio di output:
pippo 5
pluto 5
paperone 8
...
Somma lunghezza parole: 64


ecco io ho provato a scrivere qualcosa mettendo in pratica quello che so (in fondo al testo metto il codice); ho cominciato utilizzando solo due stringhe per fare una prova sull'input, output di stringhe....però non riesco a capire come fare per inserire prima tutte le stringhe calcolandone la lunghetìzza (ciclo for??) e poi calcolare alla fine la lunghezza totale.
spero possiate aiutarmi. grazie infinite

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

int main () {
int i, x, y;
   char str1[20], str2[20];
   printf("Inserisci 2 stringhe caratteri : \n");                    
scanf("%s\n", str1);
scanf("%s", str2);
x=strlen(str1);
y=strlen(str2);
printf("%s - %d\n", str1, x);
printf("%s - %d\n", str2, y); 
printf("%d\n", x+y); 
   

   system("PAUSE");
   return EXIT_SUCCESS;
    
     
     }

15 Risposte

  • Re: Problemino programma in C - stringhe

    Ciao.
    Il tuo algoritmo è giusto. Ora tocca modificarlo per come ti chiede l'esercizio.
    Esattamente tu metti tutte le stringhe con un ciclo for e poi ci sono vari modi e metodi per fare ciò che a te serve, te ne dico il primo che mi viene a mente.
    Crei un primo ciclo for solo per inserire le stringhe (con un array di stringhe) e un secondo ciclo for per visualizzare le stringhe inserite e il numero di lettere e contemporaneamente questo numero di lettere lo aggiungi ad un contatore che ti conta la somma totale delle parole (ricordalo di inizializzare a 0). Oppure potresti fare, anche se è molto meglio il metodo che ti ho già detto, di fare sempre un ciclo for per inserire le stringhe e già in questo ciclo contare la lunghezza della parola e memorizzarlo in un altro array, poi fare un altro ciclo che visualizza stringhe e corrispondente numero. Questo metodo è più dispendioso a livello di risorse ma ti facilita il conteggio delle lettere totali di tutte le stringhe poichè non devi far altro che scorrere l'array delle lunghezze delle parole e fare una somma. Io ti consiglierei il primo metodo, ma ti ho detto anche il secondo per farti capire che ci son vari metodi per risolverlo, sta a decidere come ti trovi meglio.

    Spero di esserti stato d'aiuto
  • Re: Problemino programma in C - stringhe

    Eduadie ha scritto:


    Crei un primo ciclo for solo per inserire le stringhe (con un array di stringhe) e un secondo ciclo for per visualizzare le stringhe inserite e il numero di lettere e contemporaneamente questo numero di lettere lo aggiungi ad un contatore che ti conta la somma totale delle parole (ricordalo di inizializzare a 0).

    Ciao, grazie per i suggerimenti Eduadie, allora ho provato un pò mettendo l'inserimento di 5 stringhe... ecco io codice
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main () {
    int i, x, y=0;
       char str[4][20];
       printf("Inserisci 5 stringhe caratteri: \n");
       for(i=0;i<=4;i++){                    
    scanf("%s", str[i]);
    } 
    for(i=0;i<=4;i++){
     x=strlen(str[i]);
     y=y+x;
    printf("%s - %i\n", str[i], x);                 
    }              
    printf("\n\nLa lunghezza totale delle 5 stringhe e': %i\n", y); 
       system("PAUSE");
       return EXIT_SUCCESS;
        
         
         }
    sembra che funzioni...però volevo sapere se c'è qualche errore, ad esempio non sono molto sicuro sulla dichiarazione dell'array "char str[4][20]"
  • Re: Problemino programma in C - stringhe

    È giusta la dichiarazione perché una stringa è un array di char e quindi fai un array di array anche noto come array bidimensionale...


    Sent from my iPhone using Tapatalk
  • Re: Problemino programma in C - stringhe

    AceSpades ha scritto:


    È giusta la dichiarazione perché una stringa è un array di char e quindi fai un array di array anche noto come array bidimensionale...


    Sent from my iPhone using Tapatalk
    ok, quindi in pratica è come se avessi dichiarato un arrey di 5 righe (stringhe da immettere) e 21 colonne (lunghezza massima delle stringhe)??
  • Re: Problemino programma in C - stringhe

    Di un array (non arrey) di 4 x 20 non 4 x 21
  • Re: Problemino programma in C - stringhe

    oregon ha scritto:


    Di un array (non arrey) di 4 x 20 non 4 x 21
    Scusa errore battitura ....ma non è sempre compreso l'indice 0 anche nell array [20]??
  • Re: Problemino programma in C - stringhe

    Sì, c'è l'indice 0, infatti nel caso di [20] l'indice va da 0 a 19
  • Re: Problemino programma in C - stringhe

    Vero che stupido che sono [WINKING FACE] grazie


    Inviato da mio iPhone utilizzando Tapatalk
  • Re: Problemino programma in C - stringhe

    Ma anche per 4 l'indice va da 0 a 3

    Infatti, in questa linea

    for(i=0;i<=4;i++){

    sbagli perché deve essere

    for(i=0;i<4;i++){
  • Re: Problemino programma in C - stringhe

    Ho provato, ma se inserisco i<4 mi fa inserire solo 4 stringhe e non 5
  • Re: Problemino programma in C - stringhe

    Quindi la forma piu coretta forse come dici tu sarebbe, nel codice precedente, dichiarare
    char str[5][20];
    e non
    char str[4][20];
    e poi inserire nei for
    for(i=0;i<5;i++)
    ??
  • Re: Problemino programma in C - stringhe

    Se devi usare 5 righe, sì
  • Re: Problemino programma in C - stringhe

    oregon ha scritto:


    Se devi usare 5 righe, sì
    ok grazie
  • Re: Problemino programma in C - stringhe

    Scusami un altra cosa...per curiosità...ma quindi quando dichiaravo char str[4][20]
    e poi eseguivo il for(i=0;i<=4;i++) ad esempio per prendere i dati da tastiera....la quinta stringa dove la salvava??
Devi accedere o registrarti per scrivere nel forum
15 risposte