[c++]pomoc w wyborze projektu

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
K0nio
Piegowaty Guziec
Piegowaty Guziec
Posty: 16
Rejestracja: 05 lis 2008, 13:31
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

[c++]pomoc w wyborze projektu

Post autor: K0nio »

Witam wszystkich ;) którzy zechcą otworzyć ten temat. Otóż mam wybrać projekt z programowania , na wykładach i laboratoriach przerobiliśmy tylko programowanie strukturalne. A tematy projektu wydają mi się trudne. Dlatego chciałbym zaczerpnąć wiedzy osób bardziej doświadczonych ode mnie. Nie chodzi mi o napisanie projektu tylko pomóc w wybraniu dosyć łatwego oraz udzieleniu wskazówek z czego skorzystać co doczytać ;

Przedstawię więc tematy projektów

Kod: Zaznacz cały

Tematy projektów zaawansowanych (1 projekt ? ocena max 5)

(Wymagana dokumentacja z wykorzystaniem Doxygen)

1. Prosty archiwizer umożliwiający zapisanie zawartości bieżącego katalogu wraz z podkatalogami do archiwum, jak również odtworzenie zawartości katalogu. Nie jest wymagana kompresja, należy za to przechowywać informację o datach plików i prawach dostępu.

2. Wyszukiwanie identycznych plików ? program ma znajdować wszystkie grupy plików o identycznej zawartości i rozmiarze w bieżącym katalogu.

3. Gra (projekt oceniany na zasadzie turnieju):

Stan gry ?plansza? to liczba naturalna z przedziału <0,1000000>
Program ma działać następująco: wczytać liczbę i wypisać liczbę, która stanowi opis ruchu

Niech n ? liczba wczytana
Przez ruch rozumiemy wypisanie liczby k, gdzie n-k to kwadrat liczby naturalnej.
Brak możliwego ruchu (n=0) lub wykonanie ruchu niezgodnego z zasadami oznacza przegraną.
Przegrana przeciwnika to nasza wygrana.
________________________________________

Tematy projektów prostszych (1 projekt ? ocena max 4, 2 projekty ? ocena max 5)

4. Porównywanie plików
Napisz program, który przy wywołaniu z linii poleceń postaci: cmp plik1 plik2
wypisze na ekranie pierwszą pozycję (nr bajtu), na której pliki się różnią

5. Zapełnianie dysku 
Napisz program, który zapełni wskazany dysk twardy tak by ilość wolnego miejsca wyniosła zero. Program ma mieć wskazanie ile procent zadania już wykonano i ile czasu pozostało.

6. Odwracacz pliku
Napisz program, który odwróci zawartość pliku -> ostatni bajt zamieniany jest z pierwszym, drugi z przedostatnim. Nazwa pliku do odwrócenia przekazana jest jako pierwszy parametr wywołania programu z linii poleceń.

7. Pomiar prędkości zapisu/odczytu plików. 
Program ma oszacowywać prędkość zapisu i odczytu w katalogu wskazanym pierwszym parametrem wywołania.
Awatar użytkownika
Nadril
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 171
Rejestracja: 11 lip 2008, 10:54
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Kontakt:

Odp: [c++]pomoc w wyborze projektu

Post autor: Nadril »

Jeżeli z zaawansowanych to brałbym pierwszy i zabrałbym się do niego tak:
Jeden po drugim brałbym pliki z danego katalogu i:
a) zapisywał do pliku względną ścieżkę do pliku (wraz z nazwą)
b) wstawiał ustalony znak specjalny
c) zapisywał zawartość pliku
d) wstawiał ustalony znak specjalny
e) zapisywał dane dotyczące pliku w jakimś ustalonym schemacie
f) wstawiał ustalony znak specjalny

Oczywiście należałoby sprawdzać czy wybrany znak nie występuje w zapisywanych danych i jeżeli tak to zapisywać dwa takie znaki, w celu późniejszego rozkodowania.

Nie jest to optymalne (zero kompresji, powolne działanie ze względu na szukanie znaku specjalnego), ale proste w implementacji. Jeśli chcesz coś bardziej skomplikowanego to można by się na przykład pokusić o własną implementację tara: http://en.wikipedia.org/wiki/Tar_(file_format).
K0nio
Piegowaty Guziec
Piegowaty Guziec
Posty: 16
Rejestracja: 05 lis 2008, 13:31
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: [c++]pomoc w wyborze projektu

Post autor: K0nio »

ten archiwizator dla mnie jest za trudny nie mam wystarczająco czasu, poszperałem trochę i zadanie 4 oraz 6 wydaje się prostsze, może dać ktoś wskazówki z czego skorzystać
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Odp: [c++]pomoc w wyborze projektu

Post autor: ethanak »

Zadanie numer 6 jest pozornie proste. Co dla pliku który ma np. 100 GB?

Wybierz czwórkę.

Chociaż powiem Ci że dwójka wydaje się całkiem ciekawa - a i ocenę można lepszą dostać ;)
K0nio
Piegowaty Guziec
Piegowaty Guziec
Posty: 16
Rejestracja: 05 lis 2008, 13:31
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: [c++]pomoc w wyborze projektu

Post autor: K0nio »

Ciekawy jest i archiwizator , ja niestety nie posiadam umiejętności i czasu do zastanowienia się , za mało umiem po prostu . Co do zadania czwartego - wczytam znaki z plików do talibcy lub vector'a a następnie poszukam różnicy algorytmem find_first_of ().
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Odp: [c++]pomoc w wyborze projektu

Post autor: ethanak »

Masz kompa z 64 MB na pokładzie. Przeciętny plik ma od 1 do 10 GB. ;)
K0nio
Piegowaty Guziec
Piegowaty Guziec
Posty: 16
Rejestracja: 05 lis 2008, 13:31
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: [c++]pomoc w wyborze projektu

Post autor: K0nio »

a jeśli by to był mały plik tekstowy ?
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Odp: [c++]pomoc w wyborze projektu

Post autor: ethanak »

A jeśli nie? :P
K0nio
Piegowaty Guziec
Piegowaty Guziec
Posty: 16
Rejestracja: 05 lis 2008, 13:31
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: [c++]pomoc w wyborze projektu

Post autor: K0nio »

no załóżmy, że tak :D bo z czymś bardziej skomplikowanym sobie nie poradzę , na podstawach mieliśmy tylko strukturalne i to nie było kto wie jak skomplikowane, a jestem dopiero w trakcie czytania symfoni
Awatar użytkownika
Nadril
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 171
Rejestracja: 11 lip 2008, 10:54
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Kontakt:

Odp: [c++]pomoc w wyborze projektu

Post autor: Nadril »

Jeśli nie podoba Ci się archiwizator, to ja bym tak jak ethanak polecał 4 zamiast 6, jako łatwiejszą w dobrej implementacji. To jest naprawdę łatwy projekt, taki na 2 godzinne laboratorium z C++ :p. Na prawdę jak zrobisz to zobaczysz, że zmieściłeś się w bardzo małej ilości linijek. Wystarczy otworzyć oba pliki i po kolei przesuwać pointer w obu. Symfonia na pewno posiada jakiś rozdział na temat plików, zobaczysz jakie to proste. :)
K0nio
Piegowaty Guziec
Piegowaty Guziec
Posty: 16
Rejestracja: 05 lis 2008, 13:31
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: [c++]pomoc w wyborze projektu

Post autor: K0nio »

a może jakieś wskazówki , muszę się zapoznać z vectorami co już zrobiłem , wczytuję dwa pliki no a później je porównuje i przerywam wtedy gdy się różnią , mogę to zrobić jakąś pętlą , lub jakąś funkcją z tego co czytałem. Czy idę dobrą drogą
Awatar użytkownika
DDAroo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 107
Rejestracja: 27 cze 2009, 10:47
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Architektura: x86
Lokalizacja: Kraków
Kontakt:

Odp: [c++]pomoc w wyborze projektu

Post autor: DDAroo »

Pętlą. Apropo tego, co koledzy napisali powyżej. Tak się nie robi jak Ty to piszesz - nie wczytuje się całych plików, bo mogą się one nie zmieścić w pamięci. Na potrzeby projektu możesz oczywiście założyć, że porównywane pliki będą małe (najwyżej Ci utną punkty / ocenę za projekty), ale gdybyś pisał w życiu coś bardziej poważnego, to nie radzę robić takich założeń.
K0nio
Piegowaty Guziec
Piegowaty Guziec
Posty: 16
Rejestracja: 05 lis 2008, 13:31
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: [c++]pomoc w wyborze projektu

Post autor: K0nio »

Kod: Zaznacz cały

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <iterator>

int main ()
{
    std::vector<char> vec1 ;
    std::vector<char> vec2 ;
    
    std::fstream file1 ("in1.txt") ;
    std::fstream file2 ("in2.txt") ;
    
    std::istream_iterator<char> isi1 (file1) ;
    std::istream_iterator<char> isi2 (file2) ;
    std::istream_iterator<char> eos ;
    
    std::copy (isi1, eos, back_inserter(vec1)) ;
    std::copy (isi2, eos, back_inserter(vec2)) ;
    
    std::pair< std::vector<char>::iterator, std::vector<char>::iterator > it = std::mismatch (vec1.begin (), vec1.end (), vec2.begin ()) ;
    std::cout << std::distance (vec1.begin (), it.first)+1 << std::endl ;
    
    system ("PAUSE") ;
    return 0 ;
}
coś takiego ?
Awatar użytkownika
pixelenter
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 194
Rejestracja: 31 gru 2009, 15:41
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [c++]pomoc w wyborze projektu

Post autor: pixelenter »

zamiast system ("PAUSE") ; Użył bym getchar
http://uwolnijlaptopa.pl
http://counter.li.org/cgi-bin/certificate.cgi/528644
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości