C programs

Wednesday, December 21, 2005

 

Ocena studenta na osnovu tri kolokvijuma

  1. /**********************************************************************
  2. *  Napisati C program koji za svakog studenta ucitava broj indexa i osvojene bodove za
  3. *  tri zadatka A B i C, a zatim izracunava ukupan broj osvojenih bodova i na osnovu tog
  4. *  pozivom funkcije odredjuje zakljcnu ocenu.
  5. *
  6. *  Obezbediti da se rezultati stampaju u po opadajucoj vrednosti broja bodova u obliku:
  7. *
  8. *  1.  11541  21  54  32  8
  9. *  2.  11335  62  32  48  10
  10. *
  11. *  maximalan broj bodova po zadacima je 30, 30 i 40. Ocena se formiara po pravilu:
  12. *  0-54 - 5
  13. *  55-64 - 6
  14. *  65-74 - 7
  15. *  75-84 - 8
  16. *  85-94 - 9
  17. *  95-100 - 10
  18. **********************************************************************/
  19.  
  20. #include <stdio.h>
  21. #define MAX_NIZ 1000
  22.  
  23. /******************************************
  24. *
  25. *  Prototip funkcije
  26. *
  27. ******************************************/
  28. int ocena (int);
  29.  
  30.  
  31. main () {
  32.  
  33.     /*******************************************************************
  34.     *
  35.     *      Inicijalizacija promenljivih
  36.     *  stud je matrica u kojo se cuvaju brojevi indexa i bodovi svakog studenta
  37.     *  i, j, k su brojaci za petlje
  38.     *  n je broj studenata
  39.     *  pom sluzi za menjanje vrednosti prilikom sortiranja
  40.     *  again je promenljiva za ponavaljanje programa ako korisnik to zeli
  41.     *
  42.     *******************************************************************/
  43.     int stud[MAX_NIZ][6], i, j, n, pom, k;
  44.     char again='y';
  45.    
  46.  
  47.     while (again=='y') {
  48.             /******************************
  49.             *
  50.             *  Inicijalizacija matrice
  51.             *
  52.             *****************************/
  53.             for (i=0; i<MAX_NIZ; i++) for (j=0; j<4; stud[i][j++] = 0) ;
  54.            
  55.             /*****************************
  56.             *
  57.             *  Uvodna konverzavija
  58.             *
  59.             ******************************/
  60.             printf("Program za racunanje ocene studenata na osnovu bodova iz 3 testa\n");
  61.            
  62.             /****************************
  63.             *
  64.             *  Unos broja studenata
  65.             *
  66.             ****************************/
  67.             printf("\n\tZa koliko studenta zelite da racunate ocenu? ");
  68.             scanf("%d", &n);
  69.             while (n<=0 || n>MAX_NIZ) {
  70.                 printf("Broj je van opsega! Za koliko studenata zelite da racunate ocenu? ");
  71.                 scanf("%d", &n);
  72.                 }
  73.                
  74.                
  75.             /***************************
  76.             *
  77.             *  Unos matrice sa podacima
  78.             *
  79.             ***************************/
  80.             /***************************
  81.             *
  82.             *  0 - broj indexa
  83.             *  1 - broj bodova iz testa A
  84.             *  2 - broj bodova iz testa B
  85.             *  3 - broj bodova iz testa C
  86.             *  4 - ukupan broj bodova
  87.             *  5 - ocena
  88.             *
  89.             ***************************/
  90.             for (i=0; i<n; i++) {
  91.            
  92.                 /**********************************************
  93.                 *
  94.                 *  Unsos brojeva indexa
  95.                 *
  96.                 **********************************************/
  97.                 printf("\tUnesite broj indexa studenta za %d. studenta : ", i+1);
  98.                 scanf("%d", &stud[i][0]);
  99.                
  100.                 /*********************************************
  101.                 *
  102.                 *  Unos bodova iz prvog testa
  103.                 *
  104.                 **********************************************/
  105.                 printf("\tUnesite broj bodova iz testa A za %d. studenta : ", i+1);
  106.                 scanf("%d", &stud[i][1]);
  107.                 while (stud[i][1]<0 || stud[i][1]>30) {
  108.                     printf("\t\tBroj bodova je izvan osega\n\tUnesite broj bodova iz testa A za %d. studenta : ", i+1);
  109.                     scanf("%d", &stud[i][1]);
  110.                     }
  111.                    
  112.                 /**********************************************
  113.                 *
  114.                 *  Unos bodova iz drugog testa
  115.                 *
  116.                 **********************************************/
  117.                 printf("\tUnesite broj bodova iz testa B za %d. studenta : ", i+1);
  118.                 scanf("%d", &stud[i][2]);
  119.                 while (stud[i][2]<0 || stud[i][2]>30) {
  120.                     printf("\t\tBroj bodova je izvan osega\n\tUnesite broj bodova iz testa B za %d. studenta : ", i+1);
  121.                     scanf("%d", &stud[i][2]);
  122.                     }
  123.                    
  124.                 /**********************************************
  125.                 *
  126.                 *  Unos bodova iz treceg testa
  127.                 *
  128.                 **********************************************/
  129.                 printf("\tUnesite broj bodova iz testa C za %d. studenta : ", i+1);
  130.                 scanf("%d", &stud[i][3]);
  131.                 while (stud[i][3]<0 || stud[i][3]>40) {
  132.                     printf("\t\tBroj bodova je izvan osega\n\tUnesite broj bodova iz testa C za %d. studenta : ", i+1);
  133.                     scanf("%d", &stud[i][3]);
  134.                     }
  135.                
  136.                 printf("\n\n");
  137.                
  138.                 /***************************************
  139.                 *
  140.                 *  Racunanje ukupnog broja bodova
  141.                 *
  142.                 ***************************************/
  143.                 stud[i][4] = stud[i][1] + stud[i][2] + stud[i][3];
  144.                
  145.                 /**************************************
  146.                 *
  147.                 *  Racunanje ocene pomocu funkcije ocena
  148.                 *
  149.                 ***************************************/
  150.                 stud[i][5] = ocena(stud[i][4]);
  151.                
  152.             }
  153.  
  154.            
  155.             /**************************************
  156.             *
  157.             *  Sortiranje matrice na osnovu broja bodova
  158.             *
  159.             **************************************/
  160.             for (i=0; i<n-1; i++) {
  161.                 for (j=i; j<n; j++) {
  162.                     if (stud[j][4]>stud[i][4]) {
  163.                         for (k=0; k<6; k++) {
  164.  
  165.                             pom = stud[i][k];
  166.                             stud[i][k] = stud[j][k];
  167.                             stud[j][k] = pom;
  168.                            
  169.                         }         
  170.                     }      
  171.                 }   
  172.             }
  173.            
  174.             /************************************
  175.             *
  176.             *  Ispis rezultata
  177.             *
  178.             ************************************/
  179.             printf("\n\tBodovna lista: \n");
  180.             printf("    Red.br     Br. indexa   Test A   Test B   Test C   Ukupno   Ocena\n");
  181.             for (i=0; i<n; i++) {
  182.                 printf("%8d.%14d%9d%9d%9d%9d%8d\n", i+1, stud[i][0], stud[i][1], stud[i][2], stud[i][3], stud[i][4], stud[i][5])
  183.            
  184.            
  185.             }
  186.             /************************************************
  187.             *
  188.             *  Provera da li korinik zeli da ponovi program
  189.             *
  190.             ************************************************/
  191.             printf("\nDa li zelite da ponovite program? (y/n) ");
  192.             scanf("%c", &again);
  193.             scanf("%c", &again);
  194.             while (again!='y' && again !='n') {
  195.                 printf("Pogresan unos! Da li zelite da ponovite program? (y/n) ");
  196.                 scanf("%c", &again);
  197.                 scanf("%c", &again);
  198.                 }
  199.            
  200.     }
  201.     /*************************************
  202.     *
  203.     *  Kraj programa
  204.     *
  205.     *************************************/
  206.     printf("\n\n***KRAJ PROGRAMA***\n\n\n");
  207.    
  208. }
  209.  
  210. /************************************************
  211. *
  212. *  funkcija za racunanje ocene
  213. *
  214. ************************************************/
  215. int ocena (int bodovi) {
  216.     /**************************************************************
  217.     *
  218.     *      Definisanje lokalnih promenljivih
  219.     *  o je ocena na onovu broja bodova (to je vrednost koju funkcija vraca)
  220.     *
  221.     **************************************************************/
  222.     int o=0;
  223.     switch (bodovi) {
  224.         case 55: case 56: case 57: case 58: case 59: case 60: case 61: case 62:
  225.         case 63: case 64: o = 6; break;
  226.         case 65: case 66: case 67: case 68: case 69: case 70: case 71: case 72:
  227.         case 73: case 74: o = 7; break;
  228.         case 75: case 76: case 77: case 78: case 79: case 80: case 81: case 82:
  229.         case 83: case 84: o = 8; break;
  230.         case 85: case 86: case 87: case 88: case 89: case 90: case 91: case 92:
  231.         case 93: case 94: o = 9; break;
  232.         case 95: case 96: case 97: case 98: case 99: case 100: o = 10; break;
  233.         default : o = 5; break;
  234.            
  235.         }
  236.        
  237.    
  238.     return o;
  239.    
  240.     }
  241.  

Comments: Post a Comment



<< Home

Archives

November 2005   December 2005   January 2006  

This page is powered by Blogger. Isn't yours?