Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    38

    [c] problemi con stringhe

    devo acquisire due elementi, prima uno e poi un'altro in due stringhe diverse.
    l'elemento puo' essere o una lettera compresa tra A e Z oppure tra a e z quindi minuscole oppure maiuscole...
    se l'elemento inserito e' una lettera maiuscola deve essere del tipo: A( a,x,... )


    io pensavo di fare cosi:
    1) chiedo all'utente di inserire il primo termine nella stringa1, poi richiamo la funzione che controlla se e' stato inserito tutto, secondo i miei criteri;
    se non rispetta i miei criteri ricomincia da capo richiedendo di reinserire la stringa..
    e cosi anche per la seconda stringa.


    i controlli sono:
    - se e' una lettera compresa tra a e z ne deve inserire soltanto una e poi passare all'inserimento della seconda stringa...

    - se il primo elemento della stringa e' una lettera maiuscola da A a Z, l'elemento successivo e' una '(' _e poi qua inserisce quello che vuole e l'ultimo elemento prima di '\0' deve essere _')'


    per fare questo io pensavo di allocare per la stringa uno spazio di 2 caratteri, cosi che per le costanti e le variabili l'utente puo' inserire solo un'elemento, mentre per le funzioni rialloca lo spazio aumentando ogni volta di 1 con realloc..

    per ora ho scritto questo:

    codice:
    /*dichiarazione delle librerire*/
    #include <stdio.h>
    #include <stdlib.h>
    
    /*dichiarazione delle funzioni*/
    int controlli(char* stringa);
    
    /*definizione del main*/
    int main(int argc, const char * argv[])
    {
        int i,
            esito = 0,
            esito_controlli = 0;
        
        
        char    *stringa = NULL,
                carattere_non_letto;
        
        /*allocazione della stringa*/
        stringa=(char*)malloc(2*sizeof(char));
        
        /*acquisizione del primo temine*/
        do {
            printf("inserisci il primo termine:\n");
            esito = scanf("%s", stringa);
            
            
            /*validazione stretta*/
            if(esito !=1 || esito_controlli !=1)
            {
                do{
                    scanf("%c", &carattere_non_letto);}
                while(carattere_non_letto != '\n');
            }
            
        } while (esito !=1 || esito_controlli !=1);
        
        printf("la stringa inserita e': %s", stringa);
        
        return 0;
    }
    
    /*funzione per controllare se e' stato inserito tutto correttamente*/
    int controlli(char* stringa)
    {
        int esito_controlli = 0,
            esito,
            i;
    
        /*controllo se il carattere successivo ad una lettera minuscola e' il carattere di terminazione*/
            for (i = 0; i != '\0'; i++)
            {
                if (stringa[i] >= 'a' && stringa[i] <= 'z')
                {
                    if (stringa[i+1] == '\0')
                    {
                        esito_controlli = 1;
                        esito = 1;
                    }
                }
                else
                    esito_controlli = 0;
                esito = 0;
            }
        return (esito_controlli);
    }
    questa e' una bozza di codice, il problema che ho adesso, e' che non esce mai dal ciclo...

    ciao e grazie dell'aiuto a tutti

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai due variabili

    esito_controlli

    e quella nel main non viene mai modificata.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    38
    ma non e' utilizzata dalla funzione controlli??

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Tu sai che in C le variabili sono locali alle funzioni ?

    Quindi, quella del main e quella della tua funzione sono diverse e quella nel main non viene mai modificata.

    Oltre al fatto che la funzione controlli(...) non viene mai chiamata nel main.

    Devi rivedere le basi del C ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.