Ajuda em C [RESOLVIDO]

1. Ajuda em C [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/01/2014 - 23:42h

Olá pessoal preciso de uma ajuda, encontrei um exercício pela net, e quis tentar resolver mais não sou experiente em linguagem c.
Esse e o exercício..

Faça um algorítimo que receba a idade, o Salário e o nome e um determinado número de funcionários e mostre qual funcionário tem a maior idade e qual funcionário tem o maior salário. Não mostre o salário e a idade das pessoas nos resultados, pois lembre-s: o resultado pode apontar duas pessoas diferentes, pois um pode ter maior idade e o outro maior salário. O número de funcionário a digitar será especificado pelo o usuário. Se o salário digitado ou idade digitada for igual ao do salário e da idade digitada anteriormente, mantém-se a idade e salários digitados primeiramente.

Meu código informe meu erro..

#include<stdio.h>
#include<conio.h>
#include<string.h>

int cont=1,valor,idade,idade_maior;
char nome[10],nomeidade,nomesalario;
float salario,salario_maior;

int main (void)
{
printf("\nEntre com um valor:");
scanf("%i", &valor);

do{
printf("\nInforme seu nome:");
scanf("%s", &nome);
printf("\nInforme sua idade:");
scanf("%d", &idade);
printf("\nInforme seu salario:");
scanf("%f", &salario);

if(idade >= idade_maior)
{
idade_maior=idade;
nomeidade=nome;
}
if(salario >= salario_maior)
{

salario_maior=salario;
nomesalario=nome;

}

cont++;
}while(cont<=valor);

printf("\%s voce tem a maior idade:%i!!!",nomeidade,idade_maior);
printf("\%s voce tem o maior salario:%.2f!",nomesalario,salario_maior);

getch();
return(0);
}
Na hora do resultado ele para..e não mostra nada...


  


2. MELHOR RESPOSTA

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 03/01/2014 - 08:15h

Existem dois pontos:

As variáveis auxiliares para armazenar o maior valor, idade_maior e salario_maior não estão sendo inicializadas, logo o valor está armazenado nas mesmas pode ser sempre superior ao recebido pelo usuário, gerando uma saída falsa. Inicialize essas variáveis com 0.

O segundo ponto são as variáveis de caracteres. nome é uma string, um vetor estático de 10 posições, ok pode armazenar o nome do usuário aí. Porém, nomeidade e nomesalario são apenas um char, logo só podendo armazenar um caracter cada. Neste caso deve ser usar ou um novo vetor para cada uma delas ou um ponteiro. Em ambos os casos deve ser feito uma cópia do que há na variável nome para a auxiliar. Utilize uma função de cópia como strncpy, strcpy, memcpy ou strdup.


#include<stdio.h>
#include<conio.h>
#include<string.h>

int cont=1,valor=0,idade=0,idade_maior=0;
char nome[10],nomeidade[10],nomesalario[10];
float salario=0.0,salario_maior=0.0;

int main (void)
{
printf("\nEntre com um valor:");
scanf("%i", &valor);

do{
printf("\nInforme seu nome:");
scanf("%s", &nome);
printf("\nInforme sua idade:");
scanf("%d", &idade);
printf("\nInforme seu salario:");
scanf("%f", &salario);

if(idade >= idade_maior)
{
idade_maior=idade;
strncpy(nomeidade, nome, sizeof(nomeidade));
}
if(salario >= salario_maior)
{
salario_maior=salario;
strncpy(nomesalario, nome, sizeof(nomesalario));
}

cont++;
}while(cont<=valor);

printf("\%s voce tem a maior idade:%i!!!",nomeidade,idade_maior);
printf("\%s voce tem o maior salario:%.2f!",nomesalario,salario_maior);

getch();
return(0);
}


3. Re: Ajuda em C [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 03/01/2014 - 10:56h

Você tem que fazer isso com registros, para criar um tipo funcionário, que carrega todos os dados de cada funcionário.

Pesquise sobre registro em C.


4. Re: Ajuda em C [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 03/01/2014 - 11:29h

uilianries escreveu:

Existem dois pontos:

As variáveis auxiliares para armazenar o maior valor, idade_maior e salario_maior não estão sendo inicializadas, logo o valor está armazenado nas mesmas pode ser sempre superior ao recebido pelo usuário, gerando uma saída falsa. Inicialize essas variáveis com 0.

O segundo ponto são as variáveis de caracteres. nome é uma string, um vetor estático de 10 posições, ok pode armazenar o nome do usuário aí. Porém, nomeidade e nomesalario são apenas um char, logo só podendo armazenar um caracter cada. Neste caso deve ser usar ou um novo vetor para cada uma delas ou um ponteiro. Em ambos os casos deve ser feito uma cópia do que há na variável nome para a auxiliar. Utilize uma função de cópia como strncpy, strcpy, memcpy ou strdup.


#include<stdio.h>
#include<conio.h>
#include<string.h>

int cont=1,valor=0,idade=0,idade_maior=0;
char nome[10],nomeidade[10],nomesalario[10];
float salario=0.0,salario_maior=0.0;

int main (void)
{
printf("\nEntre com um valor:");
scanf("%i", &valor);

do{
printf("\nInforme seu nome:");
scanf("%s", &nome);
printf("\nInforme sua idade:");
scanf("%d", &idade);
printf("\nInforme seu salario:");
scanf("%f", &salario);

if(idade >= idade_maior)
{
idade_maior=idade;
strncpy(nomeidade, nome, sizeof(nomeidade));
}
if(salario >= salario_maior)
{
salario_maior=salario;
strncpy(nomesalario, nome, sizeof(nomesalario));
}

cont++;
}while(cont<=valor);

printf("\%s voce tem a maior idade:%i!!!",nomeidade,idade_maior);
printf("\%s voce tem o maior salario:%.2f!",nomesalario,salario_maior);

getch();
return(0);
}


Ajudou muito valeu.. estou aprendendo a linguagem c..








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts