Utilizando structs na linguagem C

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.

Fonte: Pexels.

Desenvolva um programa utilizando “structs”, cole o resultado no comentário.

6 comentários em “Utilizando structs na linguagem C

  1. 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;
    }

    Curtir

  2. #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;
    }

    Curtir

  3. 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;
    }

    Curtir

  4. 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;
    }

    Curtir

  5. //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;
    }

    Curtir

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

      Curtir

Deixar mensagem para Thaís Camargo Cancelar resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.