O que esta errado neste codigo de registro?

include <stdio.h>

#include <conio.h>

#include <string.h>

main()

{

struct func {

char nome;

float salario;

};

struct func F[10];

float maior_sal;

char maior_nome;

int q1000, q2500, i;

q1000 = 0;

q2500 = 0;

maior_sal = 0;

for (i=0; i<4; i++){

printf ("Digite o nome do funcionario= ");

scanf ("%s", &F[i].nome);

printf ("Digite o salario deste funcionario= ");

scanf ("%f", &F[i].salario);

if (F[i].salario < 1000){

q1000 += 1;

}

if (F[i].salario > 2500 && F[i].salario < 5000){

q2500 += 1;

}

if (F[i].salario > maior_sal){

maior_sal = F[i].salario;

maior_nome = F[i].nome;

}

}

printf ("\nExistem %d funcionarios que recebem menos de R$ 1000", q1000);

printf ("\nExistem %d funcionarios que recebem entre 2500 R$ e 5000 R$\n", q1000);

printf ("O funcionario %s recebe o maior salario da empresa de %f", maior_nome, maior_sal);

getch();

return 0;

}

Comments

  • Repare que você declarou a variável nome como sendo um único caractere e não uma string.

    Tente:

    struct func {

    char nome[30];

    float salario;

    };

    Repare também que ao utilizar o scanf("%s", F[i].nome) o nome informado não pode conter espaços (pois ele sinaliza o fim da string para a função scanf). Tente utilizar gets, ou melhor, fgets.

    Para copiar uma string você precisa utilizar a função strcpy da biblioteca string.h. (ao utilizar o operador de atribuição você estará atribuindo o endereço da string e não seu conteúdo)

Sign In or Register to comment.