Ir ao conteúdo
  • Cadastre-se

C++ Matrizes - Percorrer em zigue-zague (baixo para cima)


Visitante

Posts recomendados

Preciso fazer um programa que leia a quantidade de linha e coluna de uma matriz e seus respectivos números. Em seguida, o programa deve escrever todos os elementos da matriz em zigue-zague, de baixo para cima, ou seja: inicialmente são escritos todos os valores da última linha, da esquerda para direita depois os valores da penúltima linha, da direita para esquerda e assim por diante.

Fiz meu código da seguinte maneira :

#include <iostream>
using namespace std;

int main()
{
	int n, m, count;
	cin>>n>>m;

	float matriz[n][m];
	
  
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			cin>>matriz[i][j];
		}
	}
	
	
	for (int i = n; i >= 0; i--)		
	{	
		if (i % 2 == 0)
		{
      for (int j = 0; j < m; j++)
			{
				matriz[i][j] = matriz[i][j];
			}
		}
		else
		{
      for (int j = m - 1; j >= 0; j--)
      {
			  matriz[i][j] = matriz[i][j];
      }
		}
	}
	
  for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			cout<<matriz[i][j]<<" ";
		}
		cout<<endl;
	}
  return 0;
}

Porém não está saindo em zigue- zague (como cita no enunciando). Como posso fazer?

Link para o comentário
Compartilhar em outros sites

Se eu não perdi nenhum, contei SETE comandos for no seu programa. No entanto você vai percorrer a matriz uma única vez, como você mesma descreveu, linha a linha e depois coluna a coluna, invertendo o sentido a cada linha:
 

35 minutos atrás, farnyy disse:

inicialmente são escritos todos os valores da última linha, da esquerda para direita depois os valores da penúltima linha, da direita para esquerda e assim por diante

 

Ao ler isso em português e pensando em C, isso sugere um for para as linhas, um if para o sentido e um for para as colunas... Só isso. E um loop com dois for para ler os valores. Mais sobre isso abaixo.

 

Escreva seu programa em torno dos dados. Não escreva uma única linha sem uma razão.

 

Acho que eu já te escrevi sobre isso: ao menos enquanto está testando, nunca perca seu tempo com programas interativos. Não acrescentam nada. Só atrasam o desenvolvimento. E na prática raramente programas em C ou C++ são interativos, há décadas. Em geral interagem com o ambiente, a rede, bancos de dados e arquivos.

 

Se antecipe ao programa e faça as coisas antes. Veja:
 

#include <stdio.h>

int main(void)
{
    /*
      13  14  15  16  17  18
      12  11  10   9   8   7                  
       1   2   3   4   5   6
     */

    const char teste[3][6] =
    {
        { 13, 14, 15, 16, 17, 18 },  // L0
        { 12, 11, 10,  9,  8,  7 },  // L1
        {  1,  2,  3,  4,  5,  6 }   // L2
    };
    return 0;
}

 

  • Use o próprio editor do IDE e digite uma matriz no comentário
  • Copie para uma inicialização de uma matriz copiando os valores e inserindo as vírgulas e chaves
  • Escreva em torno dos dados e se antecipe aos problemas: a matriz acima vai resultar no que? uma sequencia de 1 a 18. Que tal não precisar sequer conferir porque você se antecipou e digitou ao contrário???
  • antes de tudo escreva uma função para imprimir a matriz. É óbvio que vai precisar imprimir ao menos duas...
  • quando seu programa de um if e dois for funcionar com a matriz teste  acima você coloca o código que lê a matriz em minutos.
Link para o comentário
Compartilhar em outros sites

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