GatoBooster

Lab Mod 3

Oct 14th, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.57 KB | None | 0 0
  1. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  2. LAB N°1
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. unsigned int persistenciaMultiplicativa (unsigned long long);
  7. int main() {
  8.     //SE LEE EL NUMERO
  9.     unsigned long long numero;
  10.     scanf("%llu",&numero);
  11.     //SE IMPRIME SU PERSISTENCIA MULTIPLICATIVA
  12.     printf("%u\n",persistenciaMultiplicativa(numero));
  13.     return 0;
  14. }
  15.  
  16. unsigned int cont = 0; //Declaro un cont global para poder usar recursividad en la funcion
  17.  
  18. unsigned int persistenciaMultiplicativa (unsigned long long num){
  19.    
  20.     unsigned long long aux=num,producto=1;
  21.    
  22.     if(num >= 10){ //En caso de que el numero sea menor que 10 no se deben hacer los calculos
  23.         do{
  24.             producto *= aux%10;
  25.             aux = aux/10;
  26.             //printf("dig: %llu\n",producto);    
  27.         }while(aux != 0);
  28.        
  29.         cont++;//El cont aumenta acá, ya que aunque el num sea < 10, ya se le aplicó la multiplicación
  30.        
  31.         if(producto >= 10){//En caso de que no aun no sea menor que 10 se debe aplicar recursividad para saber
  32.            
  33.             num = producto;//si el nuevo numero cumple la condicion de ser < 10
  34.             persistenciaMultiplicativa(num);
  35.        
  36.         }else{//Este else es para que cuando se haya hecho la * y el resultado sea menor que 10
  37.        
  38.             return cont;
  39.        
  40.         }
  41.     }
  42.    
  43.     return cont;//Si el num <10 no entra al if, por ello el cont que se imprime no debe aumentar.
  44. };
  45.  
  46. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  47. LAB N°2
  48.  
  49. //gcc 5.4.0
  50.  
  51. #include  <stdio.h>
  52. #define MAX 10001
  53.  
  54. //void Ordenar(int, int*);
  55. int Buscar(int, int*);
  56. int Validar(int);
  57.  
  58. int main(void)
  59. {
  60.     int i=0;
  61.     int num=0;
  62.     int vector[MAX];
  63.    
  64.     num = Validar(num);
  65.     num--;
  66.    
  67.     for(i = 0; i < num; i++){
  68.         scanf("%d",&vector[i]);
  69.     }
  70.    
  71.     int j = 0;
  72.     int aux=0;
  73.     for(i = 0; i < num; i++){
  74.         for(j = i+1; j < num; j++){
  75.             if(vector[i] > vector[j]){
  76.                 aux=vector[i];
  77.                 vector[i]=vector[j];
  78.                 vector[j]=aux;
  79.             }
  80.         }
  81.     }
  82.     //Ordenar(num,vector);
  83.    
  84.     printf("LA PIEZA QUE FALTA ES LA %d",Buscar(num,vector));    
  85.    
  86.     return 0;
  87. }
  88.  
  89. int Validar(int num){
  90.     do{
  91.         scanf("%d",&num);
  92.     }while(num < 2 || num > 10000);
  93.     return num;
  94. };
  95.  
  96. int Buscar(int largo, int* cadena){
  97.     int izq = 0, der = largo,aux=0;
  98.    
  99.     do{
  100.         aux = izq+der;
  101.         if(aux % 2 == 0){
  102.             aux = aux / 2;//printf("while izq: %d\n",izq);
  103.         }else{
  104.             aux = (aux / 2) + 1;//printf("While der: %d\n",der);
  105.         }
  106.         if(cadena[aux] == aux+1){
  107.             izq = aux;
  108.         }else{
  109.             der = aux;
  110.         }
  111.     }while(izq != der-1);  //printf(" izq: %d",izq);printf(" der: %d\n",der);
  112.     if(cadena[izq] != izq+1){
  113.         return izq+1;
  114.     }
  115.     return der+1;
  116. };
Advertisement
Add Comment
Please, Sign In to add comment