Zaloguj się, aby obserwować  
Bartuc

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

1979 postów w tym temacie

Wiesz, czemu nie lubię stylu zapisu a la Stroustrup/Sun lub Eckel?
Właśnie z powodu takich błędów jak w tym poście Tomaszka92:
http://forum.gram.pl/forum_post.asp?tid=529&pid=535
Na pierwszy rzut oka to prosty program i nie ma się jak do niego przyczepić, ale kompilator stwierdzi, że jest do bani bo zgubiło się zamykający nawias klamrowy. Po prostu w tym zapisie liczba klamer zamykających nie jest równa liczbie otwierających tam gdzie się ich najłatwiej szuka (czyli po lewej stronie, a nie gdzieś wpakowane w środek kodu).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 05.05.2008 o 20:21, Tomaszek92 napisał:

Możemy mi ktoś powiedzieć na czym polega problem w 6 wierszu?

Poza gubieniem średników i ostatniej klamry zamykającej zwróć uwagę na zapis:
fahr = farh + step;

Łatwo zrobić czeską literówkę i zamienić litery miejscami. Wtedy zamiast zwiększania zmiennej fahr masz coś zupełnie innego. Jeżeli musisz coś skomplikowanego napisać więcej niż raz, to znaczy, że narażasz się na błąd. Składnia C i budowa wielu podobnych języków daje Ci możliwość uniknięcia powtarzania. Gdybyś napisał "fahr += step;". To szansa pomyłki wynosi niemal zero.

ps. Pierwsza zasada dobrego programowania: Zapomnij o istnieniu "kopiuj i wklej".
Program to unikalny zapis robiący powtarzalne rzeczy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 06.05.2008 o 11:35, Olamagato napisał:

ps. Pierwsza zasada dobrego programowania: Zapomnij o istnieniu "kopiuj i wklej".


Heh, mnie uczyli czegos dokladnie przeciwnego ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

akurat wstawiania klamer na końcu liniki a nie początku nigdy nie praktykowałem. pozatym miałem dobry (?) umieszczania każdego "zagnierzdzenia" o tabulator w prawo (kompilatorowi i tak nie robi różnicy gdzie kod się zaczyna), więc takie błędy było łatwo wyłapać.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 06.05.2008 o 12:08, Volvox napisał:

Heh, mnie uczyli czegos dokladnie przeciwnego ;)

- (: Jedyne usprawiedliwienie jakie moglbym znalezc dla metody kopiuj-wklej , to takie, ze to wlasciwie jedyna mozliwosc wyboru miejsca rozwiniecia wywolania funkcji, dokladnie tam, gdzie chce tego programista. Ale ja jednak wole zostawic wybor, dotyczacy tego, gdzie faktycznie wywolanie funkcji rozwinac, a gdzie nie, kompilatorowi, ktory poradzi sobie z tym lepiej ode mnie. Lepiej nie mieszac sie w jego kompetencje, poki nie dowiedzie sie, ze wie sie lepiej niz kompilator, co bedzie dla programu lepsze (;

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 06.05.2008 o 12:08, Volvox napisał:

Heh, mnie uczyli czegos dokladnie przeciwnego ;)

To najwidoczniej uczyli Cię złego programowania :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mam pytanie ,znalazlem na dysku program ,pewnie ze szkoły i sam coś nie rozumiem czegoś, oto funkcja gł.:
{ string a;
cout<<"Podaj imie \n";
cin>>a;
if(a[a.size()-1]==''a'')
{cout<<"\dziencinka jestes :P \n";}
else
{cout<<"\chlopcyk jestes bleee :P \n";}

i teraz ,dlaczego jest w if coś takiego (a[a.size()-1]==''a'') ????
Program banalny ,wiem ale tego nie rozumiem ,po co to

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ten fragment ma wskazywać na ostatnią literę stringa. String jest traktowany jak tablica, więc jeśli podamy imię np. czteroliterowe, to a.size() zwróci liczbę 4. Odejmując od niej 1 otrzymamy liczbę 3, czyli ostatni indeks stringa.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 07.05.2008 o 21:02, Xanax napisał:

Ten fragment ma wskazywać na ostatnią literę stringa. String jest traktowany jak tablica,
więc jeśli podamy imię np. czteroliterowe, to a.size() zwróci liczbę 4. Odejmując od
niej 1 otrzymamy liczbę 3, czyli ostatni indeks stringa.


"indeks" stringa co to jest ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Witam. Piszę program pod C++ (Linux) który ma wyświetlać zawartość pliku na ekranie.

Póki co stworzyłem w oparciu o materiały jakie miałem coś takiego (screeny), wiem że brakuje gdzieś linii, może dwóch programu, dzięki którym będzie on wyświetlał zawartość pliku, jednak nie wiem zupełnie gdzie to wpisać. W chwili obecnej wyrzuca mi jedynie tekst, który wpisałem i nic pozatym. Pomożecie?

20080514203843

20080514203923

20080514203946

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dlaczego kiedy dam while(1) to liczy mi od 7 do -3 tak jak chce ,a jak dam while(i) to od 7 do 1-go ?

int i=7;
while(1)
{
cout<<"petla ,i="<<i<<"\n";
i=i-1;
if(i<-3)
{
cout<<"Przerywamy";
break;

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 14.05.2008 o 21:08, Logan10 napisał:

Dlaczego kiedy dam while(1) to liczy mi od 7 do -3 tak jak chce ,a jak dam while(i) to
od 7 do 1-go ?

Każda liczba dodatnia jest logiczną prawdą, zaś niedodatnia fałszem. Gdy i spada poniżej 1 warunek w pętli while nie jest już spełniony i instrukcje w niej zawarte nie są wykonywane.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 14.05.2008 o 22:40, Treant napisał:

Każda liczba dodatnia jest logiczną prawdą, zaś niedodatnia fałszem. Gdy i spada poniżej
1 warunek w pętli while nie jest już spełniony i instrukcje w niej zawarte nie są wykonywane.


Chyba u Ciebie na chacie :P
0 to fałsz a nie-zero to prawda.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 14.05.2008 o 20:39, Taikun napisał:

Witam. Piszę program pod C++ (Linux) który ma wyświetlać zawartość pliku na ekranie.
Póki co stworzyłem w oparciu o materiały jakie miałem coś takiego (screeny)

Przekopiuj to co tam masz normalnie do posta. W tej postaci jest mało czytelne, a bieganie wzrokiem między trzema obrazkami to trochę męczące - zwłaszcza jeżeli chodzi o błędy.

Po pierwsze zdecyduj się czy używasz wejścia-wyjścia obiektowego z C++ czy funkcyjnego z C. W pewnym stopniu można je mieszać, ale to bardzo zła praktyka i objawia się wieloma błędami tak piszącego.
Po drugie nie używaj funkcji zależnych od sprzętu jeżeli nie piszesz systemu operacyjnego czy coś równie niskopoziomowego. Dokumentacja takich funkcji może być w każdym systemie i środowisku programowania zupełnie inna - nie ma tam żadnego standardu w tym przypadku, a pewnie większość z nas nie zna żadnych niskopoziomowych niestandardowych funkcji z innych systemów.
Jeżeli już musisz używać funkcji z C, to używaj fopen, fclose, fread, fwrite, fseek, fgetc, fputc itp. Łatwo zapamiętać bo większość z nich zaczyna się na literę ''f''.

Prosty idiotoodporny i przenośny program w C, który wyświetla na ekranie zawartość dowolnego pliku jest na przykład taki:

#include <stdio.h>
int main(void)
{ /*deklaracje czystego C*/
FILE* f = NULL;
char nazwa[160]; /*maksymalna długość ścieżki do pliku*/
int WIERSZ = 80; /*szerokość ekranu*/
int EKRAN = WIERSZ*(25 - 1); /*wysokość bez ostatniego wiersza*/
int e;

/*otwiera tylko poprawnie podany plik*/
puts("Podaj nazwę pliku: ");
while( (f = fopen(gets(nazwa), ""r")) == NULL ) puts("Podaj ponownie poprawną nazwę pliku: ");
clrscr();
for(e = 0; (c = fgetc(f)) != EOF; ++e )
if(e > EKRAN) /*czekamy na następną porcję do wyświetlenia*/
{
fputs(stdout, "Wciśnij dowolny klawisz, aby kontynuować...");
while(!kbhit());
e = 0;
clrscr();
}
}

void clrscr() /*kasowanie całego ekranu 80x25 = zapchanie go spacjami*/
{ /*ma sens jeżeli stdout reprezentuje ekran*/
int i;
for(i = 0; i <= EKRAN + WIERSZ; ++i)
putchar('' '');
}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 15.05.2008 o 00:40, Marros napisał:

0 to fałsz a nie-zero to prawda.

Masz rację. Pętla przestaje się wykonywać, gdy i=0.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czym różni się Java od C++ ? Do jakich rzeczy używa się tych programów?

PS Jeżeli chodzi o gierki online to lepiej java czy flash?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 21.05.2008 o 21:49, Baneb14de napisał:

Czym różni się Java od C++ ? Do jakich rzeczy używa się tych programów?

Java jest przenośna, zaś c++ szybszy (do tej pory się w nich chyba masę komercyjnego softu robi, z wyjątiem systemów operacyjnych (czysty c) oraz sterowników ( trochę w c, trochę w asemblerze).
Co zaś się tyczy ps-a, to java ma większe możliwości, a w flaschu chyba łatwiej zrobić.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 21.05.2008 o 22:04, sig. napisał:

> Czym różni się Java od C++ ? Do jakich rzeczy używa się tych programów?
Java jest przenośna, zaś c++ szybszy (do tej pory się w nich chyba masę komercyjnego
softu robi, z wyjątiem systemów operacyjnych (czysty c) oraz sterowników ( trochę w c,
trochę w asemblerze).
Co zaś się tyczy ps-a, to java ma większe możliwości, a w flaschu chyba łatwiej zrobić.


java jest "przenośna" ,co to znaczy ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 22.05.2008 o 00:23, Logan10 napisał:

java jest "przenośna" ,co to znaczy ?


To, że program napisany w Javie i skompilowany do kodu pośredniego uruchomisz na wielu różnych, niekompatybilnych ze sobą platformach programowych (np. na systemach operacyjnych z różnych rodzin) czy programowo-sprzętowych (jak np. komórka i PC) bez większych kłopotów. No, pod warunkiem, że będą mieć zainstalowaną wirtualną maszynę javy... w odpowiedniej wersji xD

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ć