Ir ao conteúdo
  • Cadastre-se

C Exercicio de função chamando matriz


Giovanaf

Posts recomendados

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;
}

 

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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

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