Pomoc u C++

Speed E398

Početnik
Poruka
37
tREBA DA URADIM NEKI program za izracunavanje prosecne ocene odeljenja a i svakog ucenika posebno.moze li neko da mi pomogne da zapocnem.radio bih vise modula pa ih posle povezivao. Hvala unapred
 
napravi jednu klasu sa spiskom predmeta ( mogu da budu staticki clanovi) i pridruzenmim integer-ima , i onda iz nje izvedes klasu odeljenje ( niz ucenika) ........
 
Ako hoccesh da bude stvarno profi mozzesh da to odradish na sledecci nachin:

Klase:

1. Predmet:
- id
- ime
- Lista ocena za taj predmet

2. Student
- id
- ime
- Lista predmeta

3. Odeljenje
- id
- ime
- Lista studenta

Naravno dodaccesh sve potrebne metode za bezbedno rukovanje tim klasama.

Pozdrav!
 
Poshto sam imao malo slobodnog vremena, uradio sam ti neki primer za to shto ti treba. Naravno klase nisu potpune pa cce biti potrebno dosta dorade...nishta krupno samo shminka.

Pozdrav!
 

Prilozi

Eh ima tu finog koda da se napise, tako da mogu da ti pomognem kada negdje zapnes, a da ti neko uradi citav program tesko, jedino ako bas nezna sta bi sa sebe.
Dakle ako si negdje zapeo, a poceo si da radis na programu, pitaj.
 
slican zadatak iz krausove zbirke:



student.h
Kod:
class Student {
  char* ime;           // Ime studenta.
  long  ind;           // Broj indeksa (ggggrrrr).
  int*  ocene;         // Niz ocena.
  int   kap, brOc;     // Kapacitet niza i broj ocena.
  Student (const Student&) {}         // Ne sme da se kopira.
  void operator= (const Student&) {}  // Ne sme da se dodeljuje.
public:
  Student (const char* iime, long iind, int kkap=40); // Konstruktor.
  ~Student () { delete [] ime; delete [] ocene; }     // Destruktor.
  const char* dohvatiIme () const { return ime; }     // Ime studenta.
  long dohvatiInd () { return ind; }                  // Broj indeksa.
  Student& promeniIme (const char* iime);  // Promena imena.
  Student& promeniInd (long iind)          // Promena broja indeksa.
    { iind = ind; return *this; }
  Student& operator+= (int ocena);         // Dodavanje ocene.
  int operator+ () { return brOc; }        // Broj ocena.
  int& operator[] (int i);                 // Dohvatanje ocene.
  int operator[] (int i) const; 
  double operator! () const;               // Srednja ocena.
};

student.cpp
Kod:
#include "student.h"
#include <cstring>
#include <cstdlib>
using namespace std;

Student::Student (const char* iime, long iind, int kkap) { // Konstruktor.
  ime = new char [strlen(iime)+1];
  strcpy (ime, iime);
  ocene = new int [kap = kkap];
  brOc = 0;
}

Student& Student::promeniIme (const char* iime) {  // Promena imena.
  delete [] ime;
  ime = new char [strlen(iime)+1];
  strcpy (ime, iime);
  return *this;
}

Student& Student::operator+= (int ocena) {         // Dodavanje ocene.
  if (brOc == kap) exit (1);
  ocene[brOc++] = ocena;
  return *this;
}

int& Student::operator[] (int i) {                 // Dohvatanje ocene.
  if (i<0 || i>brOc) exit (2);
  return ocene[i];
}

int Student::operator[] (int i) const {
  if (i<0 || i>brOc) exit (2);
  return ocene[i];
}

double Student::operator! () const {               // Srednja ocena.
  double s = 0;
  for (int i=0; i<brOc; s+=ocene[i++]);
  return brOc ? s/brOc : 0;
}


suudentt.cpp // glavni program

Kod:
#include "student.h"
#include <iostream>
using namespace std;

int main () {
  int n; cin >> n;
  Student** s = new Student* [n];
  for (int i=0; i<n; i++) {

    // Citanje podataka i stvaranje sledeceg studenta.
    char ime[50]; long ind; cin >> ime >> ind;
    Student* t = new Student (ime, ind);
    int brOc; cin >> brOc;
    for (int j=0; j<brOc; j++) { int oc; cin >> oc; *t += oc; }

    // Umetanje u uredjeni niz.
    int j;
    for (j=i; j>0 && !*s[j-1]<!*t; j--) s[j] = s[j-1];
    s[j] = t;
  }

  // Ispisivanje uredjenog niza.
  for (int i=0; i<n; i++)
    cout << s[i]->dohvatiIme() << '\t' << !*s[i] << endl;
  return 0;
}


nadam se da ce pomoci
 
Izvinite ljudi nisam ja kriv, zajebo me profa. i sad nisam siguran kako cu raditi, da li u c-u ili u c++.
To mi je mentor a program radim za neko takmicenje. sastoji se iz toga da program radi celokupnu administraciju dnevnika, znaci sve sto oni iznose na sednicama on treba da izbaci kao rezultat. ja polako radim imam jos 10 dana, pa ako neko hoce da pomogne, a ako ne mucicu se sam. hvala
 
nasao sam par zadataka u c-u koji ti mozda mogu pomoci:


1) Написати програм на језику С који:
а) Динамички додељује меморију за списак од највише 50 станара, са следећим подацима за
сваког: аутоматски генерисан редни број, име, презиме, улица и број улаза.
б) Помоћу одговарајуће функције прихвата са тастатуре податке за n (n.50) станара и формира од
ових података записе у бинарној датотеци adrese.bin.
в) Помоћу одговарајуће функције приказује на екрану редни број, име и презиме за све станаре,
на задатој адреси (улица и број). Ако задата адреса не постоји у списку, пријављује на екрану
одговарајућу поруку.


Kod:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 35
#define MAX_N 50
typedef struct {int rbr,br_ulaza;
char ime[MAX],ulica[MAX];} Stanari;
FILE *fptr;
int citaj(Stanari []);
int pretraga(void);
main()
{Stanari *st;
int n,nadjen;
st=malloc(MAX_N*sizeof(Stanari));
if (st==NULL) {printf("\nGreska u dodeli memorije\n");exit(1);}
n=citaj(st);
st=realloc(st,n*sizeof(Stanari));
fptr=fopen("adrese.bin","wb");
if(fptr==NULL) {printf("\nGgreska kod otvaranja datoteke\n");exit(1);}
fwrite(st,sizeof(Stanari),n,fptr);
fclose(fptr);
nadjen=pretraga();
if (nadjen==0) printf("\nNema stanara na toj adresi\n");
printf("\n\n");
}
int citaj(Stanari x[])
{int i;
for(i=0;i<MAX_N;i++)
{ printf("\nIme i prezime stanara (za kraj upisite stop): ");
gets(x[i].ime);
if(strcmp(x[i].ime,"stop")==0) break;
printf("\nUlica u kojoj stanuje: ");
gets(x[i].ulica);
printf("\nBroj ulaza: ");
scanf("%d",&x[i].br_ulaza);
x[i].rbr=i+1;
fflush(stdin);
}
return i;
}

int pretraga(void)
{int nadjen=0,broj;
char ul[MAX];
Stanari st;
printf("\nUnesite ulicu :");
gets(ul);
printf("\nUnesite broj: ");
scanf("%d",&broj);
fptr=fopen("adrese.bin","rb");
if(fptr==NULL) {printf("\nGgreska kod otvaranja datoteke\n");exit(1);}
printf("\nNa adresi %s %d stanuju: \n\n",ul,broj);
while(1)
{ fread(&st,sizeof(Stanari),1,fptr);
if(feof(fptr)) break;
if(st.br_ulaza==broj && strcmp(st.ulica,ul)==0)
{ nadjen=1;
printf("\n%d. %s ",st.rbr,st.ime);
}
}
fclose(fptr);
return nadjen;
}


2) Написати програм на језику С који:
a) За сваког студента (највише 100 њих) прихвата са тастатуре следеће податке: име,
број_индекса, смер, семестар, шифра предмета (највише 5 цифара) и оцена.
b) Формира датотеку ispit.bin која садржи све учитане податке.
c) Формира датотеку prosek.bin од података оних студената чија је средња оцена положених
испита бар 8.

Kod:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100
#define INT_MAX 32767
typedef struct {char ime [35],indeks [10],smer [5];
int semestar,sifra,ocena;} Student;
typedef struct {char ime [35],indeks [10],smer [5];} Student2;
int unos(Student *st);
int trazi (Student *,Student *);
main()
{Student *st;
Student2 stud;
FILE *fptr1,*fptr2;
int n,i,j;
int suma,broj_ispita,nadjen;
st=malloc(MAX*sizeof(Student));
if(st==NULL)
{ printf("\nGreska memorije\n");
exit(1); }
n=unos(st);
st=realloc(st,n*sizeof(Student));
fptr1=fopen("ispit.bin","wb");
if(fptr1==NULL)
{ printf("\nGreska kod otvaranja datoteke za upis\n");
exit(1); }

fwrite(st,sizeof(Student),n,fptr1);
fptr2=fopen("prosek.bin","wb");
if(fptr2==NULL)
{ printf("\nGreska kod otvaranja datoteke za upis\n");
exit(1); }
for(i=0;i<n;i++)
{ nadjen=trazi(st,st+i);
if(nadjen==0)
{ suma=broj_ispita=0;
for(j=i;j<n;j++)
if (strcmp((st+i)->ime,(st+j)->ime)==0 &&
strcmp((st+i)->indeks,(st+j)->indeks)==0 &&
strcmp((st+i)->smer,(st+j)->smer)==0)
{ suma=suma+(st+j)->ocena;
broj_ispita++; }
if((float)suma/broj_ispita>=8.0)
{ strcpy(stud.ime,(st+i)->ime);
strcpy(stud.smer,(st+i)->smer);
strcpy(stud.indeks,(st+i)->indeks);
fwrite(&stud,sizeof(Student2),1,fptr2);
}
}
}
free(st);
fcloseall();
}
int unos(Student *ptr)
{ int i;
for(i=0;i<MAX;i++)
{ printf("\nUnesite ime studenta (za kraj ukucajte stop): ");
gets(ptr->ime);
if (strcmp(ptr->ime,"stop")==0) break;
printf("\nUnesite broj indeksa: ");
gets(ptr->indeks);
printf("\nUnesite smer: ");
gets(ptr->smer);
printf("\nUnesite semestar: ");
scanf("%d",&ptr->semestar);
while(1)
{ printf("\nUnesite sifru predmeta: ");
scanf("%d",&ptr->sifra);
if(ptr->sifra>0 && ptr->sifra <=INT_MAX) break;
printf("\nSifra mora biti u opsegu od 1 do %d\n",INT_MAX);
}
while(1)
{ printf("\nUnesite ocenu: ");
scanf("%d",&ptr->ocena);
if(ptr->ocena>=5 && ptr->ocena<=10) break;
printf("\nOcena je izmedju 5 i 10\n");
}
ptr++;
fflush(stdin);
}
return i;
}
int trazi(Student *od1,Student *do2)
{Student *tmp;
for(tmp=od1;tmp<do2;tmp++)
if (strcmp(tmp->ime,do2->ime)==0 &&
strcmp(tmp->indeks,do2->indeks)==0 &&
strcmp(tmp->smer,do2->smer)==0) return 1;
return 0;
}

nadam se da ce pomoci
 
hvala za ovo do sad. polako radim ali ce mi trebati pomoc da sve sklopim.napravio sam da izracunava prosek ali kako da to radi za svakog ucenika posebno i kako da prebroji sve ocene koje se unose i da ih rasporedi:broj petica,cetvorki..... i da poredja djake po uspehu:broj odlicnih,vr. dobrih.......
 

Back
Top