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

    [C] funzione caratteri alfabetici e non

    Ciao ragazzi l'esercizio che volevo proporvi è il seguente:
    Scrivere il codice una funzione C che restituisca un vettore di quattro interi contenente il numero di caratteri alfabetici in maiuscolo,il numero di caratteri alfabetici in minuscolo, il numero delle cifre ed il numero di caratteri non alfanumerici contenuti in una stringa passata come argomento alla funzione

    La mia soluzione invece è:

    Int *count(char *str) {
    int i, p[4];
    for (i=0; i<’\0’; i++) {
    if (i ≥’A’ && i ≤’Z’)
    p[0]++;
    if (i ≥’a’ && i ≤’z’)
    p[1]++;
    if (i ≥’0’ && i ≤’9’)
    p[2]++;
    if (i != p[0] && i != p[1] && i != p[2])
    p[3]++;
    return p;
    }
    }

    che ne dite vi sembra giusto?
    potreste dirmi dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    i è l'indice numerico dei caratteri che controlli ... ma non rappresenta i caratteri che invece stanno in str. Quindi tutte le if sono sbagliate (oltre alla for nel controllo di fine ciclo).

    Anche l'ultima if non ha senso.

    Il vettore che restituisci non può essere locale (p). Devi allocare dinamicamente il vettore e restituirne il puntatore.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Originariamente inviato da oregon
    i è l'indice numerico dei caratteri che controlli ... ma non rappresenta i caratteri che invece stanno in str. Quindi tutte le if sono sbagliate (oltre alla for nel controllo di fine ciclo).

    Anche l'ultima if non ha senso.

    Il vettore che restituisci non può essere locale (p). Devi allocare dinamicamente il vettore e restituirne il puntatore.
    oregon per piacere potresti scrivermi quindi la versione corretta?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Avevi chiesto di dirti dove sbagliavi ... adesso tenta di aggiustare il codice in base ai suggerimenti.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Originariamente inviato da oregon
    Avevi chiesto di dirti dove sbagliavi ... adesso tenta di aggiustare il codice in base ai suggerimenti.
    senti oregon ho deciso di postare la funzione su questo forum perchè credevo potreste darmi una mano sul serio. io ti ringrazio per la correzione che mi hai fatto ma ti sarei più grato se potessi scrivermi come risolverla. la tua risposta (ad uno che è alle prime armi con il C) potrebbe darmi un aiuto enorme. potresti dirmi come corereggerla?facciamolo magari passo passo con le tue indicazioni

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Guarda che in questo forum non si scrivono esercizi ma si danno solo suggerimenti.

    Quindi, la mano l'hai avuta, la scrittura completa dell'esercizio al posto tu, no.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Originariamente inviato da oregon
    Guarda che in questo forum non si scrivono esercizi ma si danno solo suggerimenti.

    Quindi, la mano l'hai avuta, la scrittura completa dell'esercizio al posto tu, no.
    così invece è corretto?
    Int *count(char *str) {
    int i, p[4];
    for (i=0; str[i]!='\0'; i++) {
    if (str[i] ≥’A’ && str[i]≤’Z’)
    p[0]++;
    else if (str[i]≥’a’ && str[i]≤’z’)
    p[1]++;
    else if (str[i] ≥’0’ && str[i] ≤’9’)
    p[2]++;
    else
    p[3]++;
    return p;
    }
    }

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ti ho già detto che non puoi restituire p ma devi allocare dinamicamente il vettore.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Originariamente inviato da oregon
    Ti ho già detto che non puoi restituire p ma devi allocare dinamicamente il vettore.
    così invece è corretto?
    Int *count(char *str) {
    int i, *p;
    p = (int *)calloc(4,sizeof(int));
    for (i=0; str[i]!='\0'; i++) {
    if (str[i] ≥’A’ && str[i]≤’Z’)
    p[0]++;
    else if (str[i]≥’a’ && str[i]≤’z’)
    p[1]++;
    else if (str[i] ≥’0’ && str[i] ≤’9’)
    p[2]++;
    else
    p[3]++;
    return p;
    }
    }

  10. #10
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Usa il tag code e indenta il codice così:

    codice:
    int *count(char *str) 
    {
        int i, *p;
        p = (int *)calloc(4,sizeof(int));
        for (i=0; str[i]!='\0'; i++) {
            if (str[i] ≥’A’ && str[i]≤’Z’)
                p[0]++;
            else if (str[i]≥’a’ && str[i]≤’z’)
                p[1]++;
            else if (str[i] ≥’0’ && str[i] ≤’9’)
                p[2]++;
            else
                p[3]++;
        }
        return p;
    }

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.