Ciao, non so se sto scrivendo nella sezione giusta del forum, o se avrei dovuto aprirne un'altra.
Avrei un problema con un esercizio con un array di caratteri char:
L'esercizio chiede di creare un programma che, inserita una serie di caratteri compresi tra 'a', 'b' e 'c', controlli che siano "ordinati" (nel senso che ci devono essere prima tutte le 'a', poi tutte le 'b' ecc...) e che sia presente almeno una 'b'. Il tutto mediante una funzione, quindi non direttamente nel main. Il mio problema è che non riesco a confrontare una posizione dell'array con un singolo carattere, la condizione risulta sempre falsa...
Questo è il codice che ho scritto:
#include <stdio.h>
typedef enum {false, true} boolean;
boolean funz(char v[], int dim);
int main(){
int c, d=5;
char A[d], ch;
boolean verifica;
for(c=0; c<d; c++){
scanf("%c", &ch);
if(ch!='\n'){
A[c]=ch;
}else{
c--;
}
}
verifica = funz(A, d);
if(verifica==true){
printf("true\n");
}else{
printf("false\n");
}
return 0;
}
boolean funz(char v[], int dim){
int i=0, c=0;
while((v[i]=='a')&&(i<dim)){
i++;
}
i=c;
if(i==dim){
return false;
}
while((v[i]=='b')&&(i<dim)){
i++;
}
if(i==c){
return false;
}
while((v[i]=='c')&&(i<dim)){
i++;
}
if(i!=dim){
return false;
}else{
return true;
}
}