matriz tridimensional

1. matriz tridimensional

jeferson luiz de oliveira
dududetonando

(usa Outra)

Enviado em 30/08/2016 - 21:21h

ola preciso de ajuda com uma matriz tridimensional .Gerar um cubo (10x10x10) preenchendo com números aleatórios entre 0 e 1.
- supondo que:
* 1 signifique área sólida e
* 0 signifique área porosa.

calcule quanto porcento o sólido gerado é sólido e/ou poroso.


  


2. o que fiz ate agora (ignorar o calculo)

jeferson luiz de oliveira
dududetonando

(usa Outra)

Enviado em 30/08/2016 - 21:23h

#include<stdio.h>
#define L 3
#define C 3
#define P 3

/* Gerar um cubo (10x10x10) preenchendo com números aleatórios entre 0 e 1.
- supondo que:
* 1 signifique área sólida e
* 0 signifique área porosa.

calcule quanto porcento o sólido gerado é sólido e/ou poroso.*/

main()
{
srand( (unsigned)time(NULL) );
int matriztridimensional[L][C][P];
int l,c,p;
float por;
int aux=0,auxb;
for(l=0;l<L;l++)
{
for(c=0;c<C;c++)
{
for(p=0;p<P;p++)
{
matriztridimensional[l][c][p]=(rand()%2);
}
}
}

for(l=0;l<L;l++)
{
for(c=0;c<C;c++)
{
for (p=0;p<P;p++)
{
if(matriztridimensional[l][c][p]==1)
{
aux=(aux+1);
}
else if(matriztridimensional[l][c][p]==0)
{
auxb=(aux+1);
}
}
}
}
printf("%d\n",aux);
printf("%d\n",auxb);
por=((aux*100)/(L*C*P))));
printf("a porcentagem de solidos e de %f",por);


3. Re: matriz tridimensional

Paulo
paulo1205

(usa Ubuntu)

Enviado em 31/08/2016 - 10:33h

Você pergunta e você mesmo responde. Curioso.

Bom, quando alguém fala em valores numéricos “entre 0 e 1”, o que me vem à mente são números reais, e não apenas os inteiros 0 e 1. 0 e 1 seria apenas os valores extremos, indicando um pedaço do material totalmente poroso (oco) ou totalmente sólido, respectivamente, e um valor como 0.5 poderia significar um material com 50% de porosidade. Se for assim mesmo, possivelmente você terá de trocar o tipo de dados dos elementos do cubo e de algumas variáveis auxiliares.

Se o seu cubo tem de ter dimensões 10×10×10, então você deve mudar os valores de L, C e P. Aliás, poderia dar a essas constantes nomes com mais de uma letra, para que alguém consiga entender o programa mesmo com menos informação contextual externa. Deixe o código ser suficientemente claro para explicar o contexto a quem o lê.

Procure deixar seu código mais aderente aos padrões da linguagem. Dizer apenas “main()” está obsoleto há mais de 27 anos. Você provavelmente deveria ter dito “int main(void)”.


4. alteraçoes no programa

jeferson luiz de oliveira
dududetonando

(usa Outra)

Enviado em 31/08/2016 - 17:00h

Olá. Obrigado por responder. Fiz algumas correções no programa pra ficar mais entendido . Sobre os números sim o zero e o um são números inteiro ,no caso eu fiz um cubo de 3 por 3 para facilitar um pouco o entendimento posterior é só mudar o define, o problema que eu vi no programa é que esse cubo que eu gerei deveria ter 27 posições mas como não consigo gerar visualmente a matriz na tela eu pedi pro programa mostra antes do calculo a auxiliar contendo a quantidade de números 'um' e 'zero', mas ao fazer isso o programa mostra como se tivesse mais posições; ex. 15 'uns' e 16 'zeros' .
matriz modificada
#include<stdio.h>
#define Linha 3 //define as dimensoes do cubo
#define Coluna 3
#define Profundidade 3

/* Gerar um cubo (10x10x10) preenchendo com números aleatórios entre 0 e 1.
- supondo que:
* 1 signifique área sólida e
* 0 signifique área porosa.

calcule quanto porcento o sólido gerado é sólido e/ou poroso.*/

int main(void)
{
srand( (unsigned)time(NULL) );
int matriztridimensional[Linha][Coluna][Profundidade];
int l,c,p;//variaveis para gerar a matriz os indices
float por;//variavel para armazenar o calculo da porcentagem
int aux=0,auxb;//variaveis para armazenar as quantidades de '0'(zeros) e (1)uns

// gera a matriz

for(l=0;l<Linha;l++)
{
for(c=0;c<Coluna;c++)
{
for(p=0;p<Profundidade;p++)
{
matriztridimensional[l][c][p]=(rand()%2);// gera numeros randomicoos entre zero e um
}
}
}
// percore a matriz e se o elemente na posiçao da matriz for 1 ou 0 armezena em uma das variaveis

for(l=0;l<Linha;l++)
{
for(c=0;c<Coluna;c++)
{
for (p=0;p<Profundidade;p++)
{
if(matriztridimensional[l][c][p]==1)
{
aux=(aux+1);
}
else if(matriztridimensional[l][c][p]==0)
{
auxb=(aux+1);
}
}
}
}
printf("%d\n",aux);//mostra a variavel indicando quantos numeros 'um' possui a matriz
printf("%d\n",auxb);//mostra a variavel indicando quantos numeros 'zero' possui a matriz
por=((aux*100)/(Linha*Coluna*Profundidade));//calculo da porcentagem
printf("A porcentagem de solidos e de %.1f ",por);
}


5. Re: matriz tridimensional

Paulo
paulo1205

(usa Ubuntu)

Enviado em 31/08/2016 - 18:47h

Olhando de novo, parece que o fato de você fazer “auxb=(aux+1)” num laço de repetição em que aux não muda não vai mesmo lhe dar um valor muito ajustado.

De todo modo, uma vez que você já calculou a solidez percentual dentro de um loop, não vai precisar de outro loop para calcular a porosidade: o valor final da porosidade é 100% menos a solidez. A mesma coisa vale para a quantidade de sólidos (Qs) × quantidade de buracos (Qb): Qb=L*C*P-Qs.


6. agradecimento pela ajuda

jeferson luiz de oliveira
dududetonando

(usa Outra)

Enviado em 31/08/2016 - 19:39h

Olá novamente ,queria agradecer pela ajuda com o programa fiz a alteração e funcionou ,eu inicializei a variável auxb ,realmente não precisa dessa variável eu criei ela pois estava dando problema no programa então criei ela para poder veificar ou tentar ver melhor o erro e por fim ela se tornou um erro .em programação sempre se tem que estar atento aos detalhes.
Muito obrigado pelo apoio .






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts