Ir para conteúdo
Fórum Script Brasil
  • 0

Programando um lista


hevertonrodrigues

Pergunta

ENUNCIADO: Implemente um programa em que o usuário digite valores aleatórios numa lista de tamanho igual a 50. Dê a opção do usuário imprimir somente os números ímpares, somente os números pares ou a lista por completo.

#include <stdio.h>

#include <stdlib.h>

typedef struct Nodo {

int chave;

struct lista* prox;

}Lista;

Lista* insere (Lista* l, int i) {

Lista* novo;

novo = malloc(50*sizeof(Lista));

if(!novo)

return NULL;

novo->chave = i;

novo->prox = 1;

return novo;

}

//void imp_par () {

int main() {

Lista* lista=NULL;

int op=0, val, cont;

do {

system("cls");

printf("Opcoes:\n[1]-Inserir Elementos\n[2]-Imprimir num pares\n[3]-Imprimir num impares\n[4]-Imprimir Todos\n\n");

scanf("%d", &op);

switch(op){

case 1:

for (cont=0;cont<5;cont++){

printf("Valores:\n");

scanf("%d", &val);

}

lista = insere(lista, val);

break;

case 2:

default:

printf("Opcao Invalida\n\n");

}

system("pause");

}while(1);

system("pause");

}

Bom pessoal, eu travei nessa parte e apartir daí eu não consigo desenvolver nada por está muito ocupado no trabalho, poderiam me ajudar a desenvolver esse programinha de acordo com o enunciado?

Obrigado.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Consegui com o pessoal da minha sala de aula desenvolver, tá ai:

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

typedef struct registro{
        int num;
        struct registro *ant;
}registro;


registro *criar(int valor){
     registro *aux;    
     aux = (registro *)malloc( sizeof(registro) ); 
     if(!aux) 
          return(NULL);     
     
     aux->num = valor;  
     aux->ant = NULL;      
     return(aux);      
}


registro *inserir(registro *topo, int valor){
     registro *aux;
     
     aux = criar(valor);
     if(!aux){
        printf("\n\t\t Erro de alocacao de memoria\n");     
     }
     else {        
       aux->ant = topo; 
       topo = aux; 
     }
     return topo;
}

imp_par(registro *cabeca){
     int i, j=0;           
     registro *aux;
     
     if(!cabeca){
        printf("\n\n   \t\t Nenhum numero cadastrado    \n\n\n");     
        getchar();
     }else {
           for(aux = cabeca; aux!=NULL; aux = aux->ant){
                   i = aux->num;
                   if (i%2==0){
                   if (j<1){
                   printf ("\n\nNumeros Pares cadastrados: \n\n");
                   }
                   printf("Numero: %d\n", aux->num);
                   j++;
                   }
                   }
           
           if(j==0){
           printf("\n\n\t\tNenhum numero Par cadastrado\n\n\n");           

           }
     }
     system("pause");   
}
imp_impar(registro *cabeca){
               int i, j=0;           
     registro *aux;
     
     if(!cabeca){
        printf("\n\n   \t\t Nenhum numero cadastrado    \n\n\n");     
        getchar();
     }else {
           for(aux = cabeca; aux!=NULL; aux = aux->ant){
                   i = aux->num;
                   if (i%2>0){
                   if (j<1){
                   printf ("\n\nNumeros Impares cadastrados: \n\n");
                   }
                   printf("Numero: %d\n", aux->num);
                   j++;
                   }
                   }
           
           if(j==0){
           printf("\n\n\t\tNenhum numero impar cadastrado\n\n\n");           

           }
     }

     system("pause");   
}

imp_tudo(registro *cabeca){
     int i,j = 0;           
     registro *aux;
     
     if(!cabeca){
        printf("\n\n    \t\tNenhum numero cadastrado    \n\n\n");     
        getchar();
     }else {
           for(aux = cabeca; aux!=NULL; aux = aux->ant){
                   if (j<1){
                            printf("\n\nTodos os numeros cadastrados no sistema: \n\n");
                            }
                   printf("Numero: %d\n", aux->num);
                   j++;
                   }
     }   

     system("pause");
}



main(){
     int x, valor, cont=0,opc=5;
     registro *topo = NULL;
     
    
     while (opc!=0){
     printf (" \t[1] Inserir numeros\n\n \t[2] Imprimir numeros pares\n\n \t[3] Imprimir numeros impares\n\n \t[4] Imprimir todos os numeros\n\n \t[5] Sair\n\n");
     printf("Opcao: ");
     scanf ("%d", &x);
     switch (x){
     case 1:
          printf("\nQual o valor a ser cadastrado: ");
          scanf ("%d", &valor);
          if (cont<2){
          topo = inserir(topo,valor);
          cont++;
          }
          else
          printf ("Quantidade de numeros excedidos!\n\n");
          system ("pause");
          system ("cls");
          break;
     case 2:
          system ("cls");
          imp_par(topo);
          system ("cls");
          break;
     case 3:
          system ("cls");
          imp_impar(topo);
          system ("cls");
          break;
     case 4:
          system ("cls");
          imp_tudo(topo);
          system ("cls");
          break;
     case 5:
          exit(0);
     default:
          system("cls");
          printf("\n\n\t\t\tOpcao invalida.\n\n\n");
          fflush(stdin);
          getchar();
          system("cls");
          }
          }
     system ("pause");
     }

até :*

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...