Programy w C++

arnie123
Użytkownik
Użytkownik
Posty: 35
Rejestracja: 3 lut 2007, o 16:36
Płeć: Mężczyzna
Lokalizacja: Bełchatów
Podziękował: 5 razy

Programy w C++

Post autor: arnie123 »

Witam

Mam do napisania kilka programów w C++. Niestety nie jestem zbyt biegły w projektowaniu obiektowym dlatego prosze o pomoc ludzi którzy sie na tym znaja

Zad1
. Napisz program wpisujący sekwencje przestawień dla rozwiązania problemu wież Hanoi

Zad2. Napisz program odwracający kolekność liter w linijce wpisanej do komponentu Buildera typu TMemo. Odwracanie powinno następować za pomocą struktury danych nazwanej stosem.

Zad3
. Napisz program sortujący wczytane z pliku liczby (oddzielone znakiem nowego wiersza), umożliwiając następnie wyszukiwanie zadanej liczby metodą przeszukiwania binarnego.

Z góry dziękuje za pomoc.
djlinux
Użytkownik
Użytkownik
Posty: 115
Rejestracja: 9 gru 2007, o 10:07
Płeć: Mężczyzna
Lokalizacja: Zamość
Podziękował: 39 razy
Pomógł: 7 razy

Programy w C++

Post autor: djlinux »

Zadanie 1 - wystarczy coś takiego?

Kod: Zaznacz cały

#include <stdio.h>

int ileruchow=0;

void hanoi(int,char,char,char);

int main()
{
    int liczba;
    printf("Podaj liczbe krazkow: ");
    scanf("%d",&liczba);
    hanoi(liczba,'A','B','C');
    printf("Potrzebna liczba ruchow: %d\n", ileruchow);
    return 0;
}

void hanoi(int ile,char skad,char przez,char dokad)
{
    if(ile>0)
    {
        hanoi(ile-1,skad,dokad,przez);
        printf("%c --> %c\n", skad, dokad);
        hanoi(ile-1,przez,skad,dokad);
        ileruchow++;
    }
}
Zadanie 2

Proponuje zaimplementować sobie stos nawet na tablicy i przy wczytywaniu znaku z następnej pozycji kontrolki odkładać na stos(dodawac na kolejny element tablicy) a gdy już skonczy Ci się tekst zdejmować z tego stosu(czytać od końca tablicy). Żeby to zrobić na stosie fajnie by było napisać funkcje push(), która będzie odkladac znak po znaku na koniec tablicy, oraz pop() ktora bedzie od konca wyjmowac znaki z tej tablicy
W ten sposób uzyskasz odwrócony ciąg i zrobisz to korzystając ze stosu ;-)

Zadanie 3
Robisz to metodą bisekcji, metoda dziel i zwyciężaj złożność O (n log n), przykład z książki P.Wróbla:

Kod: Zaznacz cały

#include <iostream.h>

int szukaj_rec(int * tab, int x, int left, int right)
{
if(left>right) return -1; // element nie znaleziony
   else
    {
     int mid=(left+right)/2;
     if(tab[mid]==x) 
		 return mid; // element został znaleziony!
       else
		if(x<tab[mid])
				return szukaj_rec(tab,x,left,mid-1); 
					else
				return szukaj_rec(tab,x,mid+1,right);
      }
}

int main()
{
int tabl[12]={1,2,6,18,20,23,29,32,34,39,40,41};

cout << "wynik="<<szukaj_rec(tabl,23,0,11)<<endl;
}

Mam nadzieje ze pomogłem :D
arnie123
Użytkownik
Użytkownik
Posty: 35
Rejestracja: 3 lut 2007, o 16:36
Płeć: Mężczyzna
Lokalizacja: Bełchatów
Podziękował: 5 razy

Programy w C++

Post autor: arnie123 »

Witam

Dzieki, djlinux za pomoc.

Troche zmieniłem kod do Zad1, i musze to teraz przerobic na postać obiektową, tz chodzi o to zeby napisac w Builderze program, który bedzie sie skladal z 1 okna Edit (w ktorym podajemy liczbe krazków) , 1 okna Memo (w ktorym bedzie wyswietlany wynik) i 1 Buttona. .

Kod: Zaznacz cały

#include <iostream>
using namespace std;
int n;
void hanoi(int z, int d, int ile)
{
if (ile>1)
{
hanoi(z,6-z-d,ile-1);
hanoi(z,d,1);         //z- palik z którego przenosimy krążek; d- palik na który przenosimy krążek
hanoi(6-z-d,d,ile-1);
 }
else { cout <<"z palika "<<  z << " na palik " << d << "
";
}

}
int main()
{
cout << "Ile krazkow chcesz przeniesc?
";
cin >> n;
hanoi(1,3,n);
system("pause");

  return 0;
}
Prosze o pomoc ew jakies wskazówki jak to zrobic.
Z góry dziekuje
djlinux
Użytkownik
Użytkownik
Posty: 115
Rejestracja: 9 gru 2007, o 10:07
Płeć: Mężczyzna
Lokalizacja: Zamość
Podziękował: 39 razy
Pomógł: 7 razy

Programy w C++

Post autor: djlinux »

StrToInt(Edit1->Text) zamienia Ci z kontrolki Edit1 "metody" Text string do Inta ;)
np.
int liczba;

Kod: Zaznacz cały

int liczba;
...

liczba = StrToInt(Edit1->Text);
I teraz nizej mozesz walnąć wywolanie, a funkcje hanoi odzielnie
Jakieś pomoce do Buildera masz więc nie wierze żebyś sobie nie poradził

Pozatym załatw sobie jakieś ebooki dobrych książek o Builderze - nie powinno być z tym problemu

PS: Jako nowy użytkownik nie moge zamieszczać linków


---
Dodano:
Jak chcesz koniecznie obiektówke to walnij sobie metody:
public:
licz(int ile,char a,char b,char c) i niech robi to co ma robić funkcja hanoi
private:
tu walnij zmienne a,b,c,ile;
To tak mniej wiecej i już masz obiektówe :]
ODPOWIEDZ