Advertisement
Motocelium

PB 10.1

Jan 15th, 2024 (edited)
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.41 KB | None | 0 0
  1. //10.1////////////////////////////////
  2.  
  3. //main.cpp
  4. #include <stdio.h>
  5. #include "program.h"
  6.  
  7.  
  8. int main(void)
  9. {
  10.     int v[5], c;
  11.    
  12.     scanf("%d", &c);
  13.    
  14.     switch (c)
  15.     {
  16.         case 1:
  17.         {
  18.             int n;
  19.             scanf("%d", &n);
  20.             for(int i=1; i<=n; i++)
  21.             {
  22.                 citire(v, 5);
  23.                 afisare(v, 5);
  24.                 printf("\n");
  25.             }
  26.             break;
  27.         }
  28.        
  29.         case 2:
  30.         {
  31.             citire(v, 5);
  32.             printf("%d", rang(v));
  33.            
  34.             break;
  35.         }
  36.        
  37.         case 3:
  38.         {
  39.             int n, ans[5], rmax=7, r;
  40.             scanf("%d", &n);
  41.            
  42.             for(int i=1; i<=n; i++)
  43.             {
  44.                 citire(v, 5);
  45.                 r=rang(v);
  46.                
  47.                 if(r<rmax)
  48.                 {
  49.                     cop(ans, v);
  50.                     rmax=r;
  51.                 }
  52.                 if(r==rmax)
  53.                     if(comp(ans, v, r))
  54.                         cop(ans, v);
  55.             }
  56.            
  57.             afisare(ans, 5);
  58.             break;
  59.         }
  60.     }
  61. }
  62.  
  63. //program.cpp
  64. #include <stdio.h>
  65. #include "program.h"
  66.  
  67. void citire(int v[], int l)
  68. {
  69.     for(int i=0; i<l; i++)
  70.         scanf("%d", &v[i]);
  71. }
  72.  
  73. void afisare(int v[], int l)
  74. {
  75.      for(int i=0; i<l; i++)
  76.         printf("%d ", v[i]);
  77. }
  78.  
  79. int rang(int v[])
  80. {
  81.     if(rang1(v, 5))
  82.         return 1;
  83.     else if(rang2(v, 5))
  84.         return 2;
  85.     else if(rang3(v, 5))
  86.         return 3;
  87.     else if(rang4(v, 5))
  88.         return 4;
  89.     else if(rang5(v, 5))
  90.         return 5;
  91.     else if(rang6(v, 5))
  92.         return 6;
  93.     return 0;
  94. }
  95.  
  96. int rang1(int v[], int l)
  97. {
  98.     for(int i=0; i<2; i++)
  99.     {
  100.         int n=0;
  101.         for(int j=0; j<l; j++)
  102.             if(v[i]==v[j]) n++;
  103.         if(n==4)
  104.             return v[i];
  105.     }
  106.    
  107.     return 0;    
  108. }
  109.  
  110. int rang2(int v[], int l)
  111. {
  112.     if(rang3(v, l) && rang5(v, l))
  113.         return rang3(v, l);
  114.    
  115.     return 0;
  116. }
  117.  
  118. int rang3(int v[], int l)
  119. {
  120.     for(int i=0; i<3; i++)
  121.     {
  122.         int n=0;
  123.         for(int j=0; j<l; j++)
  124.             if(v[i]==v[j]) n++;
  125.         if(n==3)
  126.             return v[i];
  127.     }
  128.    
  129.     return 0;
  130. }
  131.  
  132. int rang4(int v[], int l)
  133. {
  134.     int ok1=0, ok2=0;
  135.     for(int i=0; i<4; i++)
  136.     {
  137.         int n=0;
  138.         for(int j=0; j<l; j++)
  139.             if(v[i]==v[j]) n++;
  140.         if(n==2)
  141.             if(ok1==0)
  142.                 ok1=v[i];
  143.             else if(ok1!=v[i] && ok2==0)
  144.                 ok2=v[i];
  145.     }
  146.    
  147.     if(ok1*ok2)
  148.         if(ok2>ok1)
  149.             return ok2;
  150.         else
  151.             return ok1;
  152.    
  153.     return 0;
  154.  
  155. }
  156.  
  157. int rang5(int v[], int l)
  158. {
  159.     for(int i=0; i<4; i++)
  160.     {
  161.         int n=0;
  162.         for(int j=0; j<l; j++)
  163.             if(v[i]==v[j]) n++;
  164.         if(n==2)
  165.             return v[i];
  166.     }
  167.    
  168.     return 0;
  169. }
  170.  
  171. int rang6(int v[], int l)
  172. {
  173.     int ok=1;
  174.     for(int i=0; i<4; i++)
  175.     {
  176.         int n=0;
  177.         for(int j=0; j<l; j++)
  178.             if(v[i]==v[j]) n++;
  179.         if(n!=1)
  180.             ok=0;
  181.     }
  182.    
  183.     return ok;
  184. }
  185.  
  186. int comp(int a[], int b[], int r)
  187. {
  188.     switch(r)
  189.     {
  190.         case 1:
  191.             if(rang1(a, 5)<rang1(b, 5))
  192.                 return 1;
  193.             return 0;
  194.            
  195.             break;
  196.            
  197.         case 2:
  198.             if(rang2(a, 5)<rang2(b, 5))
  199.                 return 1;
  200.             if(rang5(a, 5)<rang5(b,5))
  201.                 return 1;
  202.             return 0;
  203.            
  204.             break;
  205.            
  206.         case 3:
  207.             if(rang5(a,3)<rang5(b,3))
  208.                 return 1;
  209.             return 0;
  210.            
  211.             break;
  212.            
  213.         case 4:
  214.             int x[3], y[3];
  215.             x[0]=rang4(a, 5);
  216.             y[0]=rang4(b, 5);
  217.             if(y[0]>x[0])
  218.                 return 1;
  219.             for(int i=0; i<4; i++)
  220.             {
  221.                 int n=0;
  222.                 for(int j=0; j<5; j++)
  223.                     if(x[i]==x[j]) n++;
  224.                 if(n==2)
  225.                 {
  226.                     if(x[i]!=x[0])
  227.                     {
  228.                         x[1]=x[i];
  229.                         break;
  230.                     }
  231.                 }
  232.                 else x[2]=x[i];
  233.             }
  234.            
  235.             for(int i=0; i<4; i++)
  236.             {
  237.                 int n=0;
  238.                 for(int j=0; j<5; j++)
  239.                     if(y[i]==y[j]) n++;
  240.                 if(n==2)
  241.                 {
  242.                     if(y[i]!=y[0])
  243.                     {
  244.                         y[1]=y[i];
  245.                     }
  246.                 }
  247.                 else y[2]=y[i];
  248.             }
  249.            
  250.             if(y[1]>x[1])
  251.                 return 1;
  252.                
  253.             if(y[2]>x[2])
  254.                 return 1;
  255.                
  256.             break;
  257.            
  258.         case 5:
  259.             if(rang5(a, 5)<rang5(b, 5))
  260.                 return 1;
  261.            
  262.             int p[5], q[5];
  263.             cop(p, q);
  264.             cop(p, q);
  265.            
  266.             sort(p);
  267.             sort(q);
  268.                    
  269.             for(int i=0; i<5; i++)
  270.                 if(p[i]>q[i])
  271.                     return 0;
  272.             return 1;
  273.            
  274.             break;
  275.        
  276.         case 6:
  277.             int v[5], u[5];
  278.             cop(v, a);
  279.             cop(u, b);
  280.            
  281.             sort(v);
  282.             sort(u);
  283.                    
  284.             for(int i=0; i<5; i++)
  285.                 if(v[i]>u[i])
  286.                     return 0;
  287.             return 1;
  288.            
  289.         default:
  290.             break;
  291.     }
  292. }
  293.  
  294. void cop(int a[], int b[])
  295. {
  296.     for(int i=0; i<5; i++)
  297.         a[i]=b[i];
  298. }
  299.  
  300. void sort(int x[])
  301. {
  302.     for(int i=0; i<4; i++)
  303.                 for(int j=i+1; j<5; j++)
  304.                     if(x[i]<x[j])
  305.                     {
  306.                         int aux=x[i];
  307.                         x[i]=x[j];
  308.                         x[j]=x[i];
  309.                     }
  310. }
  311. //program.h
  312. #ifndef PROGRAM_H
  313. #define PROGRAM_H
  314.  
  315. void citire(int v[], int l);
  316. void afisare(int v[], int l);
  317. int rang(int v[]);
  318. int rang1(int v[], int l);
  319. int rang2(int v[], int l);
  320. int rang3(int v[], int l);
  321. int rang4(int v[], int l);
  322. int rang5(int v[], int l);
  323. int rang6(int v[], int l);
  324. int comp(int a[], int b[], int r);
  325. void cop(int a[], int b[]);
  326. void sort(int x[]);
  327.  
  328. #endif
Tags: PCLP1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement