C/C++

Razor

u jelly?
Член од
26 јануари 2007
Мислења
2.544
Поени од реакции
168
Значи вака за проект ми треба овоа програмче еве го кодот почнат ама ми дава грешка кај внесувањето на податоци кај датотеката. па ајде на помош се е добредојдено.

Цитат:
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;

struct Podatoci //definiranje na struktura so ime Podatoci
{ string Ime; //ime na vozac
string Prezime; //prezime na vozac
string RegistarskiBroj; //registarski broj na kola
int VremeNaVlez; //vreme na vlez na parking
int DataNaVlez; //data na vlez na parking
}Parking[200]; //deklaracija na niza Parking,od tip na strukturata Podatoci

int main(){
int i,j,pomosna,k=0; //Promenlivi i pomasna koi gi koristime kaj vnes na reden broj
int HH,MM,GG,DD; //Promenlivi za validizacija na vreme i data na vlez
bool Data=true;
int DataVlez;
int VremeVlez;
Podatoci proverka;
cout<<"*************************************************************"<<endl;

cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";

do{ //Ciklusot raboti(se vrti) se dodeka Data=false

cin>>proverka.DataNaVlez; //Datata se vnesuva i se deli na 3 promenlivi

GG=DataVlez / 10000; //Den vo mesecot-GG
MM=(DataVlez % 10000)/100; //Mesec vo godinata-MM
DD=DataVlez % 100; //Poslednite cifri od godinata-DD
//Spored kalendarot datata moze da e najmalku 011000 a najmnogu 311299
if((DataVlez <010100) || (DataVlez >311299)){
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl; //datata ne e vo baraniot opseg
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: "; //povtorno se vrsi vnes na data
Data=false; //Ovaa promenliva ja postavuvame kaj sekoe ispituvanje na data
}
else{
switch(MM) //true ako e ispolnet uslovot, a false ako ne e ispolnet
{
case 01: //otkako datata ja razdelivme vo 3 promenlivi sega ispituvame za
case 03: //site mozni kombinacii na mesecot, so pomos na switch struktura
case 05: //pri sto davame uslov deka ako mesecite (MM) koi se so po 31 den
case 07: //imaat poveke denovi od 31, znaci toj datum ne e valide
case (10-2): //na toj nacin eliminirame golem del od moznite kombinacii na datite
case 10: //brojot 8 ne e vo oktalniot sistem i zatoa se zapisuva kako (10-2)
case 12: if (GG > 31) {
cout<<"*Datata ne e pravilno vnesena obidete se povtorno* "<<endl;
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";
Data=false;} //promenlivata go kontrolira uslovot
else Data=true; //i dobiva vrednost true ili false
break; //mora da se stavi break kaj switch strukturata
case 04: //opsegot go stesnuvame so toa sto gi isfrlame i broevite
case 06: //koi ne se datum, so pomos na mesecite od po 30 dena
case (10-1): //brojot 9 ne e vo oktalniot sistem i zatoa se zapisuva kako (10-1)
case 11: if (GG > 30) {
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl;
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";
Data=false;} //kontrola na uslovot
else Data=true;
break; // Fevruari ima 29 dena vo prestapna godina (godinata se deli so 4)
case 02: if (((2000 + DD)%4 == 0) && (((2000 + DD) % 100 != 0) || ((2000 + DD) % 400 == 0)) && (GG > 29)){ //2000+DD = godinata za koja se ispituva
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl; //koga prestapnata
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: "; //godina ima poveke od 29 dena
Data=false;} //toj datum ispga od opsegot, a koga godinata ne e prestapna
else if (((2000 + DD)%4 == 0) && (((2000 + DD) % 100 != 0) || ((2000 + DD) % 400 == 0)) && (GG > 28)){ //site datumi na koi ima poveke od
cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl; //28 denovi, isto taka
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: "; //ispagaat i ne se dati
Data=false;} //otkako gi isfrlivme datite sto ne se mozni
else Data=true; //tie sto ostanuvaat se validni datumi
break;
default: {cout<<"*Datata ne e pravilno vnesena obidete se povtorno*"<<endl;
cout<<"Broj na kola na parking*****Data na vlez: Vreme na vlez: ";
Data=false;}; //site drugi datumi koi ne pocnuvaat od 01-12
break; //ne se validni datumi i DataMoze=false
}} //koga uslovot ne e ispolnet DataMoze=false (0), a datata postojano se vnesuva
}while (!(Data)); //koga uslovot =1, pa uslovot za ciklus izgleda !(Data)
if (Data==true) //koga uslovot =1, ciklusot prestanuva i se vrsi vnesuvanje na podatoci za sekoe vozilo posebno

cout<<"*************************************************************"<<endl;

for (i=0; i<=3; i++){
cout<<"Vnesi gi podatocite za "<<i+1<<" -to vozilo: "<<endl; //voved vo programata
cout<<"*************************************************************"<<endl; //pravenje tabela


// vnesuvanje na imeto na sopstvenikot Parking
cout<<"Vozilo["<<i+1<<"] -- Ime na sopstvenikot: ";
do{ //vleguvame vo ciklus za da ako ne e ispolnet dadeniot uslov za validacija za ime,
cin>> Parking.Ime; // podatocite da se vnesuvaat povtorno
if ((Parking.Ime).length()>15){ //postavuvanje uslov, ako dolzinata na imeto e pogolema od 15
cout<<"Vnesovte *ime* pogolemo od 15 karakteri, obidete se povtorno."<<endl; // karakteri, togas
cout<<"Vozilo["<<i+1<<"] -- Ime na sopstvenikot: ";} //odnovo se vnesuva imeto na sopstvenikot Parking
}while ((Parking.Ime).length()>15);//ciklusot trae dodeka ne se vnese ime so pomalku od 15 karakteri


// vnesuvanje na prezimeto na sopstvenikot Parking
cout<<"Vozilo["<<i+1<<"] -- Prezime na sopstvenikot: ";
do{ //vleguvame vo ciklus za da ako ne e ispolnet uslovot za validacija za prezime,
cin>> Parking.Prezime; // podatocite da se vnesuvaat povtorno
if ((Parking.Prezime).length()>15){ //postavuvanje uslov, ako dolzinata na prezimeto e pogolema od 15
cout<<"Vnesovte *prezime* pogolemo od 15 karakteri, obidete se povtorno."<<endl; // karakteri, togas
cout<<"Vozilo["<<i+1<<"] -- Prezime na sopstvenikot: ";} //odnovo se vnesuva prezimeto na sopstvenikot Parking
}while ((Parking.Prezime).length()>15); //ciklusot trae dodeka ne se vnese prezime so pomalku od 15 karakteri


// vnesuvanje na Registarski broj na vozilo Parking
cout<<"Vozilo["<<i+1<<"] -- Registarki Broj na vozilo: ";
do{ //vleguvame vo ciklus i ispituvame dali vneseniot broj e nadvor od rangot ili dali se povtoruva
cin>> Parking.RegistarskiBroj; //ako ne e vo rangot ili ako se povtoruva, povtorno se vnesuva
if ((Parking.RegistarskiBroj).length()>=9){//postavuvanje uslov, ako dolzinata na registarskiot broj e pogolema od 9
cout<<"Vnesovte *registarski broj* pogolemo od 9 karakteri, obidete se povtorno."<<endl; // karakteri, togas
cout<<"Vozilo["<<i+1<<"] -- Registarski broj na vozilo: ";} //odnovo se vnesuva registarskiot broj na voziloto Parking
}while ((Parking.RegistarskiBroj).length()>=9); //ciklusot trae dodeka ne se vnese registarski broj so pomalku ili ednakvo na 9 karakteri


//dodeluvanje na vrednosta na datata na vlez, vnesena na pocetokot
Parking.DataNaVlez = DataVlez; //i nejzino pecatenje
cout<<"Vozilo["<<i+1<<"] -- Data na Vlez: "<<Parking.DataNaVlez<<endl;
cout<<"*************************************************************"<<endl;
}


//dodeluvane na vrednost za vreme na vlez
Parking.VremeNaVlez = VremeVlez; //i nejzino pecatenje
cout<<"Vozilo["<<i+1<<"] -- Vreme na Vlez: "<<Parking.VremeNaVlez<<endl;
cout<<"*************************************************************"<<endl;
}
//kraj na ciklusot za vnesuvanje na podatocite

ofstream zapisuvanje; //za zapisuvanje vo datoteki
ifstream citanje; //za citanje vo datoteki
zapisuvanje.open("podatoci.dat" , ios::eek:ut); //pocnuvame da zapisuvame vo datotekata podatoci (od nula)

for (int i=0; i<3; i++){ //so ovoj ciklus gi zapisuvame site podatoci za sekoj kompjuter vo datoteklata podatoci
zapisuvanje<<Parking.Ime;
zapisuvanje<<Parking.Prezime;
zapisuvanje<<Parking.RegistarskiBroj;
zapisuvanje<<Parking.VremeNaVlez;
zapisuvanje<<Parking.DataNaVlez;
}
zapisuvanje.close(); //zavrsuvame so zapisuvanjeto, ovaa datoteka e polna

citanje.open("sort.dat"); //pocnuvame da gi citame podatocite od datotekata vo koja se zapisani
for(int j =0; j<=2; j++) { //odbrojuvame za sekoe vozilo
for(int i=1; i<=2; i++) { // i go sporeduvame so sekoe drugo
if((Parking.VremeNaVlez) > (Parking[i-1].VremeNaVlez)) { //pri sporedbata se citaat od napravenata datoteka podatoci
Podatoci zamena1 = Parking; //gi sortirame spored vreme na vlez
Parking = Parking[i-1]; //od najrano do najkasno vreme
Parking[i-1] = zamena1;
}
}
} //otkako se sortirani po vreme gi sortirame po data
for(int j =0; j<=2; j++) { //pr. ako ima dve vozila so ist datum na vlez ,gi spoerduvame spored vremeto na vlez,toj so pomalo vreme ke bide prv
for(int i=1; i<=2; i++) {
if((Parking.DataNaVlez) < (Parking[i-1].DataNaVlez)) { //pri sporedbata se citaat od napravenata datoteka zapisuvanje
Podatoci zamena2 = Parking;
Parking = Parking[i-1];
Parking[i-1] = zamena2;
}
}
}
citanje.close(); //otkako e napraveno sortiranjeto i sporedbata, naredbata za citanje na datotekata podatoci ja zatvarame
//povtorno ja otvarame naredbata za citanje od datotekata podatoci (zaradi preglednost)
zapisuvanje.open("sort.dat", ios::eek:ut); //sega datotekata podatoci e veke sortirana
for (i=0; i<=2; i++){ // so ovoj ciklus veke sortiranite podatoci gi vnesuvame vo datotekata sort.dat
zapisuvanje<<(Parking.Ime);
zapisuvanje<<(Parking.Prezime);
zapisuvanje<<(Parking.RegistarskiBroj);
zapisuvanje<<(Parking.VremeNaVlez);
zapisuvanje<<(Parking.DataNaVlez);
}
zapisuvanje.close(); //zapisuvanjeto vo sort.dat e zavrseno, datotekata e napravena
//citanjeto od datotekata podatoci.dat e zavrseno, veke ne ja koristime ovaa datoteka
citanje.open("sort.dat"); //datotekata sort.dat ja koristime kako vlezna datoteka za da ja dobieme
for (i=0; i<=2; i++){ //Vkupnata cena koja treba da se plati, toa go praveme so sobiranje na vrermeto na koristenje na parking so cenata na uslugata
VkupnaNadrgadbaMB = VkupnaNadrgadbaMB + PotrebnaNadrgadba;} //podocna ovoj podatok go koristime za dobivanje na cenata
citanje.close(); //citanjeta od ovaa datoteka zavrsuva otkako ja dobivame vkupnata memorija za nadgradba
 

Razor

u jelly?
Член од
26 јануари 2007
Мислења
2.544
Поени од реакции
168
ова се бара да се направи

[FONT=&quot]Проектна задача [/FONT][FONT=&quot][/FONT]
[FONT=&quot] [/FONT]
[FONT=&quot] Направете датотека за наплата на дневни паркинг услуги. Капацитетот на паркингот е 200 возила дневно. Секое возило во датотеката има свој запис ([/FONT][FONT=&quot]record)[/FONT][FONT=&quot] кој се состои од следните полиња:[/FONT]
[FONT=&quot]Опис на полето[/FONT]
[FONT=&quot]Тип на податок[/FONT]​
[FONT=&quot]Макс. должина на поле или ранг на вредности[/FONT]​
[FONT=&quot]Име на сопственикот[/FONT]
[FONT=&quot]s[/FONT][FONT=&quot]tring[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]15[/FONT]​
[FONT=&quot]Презиме на сопственикот[/FONT]
[FONT=&quot]s[/FONT][FONT=&quot]tring[/FONT]​
[FONT=&quot]15[/FONT]​
[FONT=&quot]Регистарски број на возилото[/FONT]
[FONT=&quot]s[/FONT][FONT=&quot]tring[/FONT][FONT=&quot][/FONT]​
[FONT=&quot]9 ([/FONT][FONT=&quot]SK-001-AA)[/FONT]​
[FONT=&quot]Време на влез [/FONT]
[FONT=&quot]int [/FONT][FONT=&quot][/FONT]​
[FONT=&quot]HHMM[/FONT]​
[FONT=&quot]Дата на влез[/FONT]
[FONT=&quot]int[/FONT]​
[FONT=&quot]GGMMDD[/FONT]​
[FONT=&quot] [/FONT]
[FONT=&quot] [/FONT]
[FONT=&quot]1. При внесување на влезните податоци да се прави валидација[/FONT][FONT=&quot][/FONT]
[FONT=&quot] [/FONT]
[FONT=&quot]2. На крајот од денот, датотеката се сортира (подредува) по Презиме, Име и регистарски број. На тој начин се формира датотеката [/FONT][FONT=&quot]“Sort.dat”.[/FONT][FONT=&quot][/FONT]
[FONT=&quot] [/FONT]
[FONT=&quot]3. Во гаражата има 20 паркинг места за клиенти кои имаат месечна претплата. Нивните податоци се запишани во првите 20 позиции во датотеката [/FONT][FONT=&quot]“Sort.dat”.[/FONT][FONT=&quot][/FONT]
[FONT=&quot] [/FONT]
[FONT=&quot]4. Датотеката [/FONT][FONT=&quot]“Sort.dat” [/FONT][FONT=&quot]да се користи како влезна датотека за добивање на цена на паркинг услугите. Цената за паркинг услугите е 40 денари од час. Доколку возилото се задржи помалку од еден час или еден час, цената е 40 ден. Доколку престојот надмине 1 час, цената е 10 денари за 10 минути за секој од наредните часови. Доколку се работи за клиент кој има месечна претплата, во полето за цена во излезот треба да излезе „Претплатен„.[/FONT]
[FONT=&quot] [/FONT]
[FONT=&quot]5. Излезниот податок за корисникот на возилото да е од следниот тип:[/FONT]
[FONT=&quot]Презиме:[/FONT]
[FONT=&quot]Име:[/FONT]
[FONT=&quot]Регистарски број:[/FONT]
[FONT=&quot]Влез:[/FONT]
[FONT=&quot]Цена:[/FONT]
 
Член од
14 октомври 2009
Мислења
431
Поени од реакции
295
Пишав и на темата за побарување на семинарски ама ај и тука да пишам. Дали има некој семинарска за C++ на тема покажувачи и уште една по слободен избор. Ми требаат итно. Благодарам однапред.
 
Член од
13 јуни 2008
Мислења
92
Поени од реакции
0
Дали може некој да ми даде нешто за Потпрограми во С++ или ако не некоја книга барем за С++
 

petar_joker

OLD ROCKER
Член од
5 септември 2007
Мислења
1.249
Поени од реакции
57
Дан имат некој случајно семинарска или нешто материјали за полиња во Ц??? Пишите ПП. Поздрав
 
Член од
16 февруари 2006
Мислења
459
Поени од реакции
48
Ми треба помош околу покажувачите , читав читав се обидувам да сватам али никако не иде , еве кје постирам еден код од ц++ и некој ако сака да ми ги подобјасни покажувачите во него , и ако може да ми направи некоја компарација како би изгледал кодот без нив

Код:
#include <iostream>
#include <string.h>
using namespace std;
class EMail
{
private: // podatoci
enum {AddrLen=100, SubLen=200, TextLen=1000};
char to[AddrLen];
char from[AddrLen];
char subject[SubLen];
char text[TextLen];
public:
EMail(char *cTo,char *cFrom, char *cSubject,char *cText)
//Konstruktor
{
strncpy(to,cTo,AddrLen-1);
strncpy(from,cFrom,AddrLen-1);
strncpy(subject,cSubject,SubLen-1);
strncpy(text,cText,TextLen-1);
to[AddrLen-1]=subject[SubLen-1]=text[TextLen-1]=0;
from[AddrLen-1]= subject[SubLen-1]=text[TextLen-1]=0;
}
~EMail(){} //Destuktor
// Interfejs funkcii
void setTo(char const *n)
{ strncpy(to,n,AddrLen-1); to[AddrLen-1]=0; };
void setFrom(char const *n)
{ strncpy(from,n,AddrLen-1); from[AddrLen-1]=0; };
void setSubject(char const *n)
{ strncpy(subject,n,SubLen-1); subject[SubLen-1]=0; };
void setText(char const *n)
{ strncpy(text,n,TextLen-1); text[TextLen-1]=0; };
char const *getTo() { return to; };
char const *getFrom() { return from; };
char const *getSubject(){ return subject; };
char const *getText() { return text; };
void Pecati();
};
void EMail::Pecati()
{
cout << "To: " << getTo()<< endl;
cout << "From: " << getFrom()<< endl;
cout << "Subject: " << getSubject()<< endl;
cout << "Text: " << getText()<< endl;
};
bool ProveriMail(char *c);
int main()
{
char to[200], from[300], subject[400], text[4000];
cout << "Vnesi DO kogo e porakata" << endl;
cin >> to;
if (ProveriMail(to))
{
cout << "Vnesi OD kogo e porakata" << endl;
cin >> from;
cout << "Vnesi naslov" << endl;
cin >> subject;
cout << "Vnesi sodrzina" << endl;
cin >> text;
EMail poraka(to, from, subject, text);
cout << "Isprateno:" << endl;
poraka.Pecati();
}
else
{
cout << "Pogresna adresa za isprakjanje" << endl;
}
system("pause");
return 0;
}
bool ProveriMail(char *c)
{
int vk = 0;
while (*c != 0)
if ('@' == *c++)
vk++;
return (1 == vk);
}
 
Член од
5 ноември 2008
Мислења
264
Поени од реакции
72
Момци и девојки, еден студент од ФЕИТ бара помош за една задачка, па ако можам да му помогнам некако.....т.е. вие :)

Да се дефинира класа Avtomobil со која се опишуваат автомобили. За секој автомобил се чуваат информации за производител (динамички алоцирана низа од знаци), модел (динамички алоцирана низа од знаци) и регистрација (низа од 7 знаци). Да се дефинираат конструктор, copy конструктор и деструктор и да се преоптоварат релационите оператори == и != (споредбата се прави според моделот на автомобилот), операторот = , како и операторите за приказ на екран (<<) и внесување од тастатура (>>).

Благодарам
 

old_School_mk

Програмер, гејмер, psy-trance уживател
Член од
11 август 2009
Мислења
6.153
Поени од реакции
5.921
Момци и девојки, еден студент од ФЕИТ бара помош за една задачка, па ако можам да му помогнам некако.....т.е. вие :)

Да се дефинира класа Avtomobil со која се опишуваат автомобили. За секој автомобил се чуваат информации за производител (динамички алоцирана низа од знаци), модел (динамички алоцирана низа од знаци) и регистрација (низа од 7 знаци). Да се дефинираат конструктор, copy конструктор и деструктор и да се преоптоварат релационите оператори == и != (споредбата се прави според моделот на автомобилот), операторот = , како и операторите за приказ на екран (<<) и внесување од тастатура (>>).

Благодарам
Код:
#include <iostream>
#include <cstdlib>
#include <cstring>
 using namespace std;

 class avtomobil
 {
 private:
	 char *proizvoditel;
	 char *model;
	 char registracija [7];
 public:
	 avtomobil (char *a="", char *b="", char *c="");
	 ~avtomobil ()
	 {
		 delete [] proizvoditel;
		 delete [] model;
	 }
	 avtomobil (const avtomobil &p);
	 avtomobil & operator = (const avtomobil &rhs);
	 bool operator == (const avtomobil &rhs);
	 bool operator != (const avtomobil &rhs);
	 friend ostream &operator << (ostream &stream, avtomobil rhs);
	 friend istream &operator >> (istream &stream, avtomobil &rhs);
 };

 avtomobil::avtomobil (char *a, char *b, char *c)
 {
	 proizvoditel=new char [strlen(a)+1];
	 model=new char [strlen(b)+1];
	 strcpy (proizvoditel, a);
	 strcpy (registracija, c);
 }

 avtomobil::avtomobil (const avtomobil &p)
 {
	 proizvoditel=new char [strlen(p.proizvoditel)+1];
	 model=new char [strlen(p.model)+1];
	 strcpy (proizvoditel, p.proizvoditel);
	 strcpy (model, p.model);
	 strcpy (registracija, p.registracija);
 }

 bool avtomobil::operator == (const avtomobil &rhs)
 {
	 if (model==rhs.model)
		 return true;
	 else
		 return false;
 }

 bool avtomobil::operator != (const avtomobil &rhs)
 {
	 return !(*this==rhs);
 }

 avtomobil & avtomobil::operator = (const avtomobil &rhs)
 {
	 if (this==&rhs)
		 return *this;
	 else
	 {
		 proizvoditel=new char [strlen(rhs.proizvoditel)+1];
		 model=new char [strlen(rhs.model)+1];
		 strcpy (proizvoditel, rhs.proizvoditel);
		 strcpy (model, rhs.model);
		 strcpy (registracija, rhs.registracija);
	 }
 }

 ostream & operator << (ostream &stream, avtomobil rhs)
 {
	 stream << rhs.proizvoditel << " " << rhs.model << " " << rhs.registracija << " ";
	 return stream;
 }

 istream & operator >> (istream &stream, avtomobil &rhs)
 {
	 cout << "Vnesi proizvoditel: ";
	 stream >> rhs.proizvoditel;
	 cout << "Vnesi model: ";
	 stream >> rhs.model;
	 cout << "Vnesi registracija: ";
	 stream >> rhs.registracija;
	 return stream;
 }
 
 int main ()
 {
	 avtomobil a, b, c;
	 cout << "Avtomobil 1: " << endl;
	 cin >> a;
	 cout << "Avtomobil 2: " << endl;
	 cin >> b;
	 c=a;
	 cout << "Avtomobil 1: " << a << endl << "Avtomobil 2: " << b << endl << "Avtomobil 3: " << c << endl;
	 system("pause");
	 return 0;
 }
А иначе ти ја имаш решено првата, па само 2ра ти треба? Пошто првата мене ми беше далеку потешка. :toe:
 
Член од
5 ноември 2008
Мислења
264
Поени од реакции
72
А иначе ти ја имаш решено првата, па само 2ра ти треба? Пошто првата мене ми беше далеку потешка. :toe:
А незнам бато, не е за мене ова, фала ти за помошта, ќе ја форвардирам задачава кај што треба :)
 
Член од
5 ноември 2008
Мислења
264
Поени од реакции
72
Ако ги има некој решени задачкиве од лабараториски ООП нека ги пастира тука :)

Да се напише класа Film, во која ќе се чуваат информации за насловот (низа од знаци) и времетраењето (цел број) на еден филм. Да се напишат соодветниот конструктор, деструктор, како и set и get методи. Потоа од класата Film да се изведат класите IgranFilm, Serija и DokumentarenFilm. Во класата IgranFilm дополнително се чуваат информации за режисерот (низа од знаци) и жанрот (низа од знаци), во класата Serija – информации за бројот на епизоди (цел број) и земјата на потекло (низа од знаци), а во класата DokumentarenFilm – информација за неговата област (низа од знаци). За секоја од изведените класи да се напишат соодветните конструктори и деструктори и методи за печатење на информациите. Да се напише main функција во која ќе се тестираат класите.
Да се напише класа Kvadar за опишување на геометриското тело квадар. Како приватни променливи за класата се чуваат вредностите на неговите 3 димензии. Да се напише конструктор, деструктор, функции за пресметување на плоштината и волуменот на еден квадар, како и функција за печатење на податоците. Потоа од класата Kvadar да се изведе класа Kocka и да се напишат соодветниот конструктор, деструктор и функција за пресметување на просторната дијагонала на коцката. Исто така, во оваа класа да се напише функција која ќе врши зголемување/намалување на страните на коцката за вредност која ќе бида зададена како влезен аргумент на таа функција. Да се напише main функција во која ќе се тестираат класите.
 

Red Man

we do what we want!
Член од
6 јуни 2007
Мислења
2.057
Поени од реакции
1.947
Дечки ајде ако ја знае некој задачава нека не биде себичен и нека постира решение!:wink:

Да се состави ефикасен алгоритам кој од n точки во рамнината
дадени со своите координати (xi, yi) ќе ги пронајде оние две што се
најблиски меѓу себе. Која е асимптотската комплексност на
предложениот алгоритам во однос на n?

Благодарам однапред!
 
Член од
14 јануари 2008
Мислења
4.251
Поени од реакции
909
Ај малце помош со кодов :se_ molam што е проблемот во функцииве ??

Код:
#include <iostream>
#include <cmath>
using namespace std;

void celVoBinaren(int ,int& [], int & );
void decimalenVoBinaren(float , int& [] , int & );

int main(){

float broj,decimalendel;
int celdel, a[100],i,j,k;

cout<< " Vnesete proizvolen realen dekaden broj od tastatura: ";
cin>>broj;
celdel=floor(broj);
decimalendel=broj-celdel;
celVoBinaren(celdel,a,i);
decimalenVoBinaren(decimalendel,a,j);

cout<<" Vo binarna forma brojot e: ";
for (k=i;k>=0;k--)
cout<<a[k]; cout<<".";
for(k=-1;k>=j;k--)
cout<< a[k];
return 0;

}

void celVoBinaren(int cel,int & a[], int & i){

         i=-1;
        do{
            i++;
            a[i]=cel%2;
            cel=cel/2;
        }
    while (cel>0);
} 
void decimalenVoBinaren(float decimalen, int & a[], int & j){
    
      j=0;
    do{
            j--;
            decimalen = 2 * decimalen;
            a[j]=floor(decimalen);
            decimalen =decimalen-a[j];
    }while(j>-6);
        
}
 
Член од
6 јуни 2009
Мислења
3.094
Поени од реакции
445
@Bojan_rnr
Грешката ти е што користиш рефернци за низите (array). Променлива на Array е покажувач. Тргни го знакот & кај низите од декларацијата и дефиницијата на функцијата.Имаш и уште една грешка, завси до компајлерот. VS дава само опомена. Тоа ти е што floor командата (враќа цел дел) враќа double а не int. Треба да се кастира во инт. Еве diff на поправениот код.

@Red Man

Епа алгоритам за тоа ти е со два фора одиш низ сите точки и проверуваш колку е долга отсечката од тие две точки. Формула за должина на отсечка од две точки A(x1,y1) и B(x2, y2) е:
l = sqrt((x2-x1)^2 + (y2-y1)^2)
Ова коренувањево и немора да се прави, ќе ги споредуваш квадратите од должините. Еве фукција за пресметување на должината на квадрат.
Код:
typedef struct tocka
{
	int x;
	int y;
} Tocka, *lpTocka;

int dolzinaNaOtseckaNaKvadrat(lpTocka a1, lpTocka a2)
{
	int ret, x, y;
	if (a1 && a2)
	{
		x = a2->x - a1->x;
		x *= x;
		y = a2->y - a1->y;
		y *=y;
		ret = x+y;
	}
	else ret=-1;
	return ret;
	//ако резултатов се коренува се добива должината на отсечката
}
 
Член од
14 јануари 2008
Мислења
4.251
Поени од реакции
909
@Bojan_rnr
Грешката ти е што користиш рефернци за низите (array). Променлива на Array е покажувач. Тргни го знакот & кај низите од декларацијата и дефиницијата на функцијата.Имаш и уште една грешка, завси до компајлерот. VS дава само опомена. Тоа ти е што floor командата (враќа цел дел) враќа double а не int. Треба да се кастира во инт. Еве diff на
поправениот код.
Фала многу, не дава грешки сега... Само што сеа па освен првата линија текст, не враќа никаква вредност програмава. :icon_conf Што може да е проблемот ?
 
Член од
6 јуни 2009
Мислења
3.094
Поени од реакции
445
Фала многу, не дава грешки сега... Само што сеа па освен првата линија текст, не враќа никаква вредност програмава. :icon_conf Што може да е проблемот ?
0.О Неможи за индекс на низа да ти биде негативен број.
Среди го методот decimalenVoBinaren, а и погоре во маин имаш негативни индекси.

----
Ми текна што му била финтата со негативните индекси.
Еден број со децимали ќе го обележиме abc,kmn каде a, b, c, k, m, n се декадни цифри.
abc,kmn = a*10^2 + b*10^1 + c*10^0 + k*10^-1 + m*10^-2 + n*10^-3


Е сега истото, само со множител 2 на степен. И со позитивни и негативни.
Е сега ја преправив програмата со две низи, кај децималниот дел индексите се позитивни а означуваат негативен степен. (минус индекс)

Код:
#include <iostream>
#include <cmath>
using namespace std;

void celVoBinaren(int ,int [], int & );
void decimalenVoBinaren(float , int [] , int & );

int main(){

	float broj,decimalendel;
	int celdel, celDelBin[100], decDelBin[100], celDelBinLenght, decDelBinLenght, k;

	cout << "Vnesete proizvolen realen dekaden broj od tastatura: ";
	cin >> broj;
	celdel = (int)floor(broj);
	decimalendel=broj-(float)celdel;
	celVoBinaren(celdel, celDelBin, celDelBinLenght);
	decimalenVoBinaren(decimalendel,decDelBin, decDelBinLenght);

	cout<<"Vo binarna forma brojot e: ";
	for (k=celDelBinLenght-1; k>=0; k--)
		cout <<celDelBin[k];

	cout << '.';

	for(k=1; k < decDelBinLenght; k++)
		cout << decDelBin[k];

	cout << endl;
	return 0;

}

void celVoBinaren(int cel, int a[], int & len){

	len=0;
	do {
		a[len]=cel%2;
		cel=cel/2;
		len++;
	}
    while (cel>0);
}

void decimalenVoBinaren(float decimalen, int a[], int & len){
    
	len=1;
	if (decimalen > 1.0F)
		return;
	do{
		decimalen = 2 * decimalen;
		a[len]=(int)floor(decimalen);
		decimalen =decimalen-(float)a[len];
		len++;
	}
	while(decimalen>0.000001F); //preciznost do 6 decimalni cifri
        
}
 

Kajgana Shop

На врв Bottom