• 0
Sign in to follow this  
Guest --Thiago --

Cadastro de uma lista simples

Question

Guest --Thiago --

Galera,

Tenho um serio problema em desenvolver em C mas com o tempo vou conseguir porém preciso da ajuda de alguém preciso fazer um programinha besta e facil.

Tenho que criar uma lista pode ser com 10 pessoas cadastradas para um BANCO onde elas vão

1- sacar, depositar e ver saldo cada operação leva 1 minuto, NÃO PRECISA FAZER UMA FUNÇAO que faça estas operações É apenas definir que cada operação vale 1 minuto.

2- idosos ou gravidas tem preferencia ou seja como é uma lista se cadastar uma pessoa e no cadastro for identificado que a pessoa tem mais de 50 anos ou esta gravida ela entra no inicio da lista o resto vai entrando no final da fila.

3- imprir esta lista e o tempo que cada uma ficou na fila sendo que já esta definido 1 minuto para cada uma das operações.

Lista SIMPLEs ligada tem que ser.

Conto de verdade com a ajuda de vocês pois preciso entregar para nota

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Espero que tenha começado o trabalho, se você não postar o código de onde está tendo dificuldades...fica dificil mesmo...

Fazer pra você ninguém vai, pode tirar o cavalinho da chuva.

Espero também que o professor tenha passado o exercício hj e não que o exercício tenha que ser entregado para hj ou amanhã.

Fazer o exercício no último dia de entrega, ou faltando poucos dias para entregar, é um luxo que apenas quem sabe programar na linguagem pode ter. Quanto menos sabe, mais cedo deve tentar fazer o exercício.

Comece, o pessoal aqui tentará ajudar numa eventual dúvida.

Share this post


Link to post
Share on other sites
  • 0

Segue abaixo o código no qual estou tentando desenvolver a aplicação

#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>

//defini‡ao da estrutura
typedef struct elemento {
 struct elemento *prox;
 int info;
 } no;

struct cadastro{
  char nome[20];
  int idade[3];
  int cond[1];
  int cod[1];
};
struct cadastro vetor[5];


//cria‡ao dos ponteiros
 no *inicio, *fim, *aux, *novo, *aux1;
 int criado=0;

 //prototipos
 void criar();
 void imprimir();

 int i;

  //corpo principal do software
 void main(){

     char i;
     int ax, axinfo;
     clrscr();
     while(i !='\n'){
    printf("(1)- Criar uma lista \n");
    printf("(2)- Cadastro de pessoas \n");
    printf("(3)- Tipo da opera‡ao bancaria \n");
    printf("(4)- Exibir a lista \n");
    printf("(5)- Quanto tempo gastou cada pessoa na fila \n");
    printf("(S)- Sair do sistema \n");
    i= getch();

    switch(i){

    case '1':
    criar();
    getch();
    clrscr();
    break;

    case '2':


    for(i=0; i < 6; i ++){
    if(criado==1){
    printf("Digite o nome do cliente: \n");
    gets(vetor[i].nome);
    flushall();
    printf("Digite a idade: \n");
    scanf("%d",vetor[i].idade);
    flushall();
    printf("Se esta gravida digite ou tem mais de 50 anos digite (1)? \n");
    scanf("%d",vetor[i].cond);
    flushall();
    printf("Digite 1 para sacar, 2 para ver saldo, 3 para depositar");
    scanf("%d",vetor[i].cod);
    flushall();
    }

     if(vetor[i].cond){
        inicio=fim=novo;
        novo -> prox = NULL;

      }
       else{
         novo -> prox = inicio;
         inicio = novo;
      }

//insere no final

        if(vetor[i].cond == 0){
          inicio=fim=novo;
          novo -> prox = NULL;
        }
        else
        {
            novo -> prox = NULL;
            fim->prox = novo;
            fim = novo;
        }

    }

    break;

  //    case '3':
  //    operacao();
 //    getch();
 //    clrscr();
  //    break;

    case '4':
    imprimir();
    getch();
    clrscr();
    break;

  //    case '5':
  //    tempogasto();
  //    getch();
  //    clrscr();
  //    break;

    case 's':
    exit(0);
    }
 }
}
  void criar(){
    inicio=fim=NULL;
    criado=1;
    printf("Lista Criada");
}


void imprimir()
{
    aux = inicio;

     if(aux != NULL){
    while( aux != NULL )
    {
        printf("%d\t", aux -> vetor[] );
        aux = aux -> prox;
    }
    printf("\n\n");
     }
     else
    printf("Lista Vazia");

  printf("\n");
}

Minha dificuldade esta em como fazer unir as coisas ou seja fazer a soma do tempo que cada um ficou na fila e imprimir e colocar no inicio e no fim da fila de acordo como o solicitado idosos e gravidas inicio da fila o resto entra no fim da fila e cada operação bancaria tem 1 minuto não precisa fazer as funçoes apenas definir que cada um que for no banco perguntar o que vai fazer e somar as operaçoes.

Share this post


Link to post
Share on other sites
  • 0

Olha cara, vou dar uma sugestão. Tente simplificar ao máximo o seu problema, está usando vetores demais, ponteiros demais...

int idade[3];
int cond[1];
int cod[1];

Para que criar vetores ali?

Seguinte, você não precisa usar a operação criar lista. Faça 4 funções com 4 operações apenas:

1 - Cadastrar usuario

2 - Operação bancária

3 - Exibe Lista

4 - Tempo total

Sendo cada uma delas uma função. Use apenas duas variáveis globais do tipo ponteiro, uma para o início e outra para o fim da fila. Aponte-os para NULL na inicialização. Crie uma variável int também para contar quantos cadastros foram feitos.

Use uma estrutura apenas que tenha no minimo:

int nome

int idade

int gravida

estrutura *prox

Fica mais fácil, eu acho. Simulando:

1- Função Cadastrar:

Cria um espaço na memória do tipo da estrutura e pergunta: Nome, idade, se é grávida.

A fila tá vazia? Se tiver, aponta o ponteiro do começo da fila para o elemento criado.

Se não tiver vazia:

Se não estiver cheia e elemento for idoso ou grávida,

pesquise do começo da fila até o fim.

Se o proximo elemento seguinte ao atual for grávida (estrutura.gravida ==1) ou idoso (estrutura.idade >= 50), pule para o próximo, senão, aponte o próximo do elemento criado para o próximo elemento atual, e aponte o proximo do elemento atual para o elemento recém criado.

Caso contrário, Se não estiver vazia e não for idoso nem grávida, insere elemento no *fim da fila.

Vai fazendo aos poucos, crie uma função para cada uma das 4 operações. Despolua sua main. Deixa apenas um switch nela onde terá 4 cases, cada um chamando uma função: Cadastrar, operação bancária, exibe lista e tempo total.

É uma sugestão, estou partindo do princípio que postou exatamente o que o professor pediu, então estou omitindo informações desnecessárias para facilitar o algoritmo.

Não consegui executar seu código...dá uma melhorada..

Boa sorte, abraço.

Share this post


Link to post
Share on other sites
  • 0
Guest --thigraum --

Fiz as modificações e ficou mais ou menos assim porem não to conseguindo imprimir toda a lista apenas o primeiro elemento da lista onde esta errado ???

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

#include<string.h>

typedef struct pessoa {

char nome[40];

int idade;

char gravida[1];

int noperacoes;

struct pessoa *prox;

} no;

no *inicio, *novo, *fim, *aux;

int criado=0;

//----------protótipos------

void criar();

void imprimir();

void inserir();

void main(){

char i;

clrscr();

while(i != '\n')

{

printf(" (1)-Criar uma lista\n");

printf(" (2)-Imprimir a lista\n");

printf(" (3)-Inserir na lista\n");

printf(" (s)-Sair\n");

i=getch();

switch(i)

{

case '1':

criar();

getch();

clrscr();

break;

case '2':

imprimir();

getch();

clrscr();

break;

case '3':

inserir();

break;

case 's':

exit(0);

}

}

}

//-------------Função criar----------

void criar()

{

inicio = fim = NULL;

criado = 1;

printf("\n Lista Criada\n");

}

//------------Função Imprimir------------

void imprimir()

{

aux = inicio;

if(aux != NULL)

{

while( aux != NULL )

{

printf("%s\t", aux -> nome );

printf("%d\t", aux -> idade );

printf("%s\t", aux -> gravida );

printf("%d\t", aux -> noperacoes );

aux = aux -> prox;

}

printf("\n\n");

}

else

printf("Lista Vazia");

printf("\n");

}

//-----------Função inserir --------

void inserir()

{

if(criado == 1)

{

novo = (no *)malloc( sizeof( no ));

printf("Entre com o nome\n");

flushall();

gets(novo -> nome);

printf("Entre com a idade\n");

scanf("%d", &novo -> idade);

printf("Entre com S se for gravida e N caso contrario\n");

flushall();

gets(novo -> gravida);

printf("Entre com o numero de operacoes (1 a 3)\n");

scanf("%d", &novo -> noperacoes );

if( inicio == NULL )

{

inicio = fim = novo;

novo -> prox = NULL;

}

else

{

aux = inicio;

if(novo->idade>50 || novo->gravida[0] == 'S')

{

while(aux != NULL)

{

if (aux->idade > 50 || aux->gravida[0] == 'S')

{

aux = aux-> prox;

break;

}

else

{

novo->prox = aux->prox;

aux->prox = novo;

break;

}

aux=aux->prox;

}

}

else

{

while(aux == NULL)

{

novo->prox = aux->prox;

aux->prox = novo;

break;

}

}

}

}

else

{

printf("Crie a lista primeiro\n");

getch();

}

clrscr();

}

Share this post


Link to post
Share on other sites
  • 0
Guest Visitante

Fiz as modificações e ficou mais ou menos assim porem não to conseguindo imprimir toda a lista apenas o primeiro elemento da lista onde esta errado ???

#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>

typedef struct pessoa {
    char nome[40];
    int idade;
    char gravida[1];
    int noperacoes;
    struct pessoa *prox;
} no;

no *inicio, *novo, *fim, *aux;
int criado=0;

//----------protótipos------
void criar();
void imprimir();
void inserir();

void main(){
    char i;
    clrscr();

    while(i != '\n')
    {
        printf(" (1)-Criar uma lista\n");
        printf(" (2)-Imprimir a lista\n");
        printf(" (3)-Inserir na lista\n");
        printf(" (s)-Sair\n");
        i=getch();

        switch(i)
        {
            case '1':
                criar();
                getch();
                clrscr();
                break;
            case '2':
                imprimir();
                getch();
                clrscr();
                break;
            case '3':
                inserir();
                break;
            case 's':
                exit(0);
        }
    }
}

//-------------Função criar----------
void criar()
{
    inicio = fim = NULL;
    criado = 1;
    printf("\n Lista Criada\n");
}

//------------Função Imprimir------------
void imprimir()
{
    aux = inicio;

    if(aux != NULL)
    {
        while( aux != NULL )
        {
            printf("%s\t", aux -> nome );
            printf("%d\t", aux -> idade );
            printf("%s\t", aux -> gravida );
            printf("%d\t", aux -> noperacoes );
            aux = aux -> prox;
        }
        printf("\n\n");
    }
    else
        printf("Lista Vazia");

    printf("\n");
}

//-----------Função inserir --------

void inserir()
{
    if(criado == 1)
    {
        novo = (no *)malloc( sizeof( no ));

        printf("Entre com o nome\n");
        flushall();
        gets(novo -> nome);
        printf("Entre com a idade\n");
        scanf("%d", &novo -> idade);
        printf("Entre com S se for gravida e N caso contrario\n");
        flushall();
        gets(novo -> gravida);
        printf("Entre com o numero de operacoes (1 a 3)\n");
        scanf("%d", &novo -> noperacoes );

        if( inicio == NULL )
        {
            inicio = fim = novo;
            novo -> prox = NULL;
        }
        else
        {
            aux = inicio;

            if(novo->idade>50 || novo->gravida[0] == 'S')
            {
                while(aux != NULL)
                {
                    if (aux->idade > 50 || aux->gravida[0] == 'S')
                    {
                        aux = aux-> prox;
                        break;
                    }
                    else
                    {
                        novo->prox = aux->prox;
                        aux->prox = novo;
                        break;
                    }
                    aux=aux->prox;
                }
            }
            else
            {
                while(aux == NULL)
                {
                    novo->prox = aux->prox;
                    aux->prox = novo;
                    break;
                }
            }
        }
    }
    else
    {
        printf("Crie a lista primeiro\n");
        getch();
    }

    clrscr();
}

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this