Glaas2

Algoritmos 19I

Sep 16th, 2019
554
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.88 KB | None | 0 0
  1. /*****************************************
  2. * Guerra Esquivel Angel - 2173038752
  3. * Algoritmos y Estructuras de Datos
  4. * Prof. Ruslan Gabbasov
  5. ******************************************/
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9.  
  10. void intercambia(int *, int *);
  11. void bubble_sort(int *, int);
  12. void selection_sort(int *, int);
  13.  
  14. int main()
  15. {
  16.     int arr[] = {14, 4, 0, 5, 12, 1, 8, 2};
  17.     int tam = sizeof(arr)/sizeof(arr[0]);
  18.  
  19.  
  20.     //bubble_sort(arr, tam);
  21.     selection_sort(arr, tam);
  22.  
  23.     for(int i=0; i<tam; ++i  )
  24.         printf("%d ", arr[i]);
  25.  
  26.     return 0;
  27. }
  28.  
  29. void intercambia(int *a, int *b)
  30. {
  31.     int aux;
  32.     aux=*a;
  33.     *a=*b;
  34.     *b=aux;
  35. }
  36.  
  37. void bubble_sort(int *a, int n)
  38. {
  39.  
  40.     for(int i=0; i<n-1 ; i++)
  41.         for(int j=0; j<n-1; j++)
  42.             if(a[j]>a[j+1])
  43.                 intercambia(&a[j], &a[j+1]);
  44.  
  45. }
  46.  
  47. void selection_sort(int *a, int n)
  48. {
  49.     int *min;
  50.  
  51.     for(int i=0; i<n;  i++)
  52.     {
  53.         min=&a[i];
  54.         for(int j=i+1; j<n; j++)
  55.             if(a[j]<*min)
  56.                 min=&a[j];
  57.  
  58.         intercambia(&a[i], min);
  59.     }
  60.  
  61. }
  62.  
  63. ////////////////////////////////// Imprimir cos
  64. #include <stdio.h>
  65. #include <math.h>
  66. #define PI 3.14926535
  67.  
  68. int main()
  69. {
  70.     float arr1[9]={0, PI*(1.0/4.0), PI*(1.0/2.0), PI*(3.0/4.0), PI, PI*(5.0/4.0), PI*(3.0/2.0), PI*(7.0/4.0), 2.0*PI};
  71.     float arr2[9];
  72.     int i=0;
  73.        
  74.     for(i=0; i<9; ++i)
  75.         arr2[i] = cos(arr1[i]);
  76.     for(i=0; i<3; ++i)
  77.     printf("cos(%f) = %f\n", arr1[i+2], arr2[i+2]);
  78.    
  79. }
  80. ////////////////////////// Tarea arr bidi
  81. #include <stdio.h>
  82. #include <stdlib.h>
  83. #include <string.h>
  84. #define N 3
  85.  
  86. int main()
  87. {
  88.     char nombre[N][15];
  89.     char apellido[N][15];
  90.  
  91.     printf("\nIngresa datos para %d personas\n", N);
  92.  
  93.  
  94.     for(int i=0; i<N; i++)
  95.     {
  96.         printf("\nIngresa el Nombre de la persona %d\n", i+1);
  97.         scanf("%s", nombre[i]);
  98.         printf("\nIngresa el Apellido de la persona %d\n", i+1);
  99.         scanf("%s", apellido[i]);
  100.     }
  101.  
  102.  
  103.     printf("\n Numero%-4s| Nombre%-4s | Apellido \n", "","");
  104.     for(int i=0; i<N; i++)
  105.     {
  106.       printf("\n %-10d| %-10s| %-10s\n", i, nombre[i], apellido[i]);
  107.     }
  108.  
  109.     return 0;
  110. }
  111.  
  112. /******************** tarea 6, matrices y punteros dobles************************/
  113. #include <stdio.h>
  114. #include <stdlib.h>
  115.  
  116. void llenar_matriz(int **, int, int);
  117. void imprimir_matriz(int **, int);
  118. void suma_columnas(int **, int *, int);
  119.  
  120. int main()
  121. {
  122.     int **M, *vect; // M es la matriz, vect es el vector donde se guardara las sumas de las columnas
  123.     int N, caso; // N es el tamanio de la matriz, caso es para llenar aleatoriamente o con unos en la diagonal
  124.     printf("Ingrese el tamanio de la  matriz (nxn): ");
  125.     scanf("%d", &N);
  126.     printf("Ingrese el tipo de llenado de la matriz\n");
  127.     printf("(1) :Matriz identidad (2) :Aleatorio : ");
  128.     scanf("%d", &caso);
  129.  
  130.  
  131.     /*Creacion del arreglo y vector*/
  132.     M=(int**)malloc(N*sizeof(int **));
  133.     for(int i=0;i<N;i++)
  134.         M[i]=(int*)malloc(N*sizeof(int*));//filas
  135.     vect=(int *)malloc(N*sizeof(int *));
  136.  
  137.     llenar_matriz(M, N, caso);
  138.    
  139.     printf("\n\n");
  140.    
  141.     imprimir_matriz(M, N);
  142.  
  143.     suma_columnas(M, vect, N);
  144.  
  145.     for(int i=0; i<N; i++)
  146.     {
  147.         printf("La suma de la columna %d es %d\n", i+1, vect[i]);
  148.     }
  149.  
  150.     for(int i=0;i<N;i++)
  151.         free(M[i]);
  152.  
  153.     free(M);
  154.  
  155.     return 0;
  156.  
  157. }
  158.  
  159. void llenar_matriz(int **M, int N, int caso)
  160. {
  161.     switch(caso)
  162.     {
  163.    
  164.     case 1: // Matriz identidad, unos en la diagonal
  165.             for (int i = 0; i < N; i++)
  166.             {
  167.             for (int j = 0; j < N; j++)
  168.                 M[i][j] = 0;
  169.             M[i][i] = 1;
  170.             }
  171.     break;
  172.  
  173.     case 2: // Matriz aleatoria, datos entre 0 y 10
  174.             for (int i = 0; i < N; i++)
  175.             for (int j = 0; j < N; j++)
  176.                 M[i][j] = rand() % (10);
  177.     break;
  178.     default:
  179.         printf("Opcion no reconocida\n");
  180.         exit(11);
  181.     }
  182. }
  183.  
  184. void imprimir_matriz(int **M, int N)
  185. {
  186.     for(int i=0;i<N;i++)
  187.     {
  188.         for(int j=0;j<N;j++)
  189.             printf("%d\t", M[i][j]);
  190.         printf("\n\n");
  191.     }
  192. }
  193.  
  194.  
  195. void suma_columnas(int **mat, int *vect, int N)
  196. {
  197.     for(int i=0; i<N; i++)
  198.     {
  199.         for(int j=0; j<N; j++)
  200.             vect[i]+=mat[j][i];
  201.     }
  202.    
  203. }
  204. /****************************************************************/
  205. /**********************TAREA 8 *******************************/
  206. #include <stdio.h>
  207. #include <stdlib.h>
  208. #include <time.h>
  209.  
  210. #define N 6
  211. #define ini 1
  212. #define fin 56
  213.  
  214. void random_num(int *);
  215. int buscar_valor(int *, int );
  216. void imprimir_arreglo(int *);
  217.  
  218. int main()
  219. {
  220.     int num[N]={};
  221.     random_num(num);
  222.     imprimir_arreglo(num);
  223.     return 0;
  224. }
  225.  
  226. void random_num(int *arr)
  227. {
  228.     srand(time(0));
  229.     for(int i=0; i<N; i++)
  230.     {
  231.         int val=ini + rand() % (fin+1 - ini);
  232.         if(buscar_valor(arr, val)==-1)
  233.             arr[i]=val;
  234.         else
  235.             i--;
  236.     }  
  237. }
  238.  
  239. int buscar_valor(int *A, int valor)
  240. {
  241.     for(int i=0; i<N; i++)
  242.     {
  243.         if(*(A+i)==valor)
  244.         {
  245.             return i;
  246.         }
  247.     }
  248.    return -1;
  249. }
  250.  
  251.  
  252. void imprimir_arreglo(int *arr)
  253. {
  254.     for(int i=0; i<N; i++)
  255.         printf("%d ", *(arr+i));
  256. }
  257. /*************************************************/
Advertisement
Add Comment
Please, Sign In to add comment