Você está na página 1de 4

#include<stdio.

h>
#include<stdlib.h>
#include<locale.h>

int main() {
setlocale(LC_ALL, "Portuguese");

printf("2 QUESTÃO - LISTA VETORES\n");

int n, m, p;
int i, j, k;
printf("digite as dimensões 'n' 'm' e 'p' da matriz\n"); /// a matriz é
tridimensional

printf("digite o n\n");
scanf("%d", &n);

printf("digite o m\n");
scanf("%d", &m);

printf("digite o p\n");
scanf("%d", &p);

system("cls");

printf("2 QUESTÃO - LISTA VETORES\n");


int sizevet = n*m*p; // multiplica as dimensões p saber o tamanho do vetor

int ***matrizA; // declara um ponteiro p ponteiro p ponteiro p


matriz
matrizA = (int***)(malloc(sizeof(int**)*n)); // aloca a primeira dimensão

for (i = 0; i < n; i++) {


matrizA[i] = (int**)(malloc(sizeof(int*)*m)); // aloca a segunda
dimensão

for (j = 0; j < m; j++) {


matrizA[i][j] = (int*)malloc(sizeof(int)*p); // aloca a
terceira dimensão
}
}

int *vetorUa; /// ponteiro p vetor


vetorUa = (int*) malloc(sizeof(int)*sizevet); // aloca o vetor

for (i = 0; i<n; i++) {


for (j = 0; j<m; j++) {
for (k = 0; k<p; k++) {

printf("digite o valor da matriz na posição[%d][%d][%d] :


", i, j, k);
scanf("%d", &matrizA[i][j][k]); /// recebe o valor na
posição tal da matriz

vetorUa[i*m + j*p + k] = matrizA[i][j][k]; //// passa o


elemento da matriz p vetor

}
}
}

system("cls");

int op = -1;
while (op != 0) {
system("cls");
printf("2 QUESTÃO - LISTA VETORES\n");
printf("\n");

///exibe os elementos na matriz e no vetor

printf("MATRIZ [%d] [%d] [%d] ", n, m, p);


printf("\n");
for (i = 0; i<n; i++) {
for (j = 0; j<m; j++) {
for (k = 0; k<p; k++) {
printf("elemento da posição [%d] [%d] [%d] : %d
",i,j,k, matrizA[i][j][k]);
printf("\n");
}
}
}

printf("\n");
printf("VETOR ");

for (i = 0; i<sizevet; i++) printf("%d ", vetorUa[i]);

printf("\n");

/// menu da segunda questão

int a, b, c;
// n, m , p
// i , j ,k
printf("OPÇÕES\n");
printf("1 - os elementos da linha I da fatia K.\n");
printf("2 - os elementos da coluna J e da fatia K\n");
printf("3 - os elementos da diagonal principal da fatia K\n");
printf("4 - os elementos da linha I de todas as fatias\n");
printf("5 - Os elementos (I, J) de todas as fatias.\n");
printf("0 - sair\n");
printf("digite a opção desejada:\n");
scanf("%d", &op);
printf("\n");
switch (op){
case 0:
exit(0);
break;
case 1:
printf("digite o I (que pode ser 0 a %d) : ", n-1);
scanf("%d", &a);
printf("digite o K (que pode ser 0 a %d) : ", p-1);
scanf("%d", &c);

if (a<n && a>-1 && c<p && c>-1) {


for (b = 0; b < m; b++) {
printf("%d ", matrizA[a][b][c]);
}
}else {
printf("dimensões incorretas");
}
printf("\n");
system("pause");
break;
case 2:
printf("digite o J (que pode ser 0 a %d) : ", m-1);
scanf("%d", &b);
printf("digite o K (que pode ser 0 a %d) : ", p-1);
scanf("%d", &c);

if (b<m && b>-1 && c<p && c>-1) {


for (a = 0; a < n; a++) {
printf("%d ", matrizA[a][b][c]);
}
}else {
printf("dimensões incorretas");
}
printf("\n");
system("pause");
break;
case 3:
printf("digite o K (que pode ser de 0 a %d) : ", p-1);
scanf("%d", &c);

if (c<p && c>-1) {


for (a = 0; a < n; a++) {
for (b = 0; b < m; b++) {
if (a == b) {
printf("%d ", matrizA[a][b][c]);
}
}
}
}else {
printf("dimensão incorreta");
}
printf("\n");
system("pause");
break;
case 4:
printf("digite o I (que pode ser de 0 a %d) : ", n-1);
scanf("%d", &a);

if (a<n && a>-1) {


for (b = 0; b < m; b++) {
for (c = 0; c < p; c++) {
printf("%d ", matrizA[a][b][c]);
}
}
}else {
printf("dimensão incorreta");
}
printf("\n");
system("pause");
break;

case 5:
printf("digite o I (que pode ser de 0 a %d) : ", n-1);
scanf("%d", &a);
printf("digite o J (que pode ser de 0 a %d) : ", m-1);
scanf("%d", &b);

if (a<n && a>-1 && b<m && b>-1) {


for (c = 0; c < p; c++) {
printf("%d ", matrizA[a][b][c]);
}
}else {
printf("dimensões incorretas");
}
printf("\n");
system("pause");
break;

default :
printf("Opção incorreta! ");
printf("\n");
system("pause");
break;
}

if(op==0) exit(0);
return 0;
}

Você também pode gostar