Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hevertonrodrigues

Construindo uma lista

Recommended Posts

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

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal, ontem o meu grupo da sala de aula conseguiu desenvolver o programa então vou anexar o código aqui para quem quiser se informar.

 

#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");
    }

 

 

Valeu até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.