0
I’m doing an activity and the result is giving some values that I don’t assign anywhere in the code.
int main(){
int numeroDePessoas = 0, tarefa = 0;
scanf("%d %d", &tarefa, &numeroDePessoas);
float passageiros[numeroDePessoas][5];
for(int i = 0; i < numeroDePessoas; i++){
int classe, idade, numIrmaos, numFilhos;
char sexo, porto;
scanf("%d %c %d %d %d %c", &classe, &sexo, &idade, &numIrmaos, &numFilhos, &porto);
passageiros[i][0] = (float)classe;
if(sexo == 'f'){
passageiros[i][1] = 1.0;
} else {
passageiros[i][1] = 0.0;
}
passageiros[i][2] = (float)idade;
passageiros[i][3] = (float)numIrmaos;
passageiros[i][4] = (float)numFilhos;
if(porto == 'S'){
passageiros[i][5] = 0.0;
} else if(porto == 'C'){
passageiros[i][5] = 1.0;
} else if(porto == 'Q'){
passageiros[i][5] = 2.0;
}
}
// a tarefa 1 imprime a informação em forma númerica de todos os passageiros
if(tarefa == 0){
for(int rows = 0; rows < numeroDePessoas; rows++){
for(int cols = 0; cols < 6; cols++){
printf("%.1f ", passageiros[rows][cols]);
if(cols == 5){
printf("\n");
}
}
}
// imprime se o passageiro morreu ou sobreviveu dependendo de sua idade, classe e sexo (elementos 2, 0 e 1 respectivamentes)
} else if(tarefa == 1){
for(int rows = 0; rows < numeroDePessoas; rows++){
if( (passageiros[rows][2] > 15 && passageiros[rows][2] <= 45 ) || (passageiros[rows][0] > 1 && passageiros[rows][1] == 1) ){
printf("Morreu\n");
} else {
printf("Sobreviveu\n");
}
}
// imprime a média da informação dos passageiros
} else if(tarefa == 2){
float mClasse = 0.0, mSexo = 0.0, mIdade = 0.0, mNumIrmaos = 0.0, mNumFilhos = 0.0, mPorto = 0.0;
for(int rows = 0; rows < numeroDePessoas; rows++){
for(int cols = 0; cols < 6; cols++){
if(cols == 0){
mClasse += passageiros[rows][cols];
} else if(cols == 1){
mSexo += passageiros[rows][cols];
} else if(cols == 2){
mIdade += passageiros[rows][cols];
} else if(cols == 3){
mNumIrmaos += passageiros[rows][cols];
} else if(cols == 4){
mNumFilhos += passageiros[rows][cols];
} else if(cols == 5){
mPorto += passageiros[rows][cols];
}
}
}
mClasse /= numeroDePessoas;
mIdade /= numeroDePessoas;
mNumIrmaos /= numeroDePessoas;
mNumFilhos /= numeroDePessoas;
mSexo /= numeroDePessoas;
mPorto /= numeroDePessoas;
printf("%.3f %.3f %.3f %.3f %.3f %.3f", mClasse, mSexo, mIdade, mNumIrmaos, mNumFilhos, mPorto);
}
return 0;
}
With the input:
0
3
3 m 22 1 0 S
1 f 38 1 1 C
3 f 26 0 0 S
It produces the output:
3.0 0.0 22.0 1.0 0.0 1.0
1.0 1.0 38.0 1.0 1.0 3.0
3.0 1.0 26.0 0.0 0.0 0.0
But the desired output would be:
3.0 0.0 22.0 1.0 0.0 0.0
1.0 1.0 38.0 1.0 1.0 1.0
3.0 1.0 26.0 0.0 0.0 0.0
I can’t see where this 1.0, 3.0 and 0.0 comes from the index 5 elements of each array even running the program by the Debugger several times.
I could raise the question ?
– rafael marques