Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.655 pregleda

Najnovija ↓

[Zadatak] Problem sa zadatkom 17.08.2009. u 18:35 · pre 209 meseci
izmenjeno 1 put, poslednji put X Files 17.08.2009. u 18:51
  1. X Files17.08.2009. u 18:51zapis iz teksta poruke
#1
Ovo je zadatak (visual c++)
Code:

#include <stdio.h> //zaglavlje
#include <string.h>
#include <stdlib.h>
#include <iostream.h>
#include<time.h>

class vektor { //definicija klase
public:
vektor();
void show();
friend vektor operator+(vektor, vektor);
int vec[10];
};


vektor operator+ (vektor a, vektor b) //operator sabirahnja vektora
{
    vektor temp;
    for (int j=0; j<10; j++) temp.vec[j]=a.vec[j] + b.vec[j];
    return temp;

vektor::vektor(); //konstruktor
{ 
 srand ( time(NULL) );
 for (int i=0; i<10; i++)
 {
     vektor.vec[i] = rand()%10+1; //GRESKA BROJ 1 syntax error : missing ';' before '.' (DVBA PUTA U ISTOM REDU)
 }
 srand ( time(NULL) );
}


void vektor::show() //prikazuje vektor na ekranu  GRESKA BROJ 2  'show' : local function definitions are illegal
{
    cout<< "nasumicno generisani vektor-\t";
    for (int i=0; i<10; i++) cout<< vec[i];
}

void main() //kreira dva vektora pa drugi dodaje prvom.
{                                                                      //GRESKA BROJ TRI  'MAIN' : local function definitions are illegal
vektor prvi, drugi
prvi.show;
prvi=prvi=drugi
prvi.show();
}


Sve izgleda jednostavno (realno i jeste) ali mi prijavljuje GRESHKE.
Potpis
to be continued...
Re: [Zadatak] Problem sa zadatkom 17.08.2009. u 19:51 · pre 209 meseci #2
Ajmo redom:

Prvo, što se tiče korekcije tvog koda da bi samo uspeo da kompajliraš:
1. Definicija f-je operator+ nema završnu vitičastu zagradu.
2. Skloni ";" iz prvog reda definicije konstruktora.
3. U definicji konstruktora ne treba koristiti vektor.vec, već samo vec zato što iz bilo koje f-je klase vektor pristupaš direktno poljima te klase, a i nigde ne postoji instanca klase koja se zove "vektor".
4. U main f-ji, prva tri reda nisu dobra. U prvom i u trećem si zaboravio ";" na kraju reda, a u drugom pozivaš f-ju show(), zaboravio si zagrade. Dakle, kao što si uradio u 4. redu. main f-ja po Standardu treba da vraća int, a ne void, ali to je manje bitno.


Drugo:
1. Tvoja klasa nema konstruktor kopije, operator=, destruktor. To ti treba da bi se kopiranja/uništavanje obavljalo tačno onako kako treba ako budeš rešio da zameniš polje vec nečim pametnijim.
2. Polje vec bi trebalo da bude privatno, a da obezbediš javne metode za čitanje i pisanje u njega. Takođe, ograničen si na vektor dužine 10, pa razmisli o dinamičkoj alokaciji pošto je ovako tvoj vektor poprilično beskoristan.
3. operator+ treba da ima kao argumente reference na vektore (tačnije reference na konstantne vektore), a ne da budu prosleđeni po vrednosti. Unutar operatora uskladi sabiranje sa eventualnom dinamičkom alokacijom (ako rešiš), a ne samo do 10 elemenata. Vodi računa o tome da vektori mogu da budu različitih dužina.
4. Takođe, vodi računa da se vrši konverzija u srand f-ji iz time_t u unsigned int ili tako nešto.

Po želji dodaj metode za rad sa vektorom... jer je ovako inače to poprilično "gola" klasa.
Možda sam nešto izostavio, jer nisam testirao tvoj kod.
Re: [Zadatak] Problem sa zadatkom 20.08.2009. u 12:35 · pre 209 meseci #4
Caos,
spremam C++ i nasla sam ovaj tvoj zadatak pa ako nije postavi verziju koja radi-mislim da bi mi to pomoglo.
Veliki pozdrav od Kragujevcanke
:-)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme