Gde gresim sa logikom?

Gde gresim sa logikom?

offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3896
  • Gde živiš: Novi Sad,Klisa

Napisati C program koji za svakog studenta učitava broj indeksa i osvojene bodove sa tri zadatka A, B i C, a zatim izračunava ukupan broj osvojenih bodova i na osnovu toga pozivom funkcije ocena određuje zaključnu ocenu.
Obezbediti da se reziltati štampaju po opadajućoj vrednosti broja bodova u obliku:

1. 5653 20 30 30 80 8
2. 5555 25 25 22 72 7



#include<stdio.h> #include<conio.h> #define MAX 12 void main() {    int a[MAX][MAX], i, n, j,xu,yu, p, temp;    do    {       printf("Koliko studenata ima:");       scanf("%d", &n);       if(n > 0 && n < MAX) break;       clrscr();    }while(1);    for(i = 0; i < n; i++)    {       printf("STUDENT BROJ %d:\n\n", i+1);       for(j = 0; j < 4; j++)       {          if(j== 0) printf("Unesite broj indexa:");          if (j == 1) printf("Broj poena sa prvog testa:");          if( j == 2) printf("Broj poena sa drugog testa:");          if( j == 3) printf("Broj poena sa poslednjeg testa:");           xu = wherex();           yu = wherey();           do{             scanf("%d", &a[i][j]);             if(j > 0) {                if(a[i][j] < 100) break;             }             else break;               gotoxy(xu,yu);               printf("           ");               gotoxy(xu,yu);           } while(1);       }    }    /*Posto mi je program nonstop radio onako kako ne zelim, ukljucio sam debager     */    for(i = 0; i < n; i++);    {       for(j = 1, p; j < 4; j++)       {          p = j;          while(p < 4 && a[i][p] > a[i][p+1])p++; /*debager za vrednosti a[i][p] prikazuje neke leve brojeve, kao da vrednosti nisu upisane. Ne bi trebalo da prikaze adresu */          if(p!=4)          {             temp = a[i][p];             a[i][p] = a[i][p+1];             a[i][p+1] = temp;          }       }    }    for( i = 0; i <1; i++)       for(j = 0; j<4; j++)    printf("\n%d",a[i][j]);    getch(); }

trenutno se ne fokusiram na ona dva poslednja reda gde treba da upisujem broj ukupnih bodova i konacnu ocenu, muci me ovo najobicnije rotiranje niza u opadajucem poretku. Nikako nece da radi GUZ - Glavom U Zid
Srki, pricao sam sa igrackom, uzlaud Mr. Green



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

Ideja ti je sljedeca:
Za svakog studenta radi sljedece
- unesi broj indeksa, broj bodova sa prvog, drugog i treceg testa
- izracunaj ukupan broj osvojenih bodova
- izracunaj ocjenu

Sve ovo pamtis u matrici reda Nx6.
Zatim vrsis sortiranje. Parametar na osnovu kojeg sortiras je ukupan broj osvojenih bodova. Ovdje imas matricu gdje jedan red predstavlja jednog studenta. Posto kada treba da stavis nekog studenta ispred drugog, treba da zamjenis citav red. Na kraju samo odstampas matricu.

To bi ovako nesto izgledalo:
#include <cstdio> #include <cstdlib> #define MAX 100 int ocjena(int brBodova) {     if( 90 <= brBodova && brBodova <= 100  )         return 10;     if( 80 <= brBodova && brBodova <= 89  )         return 9;     if( 70 <= brBodova && brBodova <= 79  )         return 8;     if( 60 <= brBodova && brBodova <= 69  )         return 7;     if( 50 <= brBodova && brBodova <= 59  )         return 6;     return 0; } int main() {     int s[MAX+2][6];     int brojStudenata;     // unosimo broj studenata, <100     scanf("%d", &brojStudenata);     for(int i=0; i<brojStudenata; i++) {         // unosimo broj indeksa, bodovi sa prvog testa, bodovi sa drugog testa i bdovoi sa treceg testa         scanf("%d %d %d %d", &s[i][0], &s[i][1], &s[i][2], &s[i][3]);         s[i][4] = s[i][1] + s[i][2] + s[i][3]; // ukupan broj osvojenih bodova         s[i][5] = ocjena(s[i][4]); // racunamo ocjenu na osnovu broja bodova     }     // soritranje     // najobicniji algoritam     for(int i=0; i<brojStudenata-1; i++) {         for(int j=i+1; j<brojStudenata; j++) {             if( s[j][4] > s[i][4]  ) {                 int tmp0 = s[i][0];                 int tmp1 = s[i][1];                 int tmp2 = s[i][2];                 int tmp3 = s[i][3];                 int tmp4 = s[i][4];                 int tmp5 = s[i][5];                 s[i][0] = s[j][0];                 s[i][1] = s[j][1];                 s[i][2] = s[j][2];                 s[i][3] = s[j][3];                 s[i][4] = s[j][4];                 s[i][5] = s[j][5];                 s[j][0] = tmp0;                 s[j][1] = tmp1;                 s[j][2] = tmp2;                 s[j][3] = tmp3;                 s[j][4] = tmp4;                 s[j][5] = tmp5;             }         }     }     for(int i=0; i<brojStudenata; i++) {             printf("%d. %d %d %d %d %d %d", i+1, s[i][0],s[i][1],s[i][2],s[i][3],s[i][4],s[i][5]);         printf("\n");     }     return 0; }



offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3896
  • Gde živiš: Novi Sad,Klisa

#include <stdio.h> #include <conio.h> void main(void) {    char c[30], e, q;    unsigned br=0, i = 0, s = 0, k = 1, p;    FILE *dat;     if(((dat = fopen("Primer.txt","r")) != NULL)     {         printf("Datoteka je uspesno otvorena");         while(e = fgetc(dat)!= EOF)         {             k = 1;             while(q = fgetc(dat) != "\n")             {                 i = atoi(q);                 br = br * k + i;                 k*=10;             }             s += i;         }     printf("Suma:%d", s);     }         fclose(dat); }
Zadatak trazi da u da u datoteku primer.txt upisem brojeve, svaki u novi red, i da izracuna njihovu sumu. Medjutim meni program negde pukne, ne znam iz kog razloga. GUZ - Glavom U Zid (tek sam poceo da radim tekstualne datoteke, stoga pojma nemam da radim cak ni ovako prost zadatak)

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Napisano: 19 Mar 2013 14:29

Baci pogled na ovu temu: http://www.mycity.rs/Opste-programiranje/1-Moderne.....ani-2.html

Tu ćeš videti kako se na jednostavna način radi sa tekstualnim datotekama.

Dopuna: 19 Mar 2013 17:51

I još nešto. Kad god imaš probleme s kodom, koristi debugger. On je napravljen baš za rešavanje ovakvih problema. Postavi breakpoint na početak koda i idi liniju po liniju, pa ćeš videti gde dolazi do greške. Kad utvrdiš tačno mesto greške, lakše ćeš naći šta nije u redu.

Ko je trenutno na forumu
 

Ukupno su 532 korisnika na forumu :: 3 registrovanih, 0 sakrivenih i 529 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: branko62, ljubo70, voja64