Zapis i odczyt pliku , rysowanie.

0

Podczas nauki pisania (c++) przychodzi mi do głowy wiele pomysłów ale z powodu mojej niewiedzy nie moge ich rozwiązać, oczywiście również szukając pomocy w internecie, postanowiłem dołączyć do forum i tu pytać :)

Tak więc:

  1. Tworząc dla przykładu tablice np. książkę telefoniczną , chcę aby wszystkie dane wpisywane zostaly zapisyane do pliku a przy uruchamianiu programu odczytywane z niego, a nie kasowane za każdym uruchomieniem.
    W necie odnalazłem coś takiego ;
ofstream plik("Tablica.txt") ;                  
   plik <<imie;     
   plik.close() ; 

ale niestety to nie to czego potrzebuje;
2. Chciałbym napisać program który miałby narysować dany kształt(podając ew. współrzędne każdego punktu) i nie będzie to regularna figura (znalazłem wiele informacji na forach ale dotyczących np. rysowania prostokątów)

  1. Czy jest możliwość uruchomienia usługi w Windowsie XP "klient DHCP" po przez konsole?Jeśli tak to jakim poleceniem? (również tyczy się to jednego z pomysłów)

Proszę o wyrozumiałość (pierwszy mój post):)

0
Shamson napisał(a)

ale niestety to nie to czego potrzebuje;

Ale czego w takim razie potrzebujesz?
Dane w plikach można zapisać na wiele sposobów. Zserializować do jakiegoś standardowego formatu (XML, JSON, ...), zaprojektować swój własny format tekstowy lub binarny itp. Musisz uściślić czego oczekujesz.

0
Kumashiro napisał(a)
Shamson napisał(a)

ale niestety to nie to czego potrzebuje;

Ale czego w takim razie potrzebujesz?
Dane w plikach można zapisać na wiele sposobów. Zserializować do jakiegoś standardowego formatu (XML, JSON, ...), zaprojektować swój własny format tekstowy lub binarny itp. Musisz uściślić czego oczekujesz.

Tu nie chodzi nawet o sam format, tylko o sposób zapisu i odczytu z pliku. Jeśli program uruchomię i podam dane zostaną one zapisane w pliku póki co jest OK ale przy ponownym uruchomieniu dane zapisane tam zostają usunięte. W jaki sposób zabezpieczyć te dane, aby program sprawdzał ewentualną zawartość, żeby nie tworzył na nowo tego pliku, aby plik raz utworzony nie został wymazany przy kolejnym uruchomieniu programu

2

Nie rzuciłeś kodem, więc strzelam że problemem jest tryb otwarcia pliku. Kiedy chcesz go odczytać, otwierasz go do zapisu i plik jest "ucinany" przy samym początku. Pokakod, to będzie można coś powiedzieć.

0

Jeśli chodzi o sam kod to może zadziwie ale poki co go nie ma bo pomysl jakis czas umarl i przypomnialo mi sie o tym a wczesniej czy pozniej musze sie nauczyc, pisalem na szybko żeby sprawdzić czy faktycznie masz racje, no i mialeś błąd krył się w trybie otwierania pliku a mianowicie na samym początku z tego co pamiętam mój program działał tak że tworzył plik i wpisywał do niego dane i tak w kółko, naprowadziłeś mnie idealnie :) Tyle że przy wpisywaniu treści, dlaczego jeśli moja zmienna "imie" po wprowadzeniu zostaje ucięta po znaku spacji, tj wyświetla się komunikat podaj imię i jeśli użyje spacji (Grin Go ) to do pliku zostanie zapisany tylko pierwszy człon "Grin" ?

int main()
{
string imie;
fstream plik;


plik.open( "Tablica.txt", ios::app | ios::out );
if( plik.good() == true )   
           {
            cout<<"podaj imie: ";
            cin>>imie;
            plik <<imie;  
            plik.close();
            }
return( 0 );
}
 
2

Bo używasz cin, odczytuje to co istnieje przed białym znakiem. Zamiast cin użyj
getline(cin, imie)

0

Dzięki za pomoc :) o to chodziło :)

A może znacie odpowiedzi,podpowiedzi co do mojego drugiego lub trzeciego pytania?

0
  1. Chciałbym napisać program który miałby narysować dany kształt(podając ew. współrzędne każdego punktu) i nie będzie to regularna figura (znalazłem wiele informacji na forach ale dotyczących np. rysowania prostokątów)

Jeżeli w konsoli, to będzie trochę roboty.
Jeżeli nie, to każdy porządniejszy silnik graficzny powinien mieć możliwość rysowania nieregularnych kształtów.

0

chodzi o konsole :) (myslałem aby aby podawać wspolrzedne danego punktu który ma sie zapalic,zmienic kolor , zaznaczyc jak tam kto woli , ale nie mam pojecia jak :( )
A jestem zielony i potrzebuje chociaż jakichś poszlak co bym mógł wy googlować pozniej sam.

0

Powiem ci że nie jest to czego szukam, ale tez zagłębie się w to bo zawsze jest to jakaś alternatywa :) Dzięki :)

0

(myslałem aby aby podawać wspolrzedne danego punktu który ma sie zapalic,zmienic kolor , zaznaczyc jak tam kto woli , ale nie mam pojecia jak

Słówko, którego potrzebujesz, to

gotoxy()

.
Jest parę implementacji, ja kojarzę, że chyba conio.h daje coś takiego (TAK, wiem, conio.h jest niestandardowe, złe i brzydkie), ponadto widziałem tez bibliotekę conio2 (lub podobnie), która naprawiała kilka niedogodności z pierwszej wersji, oraz coś co było przenośne między systemami. Jak będziesz miało gotoxy, to będziesz mógł trzaskać nim literki/cyferki lub po prostu wypełnienie danego miejsca (znaczy się wypisanie prostokącika zajmującego całe pole, kodu znaku nie pomnę) standardowym kolorem tekstu w konsoli. Jeśli chciałbyś użyć kolorków, to musisz znaleźć jakąś dodatkową bibliotekę do tego.

PS - tu masz najprostsze gotoxy na bazie WinAPI - http://www.edu.godula.com/?zo=cpp_faqgotoxy

PS2 - A tu masz bibliotekę newconio.h, o którą mi chodziło na początku psota. Zrobiona przez nauczyciela i uczniów z tarnowskiego I liceum, http://edu.i-lo.tarnow.pl/inf/prg/008_projekty/0002.php
W ogóle polecam ich portal, początkujący się bardzo ucieszy przerabiając jego zawartość.

0

Czy zamiast conio.h nie lepiej użyć curses? Ja wiem, że w książkach do Borlanda używa się conio i wykładowcy na różnych uczelniach stosują ją bardzo często, ale tam chodzi o szybkie rozwiązania, które pozwolą skupić się na algorytmie, a nie oprogramowywaniu wyjścia. Pisząc programy poza uczelnią wypada stosować biblioteki wieloplatformowe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1