Esercizio stringhe

di Anonimizzato28546 il
7 risposte
Salve ho un problema con un punto di una traccia di informatica dato che è da poco che mi sono approcciato a questo magnifico mondo del linguaggio C.
Mi potreste spiegare come risolvere questo punto?
1- Il programma per ogni stringa letta produce una nuova stringa che contiene, ogni lettera minuscola della frase originale, seguita dal suo numero di occorrenze nella frase.
Aspetto presto un vostro responso ,grazie e buona giornata.
Il testo da analizzare è il seguente:
nel mezzo del cammin di nostra vita
mi ritrovai per una selva oscura
che la diretta via era smarrita

7 Risposte

  • Ma cosa vorresti sapere con precisione? Bisognerebbe capire se sai come si tratta una stringa e cosa non sai fare esattamente.

    In realtà dovresti proporre un codice per provare a risolvere il problema e vediamo cosa non sai fare.
  • Il mio problema è che non so proprio come impostare il codice
  • Hai detto che è "un punto" di una traccia. E il resto? Lo hai scritto?

    Ma comunque, non sai neanche come iniziare? Non sai neanche come inserire il testo da esaminare in una stringa?
  • Ho fatto solo l'apertura da file delle stringhe ed è corretta però adesso questo punto non so proprio come impostarlo
  • Intanto posta il codice che hai fatto così si parla di qualcosa di concreto.

    Poi devi contare le occorrenze delle lettere della frase. Per farlo usa un vettore di 26 interi che all'inizio azzeri e in cui memorizzi il numero di lettere trovate nella frase. Se trovi una 'a' aumenti di uno il primo elemento del vettore e così via (usando il codice ASCII). Lo fai per tutte le lettere comprese nella frase.

    Intanto prepara un ciclo for per la scansione di tutte le lettere della stringa.
  • #code
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define max 100

    int main()

    {
    char stringa[max];
    FILE *fp;
    int i,j,k;
    fp = fopen("input.txt","r");
    if(fp!=NULL)
    {
    while(fgets(stringa,max,fp)!=NULL)
    {
    if(stringa[strlen(stringa)-1]== '\n')
    printf("%s",stringa);
    }
    }

    {

    FILE * fp;
    int i;
    fp = fopen("input.txt","r");
    long int caratteri[256]={0};
    char stringa=0;
    while ((stringa=(char)fgetc(fp)) != EOF)
    caratteri[stringa]++;
    for (i = 0; stringa != '\0'; i++)
    for (i=65; i<91;i++) printf("Lettera %c ( o %c ):\t %ld occorrenze\n", (char)i, (char)i+32, caratteri + caratteri[i+32]);
    return 0;

    }
    }
    Sono riuscito ad elaborare un algoritmo che mi permette di visualizzare il numero di occorrenza di tutto il testo, ma a me serve il numero di occorrenza per ogni stringa.Poiché una volta svolto devo inserire in una struct sia la prima stringa che la seconda e infine il conteggio complessivo sia per la prima stringa che per la seconda, ossia quella con il numero di occorrenze. Ecco perché necessito di fare il numero di occorrenze per stringhe e non per testo completo.
  • Usa i tag CODE (come da regolamento) per il codice nel forum altrimenti non si capisce nulla.

    Per tutto il testo o per ogni stringa la cosa non cambia molto. Ma il codice non si capisce senza tag CODE
Devi accedere o registrarti per scrivere nel forum
7 risposte