Ir ao conteúdo

Posts recomendados

Postado

Boa tarde fiz esse exercício e não tenho certeza se está certo 

Implemente uma lista estática, com todas as funções e monte um menu de opções.
#include <stdio.h>
#include <stdlib.h>
#define MAXTAM 1000
int Frente, Tras, Lista[MAXTAM];
void Lista_Construtor(){
Frente=0;
Tras=-1;
}
int Lista_Vazia(){
if(Tras==-1)
return 1;
else
return 0;
}
int Lista_Cheia(){
if(Tras==MAXTAM-1)
return 1;
else
return 0;
}
int Lista_Tamanho(){
return Tras+1;
}
int Lista_Inserir_Inicio(int Valor){
if(Lista_Cheia()){
return 0;
}else{
/*se quero inserir na posição 0,
vou deslocar todos os elementos para frente*/
for(int i=Tras+1;i>Frente;i--){
Lista[i]=Lista[i-1];
}
Lista[Frente]=Valor;
Tras++;
return 1;
  }
}
int Lista_Inserir_Fim(int Valor){
if(Lista_Cheia()){
return 0;
}else{
Tras++;
Lista[Tras]=Valor;
return 1;
  }
}
int Lista_Inserir(int Valor, int Posicao){
if(Lista_Cheia()){
return 0;
}else{
/* Para verificar se a posição
está no meio da lista */
if(Posicao>Frente && Posicao<Tras){
for(int i=Tras+1;i>Posicao;i--){
Lista[i]=Lista[i-1];
}
Lista[Posicao]=Valor;
Tras++;
return 1;
}else{ 
return 0;
   }
  }
}
int Lista_Remover_Inicio(int *Valor){
if(Lista_Vazia()){
return 0;
}else{
*Valor =Lista[Frente];
for(int i=Frente;i<Tras;i++){
Lista[i]=Lista[i+1];
   }
Tras--;
  }
}
int Lista_Remover_Fim(int *Valor){
if(Lista_Vazia()){
return 0;
}else{
*Valor=Lista[Tras];
Tras--;
return 1;
  }
}
int Lista_Remover(int *Valor, int Posicao){
if(Lista_Vazia()){
return 0;
}else{
if(Posicao>Frente && Posicao<Tras){
*Valor=Lista[Posicao];
for(int i=Posicao;i<Tras;i++){
Lista[i]=Lista[i+1];
}
Tras--;
return 1;
   }
  }
}
int Lista_Get_toda(int *Valor){
if(Lista_Vazia()){
return 0;
}else{
*Valor=Lista[Frente];
return 1;
  }
}
int Lista_Get_inicio(int *Valor){
if(Lista_Vazia()){
return 0;
}else{
*Valor=Lista[Frente];
return 1;
  }
}
int Lista_Get_Fim(int *Valor){
if(Lista_Vazia()){
return 0;
}else{
*Valor=Lista[Tras];
return 1;
  }
}
int Lista_Busca_Valor(int Valor, int *Posicao){
int i;
if(Lista_Vazia()){
return 0;
}else{
for(i=Frente;i<Tras;i++){
if(Lista[i]==Valor){
break;
  }
}
if(i==Tras){
return 0;
}else{
*Posicao=i; 
return 1;
   }
  }
}
int Lista_Busca_Posicao(int *Valor, int Posicao){
if(Lista_Vazia()){
return 0;
}else{
if(Posicao>Frente && Posicao<Tras){
*Valor=Lista[Posicao];
return 1;
}else{
return 0;
   }
  }
}
int main(){
int i,Valor,op=0,pos;
Lista_Construtor();
while(op!=12){
printf("*** Menu de opções ***\n");
printf("1-Inserir início\n");
printf("2-Inserir fim\n");
printf("3-Inserir meio\n");
printf("4-Excluir início\n");
printf("5-Excluir fim\n");
printf("6-Excluir meio\n");
printf("7-Mostrar toda lista\n");
printf("8-Mostrar primeiro item da lista\n");
printf("9-Mostrar último item da lista\n");
printf("10-Mostrar a posição de um item da lista\n");
printf("11-Mostrar o valor de uma posição\n");
printf("12-Sair\n");
printf("Escolha uma opção: ");
scanf("%d", &op);
switch(op){
    case 1:
        printf("Digite o valor a ser inserido: ");
        scanf("%d", &Valor);
        Lista_Inserir_Inicio(Valor);
        break;
    case 2:
        printf("Digite o valor a ser inserido: ");
        scanf("%d", &Valor);
        Lista_Inserir_fim(Valor);
        break;
      case 3:
        printf("Digite o valor a ser inserido: ");
        scanf("%d", &Valor);
        printf("Digite a posição que deseja inserir: ");
        scanf("%d", &pos);
        Lista_ Inserir_meio(int Valor, pos); 
        break;
      case 4:
        printf("Digite a remoção do início: ");
        scanf("%d", &*Valor);
        Lista_ Excluir_inicio(*Valor); 
        break;
        case 5:
        printf("Digite a remoção do fim: ");
        scanf("%d", &*Valor);
        Lista_ Excluir_fim(*Valor); 
        break;
        case 6:
        printf("Digite a remoção do meio: ");
        scanf("%d", &Valor);
        printf("Digite a posição que deseja remover: ");
        scanf("%d", &*Posicao);
        Lista_ Excluir_meio(intValor, * pos); 
        break;
         case 7:
        printf("Digite ao a mostrar toda lista: ");
        scanf("%d", &Valor);
        Lista_ mostrar_toda_lista(Valor);
        break;
       case 8:
        printf("Digite ao a mostrar primeiro item da lista: ");
        scanf("%d", &*Valor);
        Lista_ mostrar_primeiro_item_da_lista(*Valor);
        break;
       case 9:
        printf("Digite ao a mostrar último item da lista: ");
        scanf("%d", &*Valor);
        Lista_ mostrar_ultimo_item_da_lista(*Valor);
        break;
        case 10:
        printf("Digite ao a mostrar a posição de um item da lista: ");
        scanf("%d", &Valor);
        printf("Digite a posição que deseja mostrar na lista: ");
        scanf("%d", &* pos);
        Lista_ mostrar_posicao_de_um_item_da_lista(intValor, *pos);
        break;
        case 11:
        printf("Digite ao a mostrar o valor de uma posição: ");
        scanf("%d", &*Valor
        printf("Digite a posição que deseja mostrar no valor: ");
        scanf("%d", &pos);
        Lista_ mostrar_posicao_de_um_valor_da_lista(int*Valor, pos);
        break;
        case 12:
        default:
        printf("Valor Invalido!\n");
        system("PAUSE");

         }

   }
 return 0;
}

  • Amei 1
  • Triste 1
Postado

@oromotoceu    Qual IDE / Compilador que você está usando ?  ,  você observou  nas msg do  compilador , sobre erros no código  ? ,     tem erros ,  e não nem compila ,  e  você colocou " * " asterisco no scanf , creio que não funcionará ,  mas QuaL sua ideia ao usar assim esse scanf 

scanf("%d", &*Valor);  // esse simboLo  & siginifica endereco 
                       // onde armazenar o numero

scanf("%d", &Valor);   // Geralmente se usa assim .

e se você usar o visual studio , colocando a stinha do mouse em cima das linhas marcadas em vermelho ,  você pode ter sugestões de como consertar os erros do código ,  e esse código seria para fazer o quê  ?   , 

   tem um enunciado  ?  se tiver pode postar ele aqui ,

Postado

Use o tal botão code como explicado no primeiro post do forum, DESTE forum por exemplo

 

Veja a diferença

 

#include <stdio.h>
#include <stdlib.h>
#define MAXTAM 1000
int  Frente, Tras, Lista[MAXTAM];
void Lista_Construtor()
{
    Frente = 0;
    Tras   = -1;
}
int Lista_Vazia()
{
    if (Tras == -1)
        return 1;
    else
        return 0;
}
int Lista_Cheia()
{
    if (Tras == MAXTAM - 1)
        return 1;
    else
        return 0;
}
int Lista_Tamanho() { return Tras + 1; }
int Lista_Inserir_Inicio(int Valor)
{
    if (Lista_Cheia()) { return 0; }
    else
    {
        /*se quero inserir na posição 0,
        vou deslocar todos os elementos para frente*/
        for (int i = Tras + 1; i > Frente; i--)
        {
            Lista[i] = Lista[i - 1];
        }
        Lista[Frente] = Valor;
        Tras++;
        return 1;
    }
}
int Lista_Inserir_Fim(int Valor)
{
    if (Lista_Cheia()) { return 0; }
    else
    {
        Tras++;
        Lista[Tras] = Valor;
        return 1;
    }
}
int Lista_Inserir(int Valor, int Posicao)
{
    if (Lista_Cheia()) { return 0; }
    else
    {
        /* Para verificar se a posição
        está no meio da lista */
        if (Posicao > Frente && Posicao < Tras)
        {
            for (int i = Tras + 1; i > Posicao; i--)
            {
                Lista[i] = Lista[i - 1];
            }
            Lista[Posicao] = Valor;
            Tras++;
            return 1;
        }
        else
        {
            return 0;
        }
    }
}
int Lista_Remover_Inicio(int* Valor)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        *Valor = Lista[Frente];
        for (int i = Frente; i < Tras; i++) { Lista[i] = Lista[i + 1]; }
        Tras--;
    }
}
int Lista_Remover_Fim(int* Valor)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        *Valor = Lista[Tras];
        Tras--;
        return 1;
    }
}
int Lista_Remover(int* Valor, int Posicao)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        if (Posicao > Frente && Posicao < Tras)
        {
            *Valor = Lista[Posicao];
            for (int i = Posicao; i < Tras; i++)
            {
                Lista[i] = Lista[i + 1];
            }
            Tras--;
            return 1;
        }
    }
}
int Lista_Get_toda(int* Valor)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        *Valor = Lista[Frente];
        return 1;
    }
}
int Lista_Get_inicio(int* Valor)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        *Valor = Lista[Frente];
        return 1;
    }
}
int Lista_Get_Fim(int* Valor)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        *Valor = Lista[Tras];
        return 1;
    }
}
int Lista_Busca_Valor(int Valor, int* Posicao)
{
    int i;
    if (Lista_Vazia()) { return 0; }
    else
    {
        for (i = Frente; i < Tras; i++)
        {
            if (Lista[i] == Valor) { break; }
        }
        if (i == Tras) { return 0; }
        else
        {
            *Posicao = i;
            return 1;
        }
    }
}
int Lista_Busca_Posicao(int* Valor, int Posicao)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        if (Posicao > Frente && Posicao < Tras)
        {
            *Valor = Lista[Posicao];
            return 1;
        }
        else
        {
            return 0;
        }
    }
}
int main()
{
    int i, Valor, op = 0, pos;
    Lista_Construtor();
    while (op != 12)
    {
        printf("*** Menu de opções ***\n");
        printf("1-Inserir início\n");
        printf("2-Inserir fim\n");
        printf("3-Inserir meio\n");
        printf("4-Excluir início\n");
        printf("5-Excluir fim\n");
        printf("6-Excluir meio\n");
        printf("7-Mostrar toda lista\n");
        printf("8-Mostrar primeiro item da lista\n");
        printf("9-Mostrar último item da lista\n");
        printf("10-Mostrar a posição de um item da lista\n");
        printf("11-Mostrar o valor de uma posição\n");
        printf("12-Sair\n");
        printf("Escolha uma opção: ");
        scanf("%d", &op);
        switch (op)
        {
            case 1:
                printf("Digite o valor a ser inserido: ");
                scanf("%d", &Valor);
                Lista_Inserir_Inicio(Valor);
                break;
            case 2:
                printf("Digite o valor a ser inserido: ");
                scanf("%d", &Valor);
                Lista_Inserir_fim(Valor);
                break;
            case 3:
                printf("Digite o valor a ser inserido: ");
                scanf("%d", &Valor);
                printf("Digite a posição que deseja inserir: ");
                scanf("%d", &pos);
                Lista_ Inserir_meio(int Valor, pos);
                break;
            case 4:
                printf("Digite a remoção do início: ");
                scanf("%d", &*Valor);
                Lista_ Excluir_inicio(*Valor);
                break;
            case 5:
                printf("Digite a remoção do fim: ");
                scanf("%d", &*Valor);
                Lista_ Excluir_fim(*Valor);
                break;
            case 6:
                printf("Digite a remoção do meio: ");
                scanf("%d", &Valor);
                printf("Digite a posição que deseja remover: ");
                scanf("%d", &*Posicao);
                Lista_ Excluir_meio(intValor, *pos);
                break;
            case 7:
                printf("Digite ao a mostrar toda lista: ");
                scanf("%d", &Valor);
                Lista_ mostrar_toda_lista(Valor);
                break;
            case 8:
                printf("Digite ao a mostrar primeiro item da lista: ");
                scanf("%d", &*Valor);
                Lista_ mostrar_primeiro_item_da_lista(*Valor);
                break;
            case 9:
                printf("Digite ao a mostrar último item da lista: ");
                scanf("%d", &*Valor);
                Lista_ mostrar_ultimo_item_da_lista(*Valor);
                break;
            case 10:
                printf(
                    "Digite ao a mostrar a posição de um item da "
                    "lista: ");
                scanf("%d", &Valor);
                printf(
                    "Digite a posição que deseja mostrar na lista: ");
                scanf("%d", &*pos);
                Lista_ mostrar_posicao_de_um_item_da_lista(
                    intValor, *pos);
                break;
            case 11:
                printf("Digite ao a mostrar o valor de uma posição: ");
        scanf("%d", &*Valor
        printf("Digite a posição que deseja mostrar no valor: ");
        scanf("%d", &pos);
        Lista_ mostrar_posicao_de_um_valor_da_lista(int*Valor, pos);
        break;
        case 12:
        default:
        printf("Valor Invalido!\n");
        system("PAUSE");
        }
    }
    return 0;
}

 

 

Seu programa tem muitos problemas ainda :(

 

Teste todos os retornos de scanf().

 

Para testar um programa desses use as próprias funções: num simples loop insira registros até encher a lista, esvazie até ficar vazia, mostre os valores a cada passo, o simples: use um programa para testar o programa

 

 

  • Curtir 1
  • 4 meses depois...
Postado
Em 05/12/2021 às 23:27, arfneto disse:

Use o tal botão code como explicado no primeiro post do forum, DESTE forum por exemplo

 

Veja a diferença

 

#include <stdio.h>
#include <stdlib.h>
#define MAXTAM 1000
int  Frente, Tras, Lista[MAXTAM];
void Lista_Construtor()
{
    Frente = 0;
    Tras   = -1;
}
int Lista_Vazia()
{
    if (Tras == -1)
        return 1;
    else
        return 0;
}
int Lista_Cheia()
{
    if (Tras == MAXTAM - 1)
        return 1;
    else
        return 0;
}
int Lista_Tamanho() { return Tras + 1; }
int Lista_Inserir_Inicio(int Valor)
{
    if (Lista_Cheia()) { return 0; }
    else
    {
        /*se quero inserir na posição 0,
        vou deslocar todos os elementos para frente*/
        for (int i = Tras + 1; i > Frente; i--)
        {
            Lista[i] = Lista[i - 1];
        }
        Lista[Frente] = Valor;
        Tras++;
        return 1;
    }
}
int Lista_Inserir_Fim(int Valor)
{
    if (Lista_Cheia()) { return 0; }
    else
    {
        Tras++;
        Lista[Tras] = Valor;
        return 1;
    }
}
int Lista_Inserir(int Valor, int Posicao)
{
    if (Lista_Cheia()) { return 0; }
    else
    {
        /* Para verificar se a posição
        está no meio da lista */
        if (Posicao > Frente && Posicao < Tras)
        {
            for (int i = Tras + 1; i > Posicao; i--)
            {
                Lista[i] = Lista[i - 1];
            }
            Lista[Posicao] = Valor;
            Tras++;
            return 1;
        }
        else
        {
            return 0;
        }
    }
}
int Lista_Remover_Inicio(int* Valor)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        *Valor = Lista[Frente];
        for (int i = Frente; i < Tras; i++) { Lista[i] = Lista[i + 1]; }
        Tras--;
    }
}
int Lista_Remover_Fim(int* Valor)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        *Valor = Lista[Tras];
        Tras--;
        return 1;
    }
}
int Lista_Remover(int* Valor, int Posicao)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        if (Posicao > Frente && Posicao < Tras)
        {
            *Valor = Lista[Posicao];
            for (int i = Posicao; i < Tras; i++)
            {
                Lista[i] = Lista[i + 1];
            }
            Tras--;
            return 1;
        }
    }
}
int Lista_Get_toda(int* Valor)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        *Valor = Lista[Frente];
        return 1;
    }
}
int Lista_Get_inicio(int* Valor)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        *Valor = Lista[Frente];
        return 1;
    }
}
int Lista_Get_Fim(int* Valor)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        *Valor = Lista[Tras];
        return 1;
    }
}
int Lista_Busca_Valor(int Valor, int* Posicao)
{
    int i;
    if (Lista_Vazia()) { return 0; }
    else
    {
        for (i = Frente; i < Tras; i++)
        {
            if (Lista[i] == Valor) { break; }
        }
        if (i == Tras) { return 0; }
        else
        {
            *Posicao = i;
            return 1;
        }
    }
}
int Lista_Busca_Posicao(int* Valor, int Posicao)
{
    if (Lista_Vazia()) { return 0; }
    else
    {
        if (Posicao > Frente && Posicao < Tras)
        {
            *Valor = Lista[Posicao];
            return 1;
        }
        else
        {
            return 0;
        }
    }
}
int main()
{
    int i, Valor, op = 0, pos;
    Lista_Construtor();
    while (op != 12)
    {
        printf("*** Menu de opções ***\n");
        printf("1-Inserir início\n");
        printf("2-Inserir fim\n");
        printf("3-Inserir meio\n");
        printf("4-Excluir início\n");
        printf("5-Excluir fim\n");
        printf("6-Excluir meio\n");
        printf("7-Mostrar toda lista\n");
        printf("8-Mostrar primeiro item da lista\n");
        printf("9-Mostrar último item da lista\n");
        printf("10-Mostrar a posição de um item da lista\n");
        printf("11-Mostrar o valor de uma posição\n");
        printf("12-Sair\n");
        printf("Escolha uma opção: ");
        scanf("%d", &op);
        switch (op)
        {
            case 1:
                printf("Digite o valor a ser inserido: ");
                scanf("%d", &Valor);
                Lista_Inserir_Inicio(Valor);
                break;
            case 2:
                printf("Digite o valor a ser inserido: ");
                scanf("%d", &Valor);
                Lista_Inserir_fim(Valor);
                break;
            case 3:
                printf("Digite o valor a ser inserido: ");
                scanf("%d", &Valor);
                printf("Digite a posição que deseja inserir: ");
                scanf("%d", &pos);
                Lista_ Inserir_meio(int Valor, pos);
                break;
            case 4:
                printf("Digite a remoção do início: ");
                scanf("%d", &*Valor);
                Lista_ Excluir_inicio(*Valor);
                break;
            case 5:
                printf("Digite a remoção do fim: ");
                scanf("%d", &*Valor);
                Lista_ Excluir_fim(*Valor);
                break;
            case 6:
                printf("Digite a remoção do meio: ");
                scanf("%d", &Valor);
                printf("Digite a posição que deseja remover: ");
                scanf("%d", &*Posicao);
                Lista_ Excluir_meio(intValor, *pos);
                break;
            case 7:
                printf("Digite ao a mostrar toda lista: ");
                scanf("%d", &Valor);
                Lista_ mostrar_toda_lista(Valor);
                break;
            case 8:
                printf("Digite ao a mostrar primeiro item da lista: ");
                scanf("%d", &*Valor);
                Lista_ mostrar_primeiro_item_da_lista(*Valor);
                break;
            case 9:
                printf("Digite ao a mostrar último item da lista: ");
                scanf("%d", &*Valor);
                Lista_ mostrar_ultimo_item_da_lista(*Valor);
                break;
            case 10:
                printf(
                    "Digite ao a mostrar a posição de um item da "
                    "lista: ");
                scanf("%d", &Valor);
                printf(
                    "Digite a posição que deseja mostrar na lista: ");
                scanf("%d", &*pos);
                Lista_ mostrar_posicao_de_um_item_da_lista(
                    intValor, *pos);
                break;
            case 11:
                printf("Digite ao a mostrar o valor de uma posição: ");
        scanf("%d", &*Valor
        printf("Digite a posição que deseja mostrar no valor: ");
        scanf("%d", &pos);
        Lista_ mostrar_posicao_de_um_valor_da_lista(int*Valor, pos);
        break;
        case 12:
        default:
        printf("Valor Invalido!\n");
        system("PAUSE");
        }
    }
    return 0;
}

 

 

Seu programa tem muitos problemas ainda :(

 

Teste todos os retornos de scanf().

 

Para testar um programa desses use as próprias funções: num simples loop insira registros até encher a lista, esvazie até ficar vazia, mostre os valores a cada passo, o simples: use um programa para testar o programa

 

 

obrigado por ter respondido o meu comentário 

agora, oromotoceu disse:

obrigado por ter respondido o meu comentário posso ser seu amigo ?

 

  • Curtir 1
Postado
Em 03/12/2021 às 20:15, devair1010 disse:

@oromotoceu    Qual IDE / Compilador que você está usando ?  ,  você observou  nas msg do  compilador , sobre erros no código  ? ,     tem erros ,  e não nem compila ,  e  você colocou " * " asterisco no scanf , creio que não funcionará ,  mas QuaL sua ideia ao usar assim esse scanf 

scanf("%d", &*Valor);  // esse simboLo  & siginifica endereco 
                       // onde armazenar o numero

scanf("%d", &Valor);   // Geralmente se usa assim .

e se você usar o visual studio , colocando a stinha do mouse em cima das linhas marcadas em vermelho ,  você pode ter sugestões de como consertar os erros do código ,  e esse código seria para fazer o quê  ?   , 

   tem um enunciado  ?  se tiver pode postar ele aqui ,

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!