Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Gość
|
Wysłany: Wto 17:13, 27 Lis 2007 Temat postu: punktowane nr 3 u Koska |
|
|
Taki programik miałem zrobić:
Kod: | Utwórz klasę T3x3 dla reprezentowania macierzy kwadratowych 3x3 z elementami jednocyfrowymi typu int. Konstruktor ma mieć argument int (wszystkie elementy macierzy o tej wartości, domyślnie 0). Niech dostęp do elementów będzie public, by można je było swobodnie ustawiać czy pobierać. Zdefiniuj przeciążone operatory + (suma), - (różnica), * (iloczyn) i == (czy równe). Zdefiniuj także przeciążony operator << wysyłający do strumienia wyjściowego obiekt typu T3x3. Powinien on wypisać wartości elementów w 3 wierszach i równych kolumnach (maksymalną wartość elementu iloczynu łatwo można oszacować). Przypomnienie: iloczyn A*B macierzy oblicza się mnożąc skalarnie (tzn. pierwszy w wierszu razy pierwszy w kolumnie plus drugi razy drugi itd.) kolejne wiersze A przez kolumny B. Ustaw w dowolny sposób elementy obiektów a, b, c (mało zer) i wyświetl je; oblicz d=a+b*c (pisząc takie równanie w programie) i wyświetl wynik; wczytaj obiekt e, podając wyświetlone wartości d, porównaj obiekt d z obiektem e i wypisz, co wyszło. |
|
|
Powrót do góry |
|
|
|
|
dykii
ELEKTRONIK - on już ciągnie druty
Dołączył: 12 Paź 2006
Posty: 380
Przeczytał: 0 tematów
Skąd: Katowice/Gliwice gr. II
|
Wysłany: Sob 23:18, 01 Gru 2007 Temat postu: |
|
|
Moja wersja:
Kod: | //Utwórz klasę T3x3 dla reprezentowania macierzy kwadratowych 3x3 z elementami jednocyfrowymi typu int.
//Konstruktor ma mieć argument int (wszystkie elementy macierzy o tej wartości, domyślnie 0).
//Niech dostęp do elementów będzie public, by można je było swobodnie ustawiać czy pobierać.
//Zdefiniuj przeciążone operatory + (suma), - (różnica), * (iloczyn) i == (czy równe).
//Zdefiniuj także przeciążony operator << wysyłający do strumienia wyjściowego obiekt typu T3x3.
//Powinien on wypisać wartości elementów w 3 wierszach i równych kolumnach
//(maksymalną wartość elementu iloczynu łatwo można oszacować).
//Przypomnienie: iloczyn A*B macierzy oblicza się mnożąc skalarnie
//(tzn. pierwszy w wierszu razy pierwszy w kolumnie plus drugi razy drugi itd.)
//kolejne wiersze A przez kolumny B.
//Ustaw w dowolny sposób elementy obiektów a, b, c (mało zer) i wyświetl je;
//oblicz d=a+b*c (pisząc takie równanie w programie) i wyświetl wynik;
//wczytaj obiekt e, podając wyświetlone wartości d,
//porównaj obiekt d z obiektem e i wypisz, co wyszło.
#include <iostream>
using namespace std;
class T3x3{
public:
int macierz[3][3];
T3x3(int l=0); //konstruktor
T3x3 operator+(T3x3); //przeciazenie operatora +
T3x3 operator<<(int);
T3x3 operator*(T3x3);
};
T3x3::T3x3(int l) //l to liczba jaka bedzie wpisana w kazdy element tablicy macierz[3][3]
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
macierz[i][j]=l;
}
T3x3 T3x3::operator+ (T3x3 mac)
{
T3x3 suma;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
suma.macierz[i][j]=macierz[i][j]+mac.macierz[i][j];
return suma;
}
T3x3 T3x3::operator*(T3x3 mac)
{
T3x3 iloczyn;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
iloczyn.macierz[i][j]=3*mac.macierz[0][0]*macierz[0][0];//wersja uproszczona bo wiemy ze elementy macierzy maja takie same wartosci
return iloczyn;
}
T3x3 T3x3::operator<<(int przes)
{
//T3x3 wyslij;
for(int i=0;i<przes;i++)
{
for(int j=0;j<przes;j++)
{
cout<<macierz[i][j]<<"\t";
}
cout<<endl;
}
return 0;
}
void operator==(T3x3 mac1,T3x3 mac2)
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(mac1.macierz[i][j]!=mac2.macierz[i][j])
{
cout<<"Macierze nie sa rowne"<<endl;
getchar();
cout<<"Wcisnij klawisz zeby zakonczyc: ";
exit(7);
}
cout<<"Macierze e i d sa takie same"<<endl;
}
int main()
{
T3x3 a(22);
T3x3 b(3);
T3x3 c(4);
cout<<"Macierz a:"<<endl;
a<<3;// bo macierz ma byc 3x3
cout<<"Macierz b:"<<endl;
b<<3;
cout<<"Macierz c:"<<endl;
c<<3;
cout<<"Macierz d"<<endl;
T3x3 d(a+b*c);
d<<3;
T3x3 e(2);
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
e.macierz[i][j]=d.macierz[i][j];
e==d;
system("pause");
}
|
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Pon 19:13, 03 Gru 2007 Temat postu: |
|
|
Dzis mialem histogram do zrobienia na laborce. O to kod:
#include <iostream>
#include <ctime>
using namespace std;
class Histogram
{
public:
double wd,wg;
double przedz;
int hist[20];
Histogram(double wwd,double wwg);
void operator<<(double x);
void wyswietl();
};
Histogram::Histogram(double wwd,double wwg)
{
wd=wwd; wg=wwg;
for (int i=0;i<20;i++) hist[i]=0;
przedz=(wg-wd)/20;
}
void Histogram::operator <<(double x)
{
int nr;
nr=(x-wd)/przedz;
hist[nr]++;
}
void Histogram::wyswietl()
{
for(int i=0;i<20;i++) cout << hist[i] << endl;
}
int main()
{
double d;
Histogram h1(0,20);
srand(static_cast<unsigned int>(time(NULL)));
for (int i=0;i<1000000;i++)
{
d=(rand()%20+rand()%20+rand()%20+rand()%20+rand()%20)/5;
h1<<d;
}
h1.wyswietl();
system("pause");
return 0;
}
|
|
Powrót do góry |
|
|
Grzesiek
Tłuste zero
Dołączył: 16 Kwi 2007
Posty: 79
Przeczytał: 0 tematów
|
Wysłany: Pon 19:32, 03 Gru 2007 Temat postu: |
|
|
Cytat: |
d=(rand()%20+rand()%20+rand()%20+rand()%20+rand()%20)/5; |
średnio rozumiem tą linijke
|
|
Powrót do góry |
|
|
dyru
PRAWIE elektronik - prawie robi...
Dołączył: 16 Kwi 2007
Posty: 165
Przeczytał: 0 tematów
|
Wysłany: Pon 21:09, 03 Gru 2007 Temat postu: |
|
|
a to nie jest czasem Grzesiu srednia arytmetyczna 5 liczb losowych? na to wyglada....
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Pon 21:14, 03 Gru 2007 Temat postu: |
|
|
Tak to jest srednia to jest zrobione po to zeby pokazac jakies twierdzenie.
Ale juz nie pamietam jakie chyba Czebyszewa z tego co mowil Kosek.
|
|
Powrót do góry |
|
|
Grzesiek
Tłuste zero
Dołączył: 16 Kwi 2007
Posty: 79
Przeczytał: 0 tematów
|
Wysłany: Pon 21:28, 03 Gru 2007 Temat postu: |
|
|
[link widoczny dla zalogowanych]
no jakiegoś sensownego związku to ja tutaj nie widze :/
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Pon 22:14, 03 Gru 2007 Temat postu: |
|
|
Trzecie punktowane u Koska wygladaly nastepujaco:
Cytat: | Utwórz klasę Ekran (dla tresci wyswietlanych na ekranie) z publicznymi polami x,y -numer kolumny i wiersza ekranu (x=0 i y=0 to lewy gorny naroznik), e - tablica znakow [24][80], ktorej pierwszy indeks to numer wiersza. Zdefiniuj : jednoargumentowy konstruktor, jego argumentem ma być znak, ktorym na poczatku chcemy wypelnic cala tablice 'e' ; metodę 'gotoxy' - ustawiajaca pola x,y wedlug swoich argumentow ; przeciazony operator << pozwalający wysylac podany po jego prawej stronie napis do obiektu typu Ekran, tzn. aby mozna bylo w programie napisac q<<"to jest napis" (jesli q jest obiektem typu Ekran). Efektem takiego zapisu ma byc skopiowanie podanego napisu do tablicy 'e' poczawszy od miejsca okreslonego przez wartosci pol x i y. Nie musisz kontrolowac ile miejsca zostalo do konca wiersza (zawinie sie najwyzej do nastepnego). Kopiuj znaki nie uzywajac strcpy by nie byl wstawiany znak konca napisu '\0'. Metoda 'wyswietl' powinna poslac na ekran ciag znakow z tablicy 'e' po uprzednim endl. Dla testu zrob dwa obiekty 'a' i 'b', wypelnij je i wyswietl 'a', zatrzymaj przez "pause", potem 'b' "pause" i na koncu ponownie 'a'. |
Mi sie udalo wymyslic tyle:
Kod: | #include <iostream>
using namespace std;
class Ekran{
public:
int x, xdane;
int y, ydane;
char e[24][80];
Ekran(char k="x");
Ekran operator<<(char *);
void gotoxy(int xdane, int ydane){
//metoda
x=xdane;
y=ydane;
}
};
Ekran::Ekran(char k){
int i=0;
int j=0;
//char e[x][y];
{ for (i=0;i<24;i++)
for (j=0;j<80;j++)
e[i][j]=k;
}}
Ekran Ekran::operator<< (char *napis)
{ int l=0;
int i, j;
char *adr=&e[y][x];
//char *napis;
while ((*napis)!="/0")
{
l=l++;
adr=++=*napis++;
}
for (i=x;i<l;i++)
for (j=y;j<l;j++)
e[i][j]=(*q+j);
}
int main()
{
return 0;
}
|
To jest niedokonczone i posiada mase bledow, ale jakby kogos natchnelo to mozna poprawic:)
|
|
Powrót do góry |
|
|
Longer
Tłuste zero
Dołączył: 23 Lut 2007
Posty: 57
Przeczytał: 0 tematów
Skąd: Zabrze
|
Wysłany: Śro 3:29, 05 Gru 2007 Temat postu: |
|
|
dyru napisał: | a to nie jest czasem Grzesiu srednia arytmetyczna 5 liczb losowych? na to wyglada.... |
Przypomnę, że w C++ random generuje liczby pseudo losowe.
|
|
Powrót do góry |
|
|
boguslaw
ELEKTRONIK - on już ciągnie druty
Dołączył: 22 Paź 2006
Posty: 362
Przeczytał: 0 tematów
Skąd: Tychy
|
Wysłany: Czw 16:44, 06 Gru 2007 Temat postu: |
|
|
Na mikołaja u Koska był fajny programik:
Cytat: | Utwórz klase bazowa i klase pochodna dla pojecia "telefon".
Sam ustal co moze byc w klasie bazowej, a co w pochodnej.
Dla kazdej klasy zdefiniuj konstruktor i destruktor(sygnalizujace, ze zostaly uruchomione).
Utworz met wirtualna "info" w obu klasach wypisujaca info al od klasy, do ktorej nalezy.
Zdefiniuj dwie zmienne wskaznikowe na typ bazowy, do jednej wpisz adres uzyskany z new dla typu bazowego, a do drugiej - dla typu pochodnego.
Uruchom "info" przez te wskazniki. |
|
|
Powrót do góry |
|
|
mytho
Chuda Jedynka
Dołączył: 15 Paź 2006
Posty: 115
Przeczytał: 0 tematów
Skąd: Tychy
|
Wysłany: Czw 16:55, 06 Gru 2007 Temat postu: |
|
|
no to ja prześle moją wersje programu Ekran którą zrobiłem w domu jak coś komuś nie pasuje albo zna jakąś bardziej wydajną wersje to niech ją mi wyśle byłbym wdzięczny
Kod: |
#include <conio.h>
#include <string>
#include <iostream>
using namespace std;
class Ekran
{
private:
// dane
char m_sE[28][80];
int m_nX,m_nY;
public:
// konstruktor
Ekran(char znak)
{
int i,j;
for(i=0;i<28;i++){
for(j=0;j<80;j++)
m_sE[i][j]=znak;
}
}
// ustawienie i wysylanie
void gotoxy(int nX,int nY);
void wypisz();
Ekran operator<<(char *tab);
};
void Ekran::gotoxy(int nX, int nY)
{
m_nX=nX;
m_nY=nY;
}
void Ekran::wypisz()
{
int i,j;
for(i=0;i<28;i++){
for(j=0;j<80;j++)
cout << m_sE[i][j] << "";
cout << endl;
}
}
Ekran Ekran::operator <<(char *tab)
{
int i=m_nX,j=m_nY,k=0;
while(tab[k]!=0)
{
m_sE[i][j]=tab[k];
if(j>78){
i++;
j=0;
k++;
}
else
{
j++;
k++;
}
}
return 0;
}
int main()
{
int nX,nY;
char znak,tab[40];
std::cout << "Podaj znak wypelnienia" << std::endl;
std::cin >> znak;
getchar();
Ekran a(znak);
std::cout << std::endl << "Podaj wyraz ktory wpisac:" << std::endl;
std::cin.getline(tab,40);
std::cout << tab << endl;
std::cout << std::endl << "Podaj miejsce wypisania X:" << std::endl;
std::cin >> nX;
std::cout << std::endl << "Podaj miejsce wypisania Y:" << std::endl;
std::cin >> nY;
a.gotoxy(nX,nY);
a<<tab;
a.wypisz();
system("pause");
return 0;
}
|
|
|
Powrót do góry |
|
|
baku
PRAWIE elektronik - prawie robi...
Dołączył: 09 Paź 2006
Posty: 167
Przeczytał: 0 tematów
Skąd: Zabrze / Kopernik / E1
|
Wysłany: Pią 1:30, 07 Gru 2007 Temat postu: |
|
|
Lab3 czwartkowe z Koskiem.
Stworzyć klasę Dbl, mającą zmienną publiczną double x, konstruktor i podwójnie przeciążony operator ^ umożliwiający podniesienie x do potęgi int n lub do potęgi double y. Dla sprawdzenia stworzyć obiekt Dbl a oraz Dbl b, pierwszy podnieść do potęgi typu int a drugi do potęgi typu double. Wypisać wyniki na ekranie.
I program:
Kod: | #define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
class Dbl {
public:
double x;
Dbl(double wart);
double operator^ (int n);
double operator^ (double y);
};
Dbl::Dbl(double wart):
x(wart){}
double Dbl::operator ^ (double y)
{
double wynik=0;
wynik=pow(x,y);
return wynik;
}
double Dbl::operator ^ (int n)
{
double wynik=1;
int i;
if (n<0)
{
n=-n;
for (i=0;i<n;i++)
wynik*=x;
wynik=1/wynik;
}
if (n>0)
{
for (i=0;i<n;i++)
wynik*=x;
}
return wynik;
}
int main(void)
{
Dbl a=3, b=2;
int in=2;
double d=0.5;
double wynik_a=0, wynik_b=0;
wynik_a=a^in;
wynik_b=b^d;
cout<<"Wynik dzialania: a="<<a.x<<" do potegi int i="<<in<<" to "<<wynik_a<<endl;
cout<<"Wynik dzialania: b="<<b.x<<" do potegi double d="<<d<<" to "<<wynik_b<<"\n"<<endl;
system ("PAUSE");
return 0;
} |
|
|
Powrót do góry |
|
|
Longer
Tłuste zero
Dołączył: 23 Lut 2007
Posty: 57
Przeczytał: 0 tematów
Skąd: Zabrze
|
Wysłany: Pią 18:08, 07 Gru 2007 Temat postu: |
|
|
[link widoczny dla zalogowanych]
|
|
Powrót do góry |
|
|
Misiael
Sado-Elektro - wiecie gdzie ma lutownice
Dołączył: 14 Paź 2006
Posty: 502
Przeczytał: 0 tematów
|
Wysłany: Pią 20:32, 07 Gru 2007 Temat postu: |
|
|
Longer napisał: | http://verot.w.interia.pl/PPK.jpg |
fajny program
|
|
Powrót do góry |
|
|
leon
Sado-Elektro - wiecie gdzie ma lutownice
Dołączył: 09 Paź 2006
Posty: 679
Przeczytał: 0 tematów
Skąd: Tarnowskie Góry
|
Wysłany: Sob 0:16, 08 Gru 2007 Temat postu: |
|
|
Longer napisał: | http://verot.w.interia.pl/PPK.jpg |
Kod: |
#include <iostream>
#include <stdlib.h>
#include <cstring>
using namespace std;
class WekD
{
public:
int n;
int *wi;
int suma;
WekD(int na);
~WekD();
int operator+();
int podajwymiar();
};
WekD::WekD(int na=1)
{
cout << "Teraz zadzialal konstruktor" << endl;
wi= new int[na];
n=na;
}
WekD::~WekD()
{
delete [] wi;
cout << "Teraz zadzialal destruktor";
}
int WekD::operator+()
{
int suma1=0;
cout << "Sumowanie przez + " << endl;
for (int i=0; i<n; i++)
suma1 += wi[i];
suma=suma1;
return suma1;
}
int operator~(WekD wektor)
{
int suma2=0;
cout << "Sumowanie przez ~ " << endl;
for (int i=0; i<wektor.n; i++)
suma2 += wektor.wi[i];
return suma2;
}
int podajwymiar()
{
int rozmiar;
cout << "Podaj wymiar tablicy: " << endl;
cin >> rozmiar;
return rozmiar;
}
int main ()
{
cout << "Program z WekD." << endl;
WekD wektor;
wektor.n = podajwymiar();
+wektor;
cout << "Suma przez plus wynosi: " << wektor.suma << endl;
~wektor;
cout << "Suma przez tylde wynosi: " << wektor.suma << endl;
system ("Pause");
return 0;
}
|
|
|
Powrót do góry |
|
|
|