Advertisement
Lagx

Cuestionario de Programación #3 - Módulo 2 - Matrices

Sep 4th, 2017
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.24 KB | None | 0 0
  1. 1)
  2. /*
  3. Nombre: Lucas Alarcon
  4. Fecha: 05-09-2017
  5. Nombre programa: Bus ticket
  6. Proposito: comprueba si la cadena incluye 2 letras diferentes y estas se encuentran alternadas
  7. */
  8. #include <stdio.h>
  9. #include <string.h>
  10. #define MAX 101
  11.  
  12. int main()
  13. {
  14.     int n,i,j,largo,flag;
  15.     char boleto[MAX];
  16.    
  17.     scanf("%d",&n); //lectura de la cantidad de tickets
  18.    
  19.     for(i=0;i<n;i++) // dentro de este ciclo se lee y determina si el boleto cumple las condiciones
  20.     {
  21.         flag=1;
  22.         strcpy(boleto,""); //se inicializa la cadena
  23.        
  24.         scanf("%s",boleto); //se lee el codigo
  25.         getchar();
  26.        
  27.         largo = strlen(boleto); // calcula el largo del codigo
  28.        
  29.         for(j=0;j<largo-2;j=j+1) // recorre el codigo y compruba si cumple las codiciones
  30.         {
  31.             if((boleto[j] == boleto[j+1]) || (boleto[j] != boleto[j+2])) //si las letras no estan alternadas cambia la variable
  32.             {
  33.                 flag=0;
  34.             }
  35.         }  
  36.        
  37.         if((flag == 1) && (largo % 2 == 0)) //si el codigo cumple las condiciones se imprime SI
  38.         {
  39.             printf("SI\n");
  40.         }
  41.         else
  42.         {
  43.             printf("NO\n"); //si el codigo no cumple las condiciones se imprime NO
  44.         }
  45.     }
  46.    
  47.     return 0;
  48. }
  49.  
  50. 2)
  51. /*
  52. Nombre: Lucas Alarcon
  53. Fecha: 05-09-2017
  54. Nombre programa: Culpable
  55. Proposito: compara que secuencia tiene la mayor similitud
  56. */
  57. #include <stdio.h>
  58. #define MAXCOL 20
  59. #define MAXFIL 10
  60. #define MAXNAME 51
  61.  
  62. int main()
  63. {
  64.     int n,i,j,mayor,cont;
  65.     char nombres[MAXFIL][MAXNAME];
  66.     int matriz[MAXFIL][MAXCOL];
  67.     int vector[MAXCOL];
  68.     int porcentaje[MAXFIL];
  69.    
  70.     do{ // valida que la cantida de sospechosos sea menor o igual a 10
  71.         scanf("%d",&n);
  72.         if(n<3) // si hay menos de 3 sospechosos termina el programa
  73.         {
  74.             printf("No hay suficientes sospechosos");
  75.             return 0;
  76.         }
  77.     }while(n>10);
  78.    
  79.     getchar(); // elimina el enter de la lectura de n
  80.    
  81.     for(i=0;i<n;i++) // ciclo que lee los nombres y adn de los sospechosos y los guarda
  82.     {
  83.         scanf("%[^\n]s",nombres[i]);
  84.        
  85.         for(j=0;j<MAXCOL;j++)
  86.         {
  87.             scanf("%d",&matriz[i][j]);
  88.             getchar();
  89.         }
  90.     }
  91.    
  92.     for(i=0;i<MAXCOL;i++) // lee la secuencia de adn encontrada en el sitio del suceso
  93.     {
  94.         scanf("%d",&vector[i]);
  95.         getchar();
  96.     }
  97.    
  98.     for(i=0;i<n;i++) // calcula el porcentaje de similitud del adn
  99.     {
  100.         cont = 0;
  101.         for(j=0;j<MAXCOL;j++) // ciclo que ve cuantos digitos del sospechoso son iguales a los de la cadena
  102.         {
  103.             if(matriz[i][j] == vector[j])
  104.             {
  105.                 cont++; // va guardando cantidad de digitos iguales
  106.             }
  107.         }
  108.         porcentaje[i] = (cont * 100) / 20;
  109.     }
  110.    
  111.     mayor = porcentaje[0];
  112.    
  113.     for(i=1;i<n;i++) // ciclo que encuentra la similitud mayor
  114.     {
  115.         if(porcentaje[i] > mayor)
  116.         {
  117.             mayor = porcentaje[i];
  118.         }
  119.     }
  120.    
  121.     for(i=0;i<n;i++) // ciclo que busca la posicion de la similitud mayor e imprime el o los culpables
  122.     {
  123.         if(porcentaje[i] == mayor)
  124.         {
  125.             printf("El culpable es %s con una similitud de %d%%\n",nombres[i],mayor);
  126.         }
  127.     }
  128.    
  129.     return 0;
  130. }
  131.  
  132. 3)
  133. /*
  134. Nombre: Lucas Alarcon
  135. Fecha: 05-09-2017
  136. Nombre programa: Rotar matriz
  137. Proposito: rota una matriz por el angulo que se indica
  138. */
  139. #include<stdio.h>
  140. #define MAX 10
  141.  
  142. int main ()
  143. {
  144.     int n,m,i,j,k,aux;
  145.     long long int ang,rot;
  146.    
  147.     int matriz[MAX][MAX];
  148.     int matriz_rot[MAX][MAX];
  149.    
  150.     scanf("%d%d",&m,&n); // se lee las filas y columnas
  151.     scanf("%lld",&ang); // se lee el angulo en el que se debe rotar
  152.  
  153.     if(ang % 90 == 0) // si el angulo es multiplo de 90 se ejecuta la rotacion de la matriz
  154.     {
  155.         for(i=0;i<m;i++) // se lee la matriz
  156.         {
  157.             for(j=0;j<n;j++)
  158.             {
  159.                 scanf("%d",&matriz[i][j]);
  160.             }
  161.         }  
  162.  
  163.        
  164.         if(ang == 0) // si el angulo es 0 no se debe rotar la matriz
  165.         {
  166.             for(i=0;i<m;i++)
  167.             {
  168.                 for(j=0;j<n;j++)
  169.                 {
  170.                     printf("%d ",matriz[i][j]);
  171.                 }
  172.                 printf("\n");
  173.             }
  174.         }
  175.         else
  176.         {
  177.             rot = ang / 90; // numero de rotaciones
  178.    
  179.             for(k=0;k<rot;k++)// ciclo que controla las rotaciones de la matriz
  180.             {
  181.                 for(i=0;i<m;i++)// ciclo que rota la matriz en 90°
  182.                 {
  183.                     for(j=0;j<n;j++)
  184.                     {
  185.                         matriz_rot[j][i]=matriz[i][n-1-j];
  186.                     }
  187.                 }
  188.  
  189.                 aux = n;
  190.                 n = m;
  191.                 m = aux;
  192.                
  193.                 for(i=0;i<m;i++) // se copia la matriz rotada en la matriz original
  194.                 {
  195.                     for(j=0;j<n;j++)
  196.                     {
  197.                         matriz[i][j]=matriz_rot[i][j];
  198.                     }
  199.                 }
  200.             }
  201.            
  202.             for(i=0;i<m;i++) // este ciclo imprime la matriz rotada
  203.             {
  204.                 for(j=0;j<n;j++)
  205.                 {
  206.                     printf("%d ",matriz_rot[i][j]);
  207.                 }
  208.                 printf("\n");
  209.             }
  210.         }
  211.     }
  212.     else // si el angulo no es multiplo de 90 se imprime "angulo no valido" y termina el programa
  213.     {
  214.         printf("Angulo no valido");
  215.     }
  216.    
  217.     return 0;
  218. }
  219.  
  220. 4)
  221. /*
  222. Nombre: Lucas Alarcon
  223. Fecha: 05-09-2017
  224. Nombre programa: Sudoku
  225. Proposito: valida si un sudoku esta logrado, no logrado o incompleto
  226. */
  227. #include <stdio.h>
  228. #include <string.h>
  229. #define MAX 26
  230.  
  231. int main()
  232. {
  233.     int i,j,k,cont_cero,cont;
  234.     char nombre[MAX];
  235.     int matriz[9][9];
  236.    
  237.     cont_cero = 0;
  238.     cont = 0;
  239.    
  240.     scanf("%[^\n]s",nombre);  // se lee el nombre de la persona
  241.    
  242.     for(i=0;i<9;i++)  // este ciclo lee el sudoku
  243.     {
  244.         for(j=0;j<9;j++)
  245.         {
  246.             scanf("%d",&matriz[i][j]);
  247.             if(matriz[i][j] == 0)  // si se encuentra un cero dentro de la matriz cambia la variable
  248.             {
  249.                 cont_cero = 1;
  250.             }
  251.         }
  252.     }
  253.    
  254.     if(cont_cero == 1)  // se encontro un cero en la matriz se imprime el resultado
  255.     {
  256.         printf("%s: No finalizado",nombre);
  257.     }
  258.     else  //si no se encontro un cero el programa continua
  259.     {
  260.         //este ciclo recorre cada fila de la matriz y busca si se repite un numero
  261.         for(i=0;i<9;i++)
  262.         {
  263.             for(j=0;j<8;j++)
  264.             {
  265.                 for(k=j+1;k<9;k++)
  266.                 {
  267.                     if(matriz[i][j] == matriz[i][k]) // si se repite un numero aumenta el contador y se termina el ciclo
  268.                     {
  269.                         cont++;
  270.                         break;
  271.                     }
  272.                 }
  273.             }
  274.         }
  275.        
  276.         //este ciclo recorre cada columna de la matriz y busca si se repite un numero
  277.         for(j=0;j<9;j++)
  278.         {
  279.             for(i=0;i<8;i++)
  280.             {
  281.                 for(k=i+1;k<9;k++)
  282.                 {
  283.                     if(matriz[i][j] == matriz[k][j]) // si se repite un numero aumenta el contador y se termina el ciclo
  284.                     {
  285.                         cont++;
  286.                         break;
  287.                     }
  288.                 }
  289.             }
  290.         }
  291.        
  292.         if (cont == 0)  // si no se repitio ningun numero en la misma fila o columna imprime logrado
  293.         {
  294.             printf("%s: Logrado",nombre);
  295.         }
  296.         else if (cont != 0)  // si se repitio algun numero imprime no logrado
  297.         {
  298.             printf("%s: No logrado",nombre);
  299.         }
  300.     }
  301.    
  302.     return 0;
  303. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement