Me ajudem nesse exercício aqui

Faça um programa que receba 4 funcionarios, tendo nome, idade, setor e salario.
Atribua 10% de bonus para os maiores de 50 anos e imprima os cadastros
Eu fiz mas tem algo errado
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
int main() {
struct funcionario{
char nome[50];
char setor[20];
double salario;
int idade;
int bonus;
};

struct funcionario func[4];

for(int i = 0; i<4; i++){
	printf("Digite o %d nome:\n",(i+1));
	scanf("%s",&func[i].nome);
	printf("Digite sua idade\n");
	scanf("%d",&func[i].idade);
	if (i>50)
	
		salario=salario + salario*0.10;
		bonus=salario*10/100;
	
	printf("Digite o salario:\n");
	scanf("%lf",&func[i].salario);
	printf("Digite o setor:\n");
	scanf("%s",&func[i].setor);
	

}
printf("Os funcionarios cadastrados foram:\n");

for(int i = 0; i<4 ; i++)
	printf("Nome: %s;\t\t ;Idade:%d \t\t Setor: %s;\t\tSalario: %9.2f;\n",
		func[i].nome,func[i].idade, func[i].setor, func[i].salario);
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{

struct funcionario
{
    char nome[50];
    char setor[20];
    double salario;
    int idade;
    int bonus;
};

struct funcionario func[4];

for(int i = 0; i<4; i++)
{
    printf("Digite o %d nome:\n",(i+1));
    scanf("%s",func[i].nome);
    printf("Digite sua idade\n");
    scanf("%d",&func[i].idade);

	printf("Digite o salario:\n");
	scanf("%lf",&func[i].salario);
	printf("Digite o setor:\n");
	scanf("%s",func[i].setor);


    if (func[i].idade>50)
    {
        func[i].salario+=func[i].salario*0.10;
        func[i].bonus=func[i].salario*10/100;
    }

}
printf("Os funcionarios cadastrados foram:\n");

for(int i = 0; i<4 ; i++)
{
    printf("\nNome : %s\n",func[i].nome);
    printf("Idade : %d\n",func[i].idade);
    printf("Setor : %s\n",func[i].setor);
    printf("Salario : %9.2f",func[i].salario);
}
return 0;
}

Tem varios erros no seu código.
(1) Na linha if (i>50) o código dentro do if nunca será executado pois a variavel ‘i’ nunca será maior que 50, já que seu looping só vai até 3, for(int i = 0; i<4 ; i++).

(2) Nesta linha scanf("%s",&func[i].nome); não é preciso colocar o & antes de func[i].nome pois o atributo nome da struct funcionario é um vetor de char e vetores na linguagem C são passados sempre por referência.

1 curtida