Ir ao conteúdo

Posts recomendados

Postado

Olá, peço ajuda com um exercício.

Questão:

Crie um programa que define uma matriz 7x7 e chame as três funções definidas abaixo:
  - Função capaz de preencher a matriz com valores aleatórios de 0 a 1023;
  - Função capaz de imprimir a matriz na tela usando formato matricial;
  - Função capaz capaz de encontrar o maior valor da matriz e a média dos valores da matriz. A função deve
  informar tais valores ao programa principal que, por sua vez, irá imprimir na tela essas informações.
 

Não entendi a lógica de criar uma função que imprima matriz em formato matricial, e creio que tenha mais erros, pois recebi apenas 1/3 do valor da questão.

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int valores_aleatorio (int mat[][7], int x, int y){
	srand (time(NULL));
	for (int i=0; i<7; i++){
		for (int j=0; j<7; j++){
			mat[i][j] = rand () %1023;
			printf ("%.4d   ", mat[i][j]);
		}
		printf ("\n");
	}
	return 0;
	
}
int matricial (int *z){
	


return 0;
}

int maior_media (int mat[][7], int x, int y, int *maior, float *media){
	printf ("\n");
	srand (time(NULL));
	int  soma=0;
	
	for (int i=0; i<7; i++){
		for (int j=0; j<7; j++){
			mat[i][j] = rand () %10;
			printf ("%d ", mat[i][j]);
			soma = soma + mat[i][j];
		}
		printf ("\n");
	}
	*media = soma/49.0;
	*maior=0;
	
	for (int i=0; i<7; i++){
		for (int j=0; j<7; j++){
			mat[i][j] = rand () %10;
			
			if (mat[i][j] > *maior){
				*maior = mat[i][j];
			}
		}
		printf ("\n");
	}
		
	return 0;
	
}

	
int main(int argc, char **argv){
	int mat [7][7], maior;
	float media;
	
	valores_aleatorio (mat, 7,7);
	maior_media (mat,7,7, &maior, &media);
	printf ("Media: %.2f\n", media);
	printf ("Maior: %d", maior);
	
	return 0;
}

 

Postado

Analisando com base em entendimento, 

#Função capaz de preencher a matriz com valores aleatórios de 0 a 1023; logo abaixo

int valores_aleatorio (int mat[][7], int x, int y){
    srand (time(NULL));
    for (int i = 0; i  <  7; i++){
          for (int j = 0; j  <  7; j++){
                mat[i][j] = rand () % 1023;
                printf ("%.4d   ", mat[i][j]);}
          printf ("\n");}
return 0;}
  • A função está imprimindo valores quando deveria apenas preencher a matriz;
  • A função tem 2 parâmetros sem utilidade (x, y) quando na verdade eles tem sim uma função a desempenhar que você não programou; 
  • Os valores 'aleatórios' são de 0 a 1023, isso inclui também 0 e o 1023 nessa lista.

 

No geral a função faz o que tem que ser feito (eu acho), só que de maneira não prescrita, a questão deve ser lida de maneira bem literal. Faço entendimento uma solução para nós discutimos:

int matriz_incerta (int nlinha, int ncoluna, int matriz[][ncoluna]){
    srand (time (NULL));
    for (int i = 0; i  <  nlinha; i++){
          for (int j = 0; j  <  ncoluna; j++){
                matriz[i][j] = rand ( ) % 1024;}
    }
return 0;}
  • A função não está imprimindo valores
  • A função tem todos os parâmetros uteis
  • Os valores aleatórios estão dentro faixa desejada, e não praticamente. 

 

Também não entendi ...

13 horas atrás, Giovanaf disse:

Não entendi a lógica de criar uma função que imprima matriz em formato matricial,

Talvez seja o formato de uma tabela, ou seja, imprimir as 7 linhas e as 7 colunas, linha após linha no formato de um quadradinho. Pode ser isso?

 

  • Curtir 1
  • Obrigado 1
Postado

Por exemplo, uma matriz 5 x 5 poderia ser impressa assim:

 342     3    12    53     0
1001   502   310     7  1023
  24    66   100   999   757
 603  1010  1000     9    10
   5    70     1  1015   112

 

  • Obrigado 2
Postado

@isrnickEntão é necessário apenas isso na função matricial?

for (int i=0; i<7; i++){
	for (int j=0; j<7; j++){
		mat[i][j] = rand () %100;
        printf ("%d ", mat[i][j]);
}
		printf ("\n");
	}

 

  • Haha 1
Postado

@Giovanaf Segundo o enunciado a função deve apenas imprimir a matriz, ou seja os valores da matriz já devem estar definidos previamente, antes de entrar na função, logo não deveria ter essa atribuição.

 

E se você imprimir assim com %d os números não ficarão alinhados, pois alguns números tem mais dígitos que outros. No caso como os números vão de 0 a 1023, eles tem no máximo 4 dígitos, então poderia usar %4d no printf, assim no mínimo 4 caracteres serão impressos para cada número, e quando o número tem menos de 4 dígitos ele preenche com espaços a esquerda.

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!