glodmaster Napisano Czerwiec 3, 2010 Zgłoszenie Share Napisano Czerwiec 3, 2010 mam tablice 2 wymiarową intow (beda warcaby) przechowuje w niej ustawienie pionkow w warcabach. chcial bym zapisac ja do pliku i wczytac. Przeszperalem caly internet i nic mi nie chodzi. tablica jest zadeklarowana jako t[v][v]; kod ktorym probuje to zrobic : odczytywanie w zaleznosci od tego czy uzytkownik ma na to ochote. if (odc==1){ v=8; rozmiar=9; FILE *input=fopen("wyjscie.txt", "r"); rewind(input); for (i=0;i<rozmiar;i++){ for (a=0;a<rozmiar;a++){ fscanf(input,"%1d",&t[a]); }} fclose(input); } /*zapisywanie tablicy*/ FILE *input=fopen("wyjscie.txt", "w"); for (i=0;i<rozmiar;i++){ for (a=0;a<rozmiar;a++){ fprintf(input,"%d",t[a]); }} fclose(input); Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Czerwiec 3, 2010 Zgłoszenie Share Napisano Czerwiec 3, 2010 /** main.c -- pozycja pionków na szachownicy * gcc -o test main.c -std=gnu99 * ./test */ #include <stdio.h> #include <stdlib.h> #define N 2 //rozmiar szachownicy int t[N][N]={ 0,1, 2,3 }; //ustawienie początkowe void odczyt() { FILE *input=fopen("state.dat", "r"); for (int i=0;i<N;i++){ for (int a=0;a<N;a++){ fscanf(input,"%d",&t[i][a]); } } rewind(input); fclose(input); } void drukuj(){ for (int i=0;i<N;i++){ for (int a=0;a<N;a++){ printf("%d\t",t[i][a]); } printf("\n"); } } void zapis() { FILE *input=fopen("state.dat", "w"); for (int i=0;i<N;i++){ for (int a=0;a<N;a++){ fprintf(input,"%d ",t[i][a]); } fprintf(input,"\n"); } fclose(input); } int main(void) { printf("Ustawienia początkowe:\n"); drukuj(); printf("Zapisuje i odczyt pliku:\n"); zapis(); odczyt(); drukuj(); printf("TEST: zmiany w tablicy:\n"); t[0][1]=13; drukuj(); printf("Zapisuje i odczyt pliku:\n"); zapis(); odczyt(); drukuj(); return 0; } Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
glodmaster Napisano Czerwiec 4, 2010 Autor Zgłoszenie Share Napisano Czerwiec 4, 2010 Wielkie dzieki. DZIAŁA w końcu. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
glodmaster Napisano Czerwiec 4, 2010 Autor Zgłoszenie Share Napisano Czerwiec 4, 2010 Działa dla tablicy max 9 na 9 przy większej tablicy źle wczytuje. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Czerwiec 4, 2010 Zgłoszenie Share Napisano Czerwiec 4, 2010 Nie widzę takiego problemu. U mnie Wczytuje "int + spacja", u Ciebie widziałem miałeś ustawiony 1int, co jest przyczyną Twojego błędu. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
glodmaster Napisano Czerwiec 4, 2010 Autor Zgłoszenie Share Napisano Czerwiec 4, 2010 Dziala to ja mialem blad w przypisywaniu wartosci do tablicy. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
glodmaster Napisano Czerwiec 4, 2010 Autor Zgłoszenie Share Napisano Czerwiec 4, 2010 z sejwem i odczytem jest ok. Mam jednak blad przy wpisywaniu wartosci do tablicy, poniewaz nadpisuje je i nie wiem jak sie zabezpieczyc, zeby w momencie kiedy konczy sie tablica nie wpisywal ich dalej i nie dodawal bugow. int rza; i for (i=0;i+i<rozmiar;i++) { for (rza=0;rza<rzad;rza++){ // rzad to ilosc rzedow pionkow definiowana przez gracza if (rza%2==0){ t[rza][2*i]=1;} else { t[rza][2*i+1]=1;} if (rozmiar%2==0){ if (rza%2==0){ t[rozmiar-1-rza][2*i+1]=2;} else {t[rozmiar-1-rza][2*i]=2;} } else { if (rza%2==0){ t[rozmiar-1-rza][2*i]=2;} else { t[rozmiar-1-rza][2*i+1]=2; } } } } Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Czerwiec 4, 2010 Zgłoszenie Share Napisano Czerwiec 4, 2010 Możesz dołożyć dodatkową wartość typu boolean do warunku sprawdzającego czy tablica się nie skończyła. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Czerwiec 4, 2010 Zgłoszenie Share Napisano Czerwiec 4, 2010 * w C nie ma baleronów, są w C++ * kolega niech przemyśli swój algorytm, a nie "tablica mi się skończyła" Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
glodmaster Napisano Czerwiec 4, 2010 Autor Zgłoszenie Share Napisano Czerwiec 4, 2010 Wiem, gdzie jest blad i co robie źle, niestety nie potrafie sobie go usunac tak, zeby dzialalo odpowiednio. Nie mam pojecia w jaki inny sposob to przypisywac, a jak zmieniam wartosci w forze to nie drukuje calej z kolei dla malych liczb. Z problemem poradzilem sobie troche na hama i z d*py, poniewaz zadeklarowalem poprostu duzo wieksza tablice i nawet jak mi to nadpisuje, to wczytywania i drukowania to nie obchodzi. Wielkie dzieki za pomoc. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Czerwiec 4, 2010 Zgłoszenie Share Napisano Czerwiec 4, 2010 [...]poradzilem sobie troche na hama i z d*py[...]Proponuję więcej ortografii ("chama" nie "hama") i nieco więcej kultury. Proponuję również, że następnym razem dostaniesz bana :> Rozumiem emocje, ale tak jakoś od wielu lat staramy się obronić tę cząstkę naszego internetu przed wszechogarniającym chamstwem i gburowatością. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
glodmaster Napisano Czerwiec 6, 2010 Autor Zgłoszenie Share Napisano Czerwiec 6, 2010 Zatem przepraszam i chylę czoła. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się