Autor Tema: Ejercicio funciones en C creación de matrices numéricas tamaño defina usuario  (Leído 11950 veces)

POLIVALENTE97

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
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:

Código: [Seleccionar]
#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);
}
« Última modificación: 14 de Diciembre 2016, 21:05 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
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

Código: [Seleccionar]
#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

Código: [Seleccionar]
#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

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".