Zaloguj się, aby obserwować  
Bartuc

Język C / C++ / C# / Java - pytania, problemy...

1979 postów w tym temacie

Dnia 28.02.2012 o 21:29, Vel_Grozny napisał:

Mi wychodzi 2.54. Zapewne nie zwróciłeś uwagi, że musisz podać argument w radianach,
a nie w stopniach.


No mi tak samo, a jak sprawdzałem na kalkulatorze, to wychodzi ~152,8, dlatego zgłupiałem.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Więc mam wykonać program imitujący sterowanie robotem (z symfonii C++). I pojawia się pytanie, w następnym zadaniu poproszony byłem o zmodyfikowanie programu tak, żeby funkcje były wywoływane argumentem double i zwracały później ten argument w C-string-u jako wartość przesunięcia robota. Więc chciałem zapytać się jak najlepiej zmodyfikować ten program. W tej chwili jest zrobione to bez sensu, więc zwraca tą samą liczbę dla wszystkich funkcji. Opłaca się robić 3 tablicę, żeby przekazać same wartości? Jakbyście to zrobili. Piszę w Visual C++ 2008 z góry dziękuję za pomoc :).

#include <iostream>
#include <cstdlib>

using namespace std;

//*********************************************************************************** ****
bool obrot_w_prawo(double); //deklaracje funkcji
bool obrot_w_lewo(double);
bool ruch_w_gore(double);
bool ruch_w_dol(double);
bool ruch_w_przod(double);
bool ruch_w_tyl(double);
//*********************************************************************************** ****
double liczba;

int main()
{
const int max = 20; // do tablicy
bool (*wskdz[max])(double);
int i = 0; //do petli
int wybor; //do wybierania funkcji w menu

bool (*wskdf[6])(double) = {&obrot_w_prawo, &obrot_w_lewo, &ruch_w_gore, &ruch_w_dol, &ruch_w_przod, &ruch_w_tyl}; // Tablica wskaznikow do funkcji
while(1)
{
cout<<"---------MENU----------\n"
<<"Wybierz funkcje robota\n0. Obrot ramienia w prawo.\n1. Obrot ramienia w lewo.\n"
<<"2. Ruch ramienia w gore.\n3. Ruch ramienia w dol.\n4. Ruch ramienia do przodu.\n5. Ruch ramienia w tyl\n6. Wykonaj sekwencje."
<<"\n9. Zakoncz program"<<endl; //Menu
cin>>wybor;

if (i>=max && wybor<6) {cout<<"Limit osiagniety.\n"; continue;}

switch(wybor)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
wskdz[m]=wskdf[wybor];
cout<<"O ile stopni?"<<endl;
cin>>liczba;
i++;
break;
case 6:
for(int it=0; it<i; it++) wskdz[it](liczba);
i = 0;
break;
case 9:
exit(1);
default:
cout<<"Niestety nie ma takiej funkcji"<<endl;
break;
}
}


system("pause");
return 0;
}
//*********************************************************************************** ******
bool obrot_w_prawo(double)
{
cout<<"Obrot ramienia w prawo o "<<liczba<<" stopni"<<endl;
return true;
}
//*********************************************************************************** ******
bool obrot_w_lewo(double)
{
cout<<"Obrot ramienia w lewo o "<<liczba<<" stopni"<<endl;
return true;
}
//*********************************************************************************** *****
bool ruch_w_gore(double)
{
cout<<"Podniesienia ramienia o "<<liczba<<" stopni"<<endl;
return true;
}
//*********************************************************************************** *****
bool ruch_w_dol(double)
{
cout<<"Opuszczenie ramienia o "<<liczba<<" stopni"<<endl;
return true;
}
//*********************************************************************************** ****
bool ruch_w_przod(double)
{
cout<<"Przesuniecie ramienia do przodu o "<<liczba<<" stopni"<<endl;
return true;
}
//*********************************************************************************** ****
bool ruch_w_tyl(double)
{
cout<<"Przesuniecie ramienia do tylu o "<<liczba<<" stopni"<<endl;
return true;
}


m w tablicy to oczywiście i tylko mi zrobiło kursywę z posta.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 29.02.2012 o 15:08, Mikex napisał:

No mi tak samo, a jak sprawdzałem na kalkulatorze, to wychodzi ~152,8, dlatego zgłupiałem.

Jak masz taki lepszy kalkulator (albo ten windziany), to tam masz tryby pracy Deg-Rad-Gra. Defaultowo jest włączony przeważnie tryb Deg, bo ludzie rzadko posługują się radianami w codziennym życiu :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wiem, że w temacie tego języka akurat nie ma ale może się kto orientuje: jak w Fortranie (kompilator Force 2.0) załadować bibliotekę LAPACK ? Bo standardowe zapodanie ścieżki do pliku lapack.a w kompilatorze nie działa.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 05.03.2012 o 20:23, ThimGrim napisał:

Wiem, że w temacie tego języka akurat nie ma ale może się kto orientuje: jak w Fortranie
(kompilator Force 2.0) załadować bibliotekę LAPACK ? Bo standardowe zapodanie ścieżki
do pliku lapack.a w kompilatorze nie działa.

Zapytaj tam: http://forum.4programmers.net/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 13.03.2012 o 22:50, Olamagato napisał:

> Wiem, że w temacie tego języka akurat nie ma ale może się kto orientuje: jak w Fortranie

> (kompilator Force 2.0) załadować bibliotekę LAPACK ? Bo standardowe zapodanie ścieżki

> do pliku lapack.a w kompilatorze nie działa.
Zapytaj tam: http://forum.4programmers.net/



Dobra, już se poradziłem. Chodziło chyba o to, że jak force był zainstalowany na dysku systemowym i nie był uruchamiany w trybie admina to nie wczytywał biblioteki. Albo za długa ścieżka była bo lapack.a przerzuciłem bezpośrednio na drugą partycję D:/lapack.a i tera śmiga.

Piszę to tak w razie jakby ktoś kiedyś przeszukiwał internet i miał ten sam problem bo nie cierpię znajdować w internecie rozwiązań typu "już sobie poradziłem, dzięki"... ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Siema, mam pytanie dotyczące JAVY. Chciałem dodać do panelu coś w rodzaju spisu treści - jednokolumnową tabelę w której dodatkowo każdy wpis będzie swojego rodzaju buttonem i która będzie zawierać pasek do scrollowania który mógłby się przydać przy dużej ilości rekordów. W jaki sposób najlepiej zrobić takie coś?
:)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 12.03.2012 o 23:31, Xjumpaytech napisał:

Jak myślicie lepiej po ukończeniu "Symfonii C++" kupić kontynuację "Pasję C++", czy może
"Thinking in C++". A może obie, albo żadną z nich ;)?


Korzystałem z Pasji. Jeśli nie przeszkadza Ci sposób pisania w Symfonii to dwutomowa Pasja będzie najlepszym wyborem. Prócz tego jest tańsza:)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

JAVA

Kodzę sobie Arkanoida, póki co mam interakcję latającej kuleczki z platformą, kulka odbija się od ścian i fokle. Teraz chciałbym dodać bloczki do niszczenia i pomyślałem, że jako że będę chciał może wprowadzać różne ustawienia to warto by dane o tych bloczkach trzymać w pliku .txt. Poczytałem trochę o wykorzystaniu klasy Scanner i o pomijaniu konkretnych Stringów przy odczytywaniu danych, ale nie wiem, jak zrobić, żeby z ciągu znaków wyłapać tylko liczby. Mam nadzieję, że wiadomo o co chodzi - chciałbym mieć w pliku .txt zapis typu
"Współrzędna x: 543, współrzędna y: 432" i móc zapisać do dwóch zmiennych typu int wartości 543 i 432. Oczywiście byłoby miło, gdyby ignorował wszystkie nie-cyfry (bo to nie muszą być tylko napisy "współrzędna"). Kombinowałem z metodą nextInt() ale nie zadziałało, jeśli 2 liczby były przedzielone znakami. Czy muszę zczytywać znak po znaku i na bieżąco rozpoznawać co to jest (trochę słabe to by było) czy jest na to jakiś sprytny sposób?
I jeśli ktoś zna odpowiedź na to pytanie to czy mógłby także jakoś wyjaśnić, jak potem bym mógł ewentualnie uaktualniać te dane - żeby zamiast 543 wstawić na przykład 200? Bo to ma być w sumie taki plik konfiguracyjny i z poziomu Menu chciałbym w nim wprowadzać ustawienia, a potem żeby klasy Frame i Controller (bo mam to wszystko według wzorca MVC robić) mogły korzystać z obiektu klasy Conf, której głównym zadaniem będzie odczyt i zapis z tego pliku .txt. Byłbym bardzo wdzięczny za pomoc.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Do wczytania danych możesz np. użyć split() i jak masz linijkę w txt - X:100:Y:300 to dzielisz ją po znakach ":" i bierzesz wartości tab[1] i tab[3], albo po prostu zapisuj 100:300 jak ci te X i Y nie potrzebne w txt.

Co do drugiego pytania to możesz po najmniejszej linii oporu wczytać dane z pliku, dokonać na nich modyfikacji i zapisać dane do pliku na nowo.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czy ktoś mógłby mi powiedzieć jak w Visual Studio 2010 najlepiej zmienić nazwę całego projektu? Jest to możliwe bez ręcznego przemianowywania każdego pliku, każdego odniesienia?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dzięki za pomoc przy pytaniu wyżej, teraz mam następne :)

Chcę pokazywać gifa - kręcącą się kulę disco. I oczywiście chciałbym, żeby ta animacja się dynamicznie zmieniała. Jak mam to zrobić? Ogólnie robię tak, że żeby obraz mi nie migotał wykorzystuję coś takiego:
image = createImage(FRAME_SIZE_X,FRAME_SIZE_Y);
gc = image.getGraphics();

i potem w metodzie paint wszystkie malowania wywołuję na rzecz obiektu gc i na końcu wywołuję:
g.drawImage(image,0,0,null);
gdzie "g" jest argumentem funkcji paint();

(to wszystko wyżej gdzieś znalazłem, pomaga, aby uniknąć migotania przy odświeżaniu)

I teraz robię- albo w konstruktorze Frame''a albo w metodzie paint()-
image2 = ImageIO.read(new File("ball.gif"));
gc.drawImage(image2, mBall.getX(), mBall.getY(), 2*mBall.getRadius(), 2*mBall.getRadius(),null);

I teraz ten obrazek jest nieanimowany. Jak sprawić, żeby ta kula disco była żywa (powinna się kręcić i strzelać światłami :P).


Przepraszam, że tak trochę chaotycznie, ale już mnie to wkurza, bo siedzę długo i mi się prodżekt do przodu nie rusza. Z góry dziękuję za pomoc.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Przyznam, że już dawno nie robiłem nic w Javie, zwłaszcza z obrazkami, ale zajrzałem do starego projektu i gify wczytywałem w taki sposób:

Image img = Toolkit.getDefaultToolkit().getImage("sciezka");

Z tego co pamiętam nic nie migało. Pamiętaj też o wywoływaniu repaint() - żeby odświeżyć obraz, możliwe, że dlatego Ci się nie animuje.

Ale jeśli mam być szczery to lepiej nie wczytywać animacji z gifa, a robić animacje z pasków z klatkami, czyli potem wyświetlasz tylko fragment takiego obrazka (klatkę), potem następną itd. Łatwo wtedy kontrolować taką animację i szybkość wyświetlania klatek.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Działa! Faktycznie lepsze jest ładowanie obrazka przez ten "zestaw narzędzi" niż tak po prostu, od razu wszystko się ładnie generuje. O repaincie wiedziałem, mój Arkanoid wymaga repaintowania dość często, żeby aktualizować pozycję kulki. W sumie nie zajmowałbym się tym gifem, ale Javę mamy jako projekt i w porównaniu do gier innych mój projekt jest dość prosty (brakuje trochę czasu), więc chcę wprowadzić takie urozmaicenia. To robi dużo większe wrażenie niż zwykły owal :)

Dnia 20.04.2012 o 20:19, CatInABag napisał:

Ale jeśli mam być szczery to lepiej nie wczytywać animacji z gifa, a robić animacje z
pasków z klatkami, czyli potem wyświetlasz tylko fragment takiego obrazka (klatkę), potem
następną itd. Łatwo wtedy kontrolować taką animację i szybkość wyświetlania klatek.

Też nad tym myślałem, ale obawiam się, że przygotowywanie takiej animacji poklatkowej i wycinanie poszczególnych klatek byłoby dla mnie dość czasochłonne i szukałem jakiegoś prostszego sposobu.

Bardzo dziękuję za pomoc!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 21.04.2012 o 10:55, Erton napisał:

Też nad tym myślałem, ale obawiam się, że przygotowywanie takiej animacji poklatkowej
i wycinanie poszczególnych klatek byłoby dla mnie dość czasochłonne i szukałem jakiegoś
prostszego sposobu.

Wczytujesz animowanego gifa do tablicy bitmap, a potem co jedno wywołanie metody paint odrysowujesz bitmapę z innej (kolejnej) komórki tablicy (oczywiście przy założeniu, że wcześniej wymazana jest wersja z poprzedniej komórki). Kiedy dojedziesz do ostatniej komórki zaczynasz od pierwszej i tak w kółko. Nic bardzo skomplikowanego. Mozna też, żeby uniezależnić animację od liczby wywołań paint zmieniać indeks tablicy z animacją co jakiś okres czasu - np. co 1/20 sekundy. Indeks taki zmieniasz wtedy jakimkolwiek timerem, a paint tylko z niego korzysta do odrysowania właściwej wersji kulki.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 29.04.2012 o 12:25, Sigu napisał:

Czy znacie i możecie polecić jakiś dobry podręcznik do nauki Javy od podstaw?

Thinking in Java.
Edycja 3 po angielsku za darmo w internecie
Edycja 4 po polsku w księgarniach
Książka jest jeszcze bardziej przydatna jeżeli liznęło się jakieś podstawy C/C++.
I uwaga. Przez pierwsze 100 stron opisywane jest środowisko, pamięć i różne szczegóły techniczne samej technologii w jakiej działa Java. Nie należy się jednak tym zrażać bo książka ma taki układ, że nie wprowadza żadnej informacji, która jest wyjaśniona dalej. To dlatego aby przystąpić do podstaw języka trzeba najpierw dowiedzieć się o co w ogóle chodzi. :)

ps. Zrobienie choćby połowy zadań z książki wystarczy, żeby dostać pracę (sic!) jako programista Javy (i nie ma takiego testu którego by się nie przeszło). Sprawdzone kilkukrotnie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować