[Pomoc] Zadatak iz C programiranja

Teme vezane za console/GUI programiranje u C/C++ jeziku
9 post(ov)a • Stranica: 1/1.

[Pomoc] Zadatak iz C programiranja

PostPostao/la Spawn » 26 svi 2014, 18:57

Trebalo bi mi ako bi neko znao kako da rijesim ovaj zadatak , jer sam imao poteskoca , pa da i vidim kako bi netko od vas mogao da mi pomogne rijesiti.

Znaci ovako ide zadatak.

Datoteka ucenici.txt sadrzi ucenicka imena i prezimena i njihove ocjene. Izraditi program koji za svakog ucenika racuna i ispisuje prosjecnu ocjenu u floatu.

Izgled datoteke:
Ime Prezime 4 3 2 1
Ime Prezime 3 5 3 4 2
Ime Prezime 5 2 3 3

Re: [Pomoc] Zadatak iz C programiranja

PostPostao/la gagiD » 27 svi 2014, 14:33

Pozdrav.

Evo nadam se da kod ispod moze pomoci. Obrati paznju na ogranicenja(najvise 10 ucenika, duzina imena/prezimena najvise 14 znakova, najvise 5 ocjena). Pa to mozes prilagodit sebi i u C-u se obicno daju vrijednosti za koje se predpostavlja da su dovljno velike za svaki slucaj. Ocjene, po kodu ispod ,su tipa char, a i char je u biti cijeli broj pa to nije tesko prebaciti( pogledaj ASCII ). A prosjek vjerujem da ti nije tesko odrediti.

cpp code
#include <stdio.h>
#include <stdlib.h>

int main() {
char ime[10][15], prezime[10][15], ocjene[10][5], i = 0 , j = 0 , k = 0 , l = 0;

FILE *fajl = NULL;
fajl = fopen("ucenici.txt" , "r");

if ( fajl == NULL ) {
printf("Doslo je do greske fajl nije otvoren");
return 0;
}
for (i=0 ; i < 10 ; i++) {
fscanf(fajl, "%s" , &ime[i][0]);
fscanf(fajl, "%s" , &prezime[i][0]);

for (k = 0 ; k < 5 ; k++) {
fscanf(fajl, "%c" , &ocjene[i][k]);
fscanf(fajl, "%c" , &ocjene[i][k]);
}
}

fclose(fajl);

for ( j = 0 ; j < i ; j++) {
printf(" %s %s " , &ime[j][0] , &prezime[j][0]);
for ( l = 0 ; l < k ; l++) {
printf(" %c " , ocjene[j][l]);
}
printf("\n");
}

return 0;
}

Re: [Pomoc] Zadatak iz C programiranja

PostPostao/la Spawn » 28 svi 2014, 14:55

Problem mi je sto sam pocetnik , pa mi je to tesko sve shvatiti , samo sam lakse zadatke sto sam radio mogao da rijesim.Znam naci prosjek na neke lakse nacine , ali ovako ne znam. I hvala za rijesavanje.

Re: [Pomoc] Zadatak iz C programiranja

PostPostao/la gagiD » 28 svi 2014, 15:03

Kod koji sam postavio cita iz ucenici.txt podatke i ispisuje ih na ekran.
Ti sad vec imas char ocjene[10][5] u kojima su ocjene ucenika tipa char( '5' != 5).

Da bi to prebacio u cijele brojeve:

cpp code
for ( i = 0; i < 10; i++) {
for ( j=0; j < 5; j++) {
ocjene[i][j] -= 48;
}
}


Npr. '1' ima ASCII vrijednost 49, pa ako oduzmemo 48, dobit cemo 1.
Tako da poslije ovoga imas ocjene cjelobrojnog tipa.

I trazis prosjek na nacin koji vec znas.

Ako imas pitanja, tu sam.

Re: [Pomoc] Zadatak iz C programiranja

PostPostao/la Spawn » 28 svi 2014, 15:22

Ne razumijem bas , ove datoteke mi bas ne idu kad se radi s brojevima koje se ucitavaju. Pokusam dosta stvari ali ne ide mi.

Re: [Pomoc] Zadatak iz C programiranja

PostPostao/la miki » 31 svi 2014, 15:13

Treba samo da uradis bas ovako kako ti je Gagi pokazao , samo oduzmes 48 od ASCII vrednosi i dobijas cistu vrednost broja koju kasnije mozes da koristis za racunanje proseka kao sto si racunao i pre :D
Izrada kompletnih C/C++ zadataka, javite se na krsticm1996@gmail.com

Re: [Pomoc] Zadatak iz C programiranja

PostPostao/la Spawn » 01 lip 2014, 19:25

Pomogao mi je on vec preko PP-a . I zahvaljujem mu ponovno :D .
EDIT: Mozete lock jer je rijeseno.

Re: [Pomoc] Zadatak iz C programiranja

PostPostao/la Armin » 01 lip 2014, 19:28

Spawn je napisao/la:Pomogao mi je on vec preko PP-a . I zahvaljujem mu ponovno :D .
EDIT: Mozete lock jer je rijeseno.


Drago mi je da si dobio svoj odgovor. :)

Tema zaključana.
"Ne žalim što su drugi pokrali moje ideje. Žalim što nemaju svoje"
Nikola Tesla

Re: [Pomoc] Zadatak iz C programiranja

PostPostao/la gagiD » 01 lip 2014, 19:31

Evo i cijeli kod, ako nekome zatreba. Opet ponavljam da se pazi na ogranicenja :)

cpp code
#include <stdio.h>
#include <stdlib.h>

int main() {
char ime[10][15], prezime[10][15], ocjene[10][5], i = 0 , j = 0 , k = 0 , l = 0 , test;
float prosjek[10];

FILE *fajl = NULL;
fajl = fopen("ucenici.txt" , "r"); // Otvaramo fajl -

if ( fajl == NULL ) { // Provjera da li smo otvorili fajl
printf("Doslo je do greske fajl nije otvoren");
return 0;
}

// Ispisivanje iz fajla
for (i=0 ; i < 10 ; i++) {
fscanf(fajl, "%s" , &ime[i][0]);
fscanf(fajl, "%s" , &prezime[i][0]);

for (k = 0 ; k < 5 ; k++) {
fscanf(fajl, "%c" , &ocjene[i][k]);
fscanf(fajl, "%c" , &ocjene[i][k]);
}
}

fclose(fajl); // Zatvaramo fajl

// Pretvaranje char-a u int u nizu ocjene
for ( i = 0 ; i < 10 ; i++) {
for ( j = 0 ; j < 5 ; j++) {
ocjene[i][j] -= 48;
}
}

// Racunanje prosjeka
for ( i = 0 ; i < 10 ; i++) {
prosjek[i] = ( ocjene[i][0] + ocjene[i][1] + ocjene[i][2] + ocjene[i][3] + ocjene[i][4] ) / 5;
}

// Ispis
for ( j = 0 ; j < 10 ; j++) {
printf(" %s %s " , &ime[j][0] , &prezime[j][0]);
for ( l = 0 ; l < 5 ; l++) {
printf(" %d " , ocjene[j][l]);
}
printf(" Prosjek: %f \n" , prosjek[j]);
}
return 0;
}


9 post(ov)a • Stranica: 1/1.

Na mreži

Trenutno korisnika/ca: / i 1 gost.