Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Ajuda em código C.

Estou tentando fazer um exercício para a faculdade e realmente travei, parece que não consigo progredir na resolução. O meu principal problema neste código é que não consigo varrer o vetor para descobrir o número de homens na pesquisa, número de mulheres, maior e menor idade e suas respectivas posições e também os salários com renda até 500 reais. Será que poderiam me ajudar. O Exercício é o seguinte:

A partir de uma pesquisa que coletou idade, sexo e renda dos habitantes de uma região, receba, calcule e, quando for informada idade negativa, mostre: a média dos salários do grupo; a maior e a menor idade do grupo, com os respectivos sexos das pessoas; a quantidade de mulheres com renda até R$500

Abaixo está o meu código:

//
//  main.c
//  pesquisaEx02
/*  A partir de uma pesquisa que coletou idade, sexo e renda dos habitantes de uma região, receba, calcule e, quando for informada idade negativa, mostre:
    1) a média dos salários do grupo;
    2) a maior e a menor idade do grupo, com os respectivos sexos das pessoas;
    3) a quantidade de mulheres com renda até R$500. */

//  Created by Henrique Passos on 22/09/2018.
//  Copyright © 2018 Henrique Passos. All rights reserved.

#include <stdio.h>
#include <stdlib.h>
#define Tamanho 5

int main() {

    int idade[Tamanho], i = 0, j, entrevistados = 1, contRenda = 0, maiorIdade, menorIdade, posicaoMaior, posicaoMenor;
    char sexo;
    float renda[Tamanho], mediaRenda, somaRenda = 0;

    do {
        printf("Informe o sexo do entrevistado nº %d (m ou f):", entrevistados);
        scanf("%s", &sexo);

        printf("Informe a idade do entrevistado %d:", entrevistados);
        scanf("%d", &idade);

        printf("Informe a reda do entrevistado %d:", entrevistados);
        scanf("%f", &renda);
        contRenda++;
        printf("\n \n");

        entrevistados++;

        for(i = 0; i < entrevistados; i++)
            somaRenda += renda[i];
        mediaRenda = somaRenda / (i-1);


        maiorIdade = idade[0];
        //posicaoMaior = 0;
        for(j = 0; j < Tamanho; j++)
            if(idade[i] > maiorIdade) {
                maiorIdade = idade[i];
                //posicaoMaior = i;
            }

        menorIdade = idade[0];
        //posicaoMenor = 0;
        for(j = 0; j < Tamanho; j++)
            if(idade[i] < menorIdade) {
                menorIdade = idade[i];
                //posicaoMenor = i;
            }

    } while (entrevistados <= 5);

    printf("\nTivemos %d entrevistados: \n", entrevistados - 1);
    printf("Média das rendas: %.2f\n", mediaRenda);
    printf("Soma das rendas: %.2f\n", somaRenda);
    printf("A maior idade é %d. A menor idade é %d.\n\n", maiorIdade, menorIdade);

    return 0;
}
7 respostas

Parece que você usou o int i no teu for. Ao invés de usar j, verifica se foi isso mesmo que tu queria fazer.

Eu usei 3 fors e em um deles usei o int i, nos outros usei o int j. Parece que o "i" não deu problema, pelo menos até agora ou eu ainda não identifiquei. Conseguiria me ajudar?

Eu vi que você queria usar o j, mas dentro do for você usou i para acessar as posições do array usando idade[i] ao invés de idade [j]

Imaginei que eu pudesse usar ou o i ou o j já que seria apenas para percorrer o vetor. Eu fiz a alteração para usar somente o i nos três e não mudou nada. O erro continua.

Olá, posso estar enganado mas.... Nos seus scanf's para idade e renda faltou indicar a posição do vetor, exemplo :

scanf("%d", &idade[i]);

Por fim, dentro dos "ifs" que está dentro do escopo "for" utilize o contador "j", porque usando o "i" o loop for não tem utilidade, pois o contador é no for é "j".

solução!

Verdade, nem percebi que faltou indicar a posição no scanf...

Mas ao invés de fazer

scanf("%d", &idade[i]);

deve fazer

scanf("%d", &idade[entrevistados-1]);

Ai deve ficar na posição correta.

PS: Muda isso também:

while (entrevistados <= Tamanho);

Amigos, será que poderiam me ajudar neste código? Tenho dificuldades em fazer a varredura entre dois arrays e imprimir o número repetido e dizer quantos números são coincidentes. Veja o código que fiz abaixo.

//  main.c
//  duasTurmas
//  Uma escola deseja saber se existem estudantes cursando simultaneamente duas disciplinas.
//  Receba as matrículas dos estudantes de cada disciplina e as coloque em vetores, sendo que podem haver até vinte estudantes matriculados em cada uma.
//  Mostre o número das matrículas que aparecem nos dois vetores.
//  Created by Henrique Passos on 12/10/2018.
//  Copyright © 2018 Henrique Passos. All rights reserved.
//

#include <stdio.h>
#define Tam 5

int main() {
    // Declarar as variáveis;
    int mat_A[Tam]; int mat_B[Tam]; int i; int j; int cont = 0;

    printf("Informe a matrícula do aluno da turma A:\n");
        for (i = 0; i < Tam; i++) {
            scanf("%d", &mat_A[i]);
        }

    printf("Informe a matrícula do aluno da turma B:\n");
        for (j = 0; j < Tam; j++) {
            scanf("%d", &mat_B[i]);
        }

    for (i = 0; i < Tam; i ++) {
        for (j = 0; j < Tam; i ++) {
            if (mat_A[i] == mat_B[j]) {
                printf("%d\n", mat_A[i]);
                cont ++;
            }
        }
    }
    printf("O número de matrículas repetidas é: %d\n", cont);


    return 0;
}

Por favor, vejam se conseguem me ajudar. Desde já agradeço a todos.