Array di char e condizioni

di il
2 risposte

Array di char e condizioni

Ciao a tutti, spero ora di aver fatto le cose in modo corretto, scusate ancora per l'errore.
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;
	}
}

2 Risposte

  • Re: Array di char e condizioni

    Sotto l'altro post ho visto che mi avete già consigliato un metodo molto più snello ed efficace per creare il codice, ci terrei comunque molto a capire perchè quello che ho scritto non funziona, concettualmente mi sembra corretto.
  • Re: Array di char e condizioni

    Dal C99 c'è _Bool come tipo booleano.

    Dopodiché
    
    while((v[i]=='a')&&(i<dim)){
        i++;
    }
    
    Qui cerchi la posizione del primo carattere diverso da 'a' e la salvi in i
    Poi però
    
    i = c;
    
    Poni i = 0. Quindi a che ti è servito il while di sopra?

    Rifletti bene su ogni passaggio
Devi accedere o registrarti per scrivere nel forum
2 risposte