Poslao: 08 Feb 2013 20:50
|
offline
- NIx Car
- Legendarni građanin
- Més que un club
- Glavni vokal @ Harpun
- Pridružio: 27 Feb 2009
- Poruke: 3898
- 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
Srki, pricao sam sa igrackom, uzlaud
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 10 Feb 2013 14:11
|
offline
- clzola
- Građanin
- 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;
}
|
|
|
|
Poslao: 19 Mar 2013 14:05
|
offline
- NIx Car
- Legendarni građanin
- Més que un club
- Glavni vokal @ Harpun
- Pridružio: 27 Feb 2009
- Poruke: 3898
- 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. (tek sam poceo da radim tekstualne datoteke, stoga pojma nemam da radim cak ni ovako prost zadatak)
|
|
|
|
Poslao: 19 Mar 2013 17:51
|
offline
- Srki_82
- Moderator foruma
- 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.
|
|
|
|