Elektronika i Telekomunikacja POLSL
Forum Elektroników Wydziału AEI Politechniki Śląskiej
FAQ  ::  Szukaj  ::  Użytkownicy  ::  Grupy  ::  Galerie  ::  Rejestracja  ::  Profil  ::  Zaloguj się, by sprawdzić wiadomości  ::  Zaloguj


punktowane nr 3 u Koska
Idź do strony 1, 2  Następny
 
Napisz nowy temat   Odpowiedz do tematu    Forum Elektronika i Telekomunikacja POLSL Strona Główna » Semestr II / PPK
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Gość







PostWysł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

PostWysł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
Zobacz profil autora
Gość







PostWysł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


PostWysł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
Zobacz profil autora
dyru
PRAWIE elektronik - prawie robi...



Dołączył: 16 Kwi 2007
Posty: 165
Przeczytał: 0 tematów


PostWysł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
Zobacz profil autora
Gość







PostWysł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


PostWysł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
Zobacz profil autora
Gość







PostWysł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

PostWysł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. Smile
Powrót do góry
Zobacz profil autora
boguslaw
ELEKTRONIK - on już ciągnie druty



Dołączył: 22 Paź 2006
Posty: 362
Przeczytał: 0 tematów

Skąd: Tychy

PostWysł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
Zobacz profil autora
mytho
Chuda Jedynka



Dołączył: 15 Paź 2006
Posty: 115
Przeczytał: 0 tematów

Skąd: Tychy

PostWysł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 Smile
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
Zobacz profil autora
baku
PRAWIE elektronik - prawie robi...



Dołączył: 09 Paź 2006
Posty: 167
Przeczytał: 0 tematów

Skąd: Zabrze / Kopernik / E1

PostWysł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
Zobacz profil autora
Longer
Tłuste zero



Dołączył: 23 Lut 2007
Posty: 57
Przeczytał: 0 tematów

Skąd: Zabrze

PostWysłany: Pią 18:08, 07 Gru 2007    Temat postu:

[link widoczny dla zalogowanych]
Powrót do góry
Zobacz profil autora
Misiael
Sado-Elektro - wiecie gdzie ma lutownice



Dołączył: 14 Paź 2006
Posty: 502
Przeczytał: 0 tematów


PostWysłany: Pią 20:32, 07 Gru 2007    Temat postu:

Longer napisał:
http://verot.w.interia.pl/PPK.jpg

fajny program Wink
Powrót do góry
Zobacz profil autora
leon
Sado-Elektro - wiecie gdzie ma lutownice



Dołączył: 09 Paź 2006
Posty: 679
Przeczytał: 0 tematów

Skąd: Tarnowskie Góry

PostWysł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
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Elektronika i Telekomunikacja POLSL Strona Główna » Semestr II / PPK Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
  ::  
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group   ::   template subEarth by Kisioł. Programosy   ::  
Regulamin