Wróć   polish:Elite:board > hard- i software > programowanie
programowanie języki, projekty, pomoc, oprócz html, php, js

Odpowiedz
 
LinkBack Narzędzia wątku Przeszukaj ten temat Wygląd

  #1 (permalink)  
Stare 27.11.2006, 00:07
Junior Member
 
Zarejestrowany: Jul 2006
Postów: 9
Postów w giełdzie: 0
Domyślnie [C++] Dodawanie i odejmowanie wektorów (klasy i operatory)

Mam do napisania taki program:
Podaje wspolrzedne dwoch wektorow i program ma mi policzyc ich sume i roznice. Ma to byc napisane w klasach i w oparciu o operatory dodawania i odejmowania...
NIe wiem jak sie za to zabrac. Z gory thx za pomoc



Mam tu taki programik napisany dla jednego wektora:




Kod:
//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
#include <math.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
class Punkt
{
private:
   double x;
   double y;
   string nazwa;
public:
   Punkt();
   Punkt(double X,double Y,string Nazwa);
   double PodajX() {return x;}
   double PodajY() {return y;}
   void Wyswietl();
   string PodajNazwe() {return nazwa;}
};
 
Punkt::Punkt()
{
   x=0;
   y=0;
   nazwa="";
}
Punkt::Punkt(double X,double Y,string Nazwa="")
{
   x=X;
   y=Y;
   nazwa=Nazwa;
}
void Punkt::Wyswietl()
{
   cout<<"Punkt "<<nazwa<<" ma wspolrzedne "<<"["<<x<<","<<y<<"]."<<endl;
}
 
class Wektor
{
private:
   Punkt* poczatek;
   Punkt* koniec;
   string nazwa;
public:
   Wektor(Punkt* P,Punkt* K,string Nazwa);
   Wektor(double pX,double pY,double kX,double kY,string Nazwa);
   double Dlugosc();
   ~Wektor();
   void Wyswietl();
   string PodajNazwe() {return nazwa;}
};
 
Wektor::Wektor(Punkt* P,Punkt* K,string Nazwa="")
{
   poczatek=new Punkt(*P);
   koniec=new Punkt(*K);
   nazwa=Nazwa;
}
double Wektor::Dlugosc()
{
   return sqrt(pow(poczatek->PodajX()-koniec->PodajX(),2)+pow(poczatek->PodajY()-koniec->PodajY(),2));
}
 
Wektor::Wektor(double pX,double pY,double kX,double kY,string Nazwa="")
{
   poczatek=new Punkt(pX,pY);
   koniec=new Punkt(kX,kY);
   nazwa=Nazwa;
}
Wektor::~Wektor()
{
   delete poczatek;
   delete koniec;
}
void Wektor::Wyswietl()
{
   cout<<"Wektor "<<nazwa<<"["<<poczatek->PodajNazwe()<<","
        <<koniec->PodajNazwe()<<"]="<<"["<<poczatek->PodajX()
        <<","<<poczatek->PodajY()<<"]["
        <<koniec->PodajX()<<","<<koniec->PodajY()<<"]"<<endl;
}
 
#pragma argsused
int main(int argc, char* argv[])
{
        Punkt* pktA=new Punkt(1.5,2.5,"A");
        pktA->Wyswietl();
 
        Punkt* pktB=new Punkt(4.5,0.5,"B");
        pktB->Wyswietl();
 
        Wektor* V1=new Wektor(pktA,pktB,"V1");
//        Wektor* V1=new Wektor(1.5,2.5,4.5,0.5,"V1");
        V1->Wyswietl();
        cout<<"Dlugosc wektora "<<V1->PodajNazwe()<<" ma dlugosc "<<V1->Dlugosc()<<endl;
        getch();
        delete pktA;
        delete pktB;
        delete V1;
        return 0;
}
//--

  #2 (permalink)  
Stare 27.11.2006, 16:23
Junior Member
 
Zarejestrowany: Jul 2006
Postów: 163
Postów w giełdzie: 0
Domyślnie Odp: [C++] Dodawanie i odejmowanie wektorów (klasy i operatory)

Zeby wykonywac operacje za pomoca operatorow matematycznych na wlasnych typach trzeba je przeciazyc czyli powiedziec kompilatorowi co takie dzialanie ma oznaczac.
link: http://math.uni.lodz.pl/~marcinl/zaj....html#zajecia7

  #3 (permalink)  
Stare 28.11.2006, 21:40
Junior Member
 
Zarejestrowany: Jul 2006
Postów: 9
Postów w giełdzie: 0
Domyślnie Odp: [C++] Dodawanie i odejmowanie wektorów (klasy i operatory)

jak narazie to co mi wysłałeś(tzn link) jest troche skomplikowane moze mógłbyś mi troche bardziej pomóc??ale thx

  #4 (permalink)  
Stare 29.11.2006, 12:29
Junior Member
 
Zarejestrowany: Aug 2005
Skąd: Wroclaw
Postów: 16
Postów w giełdzie: 0
Domyślnie Odp: [C++] Dodawanie i odejmowanie wektorów (klasy i operatory)

Operatory dodawanie i odejmowaia to przeciazasz tak(mniej wiecej bo dawno nie pisalem w c++,gdyz Java rulez a jesli chodzi o szybkosc to ansi c )
:
do pola public wektora:
friend Wektor operator + (const Wektor &Lwart, const Wektor &Pwart);
i do pola private Punkt:
friend Punkt operator+(const Punkt &Lwart,const Punkt &Pwart);

Punkt &operator=(const Punkt punto);

a deklaracja wyglada(mniej wiecej) tak:
Punkt &operator=(const Punkt punto){
this.x=punto.x;
this.y=punto.y;
}

Punkt operator+(const Punkt &Lwart,const Punkt &Pwart){
Punkt wynik =new Punkt();
wynik.x=Lwart.x+Pwart.x;
wynik.y=Lwart.y+Pwart.x;
return wynik;
};

Wektor operator + (const Wektor &Lwart, const Wektor &Pwart){
Wektor wynik = new Wektor();
wynik.poczatek=Lwart.poczatek+Pwart.poczatek;/*tu korzysta z operatora + oraz = dla Punkt'u */
wynik.koniec=Lwart.koniec+Pwart.koniec;/* to samo co wyzej*/
return wynik;
}
Analogicznie dla operatora " - " ,jesli cos zle napisalem niech mnie ktos poprawi.
__________________
"non scholae, sed vitae discimus
uczymy się nie dla szkoły, ale dla życia."

  #5 (permalink)  
Stare 29.11.2006, 13:55
Junior Member
 
Zarejestrowany: Jul 2006
Postów: 9
Postów w giełdzie: 0
Domyślnie Odp: [C++] Dodawanie i odejmowanie wektorów (klasy i operatory)

Próbowałem to poskładać w całość z pierwszym programem ale zonk:/ nie wyszlo....

  #6 (permalink)  
Stare 29.11.2006, 15:26
Junior Member
 
Zarejestrowany: Aug 2005
Skąd: Wroclaw
Postów: 16
Postów w giełdzie: 0
Thumbs up Odp: [C++] Dodawanie i odejmowanie wektorów (klasy i operatory)

Cytat:
Napisał dak977 Zobacz post
Próbowałem to poskładać w całość z pierwszym programem ale zonk:/ nie wyszlo....
//-------------------------------------------------------------------------
//troche zmieniona forma bibliotek
#include <cstdlib>
#include <iostream>
#include <string>
#include <math.h>
//#pragma hdrstop

//---------------------------------------------------------------------------
using namespace std;

class Punkt
{
private:
double x;
double y;
string nazwa;
public:
friend Punkt operator+(const Punkt &Lwart,const Punkt &Pwart);//tu cos nowego
Punkt& operator=(const Punkt punto);//tu cos nowego
public:
Punkt();
~Punkt(){x=0;y=0;nazwa="";};//tu cos nowego
Punkt(double X,double Y,string Nazwa);
double PodajX() {return x;}
double PodajY() {return y;}
void Wyswietl();
string PodajNazwe() {return nazwa;}
};

Punkt::Punkt()
{
x=0;
y=0;
nazwa="";
}
Punkt::Punkt(double X,double Y,string Nazwa="")
{
x=X;
y=Y;
nazwa=Nazwa;
}
void Punkt::Wyswietl()
{
cout<<"Punkt "<<nazwa<<" ma wspolrzedne "<<"["<<x<<","<<y<<"]."<<endl;
}
////////////tu cos nowego
Punkt operator + (const Punkt &Lwart,const Punkt &Pwart){
Punkt wynik((Lwart.x+Pwart.y),(Lwart.x+Pwart.y),"wynik_dod");
return wynik;
};

Punkt &Punkt:perator = (const Punkt punto){
if(&punto != this)
{
this->~Punkt();
x=punto.x;
y=punto.y;
nazwa=punto.nazwa;
}
return *this;
};
//////////////////////
class Wektor
{
private:
Punkt* poczatek;
Punkt* koniec;
string nazwa;
public:

friend Wektor operator + (const Wektor &Lwart, const Wektor &Pwart);///
Wektor(){poczatek = new Punkt(); koniec = new Punkt() ;nazwa="";};//
Wektor(Punkt* P,Punkt* K,string Nazwa);
Wektor(double pX,double pY,double kX,double kY,string Nazwa);
double Dlugosc();
~Wektor();
void Wyswietl();
string PodajNazwe() {return nazwa;}
};

Wektor::Wektor(Punkt* P,Punkt* K,string Nazwa="")
{
poczatek=new Punkt(*P);
koniec=new Punkt(*K);
nazwa=Nazwa;
}
double Wektor:lugosc()
{
return sqrt(pow(poczatek->PodajX()-koniec->PodajX(),2)+pow(poczatek->PodajY()-koniec->PodajY(),2));
}

Wektor::Wektor(double pX,double pY,double kX,double kY,string Nazwa="")
{
poczatek=new Punkt(pX,pY);
koniec=new Punkt(kX,kY);
nazwa=Nazwa;
}
Wektor::~Wektor()
{
delete poczatek;
delete koniec;
}
void Wektor::Wyswietl()
{
cout<<"Wektor "<<nazwa<<"["<<poczatek->PodajNazwe()<<","
<<koniec->PodajNazwe()<<"]="<<"["<<poczatek->PodajX()
<<","<<poczatek->PodajY()<<"]["
<<koniec->PodajX()<<","<<koniec->PodajY()<<"]"<<endl;
}
//////////////// To jeszcze trzeba dorobic ale nie mam czasu teraz
/*
Wektor operator + (const Wektor &Lwart, const Wektor &Pwart){
Wektor wynik = new Wektor();
return wynik;

}
*/

///////////////
//#pragma argsused
int main(int argc, char* argv[])
{
Punkt* pktA=new Punkt(1.5,2.5,"A");
pktA->Wyswietl();

Punkt* pktB=new Punkt(4.5,0.5,"B");
pktB->Wyswietl();

Wektor* V1=new Wektor(pktA,pktB,"V1");
// Wektor* V1=new Wektor(1.5,2.5,4.5,0.5,"V1");
V1->Wyswietl();
cout<<"Dlugosc wektora "<<V1->PodajNazwe()<<" ma dlugosc "<<V1->Dlugosc()<<endl;
getch();
delete pktA;
delete pktB;
delete V1;


return 0;
}

jak bede mial czas to jeszcze poprawie albo moze ktos inny dokonczy operator + dla wektora moj zamysl jest taki aby skorzystac z operatora + i = dla Punktu
pozdrawiam
p.s
Cytat:
Napisał dak977
w tym miejscu kompilator krzyczy "'Wektor::dlugosc()' is not a member of 'Wektor'"
moj kompilator nie ma z tym problemu (kompilator MinGW,a IDE to Dev-c++)
IMO zrezygnuj z takiej formy zapisu 'Punkt* pkt=new Punkt()' na ' Punkt pkt();//konstruktor bezparametrowy'
czy ktos wie moze dlaczego przy + albo = punktow konczy program dzialanie jakby mial wyciek pamieci, wczesniej przepisujac badz dodajac punkty????
__________________
"non scholae, sed vitae discimus
uczymy się nie dla szkoły, ale dla życia."

  #7 (permalink)  
Stare 29.11.2006, 18:45
Junior Member
 
Zarejestrowany: Jul 2006
Postów: 9
Postów w giełdzie: 0
Domyślnie Odp: [C++] Dodawanie i odejmowanie wektorów (klasy i operatory)

Cytat:
Napisał molu86 Zobacz post
//-------------------------------------------------------------------------
//troche zmieniona forma bibliotek
#include <cstdlib>
#include <iostream>
#include <string>
#include <math.h>
#include <conio.h> //dopisałem biblioteke bo trzeba uzywajac getch()
//#pragma hdrstop

//---------------------------------------------------------------------------
using namespace std;

class Punkt
{
private:
double x;
double y;
string nazwa;
public:
friend Punkt operator+(const Punkt &Lwart,const Punkt &Pwart);//tu cos nowego
Punkt& operator=(const Punkt punto);//tu cos nowego
public:
Punkt();
~Punkt(){x=0;y=0;nazwa="";};//tu cos nowego
Punkt(double X,double Y,string Nazwa);
double PodajX() {return x;}
double PodajY() {return y;}
void Wyswietl();
string PodajNazwe() {return nazwa;}
};

Punkt::Punkt()
{
x=0;
y=0;
nazwa="";
}
Punkt::Punkt(double X,double Y,string Nazwa="")
{
x=X;
y=Y;
nazwa=Nazwa;
}
void Punkt::Wyswietl()
{
cout<<"Punkt "<<nazwa<<" ma wspolrzedne "<<"["<<x<<","<<y<<"]."<<endl;
}
////////////tu cos nowego
Punkt operator + (const Punkt &Lwart,const Punkt &Pwart){
Punkt *wynik = new Punkt((Lwart.x+Pwart.y),(Lwart.x+Pwart.y),"wynik_dod");
return *wynik;
};

Punkt &Punkt::operator = (const Punkt punto){
if(&punto != this)
{
this->~Punkt();
x=punto.x;
y=punto.y;
nazwa=punto.nazwa;
}
return *this;
};
//////////////////////
class Wektor
{
private:
Punkt* poczatek;
Punkt* koniec;
string nazwa;
public:

friend Wektor operator + (const Wektor &Lwart, const Wektor &Pwart);///
Wektor(){poczatek = new Punkt(); koniec = new Punkt() ;nazwa="";};//
Wektor(Punkt* P,Punkt* K,string Nazwa);
Wektor(double pX,double pY,double kX,double kY,string Nazwa);
double Dlugosc();
~Wektor();
void Wyswietl();
string PodajNazwe() {return nazwa;}
};

Wektor::Wektor(Punkt* P,Punkt* K,string Nazwa="")
{
poczatek=new Punkt(*P);
koniec=new Punkt(*K);
nazwa=Nazwa;
}
double Wektor::Dlugosc()
{ //w tym miejscu kompilator krzyczy "'Wektor::dlugosc()' is not a member of 'Wektor'"
return sqrt(pow(poczatek->PodajX()-koniec->PodajX(),2)+pow(poczatek->PodajY()-koniec->PodajY(),2));
}

Wektor::Wektor(double pX,double pY,double kX,double kY,string Nazwa="")
{
poczatek=new Punkt(pX,pY);
koniec=new Punkt(kX,kY);
nazwa=Nazwa;
}
Wektor::~Wektor()
{
delete poczatek;
delete koniec;
}
void Wektor::Wyswietl()
{
cout<<"Wektor "<<nazwa<<"["<<poczatek->PodajNazwe()<<","
<<koniec->PodajNazwe()<<"]="<<"["<<poczatek->PodajX()
<<","<<poczatek->PodajY()<<"]["
<<koniec->PodajX()<<","<<koniec->PodajY()<<"]"<<endl;
}
//////////////// To jeszcze trzeba dorobic ale nie mam czasu teraz
/*
Wektor operator + (const Wektor &Lwart, const Wektor &Pwart){
Wektor wynik = new Wektor();
return wynik;

}
*/

///////////////
//#pragma argsused
int main(int argc, char* argv[])
{
Punkt* pktA=new Punkt(1.5,2.5,"A");
pktA->Wyswietl();

Punkt* pktB=new Punkt(4.5,0.5,"B");
pktB->Wyswietl();

Wektor* V1=new Wektor(pktA,pktB,"V1");
// Wektor* V1=new Wektor(1.5,2.5,4.5,0.5,"V1");
V1->Wyswietl();
cout<<"Dlugosc wektora "<<V1->PodajNazwe()<<" ma dlugosc "<<V1->Dlugosc()<<endl;
getch();
delete pktA;
delete pktB;
delete V1;


return 0;
}

jak bede mial czas to jeszcze poprawie albo moze ktos inny dokonczy operator + dla wektora moj zamysl jest taki aby skorzystac z operatora + i = dla Punktu
pozdrawiam
I czemu ten błąd?? Mam troche problemow z pojeciem C++ ale sie staram...

  #8 (permalink)  
Stare 03.12.2006, 20:35
Junior Member
 
Zarejestrowany: Jul 2006
Postów: 9
Postów w giełdzie: 0
Domyślnie Odp: [C++] Dodawanie i odejmowanie wektorów (klasy i operatory)

Program wykonuje dalej to samo co program 1 i nie wiem co sie dzieje bo mial dodawac 2 wektoy:/

  #9 (permalink)  
Stare 05.12.2006, 00:02
Junior Member
 
Zarejestrowany: Aug 2005
Skąd: Wroclaw
Postów: 16
Postów w giełdzie: 0
Thumbs up Odp: [C++] Dodawanie i odejmowanie wektorów (klasy i operatory)

//-------------------------------------------------------------------------
//troche zmieniona forma bibliotek
#include <cstdlib>
#include <iostream>
#include <string>
#include <math.h>
#include <conio.h> //dopisałem biblioteke bo trzeba uzywajac getch()//sorry nie zauwazylem
//#pragma hdrstop

//---------------------------------------------------------------------------
using namespace std;

class Punkt
{
private:
double x;
double y;
string nazwa;
public:
Punkt& operator+(const Punkt &Pwart);//by molu
Punkt& operator=(const Punkt punto);//by molu
public:
Punkt(){x=0;y=0;nazwa="";};
Punkt(double X,double Y,string Nazwa);
double PodajX() {return x;}
double PodajY() {return y;}
void Wyswietl();
string PodajNazwe() {return nazwa;}
};

Punkt :: Punkt(double X,double Y,string Nazwa="")
{
x=X;
y=Y;
nazwa=Nazwa;
}
void Punkt :: Wyswietl()
{
cout<<"Punkt "<<nazwa<<" ma wspolrzedne "<<"["<<x<<","<<y<<"]."<<endl;
}
////////////by molu
Punkt& Punkt :: operator+(const Punkt &Pwart){

Punkt *wynik=new Punkt(x+Pwart.x,y+Pwart.y,nazwa+"+"+Pwart.nazwa);
return *wynik;
};

Punkt &Punkt :: operator = (const Punkt punto){
if(&punto != this)
{
x=punto.x;
y=punto.y;
nazwa=punto.nazwa;
}
return *this;
};
//////////////////////
class Wektor
{
private:
Punkt poczatek;
Punkt koniec;
string nazwa;
public:
Wektor& operator+(const Wektor &Pwart);///molu
Wektor& operator=(const Wektor &Pwart);///molu
Wektor(){Punkt poczatek();Punkt koniec() ;nazwa="";};//
Wektor(Punkt P,Punkt K,string Nazwa);
Wektor(double pX,double pY,double kX,double kY,string Nazwa);
double Dlugosc();
void Wyswietl();
string PodajNazwe() {return nazwa;}
};

Wektor :: Wektor(Punkt P,Punkt K,string Nazwa="")
{
poczatek = Punkt(P);
koniec = Punkt(K);
nazwa = Nazwa;
}
double Wektor :: Dlugosc()
{
return sqrt(pow(poczatek.PodajX()-koniec.PodajX(),2)+pow(poczatek.PodajY()-koniec.PodajY(),2));
}

Wektor :: Wektor(double pX,double pY,double kX,double kY,string Nazwa="")
{
poczatek = Punkt(pX,pY);
koniec = Punkt(kX,kY);
nazwa = Nazwa;
}

void Wektor::Wyswietl()
{
cout<<"Wektor "<<nazwa<<"["<<poczatek.PodajNazwe()<<","
<<koniec.PodajNazwe()<<"]="<<"["<<poczatek.PodajX()
<<","<<poczatek.PodajY()<<"]["
<<koniec.PodajX()<<","<<koniec.PodajY()<<"]"<<endl;
}
////////////////
//by molu
Wektor& Wektor :: operator+(const Wektor &Pwart){
Wektor *nowy = new Wektor(poczatek+Pwart.poczatek,koniec+Pwart.koniec,nazwa+"+"+Pwart.nazwa);
//Wektor(Punkt P,Punkt K,string Nazwa);
return *nowy;

}
Wektor& Wektor :: operator=(const Wektor &Pwart){
if(this != &Pwart){
poczatek=Pwart.poczatek;
koniec=Pwart.koniec;
nazwa=Pwart.nazwa;
}
return *this;
}
///////////////
//#pragma argsused
int main(int argc, char* argv[])
{
Punkt pktA(1.5,2.5,"A");
pktA.Wyswietl();

Punkt pktB(4.5,0.5,"B");
pktB.Wyswietl();

Punkt pktC(0,0,"C");
pktC = pktA + pktB;
pktC.Wyswietl();

Wektor V1(pktA,pktB,"V1");
Wektor V2(pktC,pktB,"V2");
Wektor V3 = Wektor();

V3 = V1 + V2;

V1.Wyswietl();
V2.Wyswietl();
V3.Wyswietl();
cout<<"Dlugosc wektora "<<V1.PodajNazwe()<<" ma dlugosc "<<V1.Dlugosc()<<endl;

getch();


return 0;
}

No i zrobione błedy poprawione wszystko pieknie dziala sorry ze tak dlugo ale dopiero teraz znalazłem 5min wolnego czasu
temat mozna zamknac chyba ze jeszcze jakies pytania??
__________________
"non scholae, sed vitae discimus
uczymy się nie dla szkoły, ale dla życia."

  #10 (permalink)  
Stare 06.12.2006, 14:17
Junior Member
 
Zarejestrowany: Jul 2006
Postów: 9
Postów w giełdzie: 0
Domyślnie Odp: [C++] Dodawanie i odejmowanie wektorów (klasy i operatory)

Wielkie dzięki:) ale w Borland C++Builder 6 Personal w miejscu
Kod:
poczatek=Pwart.poczatek;
koniec=Pwart.koniec;
krzyczy kompilator mi:
Kod:
C++ Error] Unit11.cpp(110): E2015 Ambiguity between 'Punkt::operator =(const Punkt)' and 'Punkt::operator =(const Punkt &)'
[C++ Error] Unit11.cpp(111): E2015 Ambiguity between 'Punkt::operator =(const Punkt)' and 'Punkt::operator =(const Punkt &)'
Odpowiedz

Szybka odpowiedź
Antispam, complete the task: 
 
Wiadomość:
Opcje

Narzędzia wątku Przeszukaj ten temat
Przeszukaj ten temat:

Zaawansowane wyszukiwanie
Wygląd

Zasady postowania
Nie możesz zakładać nowych tematów
Nie możesz pisać wiadomości
Nie możesz dodawać załączników
Nie możesz edytować swoich postów

BBCode jest Włączony
EmotikonyWłączony
[IMG] kod jest Włączony
HTML kod jest Wyłączony
Trackbacks are Wyłączony
Pingbacks are Wyłączony
Refbacks are Wyłączony


Podobne wątki
Temat Autor wątku Forum Odpowiedzi Ostatni post/autor
Masowe dodawanie podpisów dawid-dragon grafika i fotografia 6 05.10.2006 00:27
[C++] Klasy (class) radekhomer programowanie 2 18.05.2006 14:21
Dodawanie suwaka misiek1410 tworzenie stron 1 13.02.2006 16:51
Komputer klasy PC do 4000,- czy konfiguracja pasuje?? mod15 archiwum forum sprzęt 9 03.02.2006 23:19


Wszystkie czasy w strefie GMT +2. Teraz jest 00:11.

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.5.2
Tłumaczenie: vBHELP.pl - Polskie wsparcie vBulletin
1406153470

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345