Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: POLIVALENTE97 en 10 de Diciembre 2016, 19:11
-
Hola, tengo el siguiente ejercicio de funciones:
// Se desea realizar las siguientes tareas con matrices:
// 1.Almacenar una matriz de orden nxm introducida desde teclado. (n y m se pedirán por teclado). El usuario debe introducir dos matrices,llamando dos veces a misma función.
// 2.Imprimir en pantalla una matriz. Se llamará dos veces a la función para mostrar ambas matrices.
// 3.Calcular la suma de ambas matrices (tienen que coincidir sus nº de filas y sus no de columnas)
// 4.Calcular el mínimo de la diagonal secundaria para la matriz que elija el usuario. La función recibirá como parámetro la matriz correspondiente.
// 5.OPCIONAL: Hallar el producto de dos matrices (pij = ai1b1j + ai2b2j + ai3b3j + . . . + ainbnj). Para ello, primero hay que comprobar si se pueden multiplicar, es decir, el número de columnas de la primera matriz tiene que coincidir con el número de filas de la segunda.
// Se pide: Construir un programa en C que haciendo uso de llamadas funciones resuelva las areas anteriores. Además el programa debe mostrarle al usuario un menú con las distintas opciones. Dicho menú también estará implementado en una función.
Lo tengo que hacer por funciones y aunque sé que tengo mil errores en el código y me faltan cosas, quisiera que me dijeran los errores principales que ven, cómo se tendría que hacer el return con varios valores muchas gracias:
#include<stdio.h>
#define N 4
int matrices (int A[N][N],int B[N][N]); {
int i,j,suma,minimo;
minimo= B[j]
for (i=0;i<N;i++){
for (j=0;j<N;j++){
printf ("Introduzca un número:");
scanf ("%d",&A[j]);
}
}
for (i=0;i<N;i++){
for (j=0;j<N;j++){
printf ("Introduzca un numero:");
scanf ("%d",&B[j]);
}
}
for (i=0; i<N;i++){
for (j=0;j<N;j++){
Suma[j]= A[j] + B[j];
}
}
printf ("la suma es :\n");
for (i=0;i<N;i++){
for (j=0;j<N;j++){
if (i+j=n+1 < minimo)
minimo = i+j=n+1
printf ("El numero es :\n");
return (suma,i+j=n+1)
}
}
printf ("la suma es :\n");
int main (void) {
int x,y;
printf ("La suma es %d\t", suma (x,y);
printf ("El numero es %d\n", minimo);
}
-
Buenas POLIVALENTE97
Puedes ver las indicaciones generales para escribir en los foros en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 ahí se indica cómo poner títulos a los temas, cómo pegar código en los foros, etc.
Para resolver el ejercicio si necesitas los elementos básicos de C puedes guiarte por el curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=82&Itemid=210
Podría plantearse la resolución basándote o bien en tamaños dinámicos para la matriz o bien tamaños fijos.
Para un tamaño dinámico la idea sería
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
void print_matrix1(int *m, int r, int c);
void print_matrix2(int **m,int r,int c);
void print_matrix1(int *m,int r,int c)
{
int y,x;
for(y=0;y<r;y++) {
for(x=0;x<c;x++) {
printf("(%2d,%2d) = %04d; ",y+1,x+1,m[y*c+x]);
}
}
}
void print_matrix2(int **m,int r,int c)
{
int y,x;
for(y=0;y<r;y++) {
for(x=0;x<c;x++) {
printf("(%2d,%2d) = %04d; ",y+1,x+1,m[y][x]);
}
}
}
int main(void)
{
int * matrix_memory;
int **matrix; /* for example 2 */
int rows=11,columns=5,x,y;
matrix_memory = malloc(sizeof(*matrix_memory) * rows * columns);
if (matrix_memory==NULL)
return errno;
/* Example one */
for(y=0;y<rows;y++)
for(x=0;x<columns;x++)
matrix_memory[y*columns+x]=(y+1)*100+(x+1);
print_matrix1(matrix_memory,rows,columns);
puts("--------------------------------------------");
/* Example two */
matrix=malloc(sizeof(*matrix)*rows);
if (matrix!=NULL) {
for(y=0;y<rows;y++)
matrix[y]=matrix_memory+y*columns;
/* Enable to print the data of example 1 using matrix[y][x]
print_matrix2(matrix,rows,columns);
puts("--------------------------------------------");
*/
for(y=0;y<rows;y++)
for(x=0;x<columns;x++)
matrix[y][x]=(rows-y)*100+(columns-x);
print_matrix2(matrix,rows,columns);
}
/* end and free memory */
free(matrix_memory);
if (matrix!=NULL) {
free(matrix);
return 0;
}
return errno;
}
Y para uno estático
#include<stdio.h>
int main()
{int mat[100][100];
int row,column,i,j;
printf("enter how many row and colmn you want:\n \n");
scanf("%d",&row);
scanf("%d",&column);
printf("enter the matrix:");
for(i=0;i<row;i++){
for(j=0;j<column;j++){
scanf("%d",&mat[i][j]);
}
printf("\n");
}
for(i=0;i<row;i++){
for(j=0;j<column;j++){
printf("%d \t",mat[i][j]);}
printf("\n");}
}
Salu2