Ir ao conteúdo

Posts recomendados

Postado

Boa Tarde programadores, esse exercício eu não sei nem por onde começar me ajudem só sei que tenho que usar o laço de repetição for 😬

 

Foi realizada uma pesquisa em São Paulo, com 10 pessoas. De cada

entrevistado foram colhidos os seguintes dados:

 

qual seu clube de futebol de preferência (1-São Paulo; 2-

Corinthians; 3-Outros);

qual seu salário;

qual a sua cidade natal (1-SP; 2-Outras).

 

Escreva um programa que informe:

 

1. número de torcedores por clube;

2. média salarial dos torcedores do São Paulo e do Corinthians;

3. número de pessoas nascidas em SP que não torcem por qualquer dos

dois primeiros clubes;

4. número de pessoas entrevistadas.

Consegui algum avanço o pes que coloquei no int é pra saber o numero de entrevistados depois só que não está repetindo eu coloquei float porque preciso da media salarial e não sei como continuar me ajudem 😬

#include <stdio.h>
#include <stdlib.h>
  
int main(){
int cl,i=0,cid,pes;
float sal;

for (i=0;i<10;i++);{
printf ("Qual seu clube de preferência:\n1.Sao Paulo\n2.Corinthans\n3.Outros\n");
scanf ("%d",&cl);

printf("Qual seu salario: ");
scanf ("%f",&sal);

printf("Qual sua cidade natal:\n1.SP\n2.Outros\n");
scanf("%d",&cid);
}
system("pause");
}

 

  • Curtir 2
Postado

Certo, esse for() está indo até 11, de 0 a 10 é 11. Tem que ser de 0 a 9

adicionado 1 minuto depois

Não sei porque pede a quantidade de pessoas entrevistadas, se no enunciado já diz que são dez.

adicionado 3 minutos depois

Pra não complicar muito, não precisa dividir em funções, visto que é um exercício simples.

adicionado 6 minutos depois

Logo após ler o clube já coloca uma condicional if() pra ir adicionando a quantidade de torcedores por clube, pra isso precisa criar mais três variáveis: nCor, nSP, nOutros.

adicionado 6 minutos depois

Vá fazendo por partes e testando.

  • Curtir 1
  • Confuso 1
Postado

@Luís Roberto C. da Silva Então Luis fiz isso ai mas não sei como continuar pra calcular a media salarial dos usuários que torcem pro São Paulo e pro Corinthians 🙄

#include <stdio.h>
#include <stdlib.h>
  
int main(){
int cl,i=0,cid,pes,cSP=0,cCOR=0,cOUT=0,cid1=0,cid2=0;
float sal;

for ( i=1; i<10; i++){
printf ("Qual seu clube de preferência:\n1.Sao Paulo\n2.Corinthans\n3.Outros\n", i+1);
scanf ("%d",&cl);
if(cl==1)cSP++;
if(cl==2)cCOR++;
if(cl==3)cOUT++;
printf("\n");

printf("Qual seu salario: ");
scanf ("%f",&sal);
printf("\n");

printf("Qual sua cidade natal:\n1.SP\n2.Outros\n", i+1);
scanf("%d",&cid);
if(cid==1)cid1++;
if(cid==2)cid2++;
printf("\n");
}

printf("Numero de torcedores por clube:%d\n1.Sao Paulo%d\n2.Corinthans%d\n3.Outros\n",cSP,cCOR,cOUT);
printf("Media salarial dos torcedores do Sao Paulo e do Corinthians: ");
printf("Numero de pessoas nascidas em SP que não torcem por qualquer dos dois primeiros clubes: ");
printf("Número de pessoas entrevistadas: ")
system("pause");
}

 

  • Curtir 2
Postado

Pra isso, terá que criar mais variáveis para somar os salários dos torcedores. A soma deve ser feita nas condicionais if() que já criou. Por exemplo, no if(cl==1), além de somar a quantidade de torcedores, deve somar os salários de cada um, assim no final é só dividir a soma dos salários pala quantidade de torcedores.

adicionado 3 minutos depois

Avisei que são várias variáveis. E no decorrer da implementação sempre surge a necessidade de novas variáveis.

adicionado 16 minutos depois

Lembrando que o if com mais de uma linha deve ter chaves:

if(cl==1){
  cSP++;
  somaSalSP += sal;
}

No case deve ser implementado apenas após receber o salário ou no final do for.

  • Curtir 1
  • Confuso 1
Postado

@Luís Roberto C. da Silva tentei assim amigo mais não funcionou a parte de dividir e nem a outra o que está errado tenho que dividir pelos cara que torcem por clube

#include <stdio.h>
#include <stdlib.h>
  
int main(){
int cl,i=0,cid,pes=10,cSP=0,cCOR=0,cOUT=0,cid1=0,cid2=0,somasalSP,somasalCOR,pesOUT;
float sal;

for ( i=0; i<10; i++){
printf ("Qual seu clube de preferência:\n1.Sao Paulo\n2.Corinthans\n3.Outros\n", i+1);
scanf ("%d",&cl);
if(cl==1){
cSP++;
somasalSP+=sal;
}
if(cl==2){
cCOR++;
somasalCOR+=sal;
}
if(cl==3)cOUT++;
printf("\n");

printf("Qual seu salario: ");
scanf ("%f",&sal);
printf("\n");

printf("Qual sua cidade natal:\n1.SP\n2.Outros\n", i+1);
scanf("%d",&cid);
if(cid==1){
cid1++;
pesOUT=cid1+=cOUT;
}
if(cid==2)cid2++;
printf("\n");
}

printf("Numero de torcedores por clube:\n1.Sao Paulo %d\n2.Corinthans %d\n3.Outros %d\n",cSP,cCOR,cOUT);
printf("\n");

printf("Media salarial dos torcedores do Sao Paulo e do Corinthians:\n1.Sao Paulo %d\n2.Corinthans %d",somasalSP,somasalCOR);
printf("\n");

printf("Numero de pessoas nascidas em SP que nao torcem por qualquer dos dois primeiros clubes: %d", pesOUT);
printf("\n");

printf("Numero de pessoas entrevistadas: %d", pes);
printf("\n");

system("pause");
}

 

Postado

Você está somando o salário antes de ler o salário:

  printf ("Qual seu clube de preferência:\n1.Sao Paulo\n2.Corinthans\n3.Outros\n", i+1);
  scanf ("%d",&cl);
  if(cl==1){
    cSP++;
    somasalSP+=sal; //não leu o salário ainda.
  }
  if(cl==2){
    cCOR++;
    somasalCOR+=sal; //não leu o salário ainda.
  }
  if(cl==3)cOUT++;
	printf("\n");
  
  printf("Qual seu salario: "); //tem que ter logo depois de ler o clube, depois faz os if's
  scanf ("%f",&sal);

 

Postado

 

image.png.9709d4a6eb8884b2b52d115f2138e366.png

 

Crie o programa sempre em torno dos dados e não faça o programa antes de se entender bem com os dados. Como está começando, é a hora de adquirir esse tipo de hábito: o que faz resolver antes os problemas.

 

Assim, sobre a entrada:

  • São apenas 3 informações e não são usadas individualmente, Isso é muito importante de separar logo no início: isso quer dizer que não vai precisar gerar uma listagem de alunos, ou de livros, ou de músicas, como deve aparecer talvez já no próximo exercício. Não vai precisar salvar esses dados em lugar nenhum. Mas não pode deixar passar nada importante porque só vai ter as informações do último pesquisado:
    • clube: vai ser usado na avaliação [1] [2] e [3]. Vai ser totalizado por torcida para o item [1] e usado para filtrar os salários no item [2]
    • salário: vai ser usado na avaliação [2]. Só vai ser usada a soma dos salários agrupados por torcida, para levantar a média [2]
    • cidade natal: vai ser usada na avaliação [3] para filtrar os torcedores que nasceram em SP.

E os resultados:

  • [1] número de torcedores por clube. São só dois clubes, Mas tem os caras que não torcem para nenhum dos dois. Então vamos acumular torcedores, que são números naturais, inteiros,  em
    	int torcedores_SP = 0;
    	int torcedores_CO = 0;
    	int torcedores_XX = 0;
  • [2] média salarial dos torcedores de SP e CO. então vai ser preciso somar os salários desses dois grupos. Pode ser um inteiro sem centavos, já que não diz nada no enunciado. Então pode acumular em 
    	int salarios_SP = 0;
    	int salarios_CO = 0;
  • [3] Nascidos em SP que não torcem por SP ou CO. Como é só um filtro, basta contar quando o pesquisado nascido em SP (opção 1) marcou opção 3 na primeira pergunta, e apenas esses
    	int	De_SP_XX = 0; // nasceu em SP, nao torce nem para SP nem para CO
  • [4] É uma bobagem, já que são fixas 10 pesquisas apenas.

Não está claro que precisa de um menu, e não sei porque em geral o aluno já sai escrevendo um. Em geral uma pesquisa é um formulário. Não dá pra imaginar alguém sentado digitando isso. Um simples arquivo de 10 linhas assim

#,Clube 1 SP 2 CO 3 Outros,Salario mensal em reais sem ponto,Origem 1-SP 2-Outras
1,1,1000,1
2,2,31000,2
3,3,12300,1
4,1,5500,2
5,2,18000,1
6,3,10200,2
7,1,15000,1
8,2,10400,2
9,3,10300,1
10,1,16000,1

Seria muito mais simples de tratar e de testar porque dá pra editar no próprio IDE ou com o bloco de notas um conjunto representativo de testes e eles não vão sumir assim que você tecla ENTER.

Não entendo a atração por menus e leitura e printf() na tela. é lento e chato. e testar o programa dez vezes quer dizer entrar com 10 vezes isso tudo...

Usando um arquivo como o acima você pode testar em segundos e ter vários arquivos de teste preparados. O primeiro número de cada linha é só um contador pra não se perder na conta e a primeira linha só uma legenda e depois despreza na leitura...

É muito mais fácil ler do arquivo do que ler do teclado. E você não precisa escrever o editor de texto :) porque já vem no micro

 

E sem contrariar o enunciado, temos só 10 pesquisas... Então daria pra usar constantes e fazer logo o programa. O enunciado não fala nada...

 

Eis o que já temos, antes de começar o programa:

    int	De_SP_XX = 0; // nasceu em SP, nao torce nem para SP nem para CO
    int salarios_CO = 0;
    int salarios_SP = 0;
    int torcedores_CO = 0; // 2
    int torcedores_SP = 0; // 1
    int torcedores_XX = 0; // 3

Uma ficha de pesquisa seria uma linha daquele arquivo, ou um grupo de dados. Uma pesquisa seria um conjunto de fichas, no caso 10. Já definimos que cada ficha tem 3 int, o clube, o salario e a origem do torcedor.

 

Uma pesquisa seria um conjunto de fichas.

 

Em C você agrupa dados como uma ficha sob o nome de struct, o que pode ser visto logo no início do livro de C. Qualquer livro razoável de C.

Nada especial:

    struct ficha
    {
        int clube;
        int salario;
        int origem;
    };

E você agrupa variáveis iguais pelo nome, em algo chamado vetor, tipo

	int variavel[400]; 

declara 400 variáveis int que serão chamadas de variavel[0] a variavel[399];

Esse programa não precisa disso mas pode ser vantagem na hora de testar...
 

Porque?

 

Simples: uma pesquisa tem só 10 fichas então seria algo assim

	struct ficha pesquisa[10];

para dizer que a variável pesquisa é um conjunto de 10 fichas, toda a nossa pesquisa. Já começa a fazer sentido, certo? E é a realidade
 

E para que isso? 


Porque a gente pode escrever assim:

    struct ficha pesquisa[10] =
    {
        { 1,1000,1 },
        { 2,31000,2},
        { 3,12300,1},
        { 1,5500,2},
        { 2,18000,1},
        { 3,10200,2},
        { 1,15000,1},
        { 2,10400,2},
        { 3,10300,1},
        { 1,16000,1}
    };

E declarar os valores iniciais das mesmas 10 fichas do arquivo acima. Recortar e Colar. 10 fichas. Valores finais no nosso caso.

E já tem os dados para fazer o programa na próxima meia hora, porque é só ler as fichas da pesquisa e somar nas variáveis que já estão definidas, calcular as médias, mostrar os resultados e já era.
 

Compare isso com o tradicional de ficar sentado digitando ao menos uns 3 dados para cada teste com 3 campos para depois ao menos uma vez testar com 10 e entrar com 30 campos no teclado...

 

Estou me dando ao trabalho de mostrar isso porque hoje eu tenho tempo e porque acho que isso se aplica a praticamente todos esses problemas que se vê aqui: comece pelos dados, leia de arquivos.E essa pesquisa já gravada no programa vai servir para testar quase tudo... Antes de voltar ao menu, por exemplo.

 

Ler esses dados de um arquivo gastaria umas 10 linhas de programa apenas...

 

Mas essa é uma coisa para outro dia...

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...