Oppure

Loading
15/08/14 9:43
NOVA99
Salve, devo fare un programma per la scuola in cui, ad un certo punto, devo vedere se una lettera è o meno una vocale. Ovviamente, per farlo ho usato una selezione semplice, ma l'IDE (nel mio caso DEV-C++) fa due cose:

a. mi dice "[Warning] comparision between pointer and integer"
b. quando eseguo il programma il computer esegue sempre lo stesso ramo dell' "if...else..." a priori.

Il codice è il seguente:

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

int main()
{
     char car;     
          
     system("TITLE ERRORE CHAR");
     system("COLOR FC");
     
     printf("INSERISCI UNA LETTERA MINUSCOLA = ");
     car=getche(); //acquisisce car
     
     if ((car!="a")&&(car!="e")&&(car!="i")&&(car!="o")&&(car!="u")) //controlla se è una vocale...
     {
          printf("\n\n");
          
          putchar(car);
          
          printf(" E' UNA VOCALE"); //e si arriva a questa istruzione anche senza che car sia una vocale!
     }
     else
     {
          printf("\n\n");
          
          putchar(car);
          
          printf(" NON E' UNA VOCALE");
     }
     
     getch();
     
}


Non riesco a capire il problema, anche perche' ho fatto altri programmi in cui usavo dei confronti
tra caratteri e funzionavano perfettamente.

Qualcuno sa dirmi una soluzione?

Grazie.
aaa
15/08/14 11:39
Poggi Marco
Ciao!

In c i doppi apici indicano una stringa. Nella 15 stai confrontando il valore di car, il codice ASCII del carattere associato, con l' indirizzo di una stringa statica.
aaa
15/08/14 16:07
nessuno
Singoli apici non doppi

car!='a'
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
18/08/14 9:36
NOVA99
Aaah, ecco. Grazie mille, adesso funziona!:k:
aaa