Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] compito su stringhe, enum e funzioni

    Ciao a tutti!!! Questa è la prima volta che scrivo in un forum! Speriamo di iniziare bene...

    Vado subito al dunque: è da una settimana che provo a capire qualcosa del C++ e detto sinceramente sono ancora parecchio confuso (premetto che è anche la prima volta che mi avvicino ad un linguaggio di programmazione).

    Ho provato a scrivere un programma ma come avevo previsto... non parte. Mi farebbe piacere se qualcuno potesse aiutarmi a capire dove sbaglio... almeno so da dove cominciare!

    Non pretendo che mi aiutiate a correggere tutto, ma almeno a capire qualcosina in più. Grazie a tutti!!! E state attenti... la visione è consigliata soltanto ad un pubblico adulto!!! VVoVe:


    Questo è il testo dell'esercizio che ho provato a fare:


    <<< Definire un tipo 'boolean' i cui possibili valori sono 'FALSE' e 'TRUE'.
    Scrivere una funzione 'suffix' che prende come argomento due stringhe 'word' e 'sequence' e
    restituisce un valore di tipo 'boolean', in particolare restituisce:
    - 'TRUE' se 'sequence' è un suffisso di 'word',
    - 'FALSE' altrimenti.
    Nel 'main' del programma, leggere due parole 's1' e 's2' dallo standard input e visualizzare il risultato della funzione 'suffix' invocata su 's1' e 's2'.
    NB. Per leggere una parola non è richiesto l’uso della funzione 'getchar'.
    Suggerimento: puo’ essere utile definire una funzione 'length(s)' che restituisca la lunghezza
    della stringa 's'.
    Esempi.
    word=”Programmazione”; sequence=”azione”; suffix restituisce TRUE
    word=”Programmazione”; sequence=”amazione”; suffix restituisce FALSE >>>



    E questo è il mio misero tentativo:



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

    #define MAX 50

    typedef enum
    {
    FALSE,
    TRUE
    } boolean;

    int main();
    int lenght(char s[]);
    boolean suffix(char word[],char sequence[]);

    int main()
    {
    char s1[MAX],s2[MAX];

    printf("Inserisci la prima parola: ");
    scanf("%s",&s1);
    printf("\n\nInserisci la seconda parola: ");
    scanf("%s",&s2);
    if((suffix(s1[],s2[]))==FALSE) // ERROR: expected primary-expression before ']' token
    printf("\n\nLa seconda parola non e' un suffisso della prima.\n\n\n");
    else
    printf("\n\nLa seconda parola e' un suffisso della prima.\n\n\n");

    system("pause");
    }

    int lenght(char s[])
    {
    int i,l;

    for(i=0,l=0;(i<MAX)&&(s[i]!='\n');i++)
    l++;

    return l;
    }

    boolean suffix(char word[],char sequence[])
    {
    int n,i,j,x=lenght(sequence[]),y=lenght(word[]); // ERROR: expected primary-expression before ']' token

    if(x>=y)
    return FALSE;
    else
    {
    for(i=x-1,j=y-1;(sequence[i]==word[j])&&(i>=0);--i,--j)
    ++n;
    }
    if(n==x)
    return TRUE;
    else
    return FALSE;
    }

  2. #2

    Re: [C] compito su stringhe, enum e funzioni

    Ho corretto un po' il codice
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX 50
    
    typedef enum
    {
            FALSE = 0,
            TRUE
    } boolean;
    
    int lenght(char s[]);
    boolean suffix(char word[], char sequence[]);
    
    int main(void)
    {
       char s1[MAX];
       char s2[MAX];
       
       printf("Inserisci la prima parola: ");
       scanf("%s", s1); /*Un'array restituisce automaticamente un indirizzo*/
       printf("\n\nInserisci la seconda parola: ");
       scanf("%s", s2);
       
       if(!suffix(s1, s2))     // ERROR: expected primary-expression before ']' token
                   printf("\n\nLa seconda parola non e' un suffisso della prima.\n\n\n");
       else
                   printf("\n\nLa seconda parola e' un suffisso della prima.\n\n\n");
       
       system("pause");
       
       return 0; /*IMPORTANTE*/
       
    }
    
    int lenght(char s[])
    {
        int len;
        
       /*Le stringhe finiscono con '\0'*/ 
       for(len = 0; (i < MAX) && (s[i] != '\0'); len++);
        
        return len;
    }
    
    boolean suffix(char word, char sequence)
    {
            int n, i, j;
            int x = lenght(sequence);
            int y = lenght(word);     // ERROR: expected primary-expression before ']' token
            
            if(x >= y)
                    return FALSE;
            else for(i = x - 1, j = y - 1; (sequence[i]==word[j]) && (i>=0); --i, --j, ++n);
            
            if(n==x)
                    return TRUE;
            else
                    return FALSE;
    }
    Attenzione non fai distinzione tra C e C++
    Per il resto è solo conoscenza del linguaggio e logica, o algoritmi prefatti, scegli tu :/
    In ogni caso approfondirei i puntatori, i puntatori a caratteri e il C in generale.

    P.S.: Usa i tag CODE


  3. #3
    Grazie!!! Sei stato davvero gentile!

    Allora adesso andrò a ripassare un pò, partendo dagli argomenti che mi hai consigliato... Speriamo di riuscire a migliorare presto!!!


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