struct klub_podatoci {
char ime[20];
int poeni;
} klubovi[10];
int main(int argc, char *argv[])
{
const int max=30;
int n,i,j;
struct klub_podatoci {
char ime[20];
int poeni;
} klubovi[max];
printf("Vnesi broj na timovi: ");
scanf("%d",&n);
printf("Vnesi podatoci za timovite: \n");
for (i=0;i<n;i++) {
printf("Vnesi ime na %d tim ",i+1);
scanf("%s",klubovi[i].ime);
printf("Vnesi broj na poeni na %d tim ",i+1);
scanf("%d",&klubovi[i].poeni);
}
struct klub_podatoci {
char ime[20];
int poeni;
};
int main(int argc, char *argv[])
{
const int max=30;
int n,i,j;
klub_podatoci klubovi[max];
printf("Vnesi broj na timovi: ");
scanf("%d",&n);
printf("Vnesi podatoci za timovite: \n");
for (i=0;i<n;i++)
{
printf("Vnesi ime na %d tim ",i+1);
scanf("%s",klubovi[i].ime);
printf("Vnesi broj na poeni na %d tim: ",i+1);
scanf("%d",&klubovi[i].poeni);
}
int maxPoints = klubovi[0].poeni;
int indexTeam = 0;
for(i = 1; i < n; i++)
{
if(maxPoints < klubovi[i].poeni)
{
maxPoints = klubovi[i].poeni;
indexTeam = i;
}
}
printf("Tim so najmogu poeni e: %s\n",klubovi[indexTeam].ime);
}
На Фон си ?Ај мала помош..
За низа од н клубови внесени преку тастатура да се одреди и печати оној со најмногу освоени бодови. Секој клуб е опишан со име и број на освоени поени.
Пр.
Внеси број на клубови: 3
Име на прв клуб: Ливерпул
Број на поени на прв клуб: 77
Име на втор клуб......
И на крај да печати:
Прв е Ливерпул со 77 поени.
Ја почнав ја, само незнам да ја довршам
Код:struct klub_podatoci { char ime[20]; int poeni; } klubovi[10]; int main(int argc, char *argv[]) { const int max=30; int n,i,j; struct klub_podatoci { char ime[20]; int poeni; } klubovi[max]; printf("Vnesi broj na timovi: "); scanf("%d",&n); printf("Vnesi podatoci za timovite: \n"); for (i=0;i<n;i++) { printf("Vnesi ime na %d tim ",i+1); scanf("%s",klubovi[i].ime); printf("Vnesi broj na poeni na %d tim ",i+1); scanf("%d",&klubovi[i].poeni); }
pemperle , infected и сите други кои ми помогнаа додека го учев Ц, да ви се заблагодарам, и да ви се пофалам денес ги кажаа резултатите и имам 10тка.
#include<iostream>
using namespace std;
clas Avion
{
private:
char proizvoditel[50];
char *tip;
int br_sediste;
public:
Avion(char *firma=" ",char *t=" ", int sed=0) //konstruktor
{
strcpy(proizvoditel,firma);
tip=new char[strlen(t)+1];
strcpy(tip,t);
br_sediste=sed;
}
Avion(const Avion &a) //copy konstruktor
{
strcpy(proizvoditel,a.proizvoditel);
tip=new char[strlen(a.tip)+1];
strcpy(tip,a.tip);
br_sediste=a.br_sediste;
}
~Avion() //destruktor
{
delete[]tip;
}
Avion &operator=(const Avion &a)
{
//sto treba da pravam ovde? da dodeluvam vrednosti ??
//primer:
proizvoditel=a.proizvoditel;
br_sediste=a.br_sediste //... ?
//...
return *this;
}
void setSedista(int vkupno)
{
br_sedista=vkupno;
}
void getSedista()
{
return br_sedista;
}
friend ostream &operator<<(ostream &out_file, const Avion &a)
{
out_file<<a.proizvoditel<<" "<<a.tip<<" "<<a.br_sedista<<endl; //korektno??
return (out_file);
}
bool operator==(const Avion &a1,const Avion &a2)
{
return (a1.br_sedista==a2.br_sedista);
}
};
class Aviokompanija
{
private:
Avion *lista;
int br_avioni;
public:
Aviokompanija(Avion *l=" ",int vkupno)
{
lista=new char[br_avioni];
strcpy(lista,l);
br_avioni=vkupno;
}
Aviokompanija(const Aviokompanija &ak)
{
lista=new char[ak.br_avioni];
strcpy(lista,ak.lista);
br_avioni=ak.br_avioni;
}
~Aviokompanija()
{
delete []lista;
}
Aviokompanija &operator+=(const Aviokompanija &ak)
{
// sto da pravam ovde?
}
};
Класата Авион ти е супер. Операторот за присвојување треба да изгледа вакаАко може помош околу конструкторите и преоптоварувањата, што е точно а што не е, и што треба да стои во последното оптоварување на операторот +=?
Avion &operator=(const Avion &a)
{
if(this != &a)
{
strcpy(proizvoditel, a.proizvoditel);
delete [] tip;
tip = new char[strlen(a.tip) + 1];
strcpy(tip, a.tip);
}
return *this;
}
void Aviokompanija::operator+=(const Avion &ob)
{
lista[br_avioni++] = ob;
}
#include<iostream>
#include<cstring>
using namspace std;
class Caj
{
private:
char ime[15];
int kesicki;
int gramovi;
int kofein; //kofein e vi miligrami, dali treba int?
public:
Caj(char *i=" ",in k=0,int gram=0;int kof=0)
{
strcpy(ime,i);
kesicki=k;
gramovi=gram;
kofein=kof;
}
Caj(const Caj &c)
{
strcpy(ime,c.ime);
kesicki=c.kescki;
gramovi=c.gramovi;
kofein=c.kofein;
}
~Caj() {}
Caj operator!=(const Caj &c1,const Caj &c2)
{
if((c1.kofein<c2.kofein+3)&&(c2.kofein>c1.kofein+3))
return *this;
}
Caj operator--(const Caj &c)
{
return c.kofein--; // vo red?
}
Caj &operator-=(const Caj &c, int vrednost)
{
c.kofein-=vrednost;
return c.kofein; //ili mozebi return *this?
}
friend ostream &operator<<(ostream &out, const Caj &c)
{
out<<c.ime<<" "<<c.kesicka<<" "<<c.gramovi<<" "<<c.kofein<<endl;
return out;
}
};
class Prodavnica_caevi
{
private:
char ime[40];
Caj *lista;
int broj;
public:
Prodavnica_caevi(char *i=" ",char *l=" ",int vkupno=0)
{
strcpy(ime,i);
lista=new char[strlen(l)+1];
strcpy(lista,l);
broj=vkupno;
}
Prodavnica_caevi(const Prodavnica_caevi &p)
{
strcpy(ime,p.ime);
lista=new char[strlen(p.lista)+1]; // korektno?
strcpy(lista,p.lista);
broj=p.broj;
}
~Prodavnica_caevi()
{
delete [] lista;
}
Prodavnica_caevi &operator+=(const Prodavnica_caevi &p, char *nov)
{
//preku strcmp gledam dali imeto na noviot caj veke postoi
//korektno?
if((strcmp(nov,p.lista))!=0)
{
for(int i=0;i<broj;i++) //sakam da proveram dali ima mesto vo prodavnicata za nov caj
//spored toa sto BROJ mi e brojot na caevi vo prodanicata
//no dali e ovde ovoj for ciklus potreben?
lista+=nov; // ...?
}
else
cout<<"Cajot veke postoi"<<endl;
}
Prodavnica_caevi &operator-=(const Prodavnica_caevi &p, char *brisi)
{
if((strcmp(brisi,p.lista))==0) //slicno nesto pravam i ovde
//sto ponatamu?
}
void poinakvi(Prodavnica_caevi &p, Caj &c)
{
//dali ovde mozam da go iskoristam preoptovaruvanjeto na != ??
}
};
Caj& operator--()
{
kofein--;
return kofein ;
// ili return --kofein;
// return kofein--; // vo red? НЕ
}
Caj operator--(int) // ова тука се пишува само така за компајлерот да може да разликува кое е за пре а кое е за пост..затоа што се слични многу.
{
Caj tmp(*this); // користиш copy конструктор.
kofein--;
return tmp;
}
Caj operator!=(const Caj &c1,const Caj &c2)
{
if((c1.kofein<c2.kofein+3)&&(c2.kofein>c1.kofein+3))
return *this;
}
bool operator!=(const Caj &c2)
{
int rez = ((kofein > c2.kofein)?kofein:c2.kofein)-((kofein > c2.kofein)?c2.kofein:kofein); //макс -мин
if(rez <= 3)
return true;
return false;
}
Значи кога ќе рече динамички алоцирана меморија/ објект се мисли на :И уште едно прашање; во една класа private членови се …….. и “листа (динамички алоцирана низа од динамички алоцирани низи од знаци)”.
Нешто вака: **lista ??
Дали треба да има два пати:
lista=new char[…] ??
Prodavnica_caevi(char *i=" ",char *l=" ",int vkupno=0)
{
strcpy(ime,i);
lista=new char[strlen(l)+1];
strcpy(lista,l);
broj=vkupno;
}
Prodavnica_caevi(char *i=" ",int vkupno=0)
{
strcpy(ime,i);
lista=new Caj[vkupno];
broj=vkupno;
}
Prodavnica_caevi &operator+=(const Prodavnica_caevi &p, char *nov)
{
//preku strcmp gledam dali imeto na noviot caj veke postoi
//korektno?
if((strcmp(nov,p.lista))!=0)
{
for(int i=0;i<broj;i++) //sakam da proveram dali ima mesto vo prodavnicata za nov caj
//spored toa sto BROJ mi e brojot na caevi vo prodanicata
//no dali e ovde ovoj for ciklus potreben?
lista+=nov; // ...?
}
else
cout<<"Cajot veke postoi"<<endl;
}
Prodavnica_caevi &operator+=(Caj &c1) \\ argumenti e samo objekt od cajot sto treba da go vnesesh u listata
{
bool ima = false;
for(int i=0;i<broj;i++)
if(c1.ime == lista[i].ime){ima=true;break;} \\ proveruvam vo site elementi od listata na caevi dali postoi nekoj so takvo ime
if(ima==false) \\ ako nema caj so takvo ime togas dodadi go vo listata
{
lista[broj++]=c1;
}
else
{
cout<<"Takov caj postoi!";
}
return this;
}
Со динамична низа или листа ?ke sum mnogu blagodaren nekoj ako mi objasni kako se pravi dinamicen stek vo C so strukturi i pokazuvaci, i vo najglavni crti, kako raboti?