Dev - C++ - Dudas respecto a una matriz que pasa a un arreglo

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Dudas respecto a una matriz que pasa a un arreglo

Publicado por Roberto (5 intervenciones) el 14/03/2019 17:56:13
Buenos días, tengo un problema al hacer un programa en C++
El chiste del programa es hacer una matriz de n*m*p, con números aleatorios entre 50 y 100, después pasar esos números a un arreglo donde solo se muestren números entre 60 y 70, lo que sigue es hacer que esos números queden ordenados de menor a mayor y al final sacar el promedio.

Aquí esta el codigo que hice pero me marca muchos errores.

Si alguien me puede ayudar con este programa sería genial.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include<conio.h>
#include <time.h>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
 
int main(){
 
	int n,p,m,i,j,k,num,z,aux,suma,s,promedio,l;
	int m1[n][m][p],a1[n*m*p],a2[n*m*p],pos,r;
	cout<<"Ingrese el numero de columnas"<<endl;
	cin>>m;
		cout<<"Ingrese el numero de capas"<<endl;
	cin>>p;
		cout<<"Ingrese el numero de renglones"<<endl;
	cin>>n;
	srand(time(NULL));
	cout<<"Matriz"<<endl;
	for (i=0;i<n;i++){
		for(j=0;j<m;j++){
			for(k=0;k<p;k++){
				num=rand()%50+50;
				m1[i][j][k]=num;
				printf("Matriz [%d,%d,%d]= %d\n",i,j,k,num);
			}
		}
	}
z=0;
	a1[z];
	cout<<"Arreglo"<<endl;
	for(i=0;i<n;i++){
		for(j=0;j<m;j++){
			for(k=0;k<p;k++){
				if(a1[z]=m1[i][j][k]>=60&&m1[i][j][k]<=70){
					a1[z]=m1[i][j][k];
					printf("%d",a1[z]);
				}
				z++;
			}
		}
	}
	s=a1[z];
	for(i=1;i<s;i++){
		j=i;
		aux=a1[i];
		while(j>0&&aux<a1[j-1]){
			a1[j]=[j-1];
			j--;
		}
		a1[j]=aux;
	}
	printf("Arreglo acomodado\n");
	for(i=0;i<s;i++){
		printf("%d\n",a1[z]);
	}
	z--;
	suma=0;
	for(int i=0;i<z;i++){
		suma=a1[i];
	}
	promedio=suma/z;
	printf("El promedio es: %d",promedio);
	return 0;
	}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Dudas respecto a una matriz que pasa a un arreglo

Publicado por Alfil (1444 intervenciones) el 15/03/2019 00:17:27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <conio.h>
 
using namespace std;
 
void seleccionar( int*** matriz, int fil, int col, int cap, int* v, int size );
int leerMatriz( int*** matriz, int fil, int col, int cap );
void ordenar( int* v, int size );
void imprimir( int *v, int size );
 
int main(){
 
	int fil, col, cap, size;
 
    cout << "Ingrese el numero de filas: "; cin >> fil;
	cout << "Ingrese el numero de columnas: "; cin >> col;
    cout << "Ingrese el numero de capas: "; cin >> cap;
 
    int*** matriz = new int**[fil];
    for( int i = 0; i < fil; i++ ){
        matriz[i] = new int*[col];
        for( int j = 0; j < col; j++ ) {
            matriz[i][j] = new int[cap];
        }
    }
 
    size = leerMatriz( matriz, fil, col, cap );
    if(size > 0) {
        int v[size] = { 0 };
        seleccionar( matriz, fil, col, cap, v, size );
        imprimir( v, size );
    }
    else cout << "\nNingun numero en el rango 60 - 70\n";
 
	return 0;
 
}
 
int leerMatriz( int*** matriz, int fil, int col, int cap ) {
 
    int n = 0;
    srand(time(NULL));
 
	cout << "\nMatriz: ";
 
	for( int i = 0; i < fil; i++ ){
		for( int j = 0; j < col; j++ ){
			for( int k = 0; k < cap; k++ ){
                matriz[i][j][k] = ( rand() % 50 + 50 );
                cout << "\nMatriz[" << i << "]["
                     << j << "][" << k << "]: "
                     << matriz[i][j][k];
                if( matriz[i][j][k] >= 60 && matriz[i][j][k] < 70 )
                    n++;
 
			}
		}
	}
	cout << endl;
 
	return n;
}
 
void seleccionar( int*** matriz, int fil, int col, int cap, int* v, int size ){
 
    int n = 0;
 
    for( int i = 0; i < fil; i++ ){
		for( int j = 0; j < col; j++ ){
			for( int k = 0; k < cap; k++ ){
                if( matriz[i][j][k] >= 60 && matriz[i][j][k] <= 70 ) {
                    v[n] = matriz[i][j][k];
                    n++;
                }
			}
		}
	}
 
	ordenar( v, size );
}
 
void ordenar( int* v, int size ){
 
    int j, valor;
 
    for(int i = 1; i < size; i++) {
        valor = v[i];
        j = i;
        while( j > 0 && valor < v[j-1] ) {
            v[j] = v[j-1];
            j--;
        }
        v[j] = valor;
    }
 
}
 
void imprimir( int *v, int size ){
 
    int suma = 0;
 
    cout << "\nLos numeros entre 60 y 70 son:\n";
 
    for( int i = 0; i < size; i++ ){
        suma += v[i];
        cout << v[i] << " ";
    }
 
    cout << "\n\nPromedio: " << suma / size << endl;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar