Uso di isdigit

di il
4 risposte

Uso di isdigit

Si scriva un programma che:
a. Definisca un vettore di caratteri e acquisisca una stringa al suo interno
b. Analizzi tale stringa rispondendo alle seguenti domande
i. Quanto è lunga la stringa?
ii. Quanti caratteri sono alfabetici e quanti numerici?

Non riesco a capire dove sbaglio...
Sicuramente per l'isdigit, ma non capisco proprio
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define N 50

int main()
{
    char vett[N];
    int i, l, numeri, alfab;
    numeri=0;
    alfab=0;

    printf("Inserire stringa: ");
    scanf("%s", vett);

    l=strlen(vett);
    printf("\nLa stringa e' lunga %d caratteri.", l);

    for(i=0; i<l; i++)
    {
        if(isdigit(vett[i]!=0))
           numeri++;
        else
        {
            if(isalpha(vett[i]!=0));
               alfab++;
        }
    }

    printf("\nI numeri sono %d, le lettere sono %d", numeri, alfab);

    return 0;
}

4 Risposte

  • Re: Uso di isdigit

    Ciao BosizeYou,
    prova a scrivere:
    
    if(isdigit(vett[i]))
    
    e vedrai che funziona! A questo punto non dovresti avere problemi a capire il motivo e non ti voglio togliere la soddisfazione di farlo da solo È uno dei soliti inghippi del C.
  • Re: Uso di isdigit

    Continuo a non capire
  • Re: Uso di isdigit

    Ciao BosizeYou
    potresti anche scrivere:
    
     if(isdigit(vett[i]) != 0)
    
    In pratica hai solo sbagliato a mettere la parentesi (personalmente preferisco la forma senza il != si fanno meno errori).
    In pratica IsDigit valutava il risultato dell' espressione vett != 0 che è o zero o un numero diverso da zero.

    Un altro consiglio è quello di abbondare con gli spazi che rendono il codice più leggibile (comunque anche così non è male, scrivi e indenti in maniera molto chiara).

  • Re: Uso di isdigit

    Che sbadatoooo. Grazie mille, seguirò i tuoi consigli per quanto riguarda gli spazi.
    Per la struttura, voglio essere ordinato
Devi accedere o registrarti per scrivere nel forum
4 risposte