Ir ao conteúdo

Posts recomendados

Postado

Bom dia a todos,

Estou a uns 3 dias tentando resolver um problema de C++ mas realmente ta osso se alguem poder me ajudar ficarei muito grato

Abaixo segue a questão e logo depois o código que estava fazendo, já mudei tanto ele que me perdi rsrsrs.

Foi feita uma pesquisa entre os habitantes de uma região. Foram coletados os dados de idade, sexo (M/F) e salário. Faça um programa em C++ que calcule e mostre:

a média dos salários do grupo;

a maior e a menor idade do grupo;

a quantidade de mulheres com salário até R$ 200,00 ;

a idade e o sexo da pessoa que possui o menor salário.

Finalize a entrada de dados ao ser digitada uma idade negativa.


cout<< "\n\n\nInforme a idade do habitante: ";
cin>> idade;
maior = idade;
menor = idade;
cout<< "Informe o sexo do habitante(M/F): ";
cin>> sexo;
cout<< "Informe o salario do habitante: ";
cin>> salario;
while (idade>0){
sem_sal= sem_sal+salario;
quant= quant+1;
if (idade>maior){
maior=idade;
}
if (idade<menor) {
menor=idade;
}
if (sexo= feminino) {
if (salario<=200){
qmult=qmult+1;
}
}
cout << "Informe a idade do habitante:";
cin >> idade;
cout << "Informe o sexo do habitante(M/F): ";
cin >> sexo;
cout << " Informe o salario do habitante: ";
cin >> salario;
}
cout<<" A media de salario dos habitantes e de: " << sem_sal/quant;
cout<<" A Maior idade e de: " << maior;
cout<<" A Maior idade e de: " << menor;
cout<<" A Quantidade de mulheres com salario ate R$ 200,00 e de: "<< qmult;
}

Obrigado pela atenção

  • Curtir 1
Postado

Está ai o que você pediu, espero que tenha entendido, está em c, só é mudar os printf pelos couts e outros poucos comandos, mais acho que você vai compreender.

#include <stdio.h>
#include <conio.h>
main () {


int idade,sexo,x=0,y,habitantes,i,maior=-9999999,menor=0;
float smaior=-999999,smenor=999999;
float soma=0,media, salario;
for (i=1;i<=idade;i++){
printf("\n\nDiga sua idade :");
scanf("%d",&idade);
printf("\n\nDiga seu sexo (1. Masc, 2. Fem):");
scanf("%d",&sexo);
printf("\n\nDiga o seu salario :");
scanf("%f",&salario);
if (salario >= soma){
soma=soma+salario;
} if (idade>maior){
maior=idade;
} if (idade < maior){
menor = idade;
} if ((sexo == 2) && (salario <= 200)){
x++;
} if (salario > smaior){
smaior=salario;
}
if (salario < smaior){
smenor=idade;
y=sexo;

}
}
media=soma/i;
printf("\nA media de todos os salarios e %.2f",media);
printf("\nA maior idade %d, e a menor idade %d",maior,menor);
printf("\nA quantidade de mulheres com salarios menor que 200$ e :%d",x);
printf("\nA pessoa com menor salario. Seu sexo e %d ( lembre-se 1 e masculino e 2 e feminino) e sua idade e %d",y,smenor);
getche();
}

  • Curtir 1
Postado

dbatista89

Muito Obrigado pela boa vontade é que comecei a pouco tempo essa matéria na facul e mas eu nunca tinha visto essa linguagem printf e scanf só nos foram ensinados o cout e cin

mas como você falou é só eu modificar o printf pelo COUT e o scanf pelo CIN

agora o que não entendi é o que significa esse %d por que geralmente o que me foi passado era o operador de inserção "<<".

agradeço pela ajuda.

  • Curtir 1
Postado

A flag %d formata a entrada ou saida como um inteiro.

Não testei o código do colega acima, mas creio que gerará um acess violation quando entrar no for por não inicializar a variável idade.

É possível melhorar o código acima.

[]'s

  • Curtir 1
Postado
A flag %d formata a entrada ou saída como um inteiro.

Não testei o código do colega acima, mas creio que gerará um acess violation quando entrar no for por não inicializar a variável idade.

É possível melhorar o código acima.

[]'s

Como ja bem explicado pelo nosso amigo, o "%d" é para ler uma entrada ( ou saída) inteira, como %f para uma entrada ou saída inteira, entre outros.

não gerará um acess violation porque quando o programa rodara 1ª vez o for estará meio que invalido, até porque a minha variável ' i ' , ela está iniciando com 1, e eu disse que ela só pararia quando 'i' fosse maior que idade, coloquei menor, mais quando ele sair do caso ele parara, o nosso amigo disse no enunciado que o programa deveria parar quando um numero negativo fosse digitado como idade, então quando este for digitado o programa verá que ' i ' já não é menor que idade, e sim maior. tenta testar, caso dê algum erro mesmo assim, pode postar, que ficarei feliz em ver onde errei para me aperfeiçoar, também estou começando agora, estou no 1º período do SI !

  • Curtir 1
Postado

Bom dia dbatista.

Segue parte de uma solução que montei aqui, não consegui terminar pois estou no trabalho, segue caso queira melhorá-la.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 10

typedef struct _habitante {
int salario;
int idade;
char sexo;
}habitante;

int menu();
void CadastraInf(habitante *hab);
void RetornaInf(habitante *hab);
int CalculaSalarios(habitante *hab);
int * RetornaIdade(habitante *hab);
int RetornaMulher(habitante *hab);
void Quick(int *vetor, int inicio, int fim);
unsigned int IND = -1;

int main() {
habitante hab[MAX];

while(true){
switch(menu()){
case 1:
{
CadastraInf(hab);
break;
}

case 2:
{
RetornaInf(hab);;
break;
}
default:
exit(0);
}
}
}

int menu()
{
int opc;
printf("******************** MENU ********************\n\n");
printf("(1) - Cadastro\n(2) - Consulta de resultados\n");
printf("Digite a opcao desejada: ");
scanf("%d",&opc);
return opc;
}

void CadastraInf(habitante *hab) {

fflush(stdin);
printf("*** Cadastro de informações ***\n\n");

printf("Digite o salario do habitante: ");
scanf("%d",&(hab[IND+1].salario));
fflush(stdin);

printf("Digite a idade do habitante: ");
scanf("%d",&(hab[IND+1].idade));
fflush(stdin);

printf("Digite o sexo do habitante (M/F): ");
fgets(&(hab[IND+1].sexo),2,stdin);
fflush(stdin);

IND++;
}

void RetornaInf(habitante *hab) {
int *vetor = RetornaIdade(hab);
printf("Salario do grupo: %d\n",CalculaSalarios(hab));
printf("Menor Idade: %d\n",vetor[0]);
printf("Maior Idade: %d\n",vetor[IND]);
printf("Quantidade de Mulheres: %d\n",RetornaMulher(hab));
}

int CalculaSalarios(habitante *hab) {
int cont,soma=0;

for(cont=0 ; cont <= IND; cont++){
soma += hab[cont].salario;
}
return soma;
}

int * RetornaIdade(habitante *hab) {
int cont,vetor[IND];

for(cont=0 ; cont <= IND; cont++){
vetor[cont] = hab[cont].idade;
}

Quick(vetor,0,IND);

return vetor;
}

int RetornaMulher(habitante *hab) {
int cont, qtd=0;

for(cont=0 ; cont <= IND; cont++){
if((hab[cont].sexo == 'F') && (hab[cont].salario <= 200))
qtd ++;
}
return qtd;
}
/*
habitante MenorSal(habitante *hab) {
int cont, vetor[IND];
habitante _hab;

for(cont=0 ; cont <= IND; cont++){
vetor[cont] = hab[cont].salario;
}

Quick(vetor,0,IND);

for(cont=0 ; cont <= IND; cont++){
if(vetor[0] = hab[cont].salario) {

printf("ACHEI");
}
}

return _hab;

}*/

void Quick(int *vetor, int inicio, int fim){

int pivo, aux, i, j, meio;

i = inicio;
j = fim;

meio = (int) ((i + j) / 2);
pivo = vetor[meio];

do{
while (vetor[i] < pivo) i = i + 1;
while (vetor[j] > pivo) j = j - 1;

if(i <= j){
aux = vetor[i];
vetor[i] = vetor[j];
vetor[j] = aux;
i = i + 1;
j = j - 1;
}
}while(j > i);

if(inicio < j) Quick(vetor, inicio, j);
if(i < fim) Quick(vetor, i, fim);

}

Segui o princípio de ordenar e buscar as bordas, creio que computacionalmente seja melhor :)

Espero ter ajudado no exemplo.

[]'s

  • Curtir 1
Postado

Maravilhoso seu programa, kkk o meu está bastante simples, como disse estou no 1º período, e estamos indo ver matrizes agora, C não é bem o foco do nosso curso, é apenas exigência do MEC. Se você poder disponibilizar algum material que possa nos ajudar ai, tem muita coisa no seu programa que não compreendi.

  • Curtir 1
Postado

Bom dia.

Também não trabalho com C, trabalho com .NET e PHP.

Estou cursando o 6° de SI também, programo em C por passatempo =)

Qual parte do código você não entendeu ?

[]'s

  • Curtir 1
Postado

essa parte

typedef struct _habitante {
int salario;
int idade;
char sexo;
}habitante;

int menu();
void CadastraInf(habitante *hab);
void RetornaInf(habitante *hab);
int CalculaSalarios(habitante *hab);
int * RetornaIdade(habitante *hab);
int RetornaMulher(habitante *hab);
void Quick(int *vetor, int inicio, int fim);
unsigned int IND = -1;

e essa , esse IND, QUICK.

/*
habitante MenorSal(habitante *hab) {
int cont, vetor[IND];
habitante _hab;

for(cont=0 ; cont <= IND; cont++){
vetor[cont] = hab[cont].salario;
}

Quick(vetor,0,IND);

for(cont=0 ; cont <= IND; cont++){
if(vetor[0] = hab[cont].salario) {

printf("ACHEI");
}
}

return _hab;

}*/

  • Curtir 1
Postado

Boa noite.

Com o conceito de struct você cria um novo "tipo", ou seja, você consegue mesclar vários tipos de dados. Criei um novo tipo habitante contento salário, idade e sexo.

Criei algumas funções que ele citou no enunciado e algumas auxiliares, como o Quick, que implementa o algoritmo QuickSort para ordenação de vetores.

Segue a referencia para struct:

http://tigcc.ticalc.org/doc/keywords.html#struct

http://myprogrammingblog.com/2011/07/18/c-language-how-to-use-struct-typedef/

http://www2.its.strath.ac.uk/courses/c/

IND é apenas uma variável que controla os indices do vetor de "habitantes".

Não sou muito bom em explicar as coisas.. rs

Conseguiu entender ?

[]'s

  • Curtir 1
Postado

boa noite desculpe não ter retornado é que chego muito tarde da facul

pois bem de acordo com alguns exemplos que vi eu monteu baseado no exemplo do dbatista só que ele ainda não roda, tentei mudar algumas coisas mas não deu certo rsrsr

desculpe a minha ignorância é que nunca tinha visto programação na minha vida e essa matéria está realmente me tirando o sono rsrs

Agradeço novamente todos aquele que gentilmente responderam tentando ajudar, muito obrigado

Segue abaixo como tentei modificá-lo é que não possuo muitos recursos pois é minha primeira matéria de lógica e é do curso de Eng de Petróleo então da pra perceber que ele não dão muita importancia a está matéria mas o meu professor dá e muita rsrsrs parece um computador falando rsrsr.


#include <iostream>
#include <conio.h>
using namespace std;
int main(void)
{

int idade, sexo, x, y, habitantes, i ,maior, menor;
float smaior, smenor;
float soma, media, salario;
x=0;
maior=-9999999;
menor=0;
smaior=-999999;
smenor=999999;
soma=0;


for (i=1;i<=idade;i++){
cout <<"\n\nInforme sua idade: ";
cin >> idade;
cout <<"\n\nDiga seu sexo (1. Masc, 2. Fem):";
cin >> sexo;
cout <<"\n\nDiga o seu salario :";
cin >> salario;
if (salario >= soma){
soma=soma+salario;
} if (idade>maior){
maior=idade;
} if (idade < maior){
menor = idade;
} if ((sexo == 2) && (salario <= 200)){
x++;
} if (salario > smaior){
smaior=salario;
}
if (salario < smaior){
smenor=idade;
y=sexo;

}
}
media=soma/i;

cout<<"\nA media de todos os salarios " << media;
cout <<"\nA maior idade: "<< maior <<"\nA menor idade: " << menor;
cout <<"\nA quantidade de mulheres com salarios menor que 200$ e :" << x;
cout <<"\nA pessoa com menor salario. Seu sexo e: " << y << "\nSua idade e: "<< smenor;
getch();
}

  • Curtir 1
  • 5 anos depois...
Postado

Como faço um programa para Ler nome, sexo, nível escolaridade, maior curso realizado (exemplo Engenharia, Computação, Ensino médio...) e imprimir o nome, sexo, escolaridade e o curso feito?

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!