Ir ao conteúdo

Posts recomendados

Postado

saudações,

estou ficando roxa por não conseguir resolver meu codigo.

 

eu estou fazendo um programa que vai ler o tamanho que ele quer q a matriz terá, e depois vai ler todos os numeros das linhas e colunas e vai guardar nessa matriz.

depois disso preciso somar cada linha, cada coluna, e as diagonais, se todos esses forem iguais, resulta em um quadrado magico.

por isso criei um vetor para guardar o valor de cada linha, e um vetor pra guardar o valor de cada coluna.. só que eles estão valendo uns valores aleatórios (veja fotografia anexada), e eu nao to conseguindo fazer esses dois vetores valer zero

(to usando sempre para teste o tamanho valendo 3, e os numeros da matriz de 1 a 9)

 

ps: nao sei se o jeito de se somar tá certo.. iria conferir depois, mas como o vetor apresenta um valor zoado eu nao consigo saber se tá certo a conta.. entao o foco não é a conta, e sim zerar o vetor :)

ps2: comentei o codigo pra explicar como eu tava pensando, caso tiver algo errado add um /* */ comentando por favorr

 

#include<stdio.h>

int main()
{

    int tamanho=0, colunas=0, linhas=0;
    
    printf("\n\t\t---VAMOS CONFERIR SE SUA TABELA É UM QUADRADO MAGICO!---");
    printf("\n\n\t\t\t[pressione ENTER para continuar]");
    getchar();

    printf("\n\n\nQuantas linhas/colunas quer que sua tabela tenha: ");
    scanf("%d", &tamanho);
    getchar();

    int quadrado[tamanho][tamanho]; //declaraçao da matriz com o tamanho q o usuario quer

    printf("\n\nAgora é necessário que dite os valores!");

    //laço para receber os valores e guardar na matriz
    for (linhas = 0; linhas < tamanho; linhas++)
    {        
        for (colunas = 0; colunas < tamanho; colunas++)
        {
            printf("\n\n\t-> Valor da linha %d e coluna %d: ", linhas+1, colunas+1);
            scanf("%d", &quadrado[linhas][colunas]);
        }
        
    }

    int posicao = tamanho; //nova variavel pra colocar no indice do vetor, e será o mesmo tamanho que o usuario deu
    int soma_linhas[posicao], soma_colunas[posicao]; //declaraçao dos dois vetores para linha e coluna
    int soma_diagprincipal =0, soma_diagsecundaria=0; //duas variaveis para guardar o valor das diagonais


    posicao=0; //zerando valor do indice do vetor, antes valia tamanho
    //laço para percorrer matriz e somar todos as colunas de cada linha
    for (linhas = 0; linhas < tamanho; linhas++)
    {        
        for (colunas = 0; colunas < tamanho; colunas++)
        {
            soma_linhas[posicao] = soma_linhas[posicao] + quadrado[linhas][colunas];
        }
        //depois de percorrer todas as colunas, posicao ++ para ir pra segunda posiçao do vetor
        posicao++;
    }

    posicao=0;//zerando valor do indice do vetor, antes valia tamanho
    //laço para percorrer matriz e somar todos as linhas de cada coluna
    for (colunas = 0; colunas < tamanho; colunas++)
    {        
        for (linhas = 0; linhas < tamanho; linhas++)
        {
            soma_colunas[posicao] = soma_colunas[posicao] + quadrado[linhas][colunas];
        }
        //depois de percorrer todas as colunas, posicao ++ para ir pra segunda posiçao do vetor
        posicao++;
    }
    
  //aqui ta dando o resultado certo, nao é necessario ver
    for (linhas = 0; linhas < tamanho; linhas++)
    {        
        for (colunas = 0; colunas < tamanho; colunas++)
        {
            if (linhas == colunas)
            {
                soma_diagprincipal = soma_diagprincipal + quadrado[linhas][colunas];
            }
        }
    }

  	//aqui ta dando o resultado certo, nao é necessario ver
    for (colunas = 0; colunas < tamanho; colunas++)
    {
        for (linhas = 0; linhas < tamanho; linhas++)
        {
            if (linhas +1 + colunas+1 == tamanho+1)
            {
                soma_diagsecundaria = soma_diagsecundaria + quadrado[linhas][colunas];
            }
            
        }
    }

	//laço para printar temporariamente o valor dos vetores p conferir 
    for (posicao = 0; posicao < tamanho; posicao++)
    {
        printf("\nLINHAS %d", soma_linhas[posicao]);
        printf("\nCOLUNAS %d", soma_colunas[posicao]);
    }

  		//aqui ta dando o resultado certo, nao é necessario ver
        printf("\n\n");
        printf("\nPRIMA %d", soma_diagprincipal);
        printf("\nSECUN %d", soma_diagsecundaria);
    
    printf("\n\n");

    return 0;
}

 

codigo.jpeg

adicionado 11 minutos depois

update: consegui resolver criando uma variavel nova pra guardar e somar os valores da matriz

ex: soma = soma +matriz

soma = 0

indice vetor ++

 

...

masssss eu queria saber como resolver desse jeito aí do vetor = vetor + matriz

 

=/

  • Curtir 1
Postado
for (linhas = 0; linhas < tamanho; linhas++)
    {        
        soma_linhas[posicao] = 0;//ACRESCENTAR ESSA LINHA
        for (colunas = 0; colunas < tamanho; colunas++)
        {
            soma_linhas[posicao] = soma_linhas[posicao] + quadrado[linhas][colunas];
        }
        //depois de percorrer todas as colunas, posicao ++ para ir pra segunda posiçao do vetor
        posicao++;
    }

    posicao=0;//zerando valor do indice do vetor, antes valia tamanho
    //laço para percorrer matriz e somar todos as linhas de cada coluna
    for (colunas = 0; colunas < tamanho; colunas++)
    {        
		soma_colunas[posicao] = 0;//ACRESCENTAR ESSA LINHA                   
        for (linhas = 0; linhas < tamanho; linhas++)
        {
            soma_colunas[posicao] = soma_colunas[posicao] + quadrado[linhas][colunas];
        }
        //depois de percorrer todas as colunas, posicao ++ para ir pra segunda posiçao do vetor
        posicao++;
    }
    
  

Veja se a solução acima resolve.

  • Curtir 1
Postado

@Flávio Pedroza ahhh, realmente.. resolve sim!!

mas em um exercicio anterior eu tive que dar uns valores para a matriz, nisso utilizei = {{1, 2, 3}{4,5....}

nao é possivel fazer isso de ={..} com o vetor? tentei e nao deu certo =/

Postado
28 minutos atrás, Sizonel disse:

@Flávio Pedroza ahhh, realmente.. resolve sim!!

mas em um exercicio anterior eu tive que dar uns valores para a matriz, nisso utilizei = {{1, 2, 3}{4,5....}

nao é possivel fazer isso de ={..} com o vetor? tentei e nao deu certo =/

Só é possível se o tamanho do vetor for um valor fixo, se for uma variável NÃO.

int vetor1[3] = {0, 0, 0} // ok
int tamanho =3 ;
int vetor2[tamanho] = {0,0,0} //NAO eh possivel

 

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