Jump to content
Fórum Script Brasil
  • 0

Programando um lista


hevertonrodrigues

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
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.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...