Ir para conteúdo
Fórum Script Brasil
  • 0

[AJUDA]Problema de matriz


lucasflerk

Pergunta

[AJUDA]Loja de Artigos Infantis

Uma loja de artigos infantis precisa fazer um controle efetivo dos produtos que são regularmente comprados para compor o seu estoque, tendo em vista que foram detectadas falhas no registro de entrada de tais produtos. Considere que a loja vende apenas camisetas, shorts e meias. Esses produtos podem ser do tamanho pequeno (P), médio (M) ou grande (G).

Faça um programa em C que permita o cadastramento dos produtos comprados pela loja e registre em uma matriz 4 X 4 as quantidades adquiridas. Cada linha da matriz deve representar um produto e cada coluna um dos três possíveis tamanhos. A última coluna da matriz deve conter o somatório dos três tamanhos de um mesmo produto. A última linha deve conter o somatório de produtos por cada tamanho.

Quando o usuário desejar encerrar o cadastramento de novos produtos, o programa deve apresentar, em uma janela limpa, a matriz 4 X 4 contendo os dados cadastrados e os somatórios devidos, de acordo com o descrito acima.

Duas linhas abaixo da matriz, deve ser mostrada uma mensagem que indique o total de produtos adquiridos pela loja e qual o produto que tem mais itens em estoque. Em seguida deve ser perguntado ao usuário se ele deseja fazer outro cadastramento de compra. Em caso afirmativo todo o processo deve ser começado novamente para uma aquisição e em caso negativo o programa deverá encerrar após 5 segundos de execução.

Gente da uma luz aew pra eu começar esse programinhaa ; ]

obs: não posso usar variavel global.

Editado por lucasflerk
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Basicamente, você deve alimentar a matriz com os valores. Você deve pedir para o usuário entrar com a quantidade de produtos dos tipos...

camiseta P

camiseta M

camiseta G

short P

short M

short G

meia P

meia M

meia G

Na matriz, armazene nas seguintes posições:

matriz[0][0] = camiseta P

matriz[0][1] = camiseta M

matriz[0][2] = camiseta G

matriz[0][3] = somatório de camisetas P, M e G

matriz[1][0] = short P

matriz[1][1] = short M

matriz[1][2] = short G

matriz[1][3] = somatório de shorts P, M e G

matriz[2][0] = meia P

matriz[2][1] = meia M

matriz[2][2] = meia G

matriz[2][3] = somatório de meias P, M e G

matriz[3][0] = somatório de todos os produtos P

matriz[3][1] = somatório de todos os produtos M

matriz[3][2] = somatório de todos os produtos G

matriz[3][3] = somatório de todos os produtos

Para exibir os resultados, limpe a janela com

system("CLS");
e para exibir a matriz, use um laço duplo:
for(i=0;i<4;i++){
     for(j=0;j<4;j++){
          printf("%d ", matriz[i][j]);
     }
     printf("\n");
}

O resto acredito que tu não necessite de ajuda.

Link para o comentário
Compartilhar em outros sites

  • 0

então no caso , eu teria que criar uma variavel para cada produto e depois armazenar essas variaveis na matriz?

olha o meu codigo, pra ver se estou no caminho !

#include<stdio.h>

int calcularCamisa(int produtos);

int main(){

int matriz[4][4];

int opcao=0;

int camisetaP=0,camisetaM=0,camisetaG=0,bermudaP,bermudaM,bermudaG,meiaP,meiaM,meiaG,soma=0;

matriz[0][0] = camisetaP

matriz[0][1] = camisetaM

matriz[0][2] = camisetaG

matriz[0][3] = somatório de camisetas P, M e G

matriz[1][0] = bermudaP

matriz[1][1] = bermudaM

matriz[1][2] = bermudaG

matriz[1][3] = somatório de shorts P, M e G

matriz[2][0] = meiaP

matriz[2][1] = meiaM

matriz[2][2] = meiaG

matriz[2][3] = somatório de meias P, M e G

matriz[3][0] = somatório de todos os produtos P

matriz[3][1] = somatório de todos os produtos M

matriz[3][2] = somatório de todos os produtos G

matriz[3][3] = somatório de todos os produtos

while (opcao != 11){

system("cls");

printf("CADASTRAMENTO DE PRODUTOS\n\n");

printf("1 - Cadastrar Camisa P \n");

printf("2 - Cadastrar Camisa M\n");

printf("3 - Cadastrar Camisa G\n");

printf("4 - Cadastrar bermuda P\n");

printf("5 - Cadastrar bermuda M\n");

printf("6 - Cadastrar bermuda G\n");

printf("7 - Cadastrar meia P\n");

printf("8 - Cadastrar meia m\n");

printf("9 - Cadastrar meia G\n");

printf("10 - mostrar produtos\n");

printf("11 - Sair\n");

printf("Opcao -> ");

scanf("%d",&opcao);

system("cls");

switch (opcao){

case 1:

printf("Informe a qtd -> ");

scanf("%d",&camisetaP);

system("pause");

break;

case 2:

printf("Informe a qtd -> ");

scanf("%d",&camisetaM);

system("pause");

break;

case 3:

printf("Informe a qtd -> ");

scanf("%d",&camisetaG);

system("pause");

break;

}

}

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo, porque você colocou essa parte

matriz[0][0] = camisetaP
matriz[0][1] = camisetaM
matriz[0][2] = camisetaG
matriz[0][3] = somatório de camisetas P, M e G
matriz[1][0] = bermudaP
matriz[1][1] = bermudaM
matriz[1][2] = bermudaG
matriz[1][3] = somatório de shorts P, M e G
matriz[2][0] = meiaP
matriz[2][1] = meiaM
matriz[2][2] = meiaG
matriz[2][3] = somatório de meias P, M e G
matriz[3][0] = somatório de todos os produtos P
matriz[3][1] = somatório de todos os produtos M
matriz[3][2] = somatório de todos os produtos G
matriz[3][3] = somatório de todos os produtos

?

Isto é apenas uma indicação de qual conteúdo vai para cada variável.

No momento estou em meio à miha aula (de programação, inclusive), mas quando chegar em casa lhe dou uns toques.

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, cheguei.

Seguinte, todo o programa deve estar dentro de um loop (preferencialmente do-while), e a condição de parada ocorre após a exibição da matriz. Se o usuário quiser continuar e fazer um novo cadastramento, continua, ao contrário, sai do loop.

É melhor fazer com funções, mas imagino que você queira a maneira menos complexa, então façamos tudo na 'main'.

Faça um menu em que o usuário possa escolher 4 opções: cadastrar camisas, shorts, meias e mostrar a matriz.

O usuário escolhe a opção e entra num 'switch'. Dentro do switch há os 4 casos, nos casos de cadastramento, o usuário deverá escolher um tamanho da peça (P, M ou G), e dependendo do caso, soma em determinado local da matriz.

Após o usuário digitar o valor e armazenar na matriz, segue o loop, limpa a tela e mostra novamente o menu.

Faça isto até o usuário escolher a opção 'mostrar Matriz'.

Nesta opção, é quando você deve fazer as somas e colocá-las nos locais certos, e após, exibir a matriz. Você também pode colocar essa soma em cada 'caso' no switch, mas eu gosto de loops, então deixo pra agora =)

Exiba a matriz do jeito que eu falei, com um lacinho básico duplo. De duas quebras de linha ("\n\n") e mostre o somatório geral. Você pode adquirir o somatório geral ao mesmo tempo que consegue os somatórios parciais de cada tipo, fica a dica.

A última tarefa é fornecer a opção para que o usuário possa escolher entre reiniciar o processo ou sair.

Se ele quiser continuar e reiniciar o processo de cadastramento, zere toda a matriz e siga o laço.

Ao contrário, atribua á sua variável de controle o valor correspondente á condição de parada do laço (o tal do-while que eu havia sugerido).

Soa meio complicado, mas em 5 minutinhos dá para fazer.

Eu fiz aqui, se tu ficar meio perdido, dá uma olhada.

#include <stdio.h>

int main(){
    unsigned short int opcao, i, j;
    int matriz[4][4], aux;
    char tam;

    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            matriz[i][j] = 0;
        }
    }

    do{
        system("cls");
        printf("CADASTRAMENTO DE PRODUTOS\n\n");
        printf("1 - Cadastrar Camisa\n");
        printf("2 - Cadastrar bermuda\n");
        printf("3 - Cadastrar meia\n");
        printf("4 - Mostrar produtos\n");
        scanf("%hu", &opcao);

        system("CLS");

        switch(opcao){
            case 1:

                printf("Qual o tamanho de Camisa voce deseja cadastrar? (P, M ou G)\n");

                do{
                    scanf("%c", &tam);
                    tam -= (tam>96 && tam<126) ? 32 : 0;
                } while(tam != 'P' && tam != 'M' && tam != 'G');

                printf("Digite a quantidade de camisas '%c' voce deseja cadastrar: ", tam);
                if(tam == 'P'){
                    scanf("%d", &aux);
                    matriz[0][0] += aux;
                } else if(tam == 'M'){
                    scanf("%d", &aux);
                    matriz[0][1] += aux;
                } else {
                    scanf("%d", &aux);
                    matriz[0][2] += aux;
                }
            break;

            case 2:
                printf("Qual o tamanho de Short voce deseja cadastrar? (P, M ou G)\n");
                do{
                    scanf("%c", &tam);
                    tam -= (tam>96 && tam<126) ? 32 : 0;
                } while(tam != 'P' && tam != 'M' && tam != 'G');

                printf("Digite a quantidade de Shorts '%c' voce deseja cadastrar: ", tam);
                if(tam == 'P'){
                    scanf("%d", &aux);
                    matriz[1][0] += aux;
                } else if(tam == 'M'){
                    scanf("%d", &aux);
                    matriz[1][1] += aux;
                } else {
                    scanf("%d", &aux);
                    matriz[1][2] += aux;
                }
            break;

            case 3:
                printf("Qual o tamanho de Meia voce deseja cadastrar? (P, M ou G)\n");

                do{
                    scanf("%c", &tam);
                    tam -= (tam>96 && tam<126) ? 32 : 0;
                } while(tam != 'P' && tam != 'M' && tam != 'G');

                printf("Digite a quantidade de Meias '%c' voce deseja cadastrar: ", tam);
                if(tam == 'P'){
                    scanf("%d", &aux);
                    matriz[2][0] += aux;
                } else if(tam == 'M'){
                    scanf("%d", &aux);
                    matriz[2][1] += aux;
                } else {
                    scanf("%d", &aux);
                    matriz[2][2] += aux;
                }
            break;

            case 4:
                for(i=0;i<3;i++){
                    for(j=0;j<3;j++){
                        matriz[i][3] += matriz[i][j];
                        matriz[3][i] += matriz[j][i];
                        matriz[3][3] += matriz[i][j];
                    }
                }

                for(i=0;i<4;i++){
                    for(j=0;j<4;j++){
                        printf("%6d", matriz[i][j]);
                    }
                printf("\n");
                }

                printf("\n\nTotal de produtos adquiridos pela loja: %d.\n", matriz[3][3]);
                printf("Voce deseja fazer outro cadastramento de compra? (S ou N):\n");

                do{
                    scanf("%c", &tam);
                    tam -= (tam>96 && tam<126) ? 32 : 0;
                } while(tam != 'S' && tam != 'N');

                if(tam == 'S'){
                    for(i=0;i<4;i++){
                        for(j=0;j<4;j++){
                            matriz[i][j] = 0;
                        }
                    }
                } else {
                    opcao = 0;
                }

            break;

            default:
                printf("Você não digitou um numero valido.\n");
            break;
        }

    } while (opcao != 0);

    return(0);
}

Editado por mJi
Link para o comentário
Compartilhar em outros sites

  • 0

Vlww aew cara ; ]

#include<stdio.h>

int somaProduto(int matriz[4][4]);

int somaTotalProduto(int matriz[4][4]);

int main(){

int matriz[4][4];

int opcao=0,i=0,j=0;

char tam;

for(i=0;i<4;i++){

for(j=0;j<4;j++){

matriz[j] = 0;

}

}

do{

system("cls");

printf("CADASTRAMENTO DE PRODUTOS\n\n");

printf("1 - Cadastrar Camisa \n");

printf("2 - Cadastrar Bermuda \n");

printf("3 - Cadastrar Meia \n");

printf("4 - Mostrar matriz\n");

printf("Opcao -> ");

scanf("%d",&opcao);

system("CLS");

switch (opcao){

case 1:

printf("Qual o tamanho da camisa que deseja cadastrar ?(P,M,G) \n");

do{

scanf("%c", &tam);

} while(tam != 'P' && tam != 'M' && tam != 'G');

printf("Digite a quantidade de camisas '%c' voce deseja cadastrar: ", tam);

if(tam == 'P'){

scanf("%d",&matriz[0][0]);

somaProduto(matriz);

}

else if(tam == 'M'){

scanf("%d",&matriz[0][1]);

somaProduto(matriz);

}

else{

scanf("%d",&matriz[0][2]);

somaProduto(matriz);

}

system("pause");

break;

case 2:

printf("Qual o tamanho de bermuda que deseja cadastrar ?(P,M,G) \n");

do{

scanf("%c", &tam);

} while(tam != 'P' && tam != 'M' && tam != 'G');

printf("Digite a quantidade de bermudas '%c' voce deseja cadastrar: ", tam);

if(tam == 'P'){

scanf("%d",&matriz[1][0]);

somaProduto(matriz);

}

else if(tam == 'M'){

scanf("%d",&matriz[1][1]);

somaProduto(matriz);

}

else{

scanf("%d",&matriz[1][2]);

somaProduto(matriz);

}

system("pause");

break;

system("pause");

break;

case 3:

printf("Qual o tamanho de meia que deseja cadastrar ?(P,M,G) \n");

do{

scanf("%c", &tam);

} while(tam != 'P' && tam != 'M' && tam != 'G');

printf("Digite a quantidade de meias '%c' voce deseja cadastrar: ", tam);

if(tam == 'P'){

scanf("%d",&matriz[2][0]);

somaProduto(matriz);

}

else if(tam == 'M'){

scanf("%d",&matriz[2][1]);

somaProduto(matriz);

}

else{

scanf("%d",&matriz[2][2]);

somaProduto(matriz);

}

system("pause");

break;

case 4:

somaTotalProduto(matriz);

for(i=0;i<4;i++){

for(j=0;j<4;j++){

printf("%d \t", matriz[j]);

}

printf("\n");

}

printf("\n\nTotal de produtos adquiridos pela loja: %d.\n", matriz[3][3]);

printf("Voce deseja fazer outro cadastramento de compra? (S ou N):\n");

do{

scanf("%c", &tam);

} while(tam != 'S' && tam != 'N');

if(tam == 'S'){

for(i=0;i<4;i++){

for(j=0;j<4;j++){

matriz[j] = 0;

}

}

} else {

opcao = 0;

}

system("pause");

break;

default:

printf("Você não digitou um numero valido.\n");

break;

}

}while (opcao != 0);

}

int somaProduto(int matriz[4][4]){

int aux=0;

aux += matriz[4][4];

return aux;

}

int somaTotalProduto(int matriz[4][4]){

int aux=0,aux2=0,aux3=0,ProP=0,ProM=0,ProG=0,todoPro=0;

aux = matriz[0][0] + matriz[0][1] + matriz[0][2];

matriz[0][3]+= aux;

aux2 = matriz[1][0] + matriz[1][1] + matriz[1][2];

matriz[1][3]+= aux2;

aux3 = matriz[2][0] + matriz[2][1] + matriz[2][2];

matriz[2][3]+= aux3;

ProP = matriz[0][0] + matriz[1][0] + matriz[2][0];

matriz[3][0] += ProP;

ProM = matriz[0][1] + matriz[1][1] + matriz[2][1];

matriz[3][1] += ProP;

ProG = matriz[0][2] + matriz[1][2] + matriz[2][2];

matriz[3][2] += ProG;

todoPro = matriz[0][3]+ matriz[1][3]+matriz[2][3];

matriz[3][3] += todoPro;

}

olha aii como eu montei o meu !

mas o codigo está dando erro na função de somar, vê se encontra o erro ai pra mim.

Grato !

Link para o comentário
Compartilhar em outros sites

  • 0
olha aii como eu montei o meu !

mas o codigo está dando erro na função de somar, vê se encontra o erro ai pra mim.

Grato !

Qual é o erro?

Esse tanto de variável auxiliar, você não precisa. Pode somar diretamente na posição que quiser.

Ou use um for() básico, é bem melhor:

for(i=0;i<3;i++){
    for(j=0;j<3;j++){
        matriz[i][3] += matriz[i][j];
        matriz[3][i] += matriz[j][i];
        matriz[3][3] += matriz[i][j];
    }
}

Editado por mJi
Link para o comentário
Compartilhar em outros sites

  • 0

O erro é na seguinte parte do código :

int somaProduto(int matriz[4][4]){

int aux=0;

aux += matriz[4][4];

return aux;

}

a função não esta funcionando !

essa função faz a soma da quantidade dos produtos, pra depois armazenar na matriz.

se você olhar la no meu código, eu chamo essa função sempre que vou fazer a soma, pra armazenar na matriz :

case 1:

printf("Qual o tamanho da camisa que deseja cadastrar ?(P,M,G) \n");

do{

scanf("%c", &tam);

} while(tam != 'P' && tam != 'M' && tam != 'G');

printf("Digite a quantidade de camisas '%c' voce deseja cadastrar: ", tam);

if(tam == 'P'){

scanf("%d",&matriz[0][0]);

somaProduto(matriz);

}

else if(tam == 'M'){

scanf("%d",&matriz[0][1]);

somaProduto(matriz);

}

else{

scanf("%d",&matriz[0][2]);

somaProduto(matriz);

}

system("pause");

break;

Link para o comentário
Compartilhar em outros sites

  • 0

O erro é na seguinte parte do código :

int somaProduto(int matriz[4][4]){

int aux=0;

aux += matriz[4][4];

return aux;

}

A 'matriz' não possui uma posição [4][4]. Você está acessando um local fora da matriz na memória, por isso dá erro.

Sua matriz foi declarada como matriz[4][4], isso significa que seus indices vão de 0 até 3. Você só pode acessar as posições

matriz[0][0]

matriz[0][1]

matriz[0][2]

matriz[0][3]

matriz[1][0]

matriz[1][1]

matriz[1][2]

matriz[1][3]

matriz[2][0]

matriz[2][1]

matriz[2][2]

matriz[2][3]

matriz[3][0]

matriz[3][1]

matriz[3][2]

matriz[3][3]

Link para o comentário
Compartilhar em outros sites

  • 0

Não tem nada a ver somar dentro ou fora da função... isso não faz diferença, vetores/matrizes são sempre passados por referência.

O que eu quis dizer é que alí, você está somando 'matriz[4][4]'. Essa posição da matriz não existe. A declaração da matriz é matriz[4][4], mas isso significa que ela terá 4 posições em cada dimensão, e não que os índices irão até o elemento 4; eles irão de 0 até 3.

Confira o algoritmo que eu fiz nos posts acima, leia com atenção e você entenderá.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...