Ir ao conteúdo
  • Cadastre-se

Gustavo Rossy

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

posts postados por Gustavo Rossy

  1. Beleza galera? Então, estou fazendo um trabalho cujo meu objetivo é pensar em algum problema que seja resolvido com uma lista de structs. No código a seguir vocês podem perceber que minha struct armazena somente dois dados, peso e nome. Meu problema está surgindo na parte de armazenar e/ou mostrar o nome armazenado... Quando peço para ver o nome armazenado só mostra alguns simbolos... Alguem sabe o que está errado? Desde já, agradeço imensamente! Segue o código: 

    Obs: Para a entrada do nome estou usando o scanf("%s", &x) só para testes. Quando estiver funcionando passarei para o gets.

    #include <stdio.h>
    #include <stdlib.h>
    
    struct lista{
        char nome[30];
        float peso;
        struct lista *proximo;
    };
    
    typedef struct lista slista;
    
    
    slista *inserir_inicio(slista *inicio, char x[30], float y){
        slista *novo;
        novo=(slista *) malloc(sizeof (slista));
        novo->nome[30]=x[30];
        novo->peso=y;
        novo->proximo=inicio;
        return novo;
    }
    
    void imprimir(slista *inicio, char x[30]){
        slista *aux=inicio;
        while (aux->nome!=x){
            aux=aux->proximo;
        }
        printf("\nNome: %c", aux->nome);
        printf("\nPeso: %f", aux->peso);
    }
    
    void imprime(slista *inicio){
        slista *aux= inicio;
        while (aux!=NULL){
            printf("\n%s", aux->nome);
            printf("\n%f\n", aux->peso);
            aux=aux->proximo;
        }
    }
    int main(){
        slista *inicio=NULL;
        int menu;
        float y;
        char x[30];
        do{
            system("cls");
            printf("\n\t\t****MENU****\n");
            printf("\n1. Insercao de um novo elemento no inicio da lista");
            printf("\n2. Impressao de um elemento da lista");
            printf("\n3. Impressao de todos os elementos da lista");
            printf("\n4. Exclusao do primeiro elemento da lista");
            printf("\n4. Exclusao de toda a lista");
            printf("\n5. Sair");
            printf("\nOpcao: ");
            scanf("%i", &menu);
            if (menu==1){
                printf("\nDigite o nome: ");
                scanf("%s", &x);
                printf("\nDigite o peso: ");
                scanf("%f", &y);
                inicio=inserir_inicio(inicio,x,y);
                printf("\nInserido com sucesso! ");
                system("pause");
            }
            else if (menu==2){
                printf("\nDigite o nome de quem devera ser impresso: ");
                scanf("%s", &x);
                imprimir(inicio, x);
                system("pause");
            }
            else if (menu==3){
                imprime(inicio);
                system("pause");
            }
            else if (menu==5) return 0;
            
            else {
                printf("\nOpcao incorreta! ");
                system("pause");
            }
        }while (1);
        return 0;
    }

     

  2. Olá pessoal, estou cursando programação de computadores na faculdade e meu professor nos passou um exercicio que diz o seguinte: "Escreva um programa para uma empresa de transportes aéreos que permita controlar a reserva de poltronas de uma aeronave." O exercício completo está em anexo. Meu professor disse que se quiser fazer apenas com um vetor[20] também pode.

    Comecei a criar uma função para cada opção do menu, mas minha dificuldade aparece quando eu tento criar um vetor que inicialmente printa o numero de cada poltrona e se caso ele for selecionado apareça um X no lugar dele. Aqui está o código que comecei a criar: 

     

    #include <stdio.h>
    #include <stdlib.h>
    char p[20]={49,50,51,52,53,54,55,56,57,'A','B','C','D','E','F','G','H','I','J','K','L'};
    
    void mostrar_poltronas(){
        printf("[%c] [%c] [%c] [%c] [%c] [%c] [%c] [%c] [%c] [%c]",p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7],p[8],p[9]);
        printf("\n\n");
        printf("[%c] [%c] [%c] [%c] [%c] [%c] [%c] [%c] [%c] [%c]",p[10],p[11],p[12],p[13],p[14],p[15],p[16],p[17],p[18],p[19]);
    }
    
    void reservar_poltrona(){
        int i;
        do{
            mostrar_poltronas();
            printf("\nDigite a poltrona que deseja reservar (digite 0 para sair): ");
            scanf("%i", &i);
            p[i-1]=88;
            system("cls");
        }while (i!=0);
    }
    
    int main()
    {
        //TESTE DAS FUNÇÕES
        int menu;
        printf("\nTESTE\nMostrar poltronas: 1\nReservar poltronas: 2\nOpcao: ");
        scanf("%i", &menu);
        if (menu==1) mostrar_poltronas();
        else if (menu==2) reservar_poltrona();
        return 0;
    }

     

    Comecei a criar esse vetor char que armazena as poltronas, e consegui fazer com que ele mostrasse as 9 primeiras poltronas com seus números certos, utilizando a tabela ASCII. Mas a partir do 9 não consegui mais! (Onde está representado pelas letras A - L). Alguém pode me dar alguma ajuda/dica de como resolver isso? Desde já, agradeço muito!

    Exercicio 001.jpg

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...