Ir ao conteúdo
  • Cadastre-se

mathptgl23

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

1
  1. Bom dia/tarde/noite, tenho que criar um programa que ordene valores utilizando listas encadeadas. Ja consegui boa parte do codigo, estou apenas com dificuldade em mostrar a Lista normal sem estar devidamente ordenada... Se alguem puder me ajudar eu agradeço mt. Segue o codigo: #include<stdio.h> #include<locale.h> #include<stdlib.h> #include<math.h> #include<conio.h> #include<windows.h> typedef struct tLista { int valor; struct tLista *prox; } lista; ///////////////////////////////////////////////////// //////////////////////////////////////////////////// lista *atual, *novo, *anterior; ///////////////////////////////////////////////// ///////////////////////////////////////////////// void inserir(lista **p) { int num; novo = (lista *) malloc(sizeof(lista)); atual = *p; anterior = NULL; scanf("%d", &num); novo->valor = num; if(atual == NULL){ novo->prox = NULL; *p = novo; } else{ while(atual != NULL && atual->valor < num){ anterior = atual; atual = atual->prox; } novo->prox = atual; if(anterior == NULL){ *p = novo; } else{ anterior->prox = novo; } } } ////////////////////////////////////////////////////// ///////////////////////////////////////////////////// void mostraLista(lista *p) { while(p != NULL) { printf("%4d", p->valor); p = p->prox; }printf(" NULL."); } //////////////////////////////////////////////////// /////////////////////////////////////////////////// int main(void) { setlocale(LC_ALL, "Portuguese"); lista *inicio = NULL; system("color 50"); int i,n; printf("Digite quantos valores deseja digitar: \n"); scanf("%d", &n); system("cls"); for(i=0; i<n; i++) { if(i==0){ printf("Digite o %dº número:(NULL)\n ", i+1); inserir(&inicio); } else{ printf("Digite o %dº número:\n ", i+1); inserir(&inicio); } } printf("\n\n\n"); printf("Lista ordenada: "); mostraLista(inicio); return 0; }
  2. Faça um programa usando pilha que calcula a potencia de 5 numeros informados pelo usuario(base e expoente) e que seja possivel empilhar e desempilhar. Alguem poderia dizer onde esta o erro nesse codigo: #define MAXTAM 4 #include<stdio.h> #include<locale.h> #include<stdlib.h> #include<math.h> #include<conio.h> #include<windows.h> int v[MAXTAM]; int pilha[MAXTAM]; int topo=0; void Pilha_Push(int x); int Pilha_Pop(void); int vazia(void); int cheia(void); void Pilha_Push(int x) // Empilha { v[topo++]=x; } int Pilha_Pop(void) // Desempilha { return v[--topo]; } int vazia(void) { return topo==0; } int cheia(void) { return topo==MAXTAM; } main() { setlocale(LC_ALL, "Portuguese"); printf("\n\nEste programa calcula a potência de um número!!!\n\n\n"); int a,b,i; for(i=1; i<=MAXTAM; i++){ printf("Digite a base da %dª potência: \n", i); scanf("%d", &a); printf("Digite o expoente de seu %dº número: \n", i); scanf("%d", &b); v = (pow(a, b)); } char op; int x; do { system("cls"); printf("Escolha umas das opções: \n"); printf(" a - Exibir a pilha.\n"); printf(" b - Empilhar.\n"); printf(" c - Desempilhar.\n"); printf(" d - Reiniciar a pilha.\n"); printf(" e - Sair.\n"); op=getch(); switch(op) { case 'a' : system("cls"); if(!vazia()) printf("Pilha Vazia.\n"); else{ for(i=1; i<=MAXTAM; i++) printf("%4d\n", v);} break; case 'b' : system("cls"); printf("Digite um número que deseja empilhar: \n"); if(!cheia()) { Pilha_Push(x); } else printf("Overflow!\n"); break; case 'c' : system("cls"); if(!vazia) { printf("%d foi desempilhado.\n", Pilha_Pop() ); } else printf("Underflow!\n"); break; case 'd' : system("cls"); topo=0; printf("Pilha Reiniciada.\n"); break; case 'e' : system("cls"); printf("Até logo.\n"); break; default: system("cls"); printf("Opção inexistente.\n"); } getch(); }while(op!='e'); }

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...