Forum www.etipg.fora.pl Strona Główna www.etipg.fora.pl
Forum studiów niestacjonarnych Politechniki Gdańskiej na ETI
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Zmiana wielkości figury

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.etipg.fora.pl Strona Główna -> Semestr I / Praktyka programowania
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Karol90
Stały użytkownik



Dołączył: 07 Paź 2010
Posty: 115
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5
Skąd: Chojnice

PostWysłany: Pon 17:01, 01 Lis 2010    Temat postu: Zmiana wielkości figury

Wie może ktoś jak zmieniać wielkość figury(za pomocą klawiszy "+" i "-")??? Very Happy

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
pimperlo
Świeżak



Dołączył: 16 Paź 2010
Posty: 29
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5
Skąd: Sopoćków

PostWysłany: Pon 18:07, 01 Lis 2010    Temat postu:

Kod:
#include <iostream.h>
#include <conio.h>
void naglowek ();
void czytaj_dane(char &znak, int &q);
int main()

{
char znak;
int p,q,i,m ;

 naglowek ();
 czytaj_dane(znak, q);

 do
 {
 clrscr();
  _setcursortype(_NOCURSOR); //wylaczenie kursora

  naglowek ();
for ( p=0; p<=q-1; p++) //petla ukosnych
{
  gotoxy ( 41+p, 13+p); cout << znak;  //ukosna prawa
  gotoxy ( 41-p, 13+p); cout << znak;  //ukosna lewa
}
for ( i=0; i<=2*q; i++ ) //petla pionowych
  {
    gotoxy ( 41+p, 13+p-i); cout << znak; //pionowa prawa
    gotoxy ( 41-p, 13+p-i); cout << znak; //pionowa lewa
  }

 m = getch (); // pobranie znaku z klawiatury
 switch (m)
   {
    case '+': if (q >= 2 && q < 8) q++; break; // zwiekszanie figury
    case '-': if (q > 2) q--; break; //zmniejszanie figury
   }
 }
 while (m != 27);  //ESC przerywa program
 return 0;
}
//-----------------------------------------------------------------
void naglowek ()
{
 cout << " Program rysuje figure okreslonym znakiem o zadanej wielkosci";
 cout << "\n Wykonal: ";
 cout << "\n Klawisz ESC - koniec programu";
 cout << "\n Klawisz '+' zwieksza figure";
 cout << "\n Klawisz '-' znmniejsza figure";
}
//---------------------------------------------------------------------
void czytaj_dane(char &znak, int &q)
{
 int x, y, b ;
 cout << "\n \n Podaj jakis znak : ";
 cin >> znak;
 cout << "\n Podaj wielkosc figury (od 2 do 8) :";
 x = wherex();
 y = wherey();
 do
 {
   gotoxy(x,y);
   clreol();
   b = 0;
   cin >> q;
   if (cin.fail())
   {
      b = 1;
      cin.clear();
      cin.ignore(255, '\n');
   }
 }
   while ((q < 2) || (q > 8) || b);
}

To mój cały progs - wyłap sobie fragment odpowiadający za wielkość.


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Krzyżak
Stały użytkownik



Dołączył: 26 Wrz 2010
Posty: 120
Przeczytał: 0 tematów

Pomógł: 2 razy
Ostrzeżeń: 0/5
Skąd: Gdańsk

PostWysłany: Pon 19:54, 01 Lis 2010    Temat postu:

Przyczepi się do Ciebie, że nie masz rysowania i zmiany wielkości w osobnych funkcjach tylko wszystko w mainie, ale to tak tylko jak liczysz na max pkt z projektu.

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
pimperlo
Świeżak



Dołączył: 16 Paź 2010
Posty: 29
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5
Skąd: Sopoćków

PostWysłany: Pon 21:43, 01 Lis 2010    Temat postu:

Nie czepiała się zbytnio...jeszcze pomagała mi przerabiać Wink .
Zrobiłem tylko pierwszy projekt - to stykło na 3.
Większych ambicji w 1 sem. nie miałem - byle zdać bez strat własnych.


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Karol90
Stały użytkownik



Dołączył: 07 Paź 2010
Posty: 115
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5
Skąd: Chojnice

PostWysłany: Wto 8:35, 02 Lis 2010    Temat postu:

Mój wygląda tak:

Kod:
#include <iostream.h>
#include <conio.h>
#include <math.h>

const int GORA=72, DOL=80, LEWO=75, PRAWO=77;

void wczytajDane (float &wielk, char &znak);
void rysujFigure(float wielk, float X, float Y, char znak);
void ruszaj(float wielk, float &X, float &Y, char znak);

void main()
{
  float X = 80, Y = 22;                      // wielkosc okna 80 x 24 (szer x wys)
  float wielk;
  char znak;
  clrscr();

  wczytajDane(wielk, znak);
  rysujFigure(wielk, X, Y, znak);
  ruszaj(wielk, X, Y, znak);
}

int czyt_int (float Ogr_g, float Ogr_d, float x, float y)
{
  float liczba;
  do
  {
    cin >> liczba;
    if ((liczba > Ogr_g) || (liczba < Ogr_d))
    {
      gotoxy (x,y);
      clreol();
    }
  }
  while ((liczba > Ogr_g) || (liczba < Ogr_d));
  return (liczba);
}

void wczytajDane(float &wielk, char &znak)
{
  const int min_wielk = 3, max_wielk = 22;
  int x, y;
  cout << endl <<"Podaj rozmiar poczatkowy figury (3-22): ";
  x = wherex ();
  y = wherey ();
  wielk = czyt_int (max_wielk, min_wielk, x, y);
  cout << endl << "Podaj znak, ktorym ma byc rysowana figura: ";
  cin >> znak;
}

void rysujFigure(float wielk, float X, float Y, char znak)
{
  _setcursortype(_NOCURSOR);
  clrscr();
  int i, j;
  for(i = X; i > X - wielk ; i--)
  {
    gotoxy(i, Y); cout << znak;
  }
    for(i = X + wielk , j = Y; i > X - wielk, j > Y - wielk; i--, j--)
  {
    gotoxy(i-wielk, j); cout << znak;
  }
   for(i = X; i > X - wielk; i--)
  {
    gotoxy(i, j+1); cout << znak;
  }



}

void ruszaj(float wielk, float &X, float &Y, char znak)    // przesuwanie figury klawiszami strzałek
{
  int zmiana = 0;
  char klawisz;
  do
  {
    klawisz = getch();
    switch (klawisz)
    {
      case GORA:
      {
        Y--; zmiana = 1;
        if (Y-wielk < 0)
        {
          Y++;
          zmiana = 0;
        }
        break;
      }
      case DOL:
      {
        Y++; zmiana = 1;
        if (Y > 24)
        {
          Y--;
          zmiana = 0;
        }
        break;
      }
      case LEWO:
      {
        X--; zmiana = 1;
        if (X < 0 + wielk)
        {
          X++;
          zmiana = 0;
        }
        break;
      }
      case PRAWO:
      {
        X++; zmiana = 1;
        if (X > 80)
        {
          X--;
          zmiana = 0;
        }
        break;
      }
    }
    if (zmiana)
    {
      rysujFigure(wielk, X, Y, znak); zmiana = 0;
    }
  }
  while (klawisz != 27);
}


Może jakieś sugestie co do ulepszenia??? Very Happy


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
raczekm
Stały użytkownik



Dołączył: 27 Wrz 2010
Posty: 125
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Gdańsk

PostWysłany: Czw 21:02, 04 Lis 2010    Temat postu:

Wygląda jak świeżo skopiowany z jakiejś strony Wink

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Krzyżak
Stały użytkownik



Dołączył: 26 Wrz 2010
Posty: 120
Przeczytał: 0 tematów

Pomógł: 2 razy
Ostrzeżeń: 0/5
Skąd: Gdańsk

PostWysłany: Czw 23:03, 04 Lis 2010    Temat postu:

Floaty wpierdzielaja duzo pamieci jak nie musisz ich używać to nie używaj. Zmień na inty, albo short inty

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Karol90
Stały użytkownik



Dołączył: 07 Paź 2010
Posty: 115
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5
Skąd: Chojnice

PostWysłany: Pią 10:59, 05 Lis 2010    Temat postu:

Właśnie nie wiem jak wpiąć to do zmiany wielkości figury Sad

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Krzyżak
Stały użytkownik



Dołączył: 26 Wrz 2010
Posty: 120
Przeczytał: 0 tematów

Pomógł: 2 razy
Ostrzeżeń: 0/5
Skąd: Gdańsk

PostWysłany: Pią 11:30, 05 Lis 2010    Temat postu:

Po co chcesz wpinać zmianę wielkości skoro masz zadanie z przesuwaniem ?

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Karol90
Stały użytkownik



Dołączył: 07 Paź 2010
Posty: 115
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5
Skąd: Chojnice

PostWysłany: Pią 11:46, 05 Lis 2010    Temat postu:

W instrukcji mam że musi być zmiana wielkości...

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.etipg.fora.pl Strona Główna -> Semestr I / Praktyka programowania Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
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
Regulamin