Ir ao conteúdo
  • Cadastre-se

CadeOLink

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

posts postados por CadeOLink

  1. 12 minutos atrás, kgin disse:

    Você tem que iniciar o vetor preenchendo todas as posições com 0, para fazer isso em C basta declarar dessa maneira

    	/* Declara um vetor com o nome de meu vetor de 13 posições iniciadas com 0 */
    	int meu_vetor[13] = {0};	/* {0} indica que todas as posições serão iniciadas com 0 */

    Quando você cria um vetor de 13 posições ele vai começar em 0 e terminar em 12 totalizando 13 posições, a posição 13 não existe porque aí já seria 14 posições.

    Esse é muito bom, mas você tem que prestar atenção na configuração, ele tem que estar configurado para C não para C++.

    Para checar as configurações vá na caixa language e selecione C (Não selecione C(TurboC)) para configurar corretamente.

    Eu dou preferência a usar esse outro aqui replit.

     

    Você deveria dar nomes mais significativos para as variáveis e separa melhor o seu algoritmo em pedaços (funções) para ficar mais fácil de ler.

     

    Eu adaptei esse meu algoritmo que eu fiz ontem para deixar de exemplo

      Ocultar conteúdo
    #include <stdio.h>
    #include <string.h>
    
    #define T_NOME 256
    #define Q_PRODUTOS 13
    
    struct produto
    {
        char nome[T_NOME];
        float preco;
    };
    
    struct produto lista_produtos[Q_PRODUTOS] = {
        {"File", 17.90},
        {"Coracao", 13.40},
        {"Cupin",14.40},
        {"Medalhao de frango", 12.29},
        {"Medalhao de file", 29.34},
        {"Picanha", 34.70},
        {"Contra file", 22.40},
        {"Alcatra", 19.90},
        {"Porco", 15.50},
        {"Carneiro", 23.50},
        {"Frango", 7.99},
        {"Peito de frango", 6.99},
        {"Linguica", 5.00}
    };
    
    void listaPedidos(struct produto *produtos, int quantidade, int *pedidos);
    
    int menuProdutos(struct produto *produtos, int quantidade, char *nome);
    
    int main(void)
    {
        int pedidos[Q_PRODUTOS] = {0};       /* Inicia todas as posições com 0 */
        int opcao, n_pedido;
        do {
            /* Menu principal */
            printf("1-Fazer pedido\n");
            printf("2-Listar pedidos\n");
            printf("0-Sair\n");
            scanf("%d%*c", &opcao);
            switch (opcao) {
                case 1:
                    n_pedido = menuProdutos(lista_produtos, Q_PRODUTOS, "Selecione o produto desejado");
                    if (n_pedido > 0) {
                        pedidos[n_pedido-1]++;
                    }
                    break;
    
                case 2:
                    listaPedidos(lista_produtos, Q_PRODUTOS, pedidos);
                    printf("Pressione enter para continuar\n");
                    getchar();
            }
        } while (opcao != 0);
        return(0);
    }
    
    void listaPedidos(struct produto *produtos, int quantidade, int *pedidos)
    {
        int contador1,contador2;
        printf("Nome\t\tQuantidade\tPreco\tTotal\n");
        for (contador1 = 0; contador1 < quantidade; contador1++) {
            printf("%d-%s", contador1+1, produtos[contador1].nome);
            if (contador1 < 9) {
                for (contador2 = strlen(produtos[contador1].nome); contador2 < 20; contador2++) {
                    putchar('_');
                }
            } else {
                for (contador2 = strlen(produtos[contador1].nome)+1; contador2 < 20; contador2++) {
                    putchar('_');
                }
            }
            if (pedidos[contador1] > 0) {
                printf(":%dx%.2f:%.2f\n",pedidos[contador1], produtos[contador1].preco, produtos[contador1].preco*pedidos[contador1]);
            } else {
                printf(":%d\n",pedidos[contador1]);
            }
        }
    }
    
    int menuProdutos(struct produto *produtos, int quantidade, char *nome)
    {
        int opcao = 0;
        do {
            int contador;
            printf("\t%s\n", nome);
            for (contador = 0; contador < quantidade; contador++) {
                printf("%d-%s:\t%.2f\n", contador+1, produtos[contador].nome, produtos[contador].preco);
            }
            printf("Digite 0 para sai ou escolha uma opcao acima:");
            scanf("%d%*c", &opcao);
            if (opcao < 0 || opcao > quantidade) {
                printf("Opcao invalida!");
            }
        } while (opcao < 0 || opcao > quantidade);
        return(opcao);
    }

     

    De uma estudada nele.

    Obrigado, vou estudar e colocar em pratica no meu

  2. 38 minutos atrás, devair1010 disse:

    @CadeOLink   aqui está certo veja:

    1690871408_vetorerros2.jpg.a8be0dbfb3a0fd64c09cf2205d970ed8.jpg

    o v[12] está errado mesmo , por que não existe essa posição nesse vetor , assim ele mostra hum valor desconhecido ,

    Então o problema seja no meu compilador.

    Uso um compilador online: https://www.onlinegdb.com/

    1 hora atrás, devair1010 disse:
    vtemp[whl-1]++; // aqui hum erro ,
                }                   // whl valendo zero e menos um
                system("clear||cls"); // vai valer -1 , e não tem essa posição do vetor

    Não há erro porque assim que ele digitar 1 vai ser 1-1 = 0 que esse zero vai entrar no v[0] justo a numeração do item 1

    • Curtir 1
  3. 9 minutos atrás, devair1010 disse:

    @CadeOLink    vi dois errinhos e os números do vetor estão certos , aqui :

    #include <stdio.h>
    #include <stdlib.h>
    #include <iomanip>
    #include <string.h>
    #include <Windows.h>
    void pedidos( int v[], int );
    int main()
    {
        //Variaveis
        int vtemp[12] = {0}, vresul[12] = {0};
        int Ncomandas;
        int whl = 0,x,cont;
        /*for( x=0; x!=13; x++)
        {
            vtemp[x] = 0;
            vresul[x] = 0;
        }*/
        //Quantia de comandas
        printf("Inseria a quantia de comandas: ");
        scanf("%i",&Ncomandas);
        for( cont=0; cont<Ncomandas; cont++)
        {
            whl = 0;
            system("clear||cls");
            pedidos(vtemp,cont);
            while(whl != 20)
            {
                printf("Digite '20' para finalizar a comanda");
                printf("\nDigite o item:");
                scanf("%i",&whl);
                if(whl<0)
                {
                    whl *= -1;
                    vtemp[whl-1]--;
                }
                else
                {
                    vtemp[whl-1]++; // aqui hum erro ,
                }                   // whl valendo zero e menos um
                system("clear||cls"); // vai valer -1 , e não tem essa posição do vetor
                pedidos(vtemp,cont);
                /*for(int x=0; x!=13; x++){
                printf("vetor[%i]=%i\n",x,vtemp[x]);
                printf("vetorRes[%i]=%i\n",x,vresul[x]);
                }*/
            }
            for( x=0; x<13; x++)
            {
                vresul[x] += vtemp[x];
                vtemp[x] = 0;
            }
        }
        system("clear||cls");
        printf("vetor Vresul\n->");
        pedidos(vresul,0);
        /*for(int x=0; x!=13; x++){
        printf("vetor[%i]=%i\n",x,vtemp[x]);
        printf("vetorRes[%i]=%i\n",x,vresul[x]);
        }*/
        return 0;
    }
    void pedidos(int v[], int cont)
    {
        printf("===========================================\n");
        printf("|   n=%i   Pedidos\t\t\t  |\n", cont + 1      );
        printf("===========================================\n");
        printf(" 1.File --------------= %i\n", v[ 0]          );
        printf(" 2.Coracao -----------= %i\n", v[ 1]          );
        printf(" 3.Cupim -------------= %i\n", v[ 2]          );
        printf(" 4.Medalhao de Frango = %i\n", v[ 3]          );
        printf(" 5.Medalhao de File --= %i\n", v[ 4]          );
        printf(" 6.Picanha -----------= %i\n", v[ 5]          );
        printf(" 7.Contra file -------= %i\n", v[ 6]          );
        printf(" 8.Alcatra -----------= %i\n", v[ 7]          );
        printf(" 9.Porco -------------= %i\n", v[ 8]          );
        printf("10.Carneiro ----------= %i\n", v[ 9]          );
        printf("11.Frango ------------= %i\n", v[10]          );
        printf("12.Peito de frango ---= %i\n", v[11]          ); // v sóh vai de zero até 11 mesmo !
        printf("13.Linguiça ----------= %i\n", v[12]          ); // Não existe o v12 nesse caso !
        printf("===========================================\n");
    }

     

     

    Ainda ocorre o mesmo erro. Sem você ad nenhum valor em v[7] ele aparece 1 e se você add qualquer valor em v[0] esse valor vai para v[12].

     

    • Obrigado 1
  4. #include <stdio.h>
    #include <stdlib.h>
    
    void pedidos(int v[], int cont){
    
    
    printf("===========================================\n");
    printf("   n=%i        Pedidos\n",cont+1);
    printf("===========================================\n");
    printf("1.File = %i\n", v[0]);
    printf("2.Coracao = %i\n", v[1]);
    printf("3.Cupim = %i\n", v[2]);
    printf("4.Medalhao de Frango = %i\n", v[3]);
    printf("5.Medalhao de File = %i\n", v[4]);
    printf("6.Picanha = %i\n", v[5]);
    printf("7.Contra file = %i\n", v[6]);
    printf("8.Alcatra = %i\n", v[7]);
    printf("9.Porco = %i\n", v[8]);
    printf("10.Carneiro = %i\n", v[9]);
    printf("11.Frango = %i\n", v[10]);
    printf("12.Peito de frango  = %i\n", v[11]);
    printf("13.Linguiça = %i\n", v[12]);
    printf("===========================================\n");
    }
    
    int main(){
     //Variaveis 
     int vtemp[12], vresul[12];
     int Ncomandas;
     int whl = 0;
     
        for(int x=0; x!=13; x++){
            vtemp[x] = 0;
            vresul[x] = 0;
        }
     
     //Quantia de comandas 
     printf("Inseria a quantia de comandas: ");
     scanf("%i",&Ncomandas);
     
    for(int cont=0; cont<Ncomandas; cont++){
        whl = 0;
    
        system("clear");
    
        pedidos(vtemp,cont);
    
        while(whl != 20){
            printf("Digite '20' para finalizar a comanda");
            printf("\nDigite o item:");
            scanf("%i",&whl);
    
            if(whl<0){
                whl *= -1;
                vtemp[whl-1]--;
            }
            else{
            vtemp[whl-1]++;
            }
            system("clear");
            pedidos(vtemp,cont);
           /*for(int x=0; x!=13; x++){
            printf("vetor[%i]=%i\n",x,vtemp[x]);
            printf("vetorRes[%i]=%i\n",x,vresul[x]);
        }*/
    
        }
    
        for(int x=0; x<13; x++){
            vresul[x] += vtemp[x];
            vtemp[x] = 0;
        }
    
        }
    
        system("clear");
      pedidos(vresul,0);
       /*for(int x=0; x!=13; x++){
            printf("vetor[%i]=%i\n",x,vtemp[x]);
            printf("vetorRes[%i]=%i\n",x,vresul[x]);
        }*/
    
    }

    Estou fazendo um programa em C para contabilizar as quantias de pedidos de um restaurante e estava dando tudo certo até a hora que coloquei um vetor soma, onde soma todos os valores incluso no vetor temporário, onde o nome já diz temporário.    

    Codigo.txt

     


     

    • Curtir 1

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!