bom tô com um pequeno probleminha. eu tenho que gerar uma matriz aleatória não repetida. eu já consegui gerar a matriz aleatória e também consigo chegar se existem elementos repetidos. mas não consigo fazer mais nada depois disso. sem mais delongas, segue abaixo meus 2 códigos. o principal e um com os escopos.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include "basico.c"
int checa(int **matriz, int n, int m);
int entradamatrizint(int **matriz,int n,int m);
int main()
{
system("clear");
srand(time(NULL));
int **MatrizA;
int i,n;
printf("entre com a ordem da matriz: ");
scanf("%d",&n);
if (n == 0) {printf("\nDimensões nula\nPrograma Finalizado\n");system("pause");return 1;}
/*Alocação de Memória para Matrizes*/
if(!(MatrizA = alocacaoint(n,n)))
{
printf("\nNão foi possível alocar memória para Matriz A\nFim de Programa\n");
return 1;
}
/*Entrada da Matriz A*/
entradamatrizint(MatrizA,n,n);
/*Impressão da Matriz A*/
imprimematrizint(MatrizA,n,n);
getchar();
return 0;
}
int entradamatrizint(int **matriz,int n,int m)
{
int a,i,j;
for (i=0;i<n;i++) for(j=0;j<m;j++)
{
a=rand()%100+1;
matriz[j]=a;
checa(matriz,n,a);}
return 0;
}
int checa(int **matriz, int dim, int num ){
int i, j, cont=0;
for(i=0; i<dim; i++)
for(j=0; j<dim;j++)
if(num==matriz[j]){
cont++;
if(cont>1){
printf("\no numero %d se repete %d vezes\n\n", num, cont);
}
}
return 0;}
códico com os escopos:
int **alocacaoint(int n, int m);
int imprimematrizint(int **matriz,int n,int m);
int **alocacaoint(int n, int m)
{
int **matriz;
int i;
matriz = (int **)calloc(n,sizeof(int *));
if(!matriz)
return (NULL);
for(i=0;i<n;i++)
{
matriz=(int *)calloc(m,sizeof(int));
if(!matriz)
return (NULL);
}
return (matriz);
}
int imprimematrizint(int **matriz,int n,int m)
{
int i,j;
for (i=0;i<n;i++)
{
printf("\n");
for(j=0;j<m;j++) printf("%d\t",matriz[j]);
printf("\n");
}
return 0;
Pergunta
Suélio
e aí galera.
bom tô com um pequeno probleminha. eu tenho que gerar uma matriz aleatória não repetida. eu já consegui gerar a matriz aleatória e também consigo chegar se existem elementos repetidos. mas não consigo fazer mais nada depois disso. sem mais delongas, segue abaixo meus 2 códigos. o principal e um com os escopos.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include "basico.c"
int checa(int **matriz, int n, int m);
int entradamatrizint(int **matriz,int n,int m);
int main()
{
system("clear");
srand(time(NULL));
int **MatrizA;
int i,n;
printf("entre com a ordem da matriz: ");
scanf("%d",&n);
if (n == 0) {printf("\nDimensões nula\nPrograma Finalizado\n");system("pause");return 1;}
/*Alocação de Memória para Matrizes*/
if(!(MatrizA = alocacaoint(n,n)))
{
printf("\nNão foi possível alocar memória para Matriz A\nFim de Programa\n");
return 1;
}
/*Entrada da Matriz A*/
entradamatrizint(MatrizA,n,n);
/*Impressão da Matriz A*/
imprimematrizint(MatrizA,n,n);
getchar();
return 0;
}
int entradamatrizint(int **matriz,int n,int m)
{
int a,i,j;
for (i=0;i<n;i++) for(j=0;j<m;j++)
{
a=rand()%100+1;
matriz[j]=a;
checa(matriz,n,a);}
return 0;
}
int checa(int **matriz, int dim, int num ){
int i, j, cont=0;
for(i=0; i<dim; i++)
for(j=0; j<dim;j++)
if(num==matriz[j]){
cont++;
if(cont>1){
printf("\no numero %d se repete %d vezes\n\n", num, cont);
}
}
return 0;}
códico com os escopos:
int **alocacaoint(int n, int m);
int imprimematrizint(int **matriz,int n,int m);
int **alocacaoint(int n, int m)
{
int **matriz;
int i;
matriz = (int **)calloc(n,sizeof(int *));
if(!matriz)
return (NULL);
for(i=0;i<n;i++)
{
matriz=(int *)calloc(m,sizeof(int));
if(!matriz)
return (NULL);
}
return (matriz);
}
int imprimematrizint(int **matriz,int n,int m)
{
int i,j;
for (i=0;i<n;i++)
{
printf("\n");
for(j=0;j<m;j++) printf("%d\t",matriz[j]);
printf("\n");
}
return 0;
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.