Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Giovanaf

C Exercicio de função chamando matriz

Recommended Posts

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

 

Compartilhar este post


Link para o post
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?

 

Editado por AnsiC
melhorar a mensagem
  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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");
	}

 

Editado por Giovanaf
Esqueci de mencionar
  • Haha 1

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×