This repository has been archived by the owner on Aug 8, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEA17.cpp
226 lines (179 loc) · 5.69 KB
/
EA17.cpp
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
/************************************************************
MATERIA : INFORMATICA
EXAMEN : Recuperatorio Especificaci?n de Algoritmos - 22 de noviembre de 2012
NOMBRE :
MATRICULA :
CARRERA :
COMISION : 1.4
************************************************************
Realice un programa en C++ para realizar lo siguiente:
1) Dada una matriz cuadrada A de dimensi?n NxN tama?o maximo 100x100, donde N es una constante entera,
solicitar al usuario el ingreso de la cantidad de filas y columnas.
Luego cargar dicha matriz por teclado de forma tal que TODOS sus valores reales
sean mayores a cero. Cada vez que se ingrese un nuevo dato a la matriz, deber?
verificarse que el valor sea mayor a cero. Si no lo fuese, deber? pedirse el ingreso
de un nuevo valor hasta que lo sea. Todo este procedimiento debe implementarse a
trav?s de la funci?n con el siguiente prototipo:
void cargarMatriz ( double A[N][N] );
2) Mostrar en pantalla la matriz ingresada a traves del procedimiento con el
siguiente prototipo:
void mostrarMatriz ( double A[N][N] );
3) Generar el vector C que contenga en cada elemento j el promedio correspondiente
a la columna j de la matriz A. Esto debe implementarse a trav?s de la siguiente
funci?n:
void promedioColumnas ( double A[N][N], double C[N] );
4) Mostrar en pantalla el vector promedio generado a trav?s del procedimiento con el
siguiente prototipo:
void mostrarVector ( double C[N] );
5) Generar el vector F que contenga en cada elemento i el promedio correspondiente
a la fila i de la matriz A. Esto debe implementarse a trav?s de la siguiente
funci?n:
void promedioFilas ( double A[N][N], double F[N] );
6) Mostrar en pantalla el vector promedio generado haciendo uso de la funci?n 4).
7) Modificar los elementos de la matriz A de forma tal que sus elementos sean
el resultado de: duplicar el valor original del elemento (i,j) y restarle la suma
del promedio de la columna j y de la fila i.
void modificarMatriz ( double A[N][N], double C[N], double F[N] );
8) Mostrar nuevamente la matriz resultante a trav?s de la funci?n implementada en 2).
=========================================================
EJEMPLO DE EJECUCION O CORRIDA DEL PROGRAMA
PARA N=2
=========================================================
Inicio de la carga de la matriz:
Ingrese valor mayor a cero:0.5
Ingrese valor mayor a cero:1.5
Ingrese valor mayor a cero:3.5
Ingrese valor mayor a cero:2.5
La matriz ingresada es:
0.5 1.5
3.5 2.5
El promedio por columna es:
2
2
El promedio por fila es:
1
3
La matriz modificada es:
-2 0
2 0
=========================================================
Tabla de Correccion
______________________________
Funci?n cargarMatriz | 20
Funci?n mostrarMatriz | 10
Funci?n promedioColumnas | 10
Funci?n promedioFilas | 10
Funci?n mostrarVector | 05
Funci?n modificarMatriz | 25
Programa Principal | 10
Compilaci?n | 10
=========================================================
Estimado alumno no modifique nada del c?digo que le proveemos,
use los procedimientos o funciones que estan definidos y no
agregue m?s a la solucion.
************************************************************/
#include<iostream>
#include<iomanip>
using namespace std;
const int N=100;
int filas,columnas;
void cargarMatriz ( double[N][N] );
void mostrarMatriz ( double [N][N] );
void promedioColumnas ( double [N][N], double [N] );
void mostrarVector ( double [N] );
void promedioFilas ( double [N][N], double [N] );
void modificarMatriz ( double [N][N], double [N], double [N] );
int main()
{
double arreglo[N][N];
double vectorPF[N];
double vectorPC[N];
cargarMatriz(arreglo);
cout<<endl;
mostrarMatriz(arreglo);
cout<<endl;
promedioColumnas(arreglo,vectorPC);
cout<<endl;
promedioFilas(arreglo,vectorPF);
cout<<endl;
modificarMatriz(arreglo,vectorPC,vectorPF);
}
void cargarMatriz (double matriz[N][N])
{
cout<<"Ingrese el numero de columnas: ";
cin>>columnas;
cout<<"Ingrese el numero de filas: ";
cin>>filas;
cout<<endl;
for (int i=0;i<filas;i++)
{
for (int j=0;j<columnas;j++)
{
cout<<"Ingrese valor "<<i<<"."<<j<<" = ";
cin>>matriz[i][j];
while (matriz[i][j]==0||matriz[i][j]<0)
{
cout<<"Numero incorrecto. Reingrese: ";
cin>>matriz[i][j];
}
cout<<"Numero ingresado correctamente."<<endl;
}
}
}
void mostrarMatriz (double matriz[N][N])
{
cout<<"La matriz ingresada es:";
for (int i=0;i<filas;i++)
{
cout<<endl;
for(int j=0;j<columnas;j++)
{
cout<<setprecision(2)<<setw(5)<<matriz[i][j];
}
}
}
void promedioColumnas (double matriz[N][N],double vectorC[N])
{
cout<<"El promedio por columnas es:"<<endl;
vectorC[0]=0;
for (int i=0;i<filas;i++)
{
vectorC[i]=0;
for(int j=0;j<columnas;j++)
{
vectorC[i]+=matriz[j][i];
}
vectorC[i]=vectorC[i]/filas;
cout<<setprecision(2)<<setw(5)<<vectorC[i]<<endl;
}
}
void mostrarVector ()
{
}
void promedioFilas ( double matriz[N][N], double vectorF[N])
{
cout<<"El promedio por filas es:"<<endl;
for (int i=0;i<filas;i++)
{
vectorF[i]=0;
for(int j=0;j<columnas;j++)
{
vectorF[i]+=matriz[i][j];
}
vectorF[i]=vectorF[i]/columnas;
cout<<setprecision(2)<<setw(5)<<vectorF[i]<<endl;
}
}
void modificarMatriz (double matriz[N][N],double vectorC[N],double vectorF[N])
{
cout<<"La matriz modificada es: ";
for (int i=0;i<filas;i++)
{
cout<<endl;
for (int j=0;j<columnas;j++)
{
matriz[i][j]=2*matriz[i][j]-(vectorC[i]+vectorF[i]);
cout<<setprecision(2)<<setw(5)<<matriz[i][j];
}
}
}