Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Regalo invitación forocoches...

Estas en el tema de Regalo invitación forocoches... en el foro de C/C++ en Foros del Web. ...al que resuelva lo siguiente y explique el uso de los punteros con la estructura: Escribir un programa para la realización de operaciones de suma ...
  #1 (permalink)  
Antiguo 28/11/2012, 17:33
Avatar de rodrigoemece  
Fecha de Ingreso: septiembre-2011
Mensajes: 68
Antigüedad: 12 años, 7 meses
Puntos: 1
Regalo invitación forocoches...

...al que resuelva lo siguiente y explique el uso de los punteros con la estructura:

Escribir un programa para la realización de operaciones de suma y multiplicación de matrices con las siguientes condiciones:

- El programa debe ser modular
- Los datos de las matrices se leen de un archivo donde aparecerán en primero lugar las dimensiones de la primera matriz, después sus datos, las dimensiones de la segunda matriz y a continuación sus datos.
- Las matrices no tienen tamaño limitado y se reserva memoria para ellas de forma dinámica, una vez leídos los datos de sus dimensiones.
- Usando funciones de la biblioteca time.h el programa debe imprimir el tiempo empleado en cada ejecución.

El código base ya lo tengo y es el siguiente, habría que transformarlo y usar una estructura del tipo:

Código:
struct matriz{ 
  float *datos;
  int fil;
  int col;
  };

Programa base:

Código:
#include <stdio.h>
#define MAXF 4 //Define o tamaño máximo de filas da matriz
#define MAXC 4 //Define o tamaño máximo de columnas da matriz
main()
{
    
  int filA, colA, filB, colB, i, j, k, op, A[MAXF][MAXC], B[MAXF][MAXC], C[MAXF][MAXC];
  
  printf("..::: SUMA E MULTIPLICACION DE MATRICES :::..\n\n");
  
  printf(" >> Filas da matriz A: ");
  scanf("%d", &filA);
  printf(" >> Columnas da matriz A: ");
  scanf("%d", &colA);
  printf("\n >> Filas da matriz B: ");
  scanf("%d", &filB);
  printf(" >> Columnas da matriz B: ");
  scanf("%d", &colB);
  putchar('\n');
  
// COMPROBACIÓN DO TAMAÑO MÁXIMO DA MATRIZ (4X4)      
  if(filA>MAXF||filB>MAXF||colA>MAXF||colB>MAXC||filA<0||filB<0||colA<0||colB<0)
     printf(" Erro: este programa so fai calculos sobre matrices de %dx%d como maximo.\n", MAXF, MAXC);
    
// INTRODUCIÓN DOS ELEMENTOS DAS MATRICES
  else 
  {
    for(i=0; i<filA; i++)
      {
        for(j=0; j<colA; j++)
          {
            printf("  -> Introduza o elemento (%d, %d) da matriz A: ",i+1, j+1);
            scanf("%d", &A[i][j]);
          }
       }
    
    printf("\n");
    for(i=0; i<filB; i++)
      {
        for(j=0; j<colB; j++)
          {
            printf("  -> Introduza o elemento (%d, %d) da matriz B: ", i+1, j+1);
            scanf("%d", &B[i][j]);
          }
       }

// SELECCIÓN DA OPERACIÓN A LEVAR A CABO 
    printf("\n\n  Escolla a operacion a realizar sobre as duas matrices: \n   1. Multiplicar\n   2. Sumar\n\n   Seleccion:  ");
    scanf("%d", &op);
    
    switch(op)
         {   
                
// OPERACIÓN DE MULTIPLICACIÓN    
           case 1: 
              {   
                if(colA!=filB) printf("\n   As matrices introducidas non poden ser multiplicadas.\n");
                else{
                for(i=0; i<filA; i++)
                  {
                    for(j=0; j<colB; j++)
                      {
                        C[i][j]=0;
                        for(k=0; k<colA; k++)
                          {
                            C[i][j]=(C[i][j]+(A[i][k]*B[k][j]));
                          }
                       }
                  }
                
                printf("\n\n\t Matriz A");
                putchar('\n');
                for(i=0; i<filA; i++){
                        printf("\n\t");
                        for(j=0; j<colA; j++){
                        printf("  %d  ", A[i][j]);
                        }
                }
                printf("\n\n\t Matriz B");
                putchar('\n');
                for(i=0; i<filB; i++){
                        printf("\n\t");
                        for(j=0; j<colB; j++){
                        printf("  %d  ", B[i][j]);
                        }
                }
                printf("\n\n\t Matriz C");
                putchar('\n');
                for(i=0; i<filA; i++){
                        printf("\n\t");
                        for(j=0; j<colB; j++){
                        printf("  %d  ", C[i][j]);
                        }
                }
               putchar('\n');             
                    } 
              } break;
                
// OPERACIÓN DE SUMA             
           case 2: 
              {
                if(colA!=colB || filA!=filB) printf("\n   As matrices introducidas non poden ser sumadas.\n");
                else{
                for(i=0; i<filA; i++)
                  {
                    for(j=0; j<colB; j++)
                      {
                        C[i][j]=0;        
                        C[i][j]=(A[i][j]+B[i][j]);                         
                      }
                  }
                
                printf("\n\n\t Matriz A");
                putchar('\n');
                for(i=0; i<filA; i++){
                        printf("\n\t");
                        for(j=0; j<colA; j++){
                        printf("  %d  ", A[i][j]);
                        }
                }
                printf("\n\n\t Matriz B");
                putchar('\n');
                for(i=0; i<filB; i++){
                        printf("\n\t");
                        for(j=0; j<colB; j++){
                        printf("  %d  ", B[i][j]);
                        }
                }
                printf("\n\n\t Matriz C");
                putchar('\n');
                for(i=0; i<filA; i++){
                        printf("\n\t");
                        for(j=0; j<colB; j++){
                        printf("  %d  ", C[i][j]);
                        }
                }
               putchar('\n');                
                    } 
                     
              } break;
              
// ERRO SE NON SELECCIONAMOS '1' OU '2'              
           default: printf("\n Erro: a opcion escollida non esta definida.\n");
         }
  }
                            
  return 0;
}
  #2 (permalink)  
Antiguo 28/11/2012, 18:30
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: Regalo invitación forocoches...

Cita:
Regalo invitación forocoches...
...al que resuelva lo siguiente y explique el uso de los punteros con la estructura:
si vas a ofrecer algo lo mejor es que publiques esto en "Ofertas"... aca se resuelven dudas, no se hacen tareas


Saludos
  #3 (permalink)  
Antiguo 28/11/2012, 18:58
Avatar de rodrigoemece  
Fecha de Ingreso: septiembre-2011
Mensajes: 68
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Regalo invitación forocoches...

De acuerdo, si alguien puede ayudarme entonces...
http://www.forosdelweb.com/f96/matri...teros-1025402/

Gracias! ;)

Etiquetas: estructura, funcion, int, programa, regalo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:09.