Did I use the if and Else wrong?

Asked

Viewed 78 times

0

I started programming a little while ago and I’m trying to learn C but I came across a mistake that I can’t solve.

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

int main()
{
    int A, B, C[7], D[7], E[7], S[1];
    S[0] = 998; //Salario minimo

    //Recolhe a informação de quantas pessoas trabalham na sua casa
    printf("Quantas pessoas trabalham na sua casa ? /n");
    scanf("%d", &A);

    //Reconhe a informação de quantas pessoas vivem na sua casa
    printf("Quantas pessoas vivem na sua casa ? /n");
    scanf("%d", &B);

    //Recolhe os dados inseridos do valor de salarios das pessoas que trabalham na sua casa
    if(A==1){
        printf("Digite o ultimo salario da pessoa que trabalha na sua casa. /n");

        printf("Digite o salario da primeira pessoa. /n");
        scanf("%d", &C[0]);
    }

    if(A==2){
        printf("Digite os ultimos salario das pessoas que trabalha na sua casa. /n");

        printf("Digite o salario da primeira pessoa. /n");
        scanf("%d", &C[0]);

        printf("Digite o salario da segunda pessoa. /n");
        scanf("%d", &C[1]);
    }

    if(A==3){
        printf("Digite os ultimos salario das pessoas que trabalha na sua casa. /n");

        printf("Digite o salario da primeira pessoa. /n");
        scanf("%d", &C[0]);

        printf("Digite o salario da segunda pessoa. /n");
        scanf("%d", &C[1]);

        printf("Digite o salario da terceira pessoa. /n");
        scanf("%d", &C[2]);
    } 

    if(A==4){
        printf("Digite os ultimos salario das pessoas que trabalha na sua casa. /n");

        printf("Digite o salario da primeira pessoa. /n");
        scanf("%d", &C[0]);

        printf("Digite o salario da segunda pessoa. /n");
        scanf("%d", &C[1]);

        printf("Digite o salario da terceira pessoa. /n");
        scanf("%d", &C[2]);

        printf("Digite o salario da quarta pessoa. /n");
        scanf("%d", &C[3]);
    }   

    if(A==5){
        printf("Digite os ultimos salario das pessoas que trabalha na sua casa. /n");

        printf("Digite o salario da primeira pessoa. /n");
        scanf("%d", &C[0]);

        printf("Digite o salario da segunda pessoa. /n");
        scanf("%d", &C[1]);

        printf("Digite o salario da terceira pessoa. /n");
        scanf("%d", &C[2]);

        printf("Digite o salario da quarta pessoa. /n");
        scanf("%d", &C[3]);

        printf("Digite o salario da quinta pessoa. /n");
        scanf("%d", &C[4]);
    }    

    if(A==6){
        printf("Digite os ultimos salario das pessoas que trabalha na sua casa. /n");

        printf("Digite o salario da primeira pessoa. /n");
        scanf("%d", &C[0]);

        printf("Digite o salario da segunda pessoa. /n");
        scanf("%d", &C[1]);

        printf("Digite o salario da terceira pessoa. /n");
        scanf("%d", &C[2]);

        printf("Digite o salario da quarta pessoa. /n");
        scanf("%d", &C[3]);

        printf("Digite o salario da quinta pessoa. /n");
        scanf("%d", &C[4]);

        printf("Digite o salario da sexta pessoa. /n");
        scanf("%d", &C[5]);
    }

    if(A==7){
        printf("Digite os ultimos salario das pessoas que trabalha na sua casa. /n");

        printf("Digite o salario da primeira pessoa. /n");
        scanf("%d", &C[0]);

        printf("Digite o salario da segunda pessoa. /n");
        scanf("%d", &C[1]);

        printf("Digite o salario da terceira pessoa. /n");
        scanf("%d", &C[2]);

        printf("Digite o salario da quarta pessoa. /n");
        scanf("%d", &C[3]);

        printf("Digite o salario da quinta pessoa. /n");
        scanf("%d", &C[4]);

        printf("Digite o salario da sexta pessoa. /n");
        scanf("%d", &C[5]);

        printf("Digite o salario da setima pessoa. /n");
        scanf("%d", &C[6]);
    }

    if(A==8){
        printf("Digite os ultimos salario das pessoas que trabalha na sua casa.  /n");

        printf("Digite o salario da primeira pessoa. /n");
        scanf("%d", &C[0]);

        printf("Digite o salario da segunda pessoa. /n");
        scanf("%d", &C[1]);

        printf("Digite o salario da terceira pessoa. /n");
        scanf("%d", &C[2]);

        printf("Digite o salario da quarta pessoa. /n");
        scanf("%d", &C[3]);

        printf("Digite o salario da quinta pessoa. /n");
        scanf("%d", &C[4]);

        printf("Digite o salario da sexta pessoa. /n");
        scanf("%d", &C[5]);

        printf("Digite o salario da setima pessoa. /n");
        scanf("%d", &C[6]);

        printf("Digite o salario da oitava pessoa. /n");
        scanf("%d", &C[7]);
    }

    //soma dos salarios dos membros empregados
    D[0] = C[0];

    D[1] = C[0] + C[1];

    D[2] = C[0] + C[1] + C[2];

    D[3] = C[0] + C[1] + C[2] + C[3];

    D[4] = C[0] + C[1] + C[2] + C[3] + C[4];

    D[5] = C[0] + C[1] + C[2] + C[3] + C[4] + C[5];

    D[6] = C[0] + C[1] + C[2] + C[3]+ C[4] + C[5] + C[6];

    D[7] = C[0] + C[1] + C[2] + C[3] + C[4] + C[5] + C[6] + C[7];

    //divisão dos salarios pelo numero de moradores
    E[0] = D[0] / B;

    E[1] = D[1] / B;

    E[2] = D[2] / B;

    E[3] = D[3] / B;

    E[4] = D[4] / B;

    E[5] = D[5] / B;

    E[6] = D[6] / B;

    E[7] = D[7] / B;

    //armazena o salario minimo vezes tres
    S[1] = S[0] * 3;

    //printa o resultando dizendo se a renda é maior ou menor de 3 salarios minimos
    if(E[0] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua reda é inferior a 3 salarios minimos!");

    if(E[1] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua reda é inferior a 3 salarios minimos!");

    if(E[2] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua reda é inferior a 3 salarios minimos!");

    if(E[3] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua reda é inferior a 3 salarios minimos!");

    if(E[4] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua reda é inferior a 3 salarios minimos!");

    if(E[5] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua reda é inferior a 3 salarios minimos!");

    if(E[6] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua reda é inferior a 3 salarios minimos!");

    if(E[7] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua reda é inferior a 3 salarios minimos!");

    return 0;
}

The following code is printing on the console all the options contained in the code when it was to print only one of the options.

Imagem do erro

What was wrong? How can I solve?

  • 1

    Izaac, to break the lines uses the reverse bar " n".

  • 2

    Another thing, in the codes below, always has an "if / Else", IE, will always fall in one or the other. You could check the logic of these "if / Else" to see which one will use.

  • 2

    do not paste image, as you did when showing the result, do copy and paste the text...not to mention that your image is lowercase

  • 1

    Why don’t you try using one switch...case in the data entry, in addition to the good old forto iterate on these arrays??

2 answers

0

You are doing independent check of the amount of residents, need to do this check before doing the income check:

if (A == 1){
    if(E[0] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua reda é inferior a 3 salarios minimos!");
} else if (A == 2){
    if(E[1] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua reda é inferior a 3 salarios minimos!");
} else if (A == 3){
    if(E[2] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua reda é inferior a 3 salarios minimos!");
}

This part of the extensive code can be reduced to a single condition:

if(E[A - 1] > S[1])
    printf("Sua renda é superior a 3 salarios minimos!");
else
    printf("Sua reda é inferior a 3 salarios minimos!");

Explaining the solution, A contains the number of residents, subtracting 1 will have the position of the array where the division is by residents.

0


As in the code, you do not tell which of the options you would like to print, the system prints all of them.

This particular problem could be solved as follows:

if(A == 1){

      if(E[0] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua renda é inferior a 3 salarios minimos!");
    }
    if(A == 2) {

      if(E[1] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua renda é inferior a 3 salarios minimos!");

    }
    if(A == 3){
      if(E[2] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua renda é inferior a 3 salarios minimos!");

    }

    if(A == 4) {
      if(E[3] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua renda é inferior a 3 salarios minimos!");
    }

    if(A == 5){
      if(E[4] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua renda é inferior a 3 salarios minimos!");
    }

    if(A == 6){
      if(E[5] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua renda é inferior a 3 salarios minimos!");
    }

    if(A == 7){
      if(E[6] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua renda é inferior a 3 salarios minimos!");
    }
   if(A == 8){
      if(E[7] > S[1])
        printf("Sua renda é superior a 3 salarios minimos!");
    else
        printf("Sua renda é inferior a 3 salarios minimos!");
   }

I imagine you’ve used this kind of solution, because you haven’t learned or can’t use for, but it is important to note that a loop would be more appropriate in your program. Something like:

int total_rendimentos = 0;
   int i;
   //soma dos salarios empregados
   for (i = 0; i < A; i++){
      total_rendimentos += C[i];
   }
   //divisao do salario pelo número de moradores
   int renda_media = total_rendimentos / B;

   //armazena o salario minimo vezes tres
    S[1] = S[0] * 3;

   //printa o resultando dizendo se a renda é maior ou menor de 3 salarios minimos
   if(renda_media > S[1]){
       printf("Sua renda é superior a 3 salarios minimos!");
   }
    else{
        printf("Sua renda é inferior a 3 salarios minimos!");
   }

And finally, your program has some bugs that need to be fixed. One of them, as noted in the comments, is that to break lines we use the reverse bar and not the normal bar, e.g. \n. And another mistake, this one particularly serious, is that you are writing outside the limits of the arrays you declared. In the first line, the correct one would be:

int A, B, C[8], D[8], E[8], S[2];
  • Thanks for the help, I’m learning little by little I still don’t know how to use certain things but thanks for the help.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.