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.
Programy w C++
-
- 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++
Zadanie 1 - wystarczy coś takiego?
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:
Mam nadzieje ze pomogłem
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++;
}
}
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;
}
-
- 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++
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. .
Prosze o pomoc ew jakies wskazówki jak to zrobic.
Z góry dziekuje
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;
}
Z góry dziekuje
-
- 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++
StrToInt(Edit1->Text) zamienia Ci z kontrolki Edit1 "metody" Text string do Inta
np.
int liczba;
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 :]
np.
int liczba;
Kod: Zaznacz cały
int liczba;
...
liczba = StrToInt(Edit1->Text);
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 :]