Lagx

Cuestionario Programación #1 Módulo 2 - Vectores Estáticos

Aug 22nd, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.32 KB | None | 0 0
  1. 1)
  2. #include<stdio.h>
  3. #define MAX 10
  4.  
  5. int main (void) {
  6.  
  7.     int matriz[MAX][MAX];//matriz inicial.
  8.     int matriz_rotada[MAX][MAX];//matriz rotada.
  9.    
  10.     int m,n;// m filas, n columnas.
  11.     long long int angulo,rotaciones;//angulo leido y candidad de veces a rotar la matriz(angulo/90).
  12.     int i,j,k;//controladores.
  13.     int aux;
  14.    
  15.     scanf("%d %d",&m,&n);//lectura de filas y columnas.
  16.     scanf("%lld",&angulo);//lectura del angulo en el que debemos rotar.
  17.  
  18.     if(angulo%90==0){// solo si el angulo es multiplo de 90 entra a las intrucciones.
  19.     //-----CICLO DE LECTURA DE LA MATRIZ-------
  20.         for(i=0;i<m;i++){
  21.             for(j=0;j<n;j++){
  22.                 scanf("%d",&matriz[i][j]);
  23.             }
  24.         }  
  25.  
  26.        
  27.         if(angulo == 0){// si el angulo es 0 no debemos rotar la matriz por lo tanto la imprimimos
  28.             for(i=0;i<m;i++){
  29.                 for(j=0;j<n;j++){
  30.                     printf("%d ",matriz[i][j]);
  31.                 }
  32.                 printf("\n");// este salto de linea se realiza al finalizar la impresion de cada fila.
  33.             }
  34.         }
  35.         else{
  36.             rotaciones=angulo/90;// veces que se debe rotar la matriz.
  37.    
  38.             for(k=0;k<rotaciones;k++){// ciclo que controla las rotaciones de la matriz.
  39.                
  40.                 for(i=0;i<m;i++){ // ciclo que permite rotar la matriz en 90°.
  41.                     for(j=0;j<n;j++){
  42.                         matriz_rotada[j][i]=matriz[i][n-1-j];
  43.                     }
  44.                 }
  45.     //--------- se realiza un intercambio entre n y m-----------
  46.                 aux = n;
  47.                 n = m;
  48.                 m = aux;
  49.                
  50.                 for(i=0;i<m;i++){ // este ciclo permite actualizar la matriz inicial con la matriz rotada.
  51.                     for(j=0;j<n;j++){
  52.                         matriz[i][j]=matriz_rotada[i][j];
  53.                     }
  54.                 }
  55.                
  56.             }
  57.             for(i=0;i<m;i++){// finalmente este ciclo nos permitira imprimir la matriz ya rotada en la cantidad de veces que indica el angulo.
  58.                 for(j=0;j<n;j++){
  59.                     printf("%d ",matriz_rotada[i][j]);
  60.                 }
  61.                 printf("\n");// cada vez que se termina de imprimir la fila hace un salto de linea para seguir imprimiendo en la fila siguiente.
  62.             }
  63.         }
  64.     }
  65.     else{// esto se imprimira si el angulo no es un multiplo de 90
  66.         printf("Angulo no valido");
  67.     }
  68.     return 0;
  69. }
  70.  
  71. 2)
  72. /*
  73. Nombre: Lucas Alarcon
  74. Fecha: 05-09-2017
  75. Nombre programa: Pares de enteros K-interesantes
  76. Proposito: imprime la cantidad de pares k-interesantas de un intervalo
  77. */
  78. #include<math.h>
  79. #include<stdio.h>
  80. #include <stdlib.h>
  81.  
  82. unsigned binario (unsigned long num,unsigned long num2){ //funcion para pasar el numero a binario
  83.  
  84.     int i,j,cont,k;
  85.     unsigned vector[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  86.     unsigned vector2[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  87.    
  88.     i=15;
  89.     while(num != 0)
  90.     {  // este ciclo pasa el primer numero a binario
  91.         vector[i] = num % 2;
  92.         num = (num) / 2;
  93.         i--;
  94.     }
  95.    
  96.     j=15;
  97.     while(num2 != 0)
  98.     { // este ciclo que pasa el segundo numero a binario
  99.         vector2[j] = num2 % 2;
  100.         num2 = (num2) / 2;
  101.         j--;
  102.     }
  103.     cont=0;
  104.     for(k=15;k>=0;k--)
  105.     { //este ciclo cuenta la cantidad de digitos diferentes que tienen 2 numeros en binario
  106.         if (vector[k] != vector2[k]){
  107.             cont++;
  108.         }
  109.     }
  110.    
  111.     return cont;
  112. }
  113.  
  114. int main ()
  115. {
  116.     unsigned cont,i,x,j,n,k;
  117.     unsigned long vector[101];
  118.     unsigned long valor;
  119.    
  120.     scanf("%u %u",&n,&k); // se lee la cantidad de numeros que iran en el vector y la diferencia de bits
  121.    
  122.     for(i=0;i<n;i++) // este ciclo lee los n numeros a comprobar
  123.     {
  124.         scanf("%lu",&valor);
  125.         vector[i] = valor;
  126.     }
  127.    
  128.     cont=0;
  129.     for (j=0;j<n-1;j++){ // este ciclo compara los numeros
  130.         for(x=j+1;x<n;x++)
  131.         {
  132.             if(binario(vector[j],vector[x]) == k) // si la diferecia devuelta por la funcion es igual a k el contador aumenta
  133.             {
  134.                 cont++;
  135.             }
  136.         }
  137.     }
  138.    
  139.     printf("%u",cont); // imprime el total de conjuntos que cumplen con la diferencia k
  140.    
  141.     return 0;
  142. }
  143.  
  144. 3)
  145. /*
  146. Nombre: Lucas Alarcon
  147. Fecha: 05-09-2017
  148. Nombre programa: Juegos de azar
  149. Proposito: determina si pablo o matias gana el juego
  150. */
  151. #include <stdio.h>
  152. #define MAX 100
  153.  
  154. int main ()
  155. {
  156.     int vector[MAX];
  157.     int n,i,aux,mayor,menor,neutro; //n = cantidad de numeros que tendrá la secuencia... i = variable de control de ciclo, servirá de indice para recorrer el vector.
  158.     aux  = 0; //Tomara el valor del indice del elemento mas grande de la secuencia de manera temporal.
  159.     mayor  = 0;
  160.     menor = 0;
  161.     neutro = 0; //Pivote que nos ayudará a movernos en el eje entre (-) y (+)
  162.    
  163.     scanf("%d",&n); //lee la cantidad de numeros de la secuencia
  164.    
  165.     for ( i = 0 ; i < n ; i++ ) // ciclo que lee los numeros de la secuencia
  166.     {
  167.         scanf("%d",&vector[i]);
  168.     }
  169.    
  170.     i = 1;
  171.     vector[n] = -250;
  172.    
  173.     while (i <= n ){ //ciclo que verifica la secuencia
  174.         if (vector[i] >= vector[i-1]){
  175.             aux = i;
  176.             neutro++;
  177.         }
  178.         else{
  179.             if (neutro >= menor){
  180.                 menor = neutro;
  181.                 mayor = aux;
  182.             }
  183.             neutro = 0;
  184.         }
  185.         i++;
  186.     }
  187.    
  188.     //ciclo que verifica si pablo o matias gano
  189.     if (menor != 0)
  190.     {
  191.         printf("PABLO\n");
  192.         for (i=(mayor - menor);i<=mayor;i++) // se muestra la subsecuencia con mayor indice
  193.         {
  194.             printf("%d ",vector[i]);
  195.         }
  196.     }
  197.     else
  198.     {
  199.         printf("MATIAS");  
  200.     }
  201.    
  202.     return 0;  
  203. }
  204.  
  205. 4)
  206. /*
  207. Nombre: Lucas Alarcon
  208. Fecha: 05-09-2017
  209. Nombre programa: Juegos de azar
  210. Proposito: determina si pablo o matias gana el juego
  211. */
  212. #include <stdio.h>
  213. #define MAX 100
  214.  
  215. int main ()
  216. {
  217.     int vector[MAX];
  218.     int n,i,aux,mayor,menor,neutro; //n = cantidad de numeros que tendrá la secuencia... i = variable de control de ciclo, servirá de indice para recorrer el vector.
  219.     aux  = 0; //Tomara el valor del indice del elemento mas grande de la secuencia de manera temporal.
  220.     mayor  = 0;
  221.     menor = 0;
  222.     neutro = 0; //Pivote que nos ayudará a movernos en el eje entre (-) y (+)
  223.    
  224.     scanf("%d",&n); //lee la cantidad de numeros de la secuencia
  225.    
  226.     for ( i = 0 ; i < n ; i++ ) // ciclo que lee los numeros de la secuencia
  227.     {
  228.         scanf("%d",&vector[i]);
  229.     }
  230.    
  231.     i = 1;
  232.     vector[n] = -250;
  233.    
  234.     while (i <= n ){ //ciclo que verifica la secuencia
  235.         if (vector[i] >= vector[i-1]){
  236.             aux = i;
  237.             neutro++;
  238.         }
  239.         else{
  240.             if (neutro >= menor){
  241.                 menor = neutro;
  242.                 mayor = aux;
  243.             }
  244.             neutro = 0;
  245.         }
  246.         i++;
  247.     }
  248.    
  249.     //ciclo que verifica si pablo o matias gano
  250.     if (menor != 0)
  251.     {
  252.         printf("PABLO\n");
  253.         for (i=(mayor - menor);i<=mayor;i++) // se muestra la subsecuencia con mayor indice
  254.         {
  255.             printf("%d ",vector[i]);
  256.         }
  257.     }
  258.     else
  259.     {
  260.         printf("MATIAS");  
  261.     }
  262.    
  263.     return 0;  
  264. }
Add Comment
Please, Sign In to add comment