Na linguagem C, um registro ou uma estrutura (struct) é um tipo de dado definido pelo programador que permite agrupar variáveis de tipos diferentes sob um mesmo nome. Essa estrutura é composta por um conjunto de membros (ou campos), que podem ser de qualquer tipo de dado suportado pela linguagem.
A definição de uma estrutura começa com a palavra reservada “struct”, seguida pelo nome da estrutura e pelos membros entre chaves. Exemplo:
struct Pessoa {
char nome[50];
int idade;
float altura;
};
No exemplo 1, foi definida uma estrutura chamada “Pessoa” com três membros: um vetor de caracteres chamado “nome” com tamanho máximo de 50 caracteres, um inteiro chamado “idade” e um valor em ponto flutuante chamado “altura”.
Para utilizar a estrutura definida, é necessário declarar uma variável com sendo o tipo da estrutura. Exemplo:
struct Pessoa pessoa1;
Nesse caso, é declarado uma variável chamada “pessoa1” com sendo do tipo “Pessoa”. É possível acessar os membros da estrutura utilizando o operador ponto (“.”):
strcpy(pessoa1.nome, "João");
pessoa1.idade = 30;
pessoa1.altura = 1.75;
No exemplo 2, foram atribuídos valores aos membros da variável “pessoa1”. A função “strcpy” foi usada para copiar a string “João” para o membro “nome”.
As estruturas são muito úteis para organizar dados complexos em um único objeto ou para organizar códigos maiores.

Desenvolva um programa utilizando “structs”, cole o resultado no comentário.
Ex1//lista 5
#include
#include
#include
int main(){
int op, i = 0, j = 0, men = 0, indmenor;
char escolhido = ‘s’;
struct cadastro{
int numdaconta;
char cliente[30];
float saldo;
}conta[15];
do{
printf(“\n<<>>\n”);
printf(“1- para Cadastrar contas\n”);
printf(“2- para visualizar contas de alguem\n”);
printf(“3- para excluir conta com men saldo\n”);
printf(“4- para sair\n”);
printf(“\nEscolha uma opção: “);
scanf(“%d”, &op);
switch(op){
case 1:
while(escolhido == ‘s’){
printf(“Numero da conta: \n”);
scanf(“%d”, &conta[i].numdaconta);
printf(“Nome do cliente: \n”);
scanf(“%s”, conta[i].cliente);
printf(“Saldo : \n”);
scanf(“%f”, &conta[i].saldo);
printf(“\nDigite s para continuar: “);
scanf(“%s”, &escolhido);
i++;
if(i == 15 || escolhido != ‘s’){
escolhido = ‘s’;
break;
}
}
break;
case 2:
while(escolhido == ‘s’){
printf(“Qual cliente deseja saber?”);
scanf(“%d”, &i);
printf(“\nNumero da conta: %d\n”, conta[i].numdaconta);
printf(“Nome do cliente: “);
puts(conta[i].cliente);
printf(“\nSaldo : %.2f\n”, conta[i].saldo);
printf(“Digite s para continuar\n”);
scanf(“%c”, &escolhido);
if(escolhido != ‘s’){
escolhido = ‘s’;
break;
}
}
break;
case 3:
i = 0;
men = conta[i].saldo;
for(i = 1; i < 15; i++){
if(conta[i].saldo < men)
men = conta[i].saldo;
indmenor = i;
}
conta[indmenor].numdaconta = 0;
men = 0;
strcpy(conta[indmenor].cliente, "");
escolhido = 's';
printf("Menor saldo excluido.\n");
break;
case 4:
return 0;
break;
}
} while(1);
return 0;
}
CurtirCurtir
#include
#include
using namespace std;
struct Conta {
int numero;
string nome;
float saldo;
};
const int MAX_CONTAS = 15;
Conta contas[MAX_CONTAS];
int num_contas = 0;
void cadastrarConta() {
if (num_contas >= MAX_CONTAS) {
cout << "Limite de contas atingido." << endl;
return;
}
Conta novaConta;
cout <> novaConta.numero;
for (int i = 0; i < num_contas; i++) {
if (contas[i].numero == novaConta.numero) {
cout << "Já existe uma conta com esse número." << endl;
return;
}
}
cout << "Nome do cliente: ";
cin.ignore();
getline(cin, novaConta.nome);
cout <> novaConta.saldo;
contas[num_contas] = novaConta;
num_contas++;
cout << "Conta cadastrada com sucesso." << endl;
}
void visualizarContas() {
string nome;
cout << "Digite o nome do cliente: ";
cin.ignore();
getline(cin, nome);
bool encontrou = false;
for (int i = 0; i < num_contas; i++) {
if (contas[i].nome == nome) {
cout << "Número da conta: " << contas[i].numero << endl;
cout << "Saldo: " << contas[i].saldo << endl;
encontrou = true;
}
}
if (!encontrou) {
cout << "Não foi encontrada nenhuma conta com o nome informado." << endl;
}
}
void excluirConta() {
if (num_contas == 0) {
cout << "Não há contas cadastradas." << endl;
return;
}
int indiceMenorSaldo = 0;
for (int i = 1; i < num_contas; i++) {
if (contas[i].saldo < contas[indiceMenorSaldo].saldo) {
indiceMenorSaldo = i;
}
}
cout << "Conta excluída: " << contas[indiceMenorSaldo].numero << endl;
for (int i = indiceMenorSaldo; i < num_contas – 1; i++) {
contas[i] = contas[i+1];
}
num_contas–;
}
int main() {
char opcao;
do {
cout << endl;
cout << "Menu de opções" << endl;
cout << "a) Cadastrar contas." << endl;
cout << "b) Visualizar todas as contas de um determinado cliente." << endl;
cout << "c) Excluir a conta com menor saldo (supondo a não-existência de saldos iguais)." << endl;
cout << "d) Sair." << endl;
cout <> opcao;
switch (opcao) {
case ‘a’:
cadastrarConta();
break;
case ‘b’:
visualizarContas();
break;
case ‘c’:
excluirConta();
break;
case ‘d’:
cout << "Encerrando programa." << endl;
break;
default:
cout << "Opção inválida." << endl;
}
} while (opcao != 'd');
return 0;
}
CurtirCurtir
EX1:
#include
int main()
{
int OP, i = 0, menor = 0, indeceM;
char escolhido = ‘sim’;
struct cadrasto
{
int cont;
float saldo;
char nomedocliente[50];
} conta[15];
do{
printf(“\nMenu de opcoes:\n”);
printf(“\n1)Cadrastar conta.”);
printf(“\n2)Visualizar todas as contas de um determinado cliente”);
printf(“\n3)Excluir a conta com menor saldo.”);
printf(“\n4)Sair.\n”);
scanf(“%d”, &OP);
if(OP==1)
{
printf(“Informe o numero da conta:\n”);
scanf(“%d”, &conta[i].cont);
printf(“Informe o nome do cliente:\n”);
scanf(“%s”, &conta[i].nomedocliente);
printf(“Informe o saldo da conta:\n”);
scanf(“%f”,&conta[i].saldo);
printf(“Digite sim para continuar:\n”);
scanf(“%s”, &escolhido);
if(i==15 || escolhido != ‘sim’)
{
escolhido = ‘sim’;
break;
i++;
}
}
else if(OP==2)
{
printf(“Qual conta deseja saber:\n”);
scanf(“%d”, &i);
printf(“\nNumero da conta:\n%d”, conta[i].cont);
printf(“\nNome do cliente:\n%s”, conta[i].nomedocliente);
printf(“\nSaldo da conta:\n%.2f”, conta[i].saldo);
printf(“Digite sim para continuar:\n”);
scanf(“%s”, &escolhido);
if(i==15 || escolhido != ‘sim’)
{
escolhido = ‘sim’;
break;
}
}
else if(OP==3)
{
i=0;
menor = conta[i].cont;
for(i=1; i<15; i++)
{
if(conta[i].cont<menor)
{
menor = conta[i].cont;
indeceM=i;
}
conta[indeceM].cont = 0;
menor = 0;
strcpy(conta[indeceM].nomedocliente,"");
escolhido = 'sim';
printf("Menor saldo excluido!\n");
break;
}
}
else if(OP==4)
{
return 0;
break;
}
}while(1);
return 0;
}
CurtirCurtir
EX2:
#include
#define TAM 10
typedef struct {
int horas;
float salarioB;
float salarioL;
float desconto;
char sexo;
int codigo;
} Professor;
int main() {
int i = 0, contM = 0, contF = 0;
float somaSM = 0, somaSF = 0;
char continuar = ‘s’;
Professor professores[TAM];
for (i = 0; i < TAM; i++) {
printf("Questionario:\n");
printf("Informe o codigo numerico:\n");
scanf("%d", &professores[i].codigo);
printf("Informe seu sexo (M/F):\n");
scanf(" %c", &professores[i].sexo);
printf("Informe o numero de horas/aula ministradas:\n");
scanf("%d", &professores[i].horas);
professores[i].salarioB = professores[i].horas * 50;
if (professores[i].sexo == 'M' || professores[i].sexo == 'm') {
if (professores[i].horas <= 70) {
professores[i].desconto = professores[i].salarioB * 0.1;
} else {
professores[i].desconto = professores[i].salarioB * 0.08;
}
somaSM += professores[i].salarioB;
contM++;
} else if (professores[i].sexo == 'F' || professores[i].sexo == 'f') {
if (professores[i].horas <= 70) {
professores[i].desconto = professores[i].salarioB * 0.07;
} else {
professores[i].desconto = professores[i].salarioB * 0.05;
}
somaSF += professores[i].salarioB;
contF++;
}
professores[i].salarioL = professores[i].salarioB – professores[i].desconto;
}
for (i = 0; i < TAM; i++) {
printf("Professor %d\n", i + 1);
printf("Codigo: [%d]\n", professores[i].codigo);
printf("Salario bruto: [%.2f]\n", professores[i].salarioB);
printf("Valor do desconto: [%.2f]\n", professores[i].desconto);
printf("Salario liquido: [%.2f]\n", professores[i].salarioL);
}
printf("Media dos salarios brutos dos professores do sexo masculino: [%.2f]\n", somaSM/contM);
printf("Media dos salarios brutos dos professores do sexo feminino: [%.2f]\n", somaSF/contF);
return 0;
}
CurtirCurtir
//2 – Crie um programa em C para ler o código, o sexo (M – masculino; F – feminino)
//e o número de horas/aula ministradas pelos professores de uma escola durante um mês.
//Sabe-se que um professor ganha R$ 50,00 hora/aula e que a escola possui 10 professores.
// Após a leitura, o programa deverá mostrar:
//Uma listagem contendo o código, o salário bruto, o desconto e o salário líquido de todos os professores.
//A média aritmética dos salários brutos dos professores do sexo masculino.
//A média aritmética dos salários brutos dos professores do sexo feminino.
//Os descontos devem ser assim calculados:
Masculino Até 70 horas/ aula ao mes: 10%. Mais que 70 horas / aula :8%
Feminino Até 70 horas/ aula ao mes: 7%. Mais que 70 horas / aula :5%
#include
#define SALARIO_HORA 50.0
#define NUM_PROFESSORES 1
struct professor {
int codigo;
char sexo;
int horas;
float salario_bruto;
float desconto;
float salario_liquido;
};
int main() {
struct professor prof[NUM_PROFESSORES];
float media_salario_masculino = 0.0;
float media_salario_feminino = 0.0;
int num_prof_masculino = 0;
int num_prof_feminino = 0;
int i;
// Leitura dos dados
for (i = 0; i < NUM_PROFESSORES; i++) {
printf("Digite o codigo do professor: ");
scanf("%d", &prof[i].codigo);
printf("Digite o sexo do professor (M ou F): ");
scanf(" %c", &prof[i].sexo);
printf("Digite o numero de horas/aula ministradas: ");
scanf("%d", &prof[i].horas);
prof[i].salario_bruto = prof[i].horas * SALARIO_HORA;
// Calculo do desconto e salario liquido
if (prof[i].sexo == 'M') {
if (prof[i].horas <= 70) {
prof[i].desconto = 0.1;
} else {
prof[i].desconto = 0.08;
}
media_salario_masculino += prof[i].salario_bruto;
num_prof_masculino++;
} else {
if (prof[i].horas <= 70) {
prof[i].desconto = 0.07;
} else {
prof[i].desconto = 0.05;
}
media_salario_feminino += prof[i].salario_bruto;
num_prof_feminino++;
}
prof[i].salario_liquido = prof[i].salario_bruto * (1.0 – prof[i].desconto);
}
// Listagem dos salarios
printf("Codigo | Salario Bruto | Desconto | Salario Liquido\n");
for (i = 0; i 0) {
media_salario_masculino /= num_prof_masculino;
printf(“Media aritmetica dos salarios brutos dos professores do sexo masculino: %.2f\n”,
media_salario_masculino);
} else {
printf(“Nao ha professores do sexo masculino\n”);
}
if (num_prof_feminino > 0) {
media_salario_feminino /= num_prof_feminino;
printf(“Media aritmetica dos salarios brutos dos professores do sexo feminino: %.2f\n”,
media_salario_feminino);
} else {
printf(“Nao ha professores do sexo feminino\n”);
}
return 0;
}
CurtirCurtir
faltou o // no começo dos 2 aqui
Masculino Até 70 horas/ aula ao mes: 10%. Mais que 70 horas / aula :8%
Feminino Até 70 horas/ aula ao mes: 7%. Mais que 70 horas / aula :5%
CurtirCurtir