GatoBooster

MODULO 4 Cuest 1

Nov 6th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.59 KB | None | 0 0
  1. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  2. Pregunta N° 1
  3.  
  4. //gcc 5.4.0
  5.  
  6. #include  <stdio.h>
  7. #include  <stdlib.h>
  8. #define NULA -1
  9.  
  10. typedef struct cancion {
  11.      int codigo;
  12.      int totalRep;
  13. } Cancion;
  14.  
  15. int busqueda(Cancion *, int , int);
  16. void mostrar(Cancion *, int);
  17. int comparar(const void *,const void *);
  18.  
  19. int main(void)
  20. {
  21.     int cod,rep;
  22.     Cancion *vector = NULL; //vector con Info de canciones
  23.     int totalCanciones = 0; //total de canciones
  24.    
  25.     do {
  26.         scanf("%d",&cod);
  27.         if (cod == 0) break;
  28.         scanf("%d",&rep);
  29.         int posicion = busqueda(vector,totalCanciones,cod);
  30.         if (posicion == NULA) {
  31.              vector = (Cancion *) realloc (vector,sizeof(Cancion) * (totalCanciones + 1));
  32.              if (vector == NULL) return 0;
  33.              vector[totalCanciones].codigo = cod;
  34.              vector[totalCanciones].totalRep = rep;
  35.              totalCanciones++;
  36.         }
  37.         else {
  38.              vector[posicion].totalRep+=rep;  
  39.         }
  40.     } while (cod != 0);
  41.    
  42.     if (totalCanciones > 0 ) {
  43.         qsort(vector,totalCanciones,sizeof(Cancion),comparar);
  44.         mostrar(vector,totalCanciones);    
  45.     }
  46.     return 0;
  47. }
  48.  
  49.  
  50. int busqueda(Cancion *vector, int n , int clave)
  51. {
  52.        int i;
  53.        for (i = 0 ; i < n ; i++) {
  54.            if (vector[i].codigo == clave) return i;
  55.        }
  56.        return NULA;
  57. }    
  58.  
  59. void mostrar(Cancion *vector, int n)
  60. {
  61.     int i;
  62.     printf(" _______________________ ________________________\n");
  63.     printf("|    CODIGO CANCION     |  TOTAL REPRODUCCIONES  |\n");
  64.     printf("|_______________________|________________________|\n");
  65.     printf("|                       |                        |\n");
  66.     for (i = 0 ; i < n ; i++)
  67.     {
  68.         printf("| %21d | %21d  |\n",vector[i].codigo,vector[i].totalRep);
  69.     }    
  70.     printf("|_______________________|________________________|\n");
  71. }
  72.  
  73. int comparar(const void *a,const void *b){
  74.     Cancion *ptrA = (Cancion *) a;
  75.     Cancion *ptrB = (Cancion *) b;
  76.     return (ptrA->totalRep < ptrB->totalRep) ;
  77. }
  78.  
  79. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  80. Pregunta N° 2
  81.  
  82. #include <stdio.h>
  83. #include <stdlib.h>
  84.  
  85. typedef struct carton {
  86.     int numCarton; //Nº de Carton
  87.     int numerosJugados[6]; //Números Jugados en el cartón (6 exactamente)
  88.     int numAciertos; //Nº de Aciertos en el cartón
  89. } Carton;
  90.  
  91. typedef struct sorteo {
  92.     int totalCartones; //Total Cartones Jugados en el sorteo
  93.     Carton *cartonesSorteo; //cartones Jugados en el sorteo (vector dinámico)
  94.     Carton cartonGanador; //carton Ganador del Sorteo
  95. } Sorteo;
  96.  
  97. void leerDatosSorteo(Sorteo *);
  98. void procesarDatosSorteo(Sorteo *);
  99. void mostrarResultadosSorteo(Sorteo);
  100.  
  101.  
  102.  
  103. void leerDatosSorteo(Sorteo *elSorteo){
  104.    
  105.     int i, j, aux = 0;
  106.    
  107.     elSorteo->cartonesSorteo = (Carton*) malloc( sizeof(Carton) );
  108.    
  109.     scanf("%d",&elSorteo->totalCartones);
  110.    
  111.     elSorteo->cartonesSorteo = (Carton*) realloc(elSorteo->cartonesSorteo, (elSorteo->totalCartones)*sizeof(Carton));
  112.    
  113.     for(i = 0; i < elSorteo->totalCartones; i++){
  114.        
  115.         scanf("%d",&aux);
  116.         aux--;
  117.         elSorteo->cartonesSorteo[aux].numCarton = aux+1;
  118.         elSorteo->cartonesSorteo[aux].numAciertos = 0;
  119.         for(j = 0; j < 6; j++){
  120.             scanf("%d",&elSorteo->cartonesSorteo[aux].numerosJugados[j]);
  121.         }
  122.     }
  123.    
  124.     for(j = 0; j < 6; j++){
  125.             scanf("%d",&elSorteo->cartonGanador.numerosJugados[j]);
  126.     }
  127.    
  128.     /*//Printf
  129.         for(i = 0; i < elSorteo->totalCartones; i++){
  130.             printf("N° Carton: %d   ", elSorteo->cartonesSorteo[i].numCarton);
  131.             printf("N° Aciertos: %d\n", elSorteo->cartonesSorteo[i].numAciertos);
  132.            
  133.             for(j = 0; j < 6; j++){
  134.                 printf("%d ", elSorteo->cartonesSorteo[i].numerosJugados[j]);
  135.             }
  136.             printf("\n");
  137.         }
  138.     */
  139. }
  140.  
  141. void procesarDatosSorteo(Sorteo *elSorteo){  
  142.     int i, j, k;
  143.            
  144.     for(i = 0; i < 6; i++){
  145.           for(j = 0; j < elSorteo->totalCartones; j++){
  146.               /*if(elSorteo->cartonGanador.numerosJugados[i] == elSorteo->cartonesSorteo[j].numerosJugados[i]){  
  147.                   elSorteo->cartonesSorteo[j].numAciertos += 1;
  148.             }*/
  149.               for(k = 0; k < 6; k++){
  150.                   if(elSorteo->cartonGanador.numerosJugados[i] == elSorteo->cartonesSorteo[j].numerosJugados[k]){  
  151.                   elSorteo->cartonesSorteo[j].numAciertos += 1;
  152.               }
  153.            }      
  154.         }
  155.     }
  156.    
  157.     //Printf
  158.       /*for(i = 0; i < elSorteo->totalCartones; i++){
  159.             printf("N° Carton: %d   ", elSorteo->cartonesSorteo[i].numCarton);
  160.             printf("N° Aciertos: %d\n", elSorteo->cartonesSorteo[i].numAciertos);
  161.            
  162.             for(j = 0; j < 6; j++){
  163.                 printf("%d ", elSorteo->cartonesSorteo[i].numerosJugados[j]);
  164.             }
  165.             printf("\n");
  166.         }*/
  167.    
  168. }
  169.  
  170. void mostrarResultadosSorteo(Sorteo elSorteo){
  171.    
  172.     int i;
  173.      
  174.     for(i = 0; i < elSorteo.totalCartones; i++){
  175.         printf("Carton # %d obtuvo %d aciertos",(i+1),elSorteo.cartonesSorteo[i].numAciertos);
  176.         if(elSorteo.cartonesSorteo[i].numAciertos == 6){
  177.             printf("  ***CARTON GANADOR***");
  178.         }
  179.         printf("\n");
  180.     }
  181.    
  182. }
  183.  
  184. /**/
  185. int main(){
  186.     Sorteo elSorteo;
  187.     leerDatosSorteo(&elSorteo);
  188.     procesarDatosSorteo(&elSorteo);
  189.     mostrarResultadosSorteo(elSorteo);
  190.     return 0;
  191. }
  192.  
  193. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  194. Pregunta N° 3
  195.  
  196. //gcc 5.4.0
  197. #include  <stdio.h>
  198. #include  <stdlib.h>
  199.  
  200. /* Prototipo de la función de comparar */
  201. int comparar(const void *arg1, const void *arg2)
  202. {
  203.  if(*(int *)arg1 < *(int *)arg2) return -1;
  204.    else if(*(int *)arg1 > *(int *)arg2) return 1;
  205.    else return 0;
  206. }
  207.  
  208. int main(){
  209.    
  210.     long long int *vector;
  211.     long long int cont = 0, i;
  212.    
  213.     vector = (long long int*) malloc (sizeof(long long int));
  214.    
  215.     do{
  216.         if(cont > 0){
  217.             if((cont-1)%2 != 0){
  218.            
  219.             qsort(vector, cont, sizeof(vector[0]), comparar);
  220.    
  221.                
  222.             /*for(i = 0; i < cont; i++){
  223.                 for(j = i+1; j < cont; j++){
  224.                     if(vector[i] > vector[j]){
  225.                         aux = vector[i];
  226.                         vector[i] = vector[j];
  227.                         vector[j] = aux;
  228.                     }
  229.                 }
  230.             }*/
  231.             cont -= 2;    
  232.             for(i = 1; i < cont; i+=2){
  233.                 if(vector[i] != vector[i+1]){
  234.                     break;
  235.                 }
  236.             }
  237.             cont++;    
  238.             if(i != cont){
  239.                 printf("NO\n");
  240.             }else{
  241.                 for(i = 1; i < cont; i++){
  242.                     if(i%2 == 0){
  243.                         printf("%lld ",vector[i]);
  244.                     }
  245.                 }
  246.                 printf("%lld",vector[cont]);
  247.                 cont--;
  248.                 for(i = cont; i >= 1; i--){
  249.                     if(i%2 != 0){
  250.                         printf(" %lld",vector[i]);
  251.                     }
  252.                 }
  253.                 printf("\n");
  254.             }
  255.             }else{
  256.                 printf("NO\n");
  257.             }    
  258.            
  259.         }
  260.        
  261.         cont = 1;
  262.         for(i = 0; i >= 0; i++){
  263.             vector = (long long int*) realloc (vector, cont*(sizeof(long long int)));
  264.             scanf("%lld",&vector[i]);
  265.             if(vector[i] < 0){
  266.                 cont = 0;
  267.                 break;
  268.             }
  269.             if(vector[i] == 0){
  270.                 break;
  271.             }    
  272.             cont++;
  273.         }
  274.        
  275.     }while(vector[0] != 0);
  276.    
  277.     return 0;
  278. }
  279.  
  280. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  281. Pregunta N° 4
  282.  
  283.  
  284. //gcc 5.4.0
  285.  
  286. #include  <stdio.h>
  287. #include  <stdlib.h>
  288.  
  289. typedef struct Ciudad{
  290.     int dinero;
  291.     int premio;
  292. }ciudad;
  293.  
  294. int main(void){
  295.    
  296.     ciudad *vector;
  297.     int cont = 1,i ;
  298.    
  299.     vector = (ciudad*) malloc(cont*sizeof(ciudad));
  300.     if(vector == NULL){
  301.         return 0;
  302.     }
  303.    
  304.     do{
  305.         vector = (ciudad*)realloc(vector, cont*sizeof(ciudad));
  306.         if(vector == NULL){
  307.             return 0;
  308.         }
  309.         scanf("%d",&vector[cont-1].dinero);
  310.        
  311.         if(vector[cont-1].dinero == 0){
  312.             break;
  313.         }
  314.        
  315.         scanf("%d",&vector[cont-1].premio);
  316.        
  317.         cont++;
  318.        
  319.     }while(vector[cont-2].dinero != 0);
  320.    
  321.     if(cont == 1){
  322.         return 0;
  323.     }
  324.    
  325.     /*for(int i = 0; i < cont-1; i++){
  326.         printf("%d %d\n", vector[i].dinero, vector[i].premio);
  327.     }*/
  328.     for(i = 0; i < cont-2; i++){
  329.         if((vector[i].dinero != vector[i+1].dinero)||(vector[i].premio != vector[i+1].premio)){
  330.             break;
  331.         }
  332.     }
  333.     int posmayor;
  334.     if(i == cont-2){
  335.         printf("SI FUE JUSTA");
  336.     }else{
  337.         //De aqui para abajo no funca
  338.         posmayor = 0;
  339.         //Encontrar la posición del mayor
  340.         for(i = 0; i < cont-1; i++){
  341.             if(vector[posmayor].dinero <= vector[i].dinero){
  342.                 posmayor = i;
  343.             }
  344.         }
  345.         //printf("posmayor: %d\n",posmayor);
  346.        
  347.         int pospremio = 0;
  348.         //Revisar si la ciudad que puso más dinero es la que ganó más premios
  349.         for(i = 0; i < cont-2; i++){
  350.             if(vector[pospremio].premio <= vector[i].premio){//&&(vector[posmayor].dinero != vector[i].dinero)){
  351.                 //printf("%d %d\n", vector[i].dinero, vector[i].premio);
  352.                 pospremio = i;
  353.             }
  354.         }
  355.          
  356.         /*if(i == cont-1){
  357.             printf("SI FUE JUSTA");//Si la ciudad que puso más dinero es la que ganó más premios
  358.         }else{
  359.             printf("NO FUE JUSTA");//Si la ciudad que puso más dinero "NO" es la que ganó más premios
  360.         }*/
  361.         if(posmayor == pospremio){
  362.             printf("SI FUE JUSTA");//Si la ciudad que puso más dinero es la que ganó más premios
  363.         }else{
  364.             printf("NO FUE JUSTA");//Si la ciudad que puso más dinero "NO" es la que ganó más premios
  365.         }
  366.     }                
  367.     return 0;
  368. }
Advertisement
Add Comment
Please, Sign In to add comment