Clase 14 (Multiplicacion de Matrices MxN)





#include <iostream>
using namespace std;
#include <stdio.h>
#include <stdlib.h>
#include <ctime>
#define MAX 100
#include <string>
//Prototipos.
void burbuja(int a[],int n);
void burbujam(int a[],int n);
void mezc(int a[],int b[],int c[],int m,int n);
void insercion(int a[],int n);
void seleccion(int a[],int n);
void shell(int a[],int n);
int numelem();
void tipocap(int a[],int n);
void captura(int a[],int n);
void capinsercion(int a[],int n);
void caleat(int a[],int n);
void ver(int a[],int n);
char menu();
int mcap();

int main(){

 int a[MAX],b[MAX],c[MAX],n,m,k;
 int salir=0;
 do {
 switch(menu()){
case 'a':
case 'A':
    cout<<"BURBUJA SIMPLE";
    cout<<"\n";
n=numelem();
tipocap(a,n);
printf("Su Arreglo:\n");
ver(a,n);
printf("\n\nPresione Cualquier Tecla, ");
printf("Para Comenzar Ordenamiento...");

burbuja(a,n);

printf("Arreglo ordenado:\n");
ver(a,n);
 

break;
case 'b':
case 'B':
cout<<"BURBUJA MEJORADO";
     cout<<"\n";
     n=numelem();
tipocap(a,n);

printf("Su Arreglo:\n");
ver(a,n);
burbujam(a,n);

printf("\nArreglo ordenado:\n");
ver(a,n);

break;
case 'c':
case 'C':

n=numelem();
capinsercion(a,n);

printf("Arreglo ordenado:\n");
ver(a,n);

break;
case 'd':
case 'D':

n=numelem();
tipocap(a,n);

printf("Su Arreglo:\n");
ver(a,n);
printf("\n\nPresione Cualquier Tecla, ");
printf("Para Comenzar El Ordenamiento...");

seleccion(a,n);

printf("Arreglo ordenado:\n");
ver(a,n);

break;
case 'e':
case 'E':
n=numelem();
tipocap(a,n);
printf("Su Arreglo:\n");
ver(a,n);
printf("\n\nPresione Cualquier Tecla, ");
printf("Para Comenzar El Ordenamiento...");

shell(a,n);
printf("Arreglo ordenado:\n");
ver(a,n);
break;
case 'f':
case 'F':
     cout<<"METODO POR MEZCLA\n";
   
printf("Arreglo N_1\n");
m=numelem();
tipocap(a,m);
printf("Arreglo N_1:\n");
ver(a,m);
printf("Ordenando Arreglo N§1\n");

seleccion(a,m);
ver(a,m);
printf("\nArreglo N_2\n");
n=numelem();
tipocap(b,n);
printf("\nArreglo N_2:\n");
ver(b,n);
printf("\nOrdenando Arreglo N§2\n");
seleccion(b,n);
ver(b,n);
printf("\nMezclando...");
mezc(a,b,c,m,n);
printf("\nArreglos Mezclados.");
printf("\nOrdenado por el Metodo de Mezcla.\n");
k=m+n;
ver(c,k);
break;
case 's':
case 'S':
salir=1;
break;
default:
printf("Opcion No Valida.");

break;
  }
 }while(salir!=1);



}

//Funciones de Prototipos.
void tipocap(int a[],int n){
  switch(mcap()){
case 1:
captura(a,n);
break;
case 2:
caleat(a,n);
break;
  }
}

void capinsercion(int a[],int n){
  int i;
  for(i=0;i<n;i++){
  a[i]=20000;
  }
  for(i=0; i<n; i++){
  printf("Elemento %d: ", i+1);
  scanf("%d",& a[i]);
  insercion(a,n);
  }
}
char menu(){
  char opc;

  printf("\nMenu de Metodos de Ordenamiento.\n\n");
  printf("a) Burbuja Simple.\nb) Burbuja Mejorada.\n");
  printf("c) Insercion.\nd) Seleccion.\ne) Shell.\n");
  printf("f) Mezcla.\ns) Salir.\n\nMetodo a Utilizar: ");
  std::cout << "Digite la opcion\n";
    std::cin>>opc;
 
  return(opc);
}

int mcap(){
  int cap;
  printf("Modo de Captura.\n\n");
  printf("1) Manual.\n2) Aleatoria.\n");
  printf("\nCaptura de forma: ");
  std::cin>>cap;
  return(cap);
}

int numelem(){
  long double elems;
  printf("Numero de elementos: ");
   elems=10;
  return(elems);
}

void captura(int a[],int n){
  int i;
  for(i=0;i<n;i++){
  printf("%d: ",i+1);
  //scanf("%d", &a[i]);
  std::cin>>a[i];
  }
}

void caleat(int a[], int n){
  int i;
   for(i=0;i<n;i++){
  a[i]=(rand()%100);
  }
}

void ver(int a[], int n){
  int i;
  for(i=0;i<n;i++){
  printf(" %d: %d\t",i+1, a[i]);
  }
  ;
}

void burbuja(int a[],int n){
  int i,j,k=0,aux;
  printf("\n");
  for(i=0;i<=n;i++){

  printf("\nPasada N #%d)\t",k);
  k++;
  for(j=0;j<n-i;j++){
  if(a[j]>a[j+1]){
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
  printf("\n");
  ver(a,n);
  }
  }
   printf("\n");
 
}

void burbujam(int a[],int n){
  int i,j=0,band=1,aux;
  while(j<n && band==1){
band=0;
for(i=0;i<n;i++){
    if(a[i]>a[i+1]){
       aux=a[i];
       a[i]=a[i+1];
       a[i+1]=aux;
       band=1;
       }
}
printf("\nPasada N§%d\n",j);
ver(a,n);
j++;
  }
}

void insercion(int a[],int n){
  int  i,j,aux;
  for(i=1; i<n; i++){
      j=i;
      aux=a[i];
      while(j>0 && aux<a[j-1]){
    a[j]=a[j-1];
    j--;
}
     a[j]=aux;

   }
  printf("Los Elementos son:\n ");
  for(j=0; j<n; j++)
      printf("%d\n ",a[j]);

}



void seleccion(int a[],int n){
int i=0,j=0,x=0,im,aux;
for(i=0;i<n-1;i++){
    x++;
    im=i;
  for(j=i+1;j<n;j++){
if(a[j]<a[im]){
   im=j;
}
    }
aux=a[i];
a[i]=a[im];
a[im]=aux;

printf("Pasada N§%d:\n",x);
ver(a,n);
}
}

void shell(int a[],int n){
  int inter=(n/2),x=0,i=0,j=0,k=0,aux;
  while(inter>0){
for(i=inter;i<n;i++){
    x++;
    j=i-inter;
    while(j>=0){
  k=j+inter;
  if(a[j]<=a[k]){
     j--;
     }
   else{
    aux=a[j];
    a[j]=a[k];
    a[k]=aux;
j=j-inter;
   }
    }
    printf("Pasada N§%d:\n",x);
    ver(a,n);

}
inter=inter/2;
  }
}

void mezc(int x[],int y[],int z[],int m,int n){
int i=0,j=0,k=0;
while((i<=m)&&(j<n)){
  if(x[i]<=y[j]){
z[k]=x[i];
i++;
}
  else{
   z[k]=y[j];
   j++;
  }
  k++;
}
if(i!=m){
   do{
  z[k]=x[i];
  k++;
  i++;
} while(i<=m);
}
else {
   do{
  z[k]=y[j];
  k++;
  j++;
} while(j<=n);

}
}



COMPILADOR Replit.it    




#include <iostream> using namespace std; #include <iostream> using namespace std; #include <iostream> using namespace std; #include <stdio.h> #include <stdlib.h> #include <ctime> #define MAX 100 #include <string> //Prototipos. void burbuja(int a[],int n); void burbujam(int a[],int n); void mezc(int a[],int b[],int c[],int m,int n); void insercion(int a[],int n); void seleccion(int a[],int n); void shell(int a[],int n); int numelem(); void tipocap(int a[],int n); void captura(int a[],int n); void capinsercion(int a[],int n); void caleat(int a[],int n); void ver(int a[],int n); char menu(); int mcap(); int main(){ int a[MAX],b[MAX],c[MAX],n,m,k; int salir=0; do { switch(menu()){ case 'a': case 'A': n=numelem(); tipocap(a,n); printf("Su Arreglo:\t"); ver(a,n); printf("Burbuja:\t"); burbuja(a,n); printf("\tArreglo ordenado:\t"); ver(a,n); break; case 'b': case 'B': n=numelem(); tipocap(a,n); printf("Su Arreglo:\t"); ver(a,n); burbujam(a,n); printf("Burbuja Mejorado:\t"); printf("\tArreglo ordenado:\t"); ver(a,n); break; case 'c': case 'C': n=numelem(); capinsercion(a,n); printf("\n\nArreglo ordenado:"); ver(a,n); break; case 'd': case 'D': printf("\n -=SELECCION=- \n"); n=numelem(); tipocap(a,n); printf("Su Arreglo:\t"); ver(a,n); printf("\nSeleccion "); seleccion(a,n); printf("\nArreglo ordenado:\t"); ver(a,n); break; case 'e': case 'E': n=numelem(); tipocap(a,n); printf("\nSu Arreglo:\t"); ver(a,n); printf("\nOrdenamiento Shell "); shell(a,n); printf("\n\nArreglo ordenado:"); ver(a,n); break; case 'f': case 'F': printf("Arreglo N_1\n"); m=numelem(); tipocap(a,m); printf("\tArreglo N_1:\t"); ver(a,m); printf("\tOrdenando Arreglo N_1:"); seleccion(a,m); ver(a,m); printf("\nArreglo N_2:"); n=numelem(); tipocap(b,n); printf("\nArreglo N_2:"); ver(b,n); printf("\nOrdenando Arreglo N_2\n"); seleccion(b,n); ver(b,n); printf("\nMezclando..."); mezc(a,b,c,m,n); printf("\nOrdenado por el Metodo de Mezcla.\n"); k=m+n; ver(c,k); break; case 's': case 'S': salir=1; break; default: printf("Opcion No Valida."); break; } }while(salir!=1); } //Funciones de Prototipos. void tipocap(int a[],int n){ switch(mcap()){ case 1: captura(a,n); break; case 2: caleat(a,n); break; } } void capinsercion(int a[],int n){ int i; for(i=0;i<n;i++){ a[i]=66666; } for(i=0; i<n; i++){ printf("\nElemento: %d: ", i+1); std::cin>>a[i]; //scanf("%d",& a[i]); insercion(a,n); } } char menu(){ char opc; printf("\n\t\t_______________________________________"); printf("\n\n\t\t -=METODOS DE ORDENAMIENTO=- \n\n\n"); printf("\t\ta) Burbuja Simple. d) Seleccion.\n\n"); printf("\t\tb) Burbuja Mejorada. e) Shell.\n\n"); printf("\t\tc) Insercion f) Mezcla.\n\n"); printf("\t\ts) Salir.\n\n\t\tMetodo a Utilizar: "); std::cin>>opc; printf("\t\t_________________________________________\n"); return(opc); printf("\n\n"); } int mcap(){ int cap; printf("Modo de Captura.\n\n"); printf("1) Manual.\n2) Aleatoria.\n"); printf("\nCaptura de forma: "); std::cin>>cap; return(cap); } int numelem(){ long double elems; printf("Numero de elementos: "); std::cin>>elems; return(elems); } void captura(int a[],int n){ int i; for(i=0;i<n;i++){ printf("%d: ",i+1); scanf("%d", &a[i]); } } void caleat(int a[], int n){ int i; for(i=0;i<n;i++){ a[i]=(rand()%100); } } void ver(int a[], int n){ int i; for(i=0;i<n;i++){ printf(" %d\t", a[i]); } cout<<""; ; } void burbuja(int a[],int n){ int i,j,k=0,aux; printf("\n"); for(i=0;i<=n;i++){ printf("\nPasada N #%d)\t",k); k++; for(j=0;j<n-i;j++){ if(a[j]>a[j+1]){ aux=a[j]; a[j]=a[j+1]; a[j+1]=aux; } printf("\n"); ver(a,n); } } printf("\n"); } void burbujam(int a[],int n){ int i,j=0,band=1,aux; while(j<n && band==1){ band=0; for(i=0;i<n;i++){ if(a[i]>a[i+1]){ aux=a[i]; a[i]=a[i+1]; a[i+1]=aux; band=1; } } printf("\nPasada N_%d\n",j); ver(a,n); j++; } } void insercion(int a[],int n){ int i,j,aux; for(i=1; i<n; i++){ j=i; aux=a[i]; while(j>0 && aux<a[j-1]){ a[j]=a[j-1]; j--; } a[j]=aux; } printf("Los Elementos son: "); for(j=0; j<n; j++) printf("%d\t ",a[j]); } void seleccion(int a[],int n){ int i=0,j=0,x=0,im,aux; for(i=0;i<n-1;i++){ x++; im=i; for(j=i+1;j<n;j++){ if(a[j]<a[im]){ im=j; } } aux=a[i]; a[i]=a[im]; a[im]=aux; printf("\nPasada N_%d:\t",x); ver(a,n); } } void shell(int a[],int n){ int inter=(n/2),x=0,i=0,j=0,k=0,aux; while(inter>0){ for(i=inter;i<n;i++){ x++; j=i-inter; while(j>=0){ k=j+inter; if(a[j]<=a[k]){ j--; } else{ aux=a[j]; a[j]=a[k]; a[k]=aux; j=j-inter; } } printf("\nPasada N_%d:\t",x); ver(a,n); } inter=inter/2; } } void mezc(int x[],int y[],int z[],int m,int n){ int i=0,j=0,k=0; while((i<=m)&&(j<n)){ if(x[i]<=y[j]){ z[k]=x[i]; i++; } else{ z[k]=y[j]; j++; } k++; } if(i!=m){ do{ z[k]=x[i]; k++; i++; } while(i<=m); } else { do{ z[k]=y[j]; k++; j++; } while(j<=n); } }

No hay comentarios:

Publicar un comentario