|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2016
Messaggi: 3
|
[C] Problema con confronto tra char
Buonasera, mi sono affacciato da poco alla programmazione e stasera, tentando di scrivere un programma che mi permetta di inserire massimo 10 caratteri minuscoli, non riesco a capire come ignorare i caratteri diversi da quelli minuscoli.
Ho studiato che i caratteri minuscoli hanno tutti una codificazione ASCII consequenziale e compresa tra a e z, ma il confronto non mi funziona. Il codice che ho scritto è il seguente: Codice:
#include <stdio.h>
/*Esercizio 1+2 lab03-lab04*/
#define CAPIENZA 10
#define T \0 /*Carattere speciale che fa terminare l'inserimento di caratteri nella stringa*/
int main()
{
typedef struct
{
char Lista[CAPIENZA];
}ListaSequenziale;
ListaSequenziale TipoL;
int i;
char j; /*serve per memorizzare il carattere non valido inserito*/
printf("Inserire 10 caratteri minuscoli oppure di meno seguiti da T maiuscola, tutti diversi: ");
for(i=0;i<CAPIENZA;i++)
{
scanf("%c",&TipoL.Lista[i]);
if(TipoL.Lista[i]=='T')
{
TipoL.Lista[i]='\0';
i=CAPIENZA;
}
if(TipoL.Lista[i]<'a'||TipoL.Lista[i]>'z'); /*NON FUNZIONA QUI*/
{
j=TipoL.Lista[i];
}
}
printf("%s\n",TipoL.Lista);
printf("Il carattere inserito %c non è valido ed è stato ignorato\n\n",j);
return(0);
}
|
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Nov 2016
Messaggi: 3
|
In j mi memorizza sempre l'ultimo caratte che inserisco, anche se è "giusto", e non riesco a capire come mai 😞
|
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Dec 2004
Città: Una palla di fango abitata da scimmie sognatrici
Messaggi: 128
|
Quote:
Codice:
printf("%s\n",TipoL.Lista);
Oltre al consiglio di Antonio23, che dovrebbe aiutarti a trovare il motivo per cui in j finisce sempre l'ultimo carattere digitato indipendentemente se corretto o meno, ti consiglio anche di verificare attentamente se il codice che hai scritto fa esattamente tutto quello che vorresti ottenere una volta corretto l'errore: ad esempio cosa succede se vengono inseriti due caratteri non validi ?
__________________
"Contro la stupidità gli stessi dei lottano invano" Friedrich Schiller "Chi rinuncia alla libertà per raggiungere la sicurezza non merita né la libertà né la sicurezza" Benjamin Franklin "Guardati dalla furia di un uomo tranquillo" John Dryden |
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Aug 2016
Messaggi: 871
|
poi ci sarebbe una certa istruzione break
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Ci sono problemi anche se l'utente inserisce 10 caratteri minuscoli, seguiti dalla T.
Ci sono problemi anche se l'utente non inserisce la T
__________________
In God we trust; all others bring data |
|
|
|
|
|
#6 | ||
|
Junior Member
Iscritto dal: Nov 2016
Messaggi: 3
|
Quote:
Quote:
In particolare Guille, sì, restituisce tutti i caratteri digitati. E non ho ancora pensato a come effettivamente ignorare i caratteri sbagliati, se sono più di uno. Pensavo di procedere a "strati" con la programmazione, nel senso che a queste cose ci avrei pensato in seguito, ma purtroppo mi sono bloccato quasi subito e quindi non sono andato avanti nella scrittura del codice. |
||
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12944
|
Al volo, un errore visibilissimo ad occhio nudo è il seguente:
Codice:
if(TipoL.Lista[i]<'a'||TipoL.Lista[i]>'z'); /*NON FUNZIONA QUI*/
{
j=TipoL.Lista[i];
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:13.




















