GRY-Online.pl --> Archiwum Forum

Programowanie w C/C++ i nie tylko ------ dla laików i ekspertów [cz.3]

12.01.2005
16:12
smile
[1]

KULL [ Gladiator ]

Programowanie w C/C++ i nie tylko ------ dla laików i ekspertów [cz.3]


---[Przydatne strony]---


[PL]:
[!!!] https://www.keeller.kompozytor.net/ [Kurs C++]
[!!!] https://www.physd.amu.edu.pl/~tomekkaz/ [Podstawy C++]
[!!!] https://3miasto.net/~chq/ [Kurs C++]
[!!!] https://www.avocado.risp.pl/ [m.in. kursy C++: /pliki do pobrania/teksty/.../]
[!!!] https://www.kursc.terramail.pl/kursc/ [Kurs C++]
https://stud.wsi.edu.pl/~sistudem/ [Podstawy C++]
https://lisek99.w.interia.pl/ [Programowanie w C/C++ pod DOS, WIN, LINUX]
https://maczek.info.bielsko.pl/~zbiju/ATH/ [Ciekawe rzeczy do ściągnięcia]
https://www.sztolnia.pl/?p=faq_pcp
https://www.algorytm.cad.pl/
https://www.republika.pl/piotrciskowski/dydaktyka/materialy.zima.htm#Informatyka3L
https://sprocket.ict.pwr.wroc.pl/~jablonski/
https://www.wemif.pwr.wroc.pl/labc/



[ANG]:
https://www.gametutorials.com/Tutorials/c++/Cpp_Pg1.htm
https://www.cprogramming.com/cgi-bin/source/source.cgi




---[Literatura dla programisty]---


Symfonia C++ J.Grębosza
Pasja C++ J.Grębosza
Mój pierwszy program wydawnictwa HELP


Troche mniej polecana literatura :) :
- książki jakie napisał prof. Bielecki.



---[Środowisko Borland C++ 3.1 oraz instrukcja jego uruchomienia i konfiguracji: ]---

https://www.wemif.pwr.wroc.pl/labc/labc/lab1/lab1a.html


---[Poprzednie wątki]---

[1] https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=3073834&N=1
[2] https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=3124999&N=1

12.01.2005
17:42
smile
[2]

Esqualante [ Jyhad Baghadyr ]

pierwszy? :]

Po.Om >>>>>>
teraz zdecydiwanie cala grafike robie w OpenGL, a okienka windows

To bardzo mnie zaciekawiłeś, bo OpenGL strasznie mnie kręci, tylko nie wiem, jak się za niego zabrać. Możesz powiedzieć, z czego się go uczyłeś? Jakieś książki, kursy w necie? Jakie środowisko? Zawsze chciałem pisać w OpenGL, ale nigdy nie było czasu, albo jakoś motywacji zabrakło...

12.01.2005
17:49
smile
[3]

Regis [ ]

Esqualante --> Ja polecam Visual C++ (sorry, ale nie znam naprawde dobrych narzedzi programistycznych, dostepnych za darmo - DevCpp sie nadaje do wielu rzeczy, ale OpenGL nia nie jest... A debugger w Visualu... Tam mozna porzadnie pracowac :) ). Co do kursow:

nehe.gamedev.net
warsztat.mmogspot.pl [forum]

12.01.2005
23:55
[4]

Po.Om [ Legionista ]

Eh :D Kursów w necie pełno. JA sie uczyłem z ksiązki opengl programowanie gier ( helion ) i bardzo mi to przypadło do gustu. Z publikacji w necie nie kozystalem o dziwo zdecydowanie wole papier. Tak wiec moge polecic tylko jedno :D ale o opengl duzo juz zostało napisane, szkoda ze tak kiepsko (of coze po polsku ) jesli jednak znasz angielski to siegnij do nehe, super super wielkie kompendium wiedzy :D na temat opengl.

co do spcyfikacji openka :D winxp , vc++, Programowanie Gier opengl Helionu i tyle ;D
net jesli znasz angielski to nehe a jesli nie to polski przeklad nehe :D ( szkoda ze nie wszystkie lekcje zostaly przetlumaczone ( przynajmniej od mojej ostatniej wizyty )).


KTo wywola main() w mainie ???? ( podac kod ) ( mi sie udało )

13.01.2005
00:09
smile
[5]

Esqualante [ Jyhad Baghadyr ]

Regis, Po.Om >>>> dzięki, zaraz po sesji zabieram się za nehe :), z językiem nie powinno być problemu, z vc++ też nie, więc myślę, że jakoś sobie poradzę :)

main w mainie? Nigdy się nad tym nie zastanawiałem. Dziś robię stronę w xml, ale jutro może spróbuję :]

13.01.2005
13:54
smile
[6]

Maevius [ Czarownik Budyniowy ]

Prosze o pilna pomoc!

Potrzebuje pomocy, bo fiola juz dostaje. Napisalem kalkulator binarny ktory musze
pilnie dostarczyc. Jest on napisany w jezyku C++. Zrodlo znajdziecie w linku,
skompilowanego exec'a - takze.

90% wyrazen liczy poprawnie. Np. 01010-01010*((1010+10101)-111)*11 wyliczy prawidlowo.

Ale ..

Przy np (10111-111)/111 sie wykrzacza. Zdaje sie, ze pomija drugi nawias przy dokonywaniu obliczen. Albo robi problemy podczas wykonywania dzielenia.

Czy moglibyscie mi pomoc ? Ja juz sie poddaje, nie wiem gdzie jest blad.

Pozdrawiam!

13.01.2005
14:37
[7]

Po.Om [ Legionista ]

Maevius ---> Wytlumacz mi tylko w czym tkwi problem. Mianowicie to ma dodawac bity jak bity+ bity cz ma to zamieniac na liczby i dodawac ? moze to lamerskie pytanie ale sie nie orjentuje poniewaz nie stoje jeszcze przed takimi problemami ( szkoła srednia posiada zubozały material w ramach programowania...) jak napiszesz cos wiecej moe uda mi sie napisać cos podobnego, bo problem wyglada ciekawie.

13.01.2005
15:30
[8]

Maevius [ Czarownik Budyniowy ]

To kalkuluje jedynie wyrazenia binarne. Jak widzisz, kraczy sie przy typie wyrazen (wyrazenie+wyrazenie)-wyrazenie, bo nie bierze pod uwage 2 nawiasu. I nie wiem dlaczego wlasnie tylko tak sie krzaczy :(

13.01.2005
16:57
smile
[9]

Arxel [ SperMan ]

w DevC++ jak daje zeby mi kompilowal i potem urochomil to pisze ze plik nie jest skopilowany a zadnego bledu nie ma w kodzie:/juz nawet przeinstlowalem i nic
nawet to co bylo w progsie - czyli przyklady np. Jackpot nie chce sie skompilowac a dawniej robil to bez problemu - co jest grane??

13.01.2005
19:02
smile
[10]

Po.Om [ Legionista ]

Arxel ---> kim ty jesteś ??? :D o co ci chodzi ??? :D

Maevius ---> postaram sie dziś jeszcze posiedzieć, przypomne sobie liczby binarne i dzialania na nich. Jednak nic nie obiecuje ( oprocz tego ze sie postaram ).

Hu hu.... Giera ktoś moze w Tibie ???? tak sie pytam dla towarzystwa :D

13.01.2005
21:15
[11]

Maevius [ Czarownik Budyniowy ]

Dzieki wielkie Po.Om !

Zauwaz ze:

float oblicz(int odkad, int dokad)

label0:
int n=0,b=0;
float tmp;
for (int i=odkad; i<=dokad; i++)

if (nawias>0) b=i; /*Sprawdza czy sa nawiasy, jesli sa to zaglebia sie
coraz bardziej w wyrazenie, az napotka na wyrazenie bez nawiasow, wtedy idzie
dalej i wykonuje najpierw mnozenie/dzielenie a pozniej dodawanie/odejmowanie*/
if (nawias<0)

wywalilem && b!=0. i teraz bezproblemowo liczy np (0101-01010)/101.

Ale juz w ogole nie liczy wyrazen typu 01010-(((010+010101)-111)+111-1010)+1010.

Po prostu staje.

13.01.2005
21:17
[12]

Maevius [ Czarownik Budyniowy ]

A gdy jest:

float oblicz(int odkad, int dokad)

label0:
int n=0,b=0;
float tmp;
for (int i=odkad; i<=dokad; i++)

if (nawias>0) b=i; /*Sprawdza czy sa nawiasy, jesli sa to zaglebia sie
coraz bardziej w wyrazenie, az napotka na wyrazenie bez nawiasow, wtedy idzie
dalej i wykonuje najpierw mnozenie/dzielenie a pozniej dodawanie/odejmowanie*/
if (nawias<0 && b!=0)

nawias--;
nawias++;
tmp=oblicz(b,i-1);
dokad -= i-1-b;
goto label0;



To wtedy liczy dlugie wyrazenia z zagniezdzonymi nawiasami, ale wykrzacza sie przy tych typu (wyrazenie+wyrazenie)/wyrazenie. Pomija drugi nawias.

Oczywiscie luknij na reszte kodu bys zczail ten kawaleczek ;-)

14.01.2005
20:18
[13]

Didier z Rivii [ life 4 sound ]

wiem ze to wątek o C, ale moze jednak ktos z was mi pomoze.

Potrzebuje napisac w Pascalu kalkulator dzialajacy w RPN, tyle ze teraz jest okres kolokwiow i nie mam na to za duzo, czasu, moze ktos z was widzial gdzies kod źródłowy takiego programu, albo chociaz algorytma dzialania...?

14.01.2005
20:34
smile
[14]

_Robo_ [ Generaďż˝ ]

Maevius -> za uzywanie 'goto' powinno sie strzelac to taka uwaga do kodowania. Czasy BASIC-a juz minely.

14.01.2005
20:48
[15]

Po.Om [ Legionista ]

Zdecydowanie za mało nowości....dla mnie ten wątek umarł :(


cya....zdecydowanie wiecej mnie juz tu nie bedzie ( lubie mieć wybór np co do problemów )

15.01.2005
18:32
smile
[16]

fifalk [ fifalkowiec ]

proste pytanie :-)

mam strukcture:
struct Str

int liczba;
char tablica[20];


i zmienna:
Str struk;

jak zapisac (i odczytac) "struk" do pliku binarnego? w "write" jako pierwszy parametr w definicji jest char*, wiec mi nie dziala takie cos: plik.write(struk, sizeof(Str)) :-( w necie tez nic znalezc nie moge...

15.01.2005
18:57
[17]

Kubol [ Pretorianin ]

fifalk -> jak to nie dziala ?
znaczy nie kompiluje sie ?

sproboj tak:
plik.write( (char*)(&struk), sizeof(Str));

char ma dlugosc 1 bajta, dlatego za pomoca wskaznika do char mozna zapisac adres dowolnej stroktury i castowac go na prawo i lewo ;-).

przykladowo, majac np. char tablica[20] mozna zrobic
int* i_Tablica = (int*)tablica i czytac sobie po 4 bajty naraz ;-).
Nalezy tylko pamietac, ze i_Tablica ma rozmiar 5 (20/4).

15.01.2005
19:09
smile
[18]

Kubol [ Pretorianin ]

BTw, zauwżyłem panowie, że brakuje tu najważniejszej (bo free ;-) ) pozycji w literaturze !
Polecam 'Thinking in C++'
To fajna książka przede wszystkim dla zrozumienia idei programowania obiektowego. Nie takie same myczki jak w symfonii, ale powolny i rzeczowy wstęp.
Ale na początek radzilbym się zaopatrzyć w egzemplarz 'ANSI C' i postarać sie zrozumieć ideę wskaźników. Nie rozumiesz C, nie zrozumiesz C++ (to tylko moja prywatna opinia)

I jeszce jedno (a może 2 ;-))
1. Visual Studio można zdaje się pobrać za free od microsoftu (jets taka wersja okrojona bez zdaje się dokumentacji)
2.Chcialbym zdementować pogłoski, jakoby DevCpp nie nadawało sie do opengl'a. DevCpp używa MinGW (port linuxowych bibliotek gnu, w tym kompilatora gcc, na winde), a w mingw spokojnie sobie kompilowałem opengla.
Generalnie Visual Studio jest fajne, ale ukrywa przed uzytkownikiem pare rzeczy i szczerze mowiac lepiej zaczac od kompilowania pod linuxem lub z uzyciem MinGW pod winde. Wiem, bo zaczynalem swoja kariere od VS.

15.01.2005
19:10
smile
[19]

fifalk [ fifalkowiec ]

aale ja glupi jestem :-) probowalem tak: plik.write( (char*)struk, sizeof(Str)) - zapomnialem o & :-) dzieki wielkie :-)

15.01.2005
19:11
[20]

Maevius [ Czarownik Budyniowy ]

Robo -> Pomoglbys mi zamiast marudzic :)

https://dracul.kill.pl/~veiun/binarny

Nie wiem czemu tak liczy jak liczy..

wstaw sobie zamaist goto 'continue;' i bedzie lzej, huh ? ;)

16.01.2005
13:52
[21]

Maevius [ Czarownik Budyniowy ]

Poradzilem sobie. Liczy swietnie.

17.01.2005
16:21
smile
[22]

Aziss [ Centurion ]

Znalazłem Wasz miły wątek ...

Mam książeczkę o ANSI C ...

I zaczynam, ale mam pytania:

... czy kompilatory pod C++ kompilują również samo C ?? Dla przykładu taki "Dev C++". Teoretycznie stoi jak byk: "Bloodshed Dev-C++ is a full-featured Integrated Development Environment (IDE) for the C/C++ programming language." Pytam, bo kiedyś ktoś się w tej kwestii oburzył tutaj, że czemu Dev C++, jak to samo C ...

... czy Dev C++ to dobry start ... na razie tylko kiedyś z kartką kompilowałem wersję quake'a pod linuksa itp. ??

Podtrzymujcie okresowo ten wątek, wydaje mi się potrzebny, taki jakiś "bez zadęcia".

17.01.2005
19:51
[23]

Maevius [ Czarownik Budyniowy ]

owszem, dev ma podczas otwierania nowego projektu opcje kompilowania w czystym c

17.01.2005
19:57
smile
[24]

chreo [ I love dorotka_l ]

Witam, może wy mi pomożecie z moim problemem?
Albo może wiecie gdzie się zwrócić z nim.
Sorry, że dopiero zauważyłem wasz wątek, bo wcześniej zrobiłem swój.
Proszę - zajrzyjcie do niego i odpiszcie jeśli coś wiecie.
OTO LINK:

17.01.2005
22:59
[25]

Kubol [ Pretorianin ]

Aziss-->

Generalnie można założyć, że kompilator c++ kompiluje kod napisany w ansi C.
Dev cpp jest dobry bo damowy i używa sportowanego na windowsa bardzo popularnego kompilatora gcc, więc dodatkowym bonusem jest to, że nie ma potem niemiłych niespodzianek poprzesiadce na jakiegoś linuxa.Kompilatory borlanda (przynajmniej te starsze) i Microsoft Visual C++ maja braki w zgodności ze standardem C++ np. w borlandzie jest zdaje sie domyslnym typ int, a MSVC 6.0 zle uzywa scopa zmiennej zadeklarowanej wewnatrz bloku, przykładowo, w mscv 6.0 taki numer:

for(int i=0; i<size;i++) ‹
i=costam;

i=1;

przejdzie, a nie jest zgodny z ansi c++ i juz wiekszosc innych kompilaotrów powie, że "i" nie jest zadeklarowane, bo jego zasięg ogranicza się do fora i poza forem powinien byc niewidoczny.

17.01.2005
23:07
smile
[26]

hotDog [ Outsider ]

Witam programistów :-)


Czy ktoś z was czytał może "Język C++" Stroustrupa? Książka trochę zamotana dla początkujacych (czyli dla mnie), ale jestem już na 70 stronie i zaczynam czytać Dział 1 :-) Ale nie o tym chciałem...

Przeczytałem w niej, że w C++ są dostępne kolekcje. Są to jakieś tam gotowe klasy itd. I czy w tym przypadku klasa MAP to to samo co tablica asocjacyjna? Czy używanie MAP jest lepsze niż zwykłych tablic asocjacyjnych?

I po trzecie: czy ktoś mógłby mi jakoś krótko przykładowo napisać jak poprawnie zdefniować takie coś? wiem, że powinno być: #include <map> oraz <string> a później: map<string, inc> tablica; Ale co dalej? elementy się wstawia poprzez tablica.push_back(); ? Chcę sobie stworzyć taką tablicę i ją wypełnić.. ale jakoś mi to nie wychodzi :-/

Pozdr.

18.01.2005
22:18
[27]

Kubol [ Pretorianin ]

hotDog-->
Google najlepszym przyjacielem programisty !

18.01.2005
22:22
smile
[28]

Kubol [ Pretorianin ]

A, jedna uwaga:
w książce, do której link podałem powyżej używa się starego sposobu importowania. Nie należy go używac, zamiast #include <map.h> lepiej użyć #include<map>, ale uwaga:
po inkludach trzeba (no, nie trzeba, ale dla początkujących to lepiej tak) umieścić linijke

using namespace std;

18.01.2005
22:31
[29]

Kubol [ Pretorianin ]

Wspominałem gdzieś o thinking in c++, radze sobie zassać !
Apropos map, to zobacz tutaj (wycinek z Thinking In C++ Vol.2)

18.01.2005
23:00
[30]

Zajcef [ Konsul ]

2. Dany jest plik fizyczny towary.dat o następującej strukturze

3456 Mleko 1.50
1987 Maslo 2.80
….. …… …..
….. ……. …..

Zawierający następujące dane o towarach: kod towaru, nazwe i cene. Napisz program, który otwiera plik, wyswietla na ekranie dane zawarte w pliku, a na koncu drukuje (srednia cene towaru oraz ilość wszystkich towarow w sklepie.


Nie oczekuje gotowego rozwiazania. Chodzi mi jedynie o sam schemat tego zadania jak ma mneij wiecej wygladac. Z jedna dana bylbym sobie poradzic, ale z kilkoma moze byc trudniej. Jakby ktos mial chwilke, bede bardzo wdzieczny i powtarzam nie chodzi o gotowe rozwiazanie bo i tak musze sie nauczyc robic to sam na zaliczenie.
Narazie splodzilem cos takiego ..
int main()

int kod;
char nazwa;
float cena;
int ile=0;

cout<<"wyswietlam dane z pliku towary.dat"<<endl;
cout<<"nacisnij dowolny klawisz"<<endl;
getch();
ifstream plik;
plik.open("c:\\towary.dat");
if (!plik)

cout<<"otwarcie pliku nie powiodlo sie"<<endl;
getch();



Sadze, ze do tego momentu raczej nic nie schrzanilem :)
Tu zaczynaja sie schody i brak pomyslu...
while (plik>>kod>>nazwa>>cena)

double cena_tab[1000],kod_tab[1000],nazwa_tab[1000];
ile_kod=0,ile_cen=0,ile_nazw=0;
kod_tab[ile_kod]=kod;
ile_kod++;
cena_tab[ile_cen]=cena;
ile_cen++;
nazwa_tab[ile_nazw]=nazwa;
ile_nazw++;

Dalsza czesc bedzie raczej prosta...ale samej petli nie potrafie zrobic jakos ...

19.01.2005
17:14
smile
[31]

znany-banita [ Pretorianin ]

powie mi ktoś dlaczego ten program nie działa??????????????????????????


#include <stdio.h>
#include <conio.h>
#include "stdafx.h"


void main()‹

char* path ="D:\\plik.txt";
char* mode;
FILE* file;

struct ‹
char imie[10];
char nazwisko[10];
char telefon[9];
char ulica[10];
int numer;
char co[10];
int kwota;› os1;

printf ("Dane osoby pierwszej\n");
printf ("podaj imie ---->\t");
scanf ("%s", os1.imie);
printf ("podaj nazwisko ---->\t");
scanf ("%s", os1.nazwisko);
printf ("podaj numer telefonu ---->\t");
scanf ("%s", os1.telefon);
printf ("podaj nazwe ulicy---->\t");
scanf ("%s", os1.ulica);
printf ("podaj numer domu---->\t");
scanf ("%d", os1.numer);
printf ("co wypozyczyl?---->\t");
scanf ("%s", os1.co);
printf ("Za jaką kwotę?---->\t");
scanf ("%d", os1.kwota);


mode = "w";
file = fopen(path, mode);
fprintf(file, "Imie\t\t Nazwisko\t\t Nr.Tel.\t Ulica\t\t Numer\t\t Przedmiot\t Kwota(zl)\n%s,%s,%s,%s,%d,%s,%d", os1.imie, os1.nazwisko, os1.telefon, os1.ulica, os1.numer, os1.co, os1.kwota);

getch();
return;


19.01.2005
17:15
[32]

znany-banita [ Pretorianin ]

sie powklejalo jakoś chamsko, nie wiem jak to wkleic zeby nawiasiki sie powklejaly

19.01.2005
17:25
[33]

znany-banita [ Pretorianin ]

niech sie ktoś odezwieeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

19.01.2005
22:18
[34]

aka [ Chor��y ]

scanf ("%s", &os1.imie);

tak powinny wygladc funkcje scanf, zapomniales o &

20.01.2005
21:44
smile
[35]

Regis [ ]

Kurde, panowie, moze wy bedziecie wiedziec w czym rzecz - otoz mam taki problem, ze mam straszny mlyn z liczbami podczas pisania programu. Juz tlumacze o co mi biega: mam sobie jakiegos tam int-a - moge na nim wykonywac dowolne operacje i wszystko hula jak nalezy. Natomiast kiedy definiuje sobie zmienna typu double czy long, to wszystko sie wkrzacza i zamiast np. 34.42 mam 132423454353 czy cos takiego... Wiecie moze w czym rzecz? Dosc dawno nie pisalem w C i moze robie jakis glupi blad, ale z drugien strony - napisalem program skladajacy sie TYLKO z jednej deklaracji zmiennej typu double (wraz z wartoscia) i printf-a ktory ma ja wypisywac i ten program wlasnie m.in. tak zle dziala, a przeciez w nim chyba nie da sie popelnic bledu :P Wogole nigdy nie mialem takiego problemu, wiec kompletnie nie wiem co moze byc winne... Czy to moze byc wina kompilatora? Korzystam z DevC++ 4.9.9.0. Help! Musze napisac progsa na informatyke :P

20.01.2005
23:20
[36]

Kubol [ Pretorianin ]

Regis-->
Byłoby pomocne, gdybyś jednak zamieścił kod tego programu.
Jakiego używasz formatu w printfie ?? do double %f, do inta i longa: %d.
Jeśli nie to, to jak inicjalizujesz zmienną ? może problem polega początkowej wartości.
Ale bez kodu NIC nie da się powiedzieć

21.01.2005
00:05
[37]

jmail [ Pretorianin ]

widziałem tu jakąś wypowiedź o dobrym debuggerze w Visual C++. Nie da się go porownać z SoftIcem.

"Daj człowiekowi a, a jutro będzie głodny. Naucz go ować, a już nigdy nie będzie głodny"

21.01.2005
01:00
[38]

Kubol [ Pretorianin ]

Debugger to straszne zło ;-) Osobiście pracuję ostatnio na 64 bit HP-UX-ie i jest tam tylko gdb. I ilość
błędów spadła mi o 200%, bo sprawdzam każdy kawałek kodu 2x przed uruchomieniem ;-).
Perspetywa debugowania z gdb chyba wpłyneła na moją podświadomość - boję się robić błędy - LOL

21.01.2005
10:33
smile
[39]

Regis [ ]

Kubol --> Tak jak sie spodziewalem - debilny blad... Chcialem wypisac doubla za pomoca %d - przy %f dziala idealnie :) Dzieki :)

Moja pokuta:

for(int i=0; i<1000; i++) printf("Jestem lamerem!");

;)

21.01.2005
22:48
[40]

Kubol [ Pretorianin ]

Regis--> Wierz mi, pracuję z naprawdę wymiatającymi goścmi i oni też popełniają kretyńskie błędy i też potrzebuja pomocy innych. Poza tym lamerzy nie piszą w C tylko w pascalu i visual basicu, względnie w delphi ;-)

21.01.2005
23:01
[41]

ronn [ moralizator ]

Pilnie prosze o jakiegos linka, ktory wyjasnia tworzenie listy dynamicznej, kasowanie elemetow tej listy, sortowanie.. dodawanie itp. Nie chodzi mi tylko o kod zrodlowy, ale zdecydowanie bardziej o dokladne wyjasnienie, bez kodu moge sie obejsc. Z gory dzieki :)

[wiem, ze sa adresy w tytule, ale moze akurat ktos pamieta dokladne miejsce i nie bede musial szukac :)]

21.01.2005
23:05
smile
[42]

Kubol [ Pretorianin ]

Tak mnie naszło (po kilku piwkach robie sie wylewny ;-)), ze C i Java to najpiękniejsze języki. C++ jest już troszkę zbyt przekombinowany (ktoś kiedyś powiedział, że C++ przypomina skrzyżowanie psa z ośmiornicą. Z jednej strony jest obiektowy, z drugiej strony można w nim pisać koszmarnie nieobiektowo). Delphi to żenada. Jak mówi mój kolega, który ma ostatnio nieprzyjemność pracować w Delphi, jest ot język niedeterministyczny ;-) i nigdy do końca nie wiadomo co tak naprawdę nasz program robi ;-)

21.01.2005
23:08
[43]

ronn [ moralizator ]

Wlasnie zapomnialem dodac, ze chodzi mi o jezyk C :)

22.01.2005
09:30
[44]

Regis [ ]

ronn --> A tu nie ma: www.algorytm.cad.pl ? Strzelam w ciemno, bo nie chce mi sie sprawdzac, ale to naprawde porzadna strona i jest tam kupe rzeczy :P

Kubol --> Zgadzam sie w 100% jesli o Jave chodzi - rozbudowana, czytelna (choc poki sie nie zaczalem jej uczyc, to uwazalem cos dokladnie odwrotnego :P ), "wzorcowo" obiektowa :) Ma tylko dwie wady - jest zdeka zbyt wolna oraz wymusza oboiektowosc przy problemach, ktorych rozwiazywanie w sposob obiektowy jest utrudnianiem sobie zycia :P Ale bez dwoch zdan - to jest jezyk z przyszloscia, dlatego sie go od jakiegos czasu ucze (choc szkola skutecznie mi to utrudnia ;))

22.01.2005
11:09
[45]

Kubol [ Pretorianin ]

Regis-->
Java już nie jest taka znowu wolna. Niestety jest okropnie pamięciożerna, a ponieważ windows swapuje wszysko co tylko może, nawet jak ma 500M wolnego ramu, to niestety wydaje sie czasami powolna.
Masz rację, Java wymusza podejście obiektowe. Ale jak masz problem nieobiektowy, to uzywasz np. C, a potem przez JNI podpinasz sobie do Javy ;-) I juz. Poprostu trzeba używać właściwych narzędzi do właściwej pracy. C++ też się do wszystkiego nie nadaje. Poza tym zawsze możesz w Javie zrobić wszystko na staticach. A w 1.5 można zaimportować (static import) metody statyczne z klas i używać ich jak funkcji w C (zamiast System.currentTimeMillis() poprostu currentTimeMillis() )

22.01.2005
13:30
[46]

Regis [ ]

O tym podpinaniu to szczerze mowiac nie wiedzialem :P

A co do szybkosci - ja niestety nie dysponuje 0,5 giga ramu, a jedynie polowa tego (a i procesor nie za szybki mam) i strasznie mnie owa powolnosc w Javie wkurza - nie wiem jak jest na innych komputerach, ale mnie interesuje to jak dziala u mnie a nie u innych ;) Skoro C moze dzialac szybko, to Java tez by mogla :P Oczywiscie zartuje, ale nie zmienia to faktu, ze u mnie Java dziala za wolno jak na moje oczekiwania :)

22.01.2005
15:16
smile
[47]

Kubol [ Pretorianin ]

Cóż, faktycznie Java niestety słabo nadaje się do programów działąjących przez stosunkowo krótki czas. Brakuje tutaj kompilowania całego programu do kodu natywnego, jak to ma miejsce w .NET. Po pierwsze, zchodzi czas na uruchomienie samej maszyny, ktora musi zaalokować dla siebie pamięć i przygotować wszystko pod uruchomienie aplikacji.
Potem kod uruchamiany jest przez interpreter. W Nowoczesnych maszynach wirtualnych typu hotspot, kod, który jest wielokrotnie wykonywany (np. ciało jakiejs pętli) jest kompilowany do kodu natywnego (sic !). Teoretycznie jest to super sposób, bo kod może być optymalizowany w czasie działania programu (jest z tym związany jeszce jeden fajny motyw - tzw Ascpect Oriented Programming, ale to zamotane i skomplikowane). Fajne jest to dla aplikacji serwerowej, która działa nieprzerwanie wiele dni czy miesięcy. Jednak jest to zbyt czasochłonne dla aplikacji która jest uruchamiana jednorazowo na kilka sekund czy minut. Są kompilatory Javy do programu natywnego, ale nie widzialem takiego na windowsa niestety.

24.01.2005
00:45
[48]

WindowsXP [ Konsul ]

Pobrałem kod programu z SourceForge i mam problem.

Podczas kompilacji wypluwa mi trzy błędy:

c:\docume~1\windows\pulpit\keylog~1.0-s\keylog~1.0-s\keylog~1.cpp:10: Message.h: No such file or directory
In file included from c:\docume~1\windows\pulpit\keylog~1.0-s\keylog~1.0-s\keylog~1.cpp:11:
c:\docume~1\windows\pulpit\keylog~1.0-s\keylog~1.0-s\KeyloggerFilter.h:10: StorageKit.h: No such file or directory
c:\docume~1\windows\pulpit\keylog~1.0-s\keylog~1.0-s\KeyloggerFilter.h:11: InputServerFilter.h: No such file or directory

Sęk w tym, że wszystkie powyższe pliki istnieją i są w dokładnie tej lokalizacji, którą mi wypluwa. Co jest?

Mogę poczęstować pełnym źródłem jeśli ktoś chętny. Program to "Keylogger 1.0", niestety nie widzę go teraz na SourceForge.

24.01.2005
00:47
[49]

WindowsXP [ Konsul ]

Kubol, aż tak bardzo C różni się od C++? Niby czytam te kursy, ale patrzę na daty aktualizacji - x.x.2000/1997 itd. i myślę, że coś tu jest nie tak... :-) Czyli zaczynać od C? Zabieram się od dupy strony? :-)

24.01.2005
14:52
smile
[50]

Regis [ ]

Napisalem sobie dzisiaj z nudow programik szyfrujacy teksty algorytmem 'PlayFair' - jak ktos jest zainteresowany, to moze sobie zobaczyc - linka daje ponizej :) Program jest jeszcze nieco ograniczony, ale moze za jakis czas go nieco ulepsze - wczytuje dane z klawiatury i wypisuje na ekran. Obok na screenie macie przyklad dzialania:

Dla klucza
REGIS
tekst
TAKIE SOBIE NIECO PRZYDLUGIE HASELKO DO ZASZYFROWANIA
(oczywiscie pozbawiony spacji) zostaje zaszyfrowany do
ODMEGEPASGMSGBPQSVDMNQISRKFRGKHPATVFFFZDAVVBMSCV

Program poki co tylko szyfruje, bez mozliwosci deszyfracji, wiec jest srednio uzyteczny, ale jak ktos bedzie chcial sie pobawic, albo dowiedziec sie jak dziala ten szyfr, to mu sie przyda ;)

P.S. Dla wszystkich, ktorzy nie wiedza jak dziala Playfair - wszystkie litery J sa zamieniane na I, wiec sie nie dziwcie, ze cos wam znika :P




24.01.2005
22:59
[51]

Interface [ Legionista ]

nie bijcie, jestem poczatkujacy ;)
mam problem, pisze sobie programik ktory bedzie sortowal wg 3 algo.
zatrzymalem sie na jednym, quicksort...
w skrócie wyglada to tak:


#define tablica 100

int part (int t[], int l, int r)

....
....


void qsort (int t[], int l, int r)

...
...



//inne sortowania


main()

....
....


qsort(tab, 0, tablica-1);

....
....



problem w tym ze przepisuje mi liczby, nie chce sortować :| algorytm jest ok
o co chodzi?

25.01.2005
11:06
[52]

Kubol [ Pretorianin ]

windowsXP
Co do różnicy pomiędzy C a C++ - to zależy czy chcesz pisać obiektowo, czy nie. w C nie można pisać obiketowo, więc jest pewna różnica. A różnica pomiędzy programowanim obiektowym a nieobiektowym jest kolosalna. Ale naprawdę dobrze jest zacząć od C ( Jeśl interesuje Cie tylko programowanie obiektowe, to zacznij od Javy)
Dobrze jest zacząć od C ponieważ C++ rozszerza C. I podstawowe elementy typu funkcje, pętle, operatory (podstawowe) są takie same. IMO, chcąc uczyć się C++ trzaba przynajmniej z miesiąc spędzić nad C. Ale nie za długo, bo chociaż syntaktycznie języki są podobne, to idea programowania obiektowego jest zasadniczo inna. Podałem gdzies linka do Thinking in C++, przeczytaj sobie. Jak nie znasz angielskiego to problem. Jest polskie tłumaczenie, ale to wydatek pewnie ok 70 złotych.
Poza tym uważaj na stare borlandy, bo nie są one kompatybilne z obecnymi standardami C++.

Interface
1. Kod, kod, kod ! To, że myślisz, że jest dobrze, to nic nie znaczy !
2.Co znaczy "przepisuje mi liczby" ?

28.01.2005
15:26
smile
[53]

Ramz [ Konsul ]

Jak by wykonac program na odchylenie standadowe ? (link do wzoru podaje nizej.

PS.Nie prosze o gotowy program tylko jais pomysl.

28.01.2005
19:47
[54]

Ramz [ Konsul ]

^UP

28.01.2005
21:08
smile
[55]

Regis [ ]

Ramz --> Ale moze konkretniej? Przeciez jak masz wszystkie dane ze wzoru, to nie problem obliczyc &#963; ... Czego konkretnie dotyczy Twoj problem? Moze podaj jakas specyfikacje programu i co on ma robic...

28.01.2005
23:35
[56]

Esqualante [ Jyhad Baghadyr ]

Ramz >>>> jeżeli chodzi o implementację wzoru:
policzenie średniej: robisz for'a od 1 do n, w którym do sumy dodajesz za każdym razem (x - m)^2, a następnie dzielisz przez n, dokładnie tak, jak jest zapisane...

jeżeli chodzi o sam wzór: jest on nie do końca prawdziwy, mianowicie przyjmuje, że dane podlegają rozkładowi normalnemu. W rzeczywistości (dla dowolnego rozkładu) wzór wygląda trochę inaczej.

29.01.2005
12:24
smile
[57]

Ramz [ Konsul ]

Esqualante - o taka odpowiedz mi chodzilo. Moglbyc podac poprawny wzor, oraz (w podobnysposob) jak wykonac program.

29.01.2005
12:39
smile
[58]

MGS_Saladin [ ]

siema
wie ktoś jak edytować proces w pamięci by zbudować typowy trainer? Przyda mi się wszystko na ten temat (kursy, źródła itp...) o ile takie są :|

29.01.2005
16:53
[59]

Esqualante [ Jyhad Baghadyr ]

Ramz >>>> to tak czy inaczej, tak jak napisał Regis, powinieneś podać jakieś info o programie, który piszesz: w jakim języku, jakie masz dane wejściowe, co dokładnie ma program obliczać itd

Co do wzoru, to jest to wymagana jest elementarna znajomość rachunku prawdopodobieństwa.

odchylenie to pierwiastek kwadratowy wariancji.

wariancja to E(X^2) - (EX)^2, gdzie EX to wartość oczekiwana zmiennej losowej X.

EX oblicza się według wzoru

x1*p(x1) + x2*p(x2) + ... + xn*p(xn)

gdzie x1, x2, ... , xn to kolejne wartości zmiennej losowej a p(xi) - prawdopodobieństwo, że zmienna losowa X będzie miała wartość xi.

Co do implementacji tego wzoru, to nie wiadomo (nie podałeś) w jaki sposób podany jest rozkład prawdopodobieństwa (wzór, tablica wartości, jaki ro rozkład - np. równomierny), ani nic nie napisałeś o zmiennej losowej, więc nie wiem, co napisać.

29.01.2005
21:04
[60]

aka [ Chor��y ]

MGS_Saladin --> w linku znajdziesz źródła trainerów napisane w asemblerze.

Ogólnie zainteresuj się tymi funkcjami:
FindWindow
GetWindowThreadProcessId
OpenProcess
WriteProcessMemory
oraz ewentualnie:
CreateThread

30.01.2005
13:37
smile
[61]

Ramz [ Konsul ]

Esqualante- program ma byc pisany w c++, dane wejsciowe nie mam pojecia jakie maja byc (ma byc to ponoc na egzaminie :P)- ale domyslam sie ze moze to byc tablica jednowymiarowa z elementami; program ma liczyc tak jak juz mowilem odchylenie standardowe.

Jesli dobrze rozumiem wzor jest taki sqr((E(Xi-Xo)^2)n-1)
gdzie
Xi - dane wprowadze przez uzytkwonika
Xo - srednia artmetyczan dotychczasowo wprowadzonych elementow
n - ilosc wprowadzanych elementow

i tak majac dane ‹1,2,8,4› i korzystajac ze wzoru bedzie:

sqr(((1-1)^2+(2-3/4)^2+(8-11/3)^2+(4-15/4)^2)/(4-1))=

Oczywiscie robione ze wzoru z wikipedji.

Czy dobrze to rozumiem ??

30.01.2005
14:17
[62]

Esqualante [ Jyhad Baghadyr ]

Jeżeli ma to być rozkład równomierny i do policzenia odchylenie standardowe, to dla Twojego przykładu będzie tak:

wartość oczekiwana:

m = (1 + 2 + 8 + 4) / 4 (zwykła średnia arytmetyczna)

suma będzie wyglądać tak:

S = (1 - m)^2 + (2 - m)^2 + (8 - m)^2 + (4 - m)^2

sumę dzieli sie przez N = 4 i jeszcze liczy pierwiastek. (to jest wzór pierwszy z wikipedii)

30.01.2005
15:20
smile
[63]

WindowsXP [ Konsul ]

Jak skompilowac pliki Turbo Pascala do EXE? Jestem legalny, uzywam TP 5.5 i kompiluje on (ALT+F9) jedynie do formatu .PAS.

02.02.2005
16:34
smile
[64]

Regis [ ]

WindowsXP --> Hmmm... A moze jest gdzies opcja build?

A teraz JA mam pytanie - jak w C++/C wczytac PO JEDNYM ZNAKU/CYFRZE liczbe z stdin?
Musze zapisac kolejne cyfry liczby w tablicy (tak zeby zamiast np. 546 miec w osobnych polach tablicy 5, 4 i 6) ? Ew. jak po wczytaniu calego inta do jednej zmiennej "rozparcelowac go" na pojkedyncze cyfry ktore bede mogl wstawic to tablicy?

02.02.2005
17:18
smile
[65]

Esqualante [ Jyhad Baghadyr ]

Regis >>>> getcharem

int c;
c = getchar();
c -= 48;

‹c - pobrana cyfra›

03.02.2005
14:18
[66]

Regis [ ]

DZieki - zapomnialem o tym ze mozna odjac 48 i dostac liczbe i zamiast tego bawilem sie funkcjami konwertujacymi string do inta (atoi() ) i mi sie sypalo wszystko :P Tylko moze jeszczce mi powiesz jaki warunek mam postawic, zeby getchar wczytywal mi tylko dopoki nie natrafi na puste pole (to umiem), a potem przeszedl do kolejnej linii (z tym mam problem)? ze scanf to jest proste, bo od razu pobiera ciag do spacji, jak nic nie ma, to przechodzi do nastepnej linii, a tu nie wiem jak jest, ale wydaje mi sie, ze trzeba mu "nakazac" przejsc do nastepnej linii. Ogolnie chodzi mi o to, zeby wczytac z stdin dwie liczby bedace pod soba (niestety dlugosc moze byc dowolna) i zapisac je do tablicy., Tzn wczytuje liczbe pierwsza, cyfra po cyfrze i zapelniam nia tablice, a potem przechodze do nastepnej linii i zapelniam druga liczba druga tablice.

03.02.2005
14:30
smile
[67]

Esqualante [ Jyhad Baghadyr ]

Regis >>>>> przecież wszystkie znaki w ASCII mają swój kod, enter też :) i tak naprawdę wszystko podawane jest w jednym ciągu, więc wystarczy, że np po odejmowaniu

c -= 48;

zrobisz sprawdzenie, czy c < 0. Jeżeli jest - wtedy przeskakujesz ten znak i idziesz dalej. Albo możesz wczytywanie liczby zrobić w pętli, i gdy c < 0 lib > 9, wtedy wyskakujesz z niej i zaczynasz następną.

Robiłem coś takiego do algorytmu Karatsuby, jak chcesz, mogę Tobie wkelić wczytywanie danych, tak aby cyfra jedności była w indeksie 0 :) (trochę pokomplikowane ale było potrzebne, aby algorytm był odpowiednio szybki)

03.02.2005
14:36
[68]

Regis [ ]

Esqualante --> Mozesz wkleic, chociaz akurat tym razem potrzebuje kolejnosci odwrotnej, czyli takiej jaka jest przy wczytywaniu :) A za pomoc dzieki - zajme sie dalej pisaniem po obiedzie :>

03.02.2005
14:51
[69]

Esqualante [ Jyhad Baghadyr ]

Tak to się odbywa w moim programie (pisany w C). W dalszej częsci programu korzystam z pPierwsza i pDruga. Było jeszcze parę rzeczy w iteracjach, ale dla czytelności je usunąłem :>

#define K 10000
// maksymalna dlugosc liczby

int i,D1,D2,znak,
Pierwsza[K], // tablice statyczne, D1 - dlugosc pierwszej, D2 - dlugosc drugiej
Druga[K],
* pPierwsza = NULL, // pPierwsza i pDruga staja sie wskaznikami do tablic
* pDruga = NULL;

D1 = 0;
D2 = 0;

for (i = K-1; i >= 0; i--)

znak = getchar()-48;
if (znak<0 || znak>9) break;
Pierwsza = znak;
D1++;

pPierwsza = Pierwsza+K-D1;

for (i = K-1; i >= 0; i--)

znak = getchar()-48;
if (znak<0 || znak>9) break;
Druga = znak;
D2++;

pDruga = Druga+K-D2;

03.02.2005
14:54
[70]

Esqualante [ Jyhad Baghadyr ]

[edit]
Zapomniałem, że cenzura wcina [ i ] :)

#define K 10000
// maksymalna dlugosc liczby

int j,D1,D2,znak,
Pierwsza[K], // tablice statyczne, D1 - dlugosc pierwszej, D2 - dlugosc drugiej
Druga[K],
* pPierwsza = NULL, // pPierwsza i pDruga staja sie wskaznikami do tablic
* pDruga = NULL;

D1 = 0;
D2 = 0;

for (j = K-1; j >= 0; j--)

znak = getchar()-48;
if (znak<0 || znak>9) break;
Pierwsza[j] = znak;
D1++;

pPierwsza = Pierwsza+K-D1;

for (j = K-1; j >= 0; j--)

znak = getchar()-48;
if (znak<0 || znak>9) break;
Druga[j] = znak;
D2++;

pDruga = Druga+K-D2;

15.02.2005
12:09
[71]

Dewey [ Konsul ]

Witam. Miałbym do Was wielką prosśbę. Czy znacie może adresy stron www na których miałbym ładnie i klarownie (ale w miarę rozwięźle) wypisane takie pojęcia jak STOS, ASEMBLER, KODOWANIE, KODOWANIE STRATNE, REKURENCJA? Jestem kompletnie zielony w dziedzinie programowania i nie wiem czy np. pojęcie stosu i asemblera odnosi się w identyczny sposób do wszystkich języków programowanie. Na zajęciach ćwiczymy Basica (nie visual basica tylko tego podstawowego) na emulatorze ZXSpectrum i stąd moja niepwność. Nie wiem czy np. informacje o tych zagadnieniach znalezione na stronie poświęconej c++ będę mógł wykorzystać na egzaminie z Basica. Wy siedzicie w tym wszystkim dość głębko więc na pewno znacie jakieś ciekawe strony poświęcone tym pojęciom, które wymieniłem na początku. Proszę o pomoc.

Pozdrawiam.

25.02.2005
22:44
smile
[72]

KULL [ Gladiator ]

Dewey --> poszukaj w linkach na poczatku tego watku. Ale z tego co sie orientuje, to stos zwsze jest stosem, a rekurencja to rekurencja ;).


orientujecie sie jak wyglada sprawa z microsoft visual studio 6.0 ?? To jest trudniejsze od czystego pisania w Borlandzie C++ ??

27.02.2005
22:46
[73]

Kubol [ Pretorianin ]

a co chcesz pisac ? Kompilator jak kompilator. Robisz projekt, piszesz kod, klikasz run ...
Jesli chodzi o pisanie gui, no, to juz moze byc trudniejsze. Generalnie trzeba zapozanc sie z MFC (Microsoft Foundation Classes). Przewaznie bedzie to trudniejsze w uzyciu niz biblioteki borlanda. Ale pisac sie da, sam na sobie sprawdzalem ;-) .

27.02.2005
22:51
[74]

hopkins [ Wieczny Optymista ]

Ooo jak ladnie chyba przeczytam sobie te kursy i sie poucze troszke, tymbardziej ze nie mam zielonego pojecia o programowaniu =P

27.02.2005
23:01
[75]

Esqualante [ Jyhad Baghadyr ]

Mam tu linka, który koniecznie powinien znaleźć się we wstępniaku, tak dobrego opracowania nt C++ (między innymi różnic pomiędzy nim a C) nie czytałem chyba nigdy, do tego zawiera całkiem pokaźne kompendium wiedzy... Polecam! (I jak się nie znajdzie we wstępniaku to zabiję ;)).

27.02.2005
23:11
smile
[76]

slowik [ Legend ]

zajmowal sie ktos z was pisaniem programow zajmujacych sie konwersja jednego formatu na inny ??

moze macie jakies przykladowe aplikacje ?? :-) (dobrze by bylo gdyby byl w python'ie)

28.02.2005
22:01
smile
[77]

KULL [ Gladiator ]

Kubol --> ok, microsoft visual studio 6.0 juz nieaktualne ;), teraz pracujemy na uczelni w Dev-C++, ale cholerstwo jest strasznie nieprzyjane :). Np. nie chce zaakceprowac "void main ()', musi byc "int main()". No i jakies problemy ze spacjami pomiedzy sformulowaniami. ale nic, wlasnie to sciagam, trzeba sie do tego przyzwyczaic, zawsze to ladniej wyglada niz Borland C++ pod dosem ;)

btw: sciagam to z https://sourceforge.net/projects/dev-cpp/ (Dev-C++ - licencja freeware), moze komus sie link przyda.


Esqualante --> bedzie, bedzie, kolejny do sporej ilosci nowych linkow, jakie dojda w nowym watku. dobrze, ze sie watek ruszyl, bo byl maly przestoj :). wracam do programowania po leniowaniu, na uczelni z C przeszlismy na C++.


slowik --> niedawno szukalem takiego cuda :), ale z tego co wiem, to nie ma dobrego zamieniacza formatow.

28.02.2005
22:51
[78]

slowik [ Legend ]

KULL===>sa jest tego wiele no ale niestety do automata robiacego na mase duuuzo plikow niema :/ a jesli juz sa to jedynie z graficznych na tego samego typu itd ....

28.02.2005
22:53
smile
[79]

slowik [ Legend ]

o i jakby ktos sie bardziej interesowal Python'em moja mala aplikacja w tym jezyku :-)


wymagany python+wxpython ("skompilowana" wersja zajmuje kolo 3 mb ..)

niestety nie wszystko dziala do konca tak jak powinno ...

02.03.2005
21:15
[80]

Kubol [ Pretorianin ]

KULL --> ale jestes rozpieszczony !!! ;-)
jak bym mial z wami zajecia, to bym wam kazal pisac w Vi pod linuxem, a jako debugere uzywalibyscie GDB ;-) Moze byscie mnie nienawidzili, ale wiedzielibyscie co to make, linker, itp.

02.03.2005
21:54
smile
[81]

KULL [ Gladiator ]

Kubol --> a slyszales kiedys o bezstresowym nauczaniu ?? :) pani od infy jest zreszta taka mloda, ze trudno byloby mi sie skupic na C++ :). a ze Pani Profesor ma lagodne podejscie, coz, bede chodzil na konsultacje :), problem tylko, ze ona ma chyba meza, ktory uczy na tej samej uczelni :/.

BTW: co to za OT w powaznym watku o programowaniu ??!! Zawsze jakies "dupy" sie pojawiaja, nawet tutaj ;). Zagladam tutaj aby sie nauczyc cos o C++ a zaczynam gadac o panienach :/. ;)... nic wracajac do programowania .... ;)

02.03.2005
21:58
smile
[82]

ronn [ moralizator ]

Devcpp jest super.. my robimy w najzwyklejszym edytorze tekstowym pod solarisem.. beznadzieja.. makefile.. gcc.. blee.. chcialbym uzywac devcpp :)

02.03.2005
22:11
[83]

Vasago [ spamer ]

Wlasnie grzebie w programie,ktory troche mnie przerasta.
Jest to prosty arkusz kalkulacyjny. Niestety kod nie jest moj i paru rzeczy w nim nie lapie.

Calosc wyglada tak:

#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <climits>
#include <sstream>
#include <cstdio>
#include <iostream>

using namespace std;

struct CELL

string data;
int value;
bool circular;
bool compute;

CELL()

value = INT_MAX;
circular = false;

›;

struct BOARD

int rows, cols;
map<string, CELL> cells;

// output the board
void print()

bool circ = false;
for (map<string, CELL>::iterator mi = cells.begin(); mi != cells.end(); mi++)

if (mi->second.circular)

circ = true;
std::cout << mi->first << ": " << mi->second.data << "\n";



if (!circ)

// 0 1
//A 3 5
//B 3 -2
cout << " ";
for (int i = 0; i < cols; i++)

printf("%6d", i);

cout << endl;

for (int r = 0; r < rows; r++)

cout << char('A' + r);
for (int c = 0; c < cols; c++)

ostringstream os;
os << char('A' + r) << c;

printf("%6d", cells[os.str()].value);

cout << endl;


cout << endl;


// evaluate each cell, print out circular references
void solve()

for (int r = 0; r < rows; r++)

for (int c = 0; c < cols; c++)

ostringstream os;
os << char('A' + r) << c;
pair<bool, int> ans = eval(cells[os.str()], vector<string>(1, os.str()));
cells[os.str()].circular = ans.first;
if (!ans.first)
cells[os.str()].value = ans.second;
//cout << endl;




pair<bool, int> eval(CELL& c, vector<string> computing)

if (c.circular)
return make_pair(true, 0);
if (c.value != INT_MAX)
return make_pair(false, c.value);

// actual eval
if (c.data[0] == '-')
return make_pair(false, atoi(c.data.c_str()));
// tokenize by signs

string s;
for (int i = 0; i < c.data.length(); i++)

if ('+' == c.data)
s += " ";
else if ('-' == c.data)

s += " ";
s += c.data;

else if ('*' == c.data)

s += " ";


else
s += c.data;

//cout << c.data << ": " << s << endl;
istringstream in(s);
string token;
int value = 0;
while (in >> token)

int mult = 1;
if ('-' == token[0])

mult = -1;
token = token.substr(1);


if (token[0] >= '0' && token[0] <= '9')
value += mult * atoi(token.c_str());
else


if (find(computing.begin(), computing.end(), token) != computing.end())
return make_pair(true, 0);
vector<string> c2 = computing;
c2.push_back(token);
pair<bool, int> tmp = eval(cells[token], c2);
if (tmp.first)
return make_pair(true, 0);

value += mult * tmp.second;



return make_pair(false, value);

›;

int main()

BOARD b;
cin >> b.rows >> b.cols;
while (!(b.rows == 0 && b.cols == 0))

b.cells.clear();
for (int r = 0; r < b.rows; r++)

for (int c = 0; c < b.cols; c++)

ostringstream os;
os << char('A' + r) << c;
CELL cell;
cin >> cell.data;
b.cells[os.str()] = cell;



// solve everything
b.solve();

b.print();

cin >> b.rows >> b.cols;




Mnie interesuje fragment dotyczacy wykonywanych dzialan,czyli:

string s;
for (int i = 0; i < c.data.length(); i++)

if ('+' == c.data)
s += " ";
else if ('-' == c.data)

s += " ";
s += c.data;


else
s += c.data;

Co mam tu dopisac zeby dodac mnozenie i dzielenie?

Analogicznie powinno to byc chyba cos w stylu:

if ('*' == c.data) //MNOZENIE

//i to niestety nie mam pojecia



Bylbym dozgonnie wdzieczny,gdyby ktos zechcial dorzucic konieczny fragment kodu. Sam niestety nie dam sobie rady

12.03.2005
20:24
smile
[84]

hotDog [ Outsider ]

Witam, mam problem - muszę napisać funkcję która jako parametr przyjmuje referencję do tablicy 10-elementowej. Wszystko jest ok, do czasu gdy chcę się odwołać we funkcji do jakiegoś elementu tej tablicy, np. poprzez tab w pętli for przy szukaniu elementu max czy min.


wkleję ją tutaj, ale zaznaczam, ze t u mnie nie działa :-/
Wyskakuje błąd:
invalid types `int[int]' for array subscript



int max(int & t, int n) ‹

int max = t[0];

for(int i=0; i < n; i++) ‹

if (max < t)
max = t;




return max;






Pomóżcie mi i napiszcie jak można się odwoływać do elementów tej tablicy w tej funkcji ;-)

acha, wywołuję ją takim poleceniem:


int &tab_ref = tab[0];

cout << "Element maksymalny to: " << max(tab_ref, 10) << endl;

12.03.2005
22:07
[85]

Qbaa [ Generaďż˝ ]

czyżbyś chciał napisać:
...tej tablicy, np. poprzez tab[i]...

to jest eksperyment więc się nie śmiać jakby mi też się skopało ;)
a jak będzie jak powinno, to następnym razem wyłącz opcję "znaczniki" :)

ps. niestety rozwiązania twojego problemu nie znam

12.03.2005
22:14
[86]

Kubol [ Pretorianin ]

hotDog-->
Tez Ci sie zachcialo referencji do tablicy ;-). Nie mam w tej chwili mozliwosci sprawdzenia
jak sie robie referencje do tablicy, bo referencji raczej nie uzywam, wole wskazniki (pisze
duzo w C).

Wiec, Ty pobierasz referencje do pierwszego elementu, a nie do tablicy.
Njproscie zrobic to tak:

int max(int* t, int n) /*moze tez byc int[] t*/

int max = t[0];
for(int i=0 ; i<n ; i++)
if(max < t)
max = t;

return max;


....

int tab[10]=‹1,2,3,4,5,6,7,8,9›;
cout<<"Max to "<<max(tab,10)<<endl;

12.03.2005
22:16
smile
[87]

Kubol [ Pretorianin ]

Hehe, to 10 ta ja liczyc juz nie umiem ;-)

12.03.2005
22:16
[88]

aka [ Chor��y ]

Wydaje mi się, że bardziej naturalnym sposobem jest przekazywanie tablicy do funkcji przez wskaźnik.

wywołanie:

cout << "Element maksymalny to: " << max(tab, 10) << endl;

funkcja:

int max(int t[], int n) ‹
int max = t[0];
for(int i=0; i < n; i++) ‹
if (max < t[i])
max = t[i];

return max;

12.03.2005
22:16
[89]

Kubol [ Pretorianin ]

znaczy DO 10 ;-)

12.03.2005
22:32
[90]

hotDog [ Outsider ]

Qbaa --> jakie znaczniki?? ;-)))



Kubol --> Nie mnie się zachciało tylko prowadzącemu laborki ;-) Niestety muszę użyć referencji, bo mam za zadanie napisać 3 funkcję, które będą pobierać parametry (tzn tablicę) na 3 różne sposoby: wskaźnik, referencja, wartość (nazwa tablicy). No i teraz tylko mi została referencja ;-/


Pobieram referencję do pierwszego elementu:

int &tab_ref = tab[0];


bo przy zapisie:

int &tab_ref = tab;

kompilator się burzy.


Przez wskaźnik zrobiłem pierwszą funkcję, bo faktycznie najprościej ;-) Ale wyczyn to odwołoanie sie wewnątrz tej funkcji do jakiegoś elementu przekazanej tablicy, np. t[5]. Próbowałem nawet użyć (t + i) ale to tylko dodawało 1 do wartości 0-elementu tablicy a nie dawało efektu podobnego do *(t+1) ;-/


Chodzi mi tylko o możliwość odwołania się do konkretnego elementu tablicy wewnątrz funkcji ;-)) Resztę mam zrobioną.




aka --> mnie też się tak wydaje ;-) Ale niestety teraz muszę użyć referencji.

12.03.2005
22:48
[91]

aka [ Chor��y ]

w takim razie deklarujesz referencje w ten sposob:

int (&tab_ref)[] = tab;

a funkcje tak

int max(int (&t)[], int n) ‹
int max = t[0];
for(int i=0; i < n; i++) ‹
if (max < t[i])
max = t[i];

return max;

12.03.2005
22:50
smile
[92]

Qbaa [ Generaďż˝ ]

hotDog ---> w okienku dodawania postu, nad przyciskami Opublikuj i Podgląd jest taki checkbox, który można odznaczyć jeśli kod który chcesz wkleić zawiera znaki: [i] [b] [u]

12.03.2005
23:02
smile
[93]

hotDog [ Outsider ]

aka --> niestety to nie działa ;-/ Próbowałem podobnych zapisów, ale nic z tego ;-/ Acha, jakby co to mam DevC++



Qbaa --> aaa... o to Ci chodzi.. ;-)) No cóż, kursywa sama się dodała, bo ja nic nie wciskałem :-P

12.03.2005
23:52
smile
[94]

KULL [ Gladiator ]

hotDog --> z DevC++ to bywa roznie :)

13.03.2005
11:10
smile
[95]

hotDog [ Outsider ]

KULL -->No i co ja mam biedny teraz zrobić? ;-P Builder jak i Visual są dla mnie na razie zaprofesjonalnymi środowiskami ;-)



Nikt nie zna odpowiedzi na moje pytanie? Kurczę jutro muszę to oddać... ;-) F1!

13.03.2005
11:44
[96]

robal [ Pretorianin ]

Czesc

Dla mnie C++ to jeszcze czarna magia i niestety na przyszly tydzien a dokladnie na wtorek mam oddac projket moze znajdzie sie osoba sklonna mi go zrobic w C++ Builder. Bede bardzo wdzieczny osobie ktora poswieci pare minut.

Deklaracja funkcji
int szukaj(char *p, char *s);
Opis funkcji
szukaj odnajduje w łańcuchu p łańcuch s.
Wartość zwracana
szukaj zwraca nr indeksu w łańcuchu p od którego rozpoczyna się odnaleziony łańcuch s. W przypadku, gdy łańcuch s nie został znaleziony, szukaj zwraca wartość –1

13.03.2005
16:13
[97]

robal [ Pretorianin ]

Dobra to juz nie robcie bo i tak wiem ze nikt nie zrobi a program juz mam. Pozdrawiam

13.03.2005
20:58
smile
[98]

KULL [ Gladiator ]

robal --> bo i tak wiem ze nikt nie zrobi - te slowa mnie zabolaly :(. Dzieki temu watkowi, temu forum i ludziom tutaj zagladajacym, jakies kilka miesiecy temu, nie majac zielonego pojecia o programowaniu "napisalem" rekami i umyslem innych program na zaliczenie semestru.

Powiem Ci, ze nikt nikomu nie pomoze jak ktos pisze tutaj z nastawieniem: moze znajdzie sie osoba sklonna mi go zrobic . Tutaj mozna pomoc, zasugerowac itp., ale nie odwalic cala robote za kogoc (mimo, iz za mnie kiedys to zrobiono, o czym napisalem wyzej ;)). No i jeszcze dajesz termin na za kilka dni :). trzeba troche wlasnej inicjatywy... program masz bo sam napisales, czy ktos Ci pomogl ?? :)

13.03.2005
22:21
smile
[99]

KULL [ Gladiator ]

Znajdywanie najmniejszej liczby z tablicy to banal:

int min=tablica[1];
for (a=2; a<10 ; a++)

if (tablica[a]<min) min=tablica[a];



ale jak zrobic, aby posortowac wszystkie od min. do max ?? myslelame nad czym takim, ale jakos nie dziala :/


int tab[10];

for (int c=1; c<10 ; c++)

int min=tablica[1];
for (a=2; a<10 ; a++)

if (tablica[a]<min) min=tablica[a];

tablica[a]=9999999; //zakladam, ze w tabeli nie bedzie wiekszych
// liczb od tej, wiec ta komorka odpadnie
tab[c]=min;



cout << tab[1] << tab[2] << tab[3] << tab[4]; // itd.

13.03.2005
22:27
[100]

robal [ Pretorianin ]

---> Kull. Nie sadzilem ze moje slowa Cie zabola tylko widze czesto ze sa zakladane watki z prosba o pomoc a jedyna odpowiedz w tych watkach to uwaga na temat gramtayki czy zlego zlozenia zdan. A z zadaniem pomogl mi kolega i wytlumaczyl troche o jezyku C++. Pozdrawiam

13.03.2005
22:33
smile
[101]

Pamir [ Generaďż˝ ]

KULL >>>

void bubblesort( double tab[], int n )

int i;
double tmp;
bool change;

do
‹ //wykonuj wszystko poniżej
change = false; // reset znacznika zmiany
for( i = 1; i < n; i++ )

if( tab[i-1] > tab ) // jeżeli zła kolejność

tmp = tab; // to zamieniamy elementy miejscami
tab = tab[i-1];
tab[i-1] = tmp;
change = true; // i zapamiętujemy, że cokolwiek w tym przebiegu się zmieniło


›while( change ); // kończymy jeśli w danym przebiegu Z nie zostało ustawione na true, czyli jeśli nic się nie zmieniło




Chyba najprostrze możliwe sortowanie tablicy :)

POzdrawiam Pamir

13.03.2005
22:46
smile
[102]

Kubol [ Pretorianin ]

KULL - zaimpelemntuj sobie sortowanie przez wstawianie/wybor (powyzej), popatrz na to i zapomnij na zawsze.
qsort z stdlib.h i juz. Pisac sorty sobie mozna dla zabawy, ale jak cos jest gotowe, to trzeba to wykorzystac.
Szczegolnie, za paru dobrych gosci sie meczylo, zeby ten algorytm wymiatal.

13.03.2005
22:48
smile
[103]

Kubol [ Pretorianin ]

Hehem, jakzwsze nie przygladnalem sie dostatecnzie poprzednim postom ;-) Tak jakios wygladalo mi to na za duze, zeby byl tylko bubble. Oczywiscie powyzej nie ma sortowania przez wstawianie/wybor.

13.03.2005
23:05
[104]

Pamir [ Generaďż˝ ]

qsort to bardzo fajna sprawa, ale w wielu wypadkach nie zdaje egzaminu (za mała stabilność ) buble są za to bardzo fajnym przykładem jeśli ktoś się uczy :) przynajmniej nie będzie musiał się wysilać myśląc jak to działa :)

POzdrowienia Pamir

13.03.2005
23:12
[105]

Esqualante [ Jyhad Baghadyr ]

Kubol >>>>>> prawda, nie należy wyważać otwartych drzwi, ale tak się dziwnie składa, że wszyscy nauczyciele, wykładowcy itp upierają się, aby przedstawić popularne metody sortowania i kazać biednemu uczniowi/studentowi je implementować... ;)

KULL >>>>> myśl myśl, w necie i książkach jest tego mnóstwo :)

A poza tym sortowanie jest fajne, szczególnie w brainf**k'u :]
(męczę się teraz nad nim :))

14.03.2005
09:47
[106]

Kubol [ Pretorianin ]

Pamir-->...ale w wielu wypadkach nie zdaje egzaminu (za mała stabilność )...
Nie rozumiem o co Ci chodzi. Ze niby dla niekorzystnego przypadku ma zlozonosc kwadratowa ?
Buble i inne proste maja kwadratowa zlozonosc zawsze. Poza tym wierz mi, da sie zrobic to tak, ze wymiata w 99,99%. Poza tym w glibc (impl GNU) czesto zamiast qsorta uzywa mergesorta (ale wywolujesz qsort). Sciagnij sobie zrodelka i popatrz.
Aczkolwiek stabilnosc w sortowaniu to cos troszke innego. Zgaduje, ze chodzilo Ci o to powyzej, bo sortowanie albo jest stabilne, albo nie.

Esqualante--> Nie mowilem, zeby nie implementowac. Powiedzialem, zeby zaimplementowac raz (w celach dydaktycznych) a potem juz uzywac gotowego.

14.03.2005
21:22
smile
[107]

KULL [ Gladiator ]

Pamir --> Chyba najprostrze możliwe sortowanie tablicy :) to marnie ze mna, bo nic z tego prawie nie kapuje :), ale thx.

Kubol --> to juz brzmi lepiej, gotowce - to jest to !! :D

Samemu sie pomeczylem i cos wymodzilem, ale program sortuje mi jak chce. raz kilka 3 pieresze liczby dobrze, raz 4 dobrze posortuje, a jak wpisze liczby wieksze nic 10 to wywala mi blad lub zamienia liczbe na 8. A algorytm wydaje sie ladny i madry. Ale ze sam go wymyslilem wiec na 100% jest bledny. Sami zobaczie, wklejam caly program.
(a moze to problem, ze pisze program w devC++ ?? :) )



#include <conio.h>
#include <iostream.h>

int main()

int i;
int tablica[10];

// wpisywanie liczb ****************************



for (i=0 ; i <10 ;)

cout << "podaj liczbe numer" << ++i <<endl;
cin >> tablica;

getchar();

// wyswetlanie tych liczb tak dla sprawdzenia ****************************


cout << "Liczby w kolejnosci wpisania:" << endl;

for (i=0 ; i<10 ;)

cout << "liczba" << ++i << "to: " << tablica <<'\n';

getchar ();


// sortowanie od najmniejszego ****************************



int c;
long int tab[10];
int a;
int b;

for (int c=0 ; c<10 ; c++)


int min=tablica[0];
for (a=0; a<10 ; a++)


if (tablica[a]<min)

min=tablica[a];
b=a;



tab[c]=min;
tablica=9999;



// wyswetlanie liczb od najmn. ****************************

getchar();
for (int g=0 ; g<10 ;g++)

cout << tab[g] << endl;




getchar();

return 1;


15.03.2005
13:15
[108]

Kubol [ Pretorianin ]

KULL--> to sie nazywa sortowanie przez proste wybieranie (a raczej prosta wersja tego prostego sortowania).
Zainicjuj b na zero, tam gdzie inicjujesz min !

15.03.2005
15:12
smile
[109]

KULL [ Gladiator ]

Kubol --> racja, dzieki, dziala juz wysmienicie !! :) ponizej caly program, moze sie komus przyda.

Teraz musze napisac to samo ale na wskaznikach. A te wskazniki to mi cos nie ida, wiec jak co znow zglosze sie po pomoc ;).


btw: forum GOLa jest niekompatybilne z rozmowami o programowaniu. Po pierwsze problemy z nawiasami, ktore sa zamieniane na < i >. Po drugie, wstawiajac zmienna b w nawiasach [], np. przy tablicach, jest to brane jako pogrubienie txtu :).

#include <conio.h>
#include <iostream.h>

int main()

int i;
int tablica[10];


for (i=0 ; i <10 ;)

cout << "podaj liczbe numer" << ++i <<endl;
cin >> tablica;

getchar();
cout << "Liczby w kolejnosci wpisania:" << endl;

for (i=0 ; i<10 ;)

cout << "liczba" << ++i << "to: " << tablica <<'\n';

getchar ();



int c;
long int tab[10];
int a;
int s;

for (int c=0 ; c<=10 ; c++)


int min=tablica[0];
for (a=0; a<=10 ; a++)


if (tablica[a]<min)

min=tablica[a];
s=a;




tab[c]=min;
tablica[s]=9999;
s=0;



getchar();
for (int g=0 ; g<10 ;g++)

cout << tab[g] << endl;




getchar();

return 1;

15.03.2005
15:31
smile
[110]

KULL [ Gladiator ]

Post z serii znalezione na Allegro :))

aukcja pt."PROGRAMY NA ZAMÓWIENIE W C/C++/PASCAL".

p.s. to nie jest forma reklamy z mojej strony. to ani nie moja aukcja, ani mojego znajomego :). nie, powiem, moze sie kiedys przyda taka aukcja ;).

15.03.2005
20:42
[111]

Qbaa [ Generaďż˝ ]

KULL ---> ja już niedawno napisałem co zrobić żeby się nie zamieniały [b], [i] oraz [u] na pogrubienie, pochylenie oraz podkreślenie ;)

15.03.2005
22:39
smile
[112]

KULL [ Gladiator ]

Qbaa --> a racja. wylaczyc wystarczy "Znaczniki bold". musze uwazniej czytac watek.

17.03.2005
21:43
smile
[113]

KULL [ Gladiator ]

No i mam takie pytanie. Co to w ogóle znaczy, aby zrobić sortowanie liczb na wskaźnikach ?? To ma być tez z tabela, tylko ze wskaznikami ?? nie rozumiem polecenia: „aby wpierw zrobic sortowanie liczb w tabelce (zrobilem), a pozniej to samo na wskaznikach”.

17.03.2005
23:20
[114]

Esqualante [ Jyhad Baghadyr ]

Podejrzewam, że zamiast min = tablica[0], powinieneś zrobić

int * min = tablica;

oraz int * a = tablica+1;

a następnie sprawdzać

if (* a < * min)

min = a;


itd jak leci w Twoim programie...

18.03.2005
08:20
[115]

Kubol [ Pretorianin ]

KULL --> fakt, dziwne to. W koncu operacje na tablicach to nic innego jak tylko operacje na
wskaxnikach tylko z inna skaldnia.
Mozna to jeszce interpretpwac w ten sposob, ze masz 2 tablice - 1 z jakimis danymi, i druga o takiej samej dlugosci ze wskaznikami na nie. I sortujesz wskazniki, ale wartosci do porownan pobierasz "z pod wskaznika" - czyli z danej.
Czasem sie stosuje taki numer, gdy dane sa duze, i ich przepisywanie moze zajmowac duzo czasu.
Wskaznik zajmuje zawsze na 32 bitowym systemie 32 bity, wiec stosunkowo malo.
Nazywa sie to sortowanie zewnetrzne.
Jest zarabiscie fajny algorytm, ktory pozwala posortowac oryginalna tablice w miejscu, majac posortowana tablice wskaznikow, ale to juz wyzsza szkola jazdy.

19.03.2005
16:10
[116]

Hiacynt. [ Centurion ]

Mam do napisania prosciutki program w C, z wykorzystaniem funkcji. Nie jestem super biegly w programowaniu wiec jesli ma ktos chwilke czasu, przejrzy ponizszy kod. Program kompiluje sie bezblednie jednak funkcje B i C nie licza tego co powinny.

/* Dana jest tablica kwadratowa. Funkcje:
A)Druk
B)Obliczenie sumy elementow na glownych przekatnych
C)Obliczanie sredniej arytmetycznej wyrazow parzystych
Tablica typu int */

#include<stdio.h>
#include<conio.h>
#include<string.h>
#define K 10
#define czyt(k) ‹ printf("\nPodaj rozmiar tablicy k: \n"); scanf("%d", &k); ›
#define tekst printf("\nPodaj k*k elementow tablicy: \n");
int A[K][K], pom, i, j, k, s=0, d=0;
float sr=0;

druk(x,T)
int x;
int T[K][K];
‹ int i, j;
for(i=0; i<x; i++)
‹ printf("\n");
for(j=0; j<k; j++) printf("%4d", T[j]);

return(0);



int suma(x,T)
int x;
int T[K][K];
‹ int i, j, s=0;
for(i=0; i<x; i++)
for(j=0; j<x; j++)
if((i==j) && (i+j==x-1)) s=s+T[j];
return(s);


float srednia(x,T)
int x, T[K][K];
‹ int i, j, d=0;
float sr=0;
for(i=0; i<x; i++)
for(j=0; j<x; j++)
if(T[j]%2==0) ‹ sr=sr+T[j]; d++; ›
sr=sr/d;
return(sr);


main()
‹ clrscr();
czyt(k);
tekst;
for(i=0; i<k; i++)
for(j=0; j<k; j++) ‹ scanf("%d", &pom); A[j]=pom; ›
clrscr();
druk(k,A);
suma(k,A);
srednia(k,A);
printf("\nSuma wynosi %5d , a srednia %2.2f", s, sr);

getch();
return(0);

19.03.2005
19:05
smile
[117]

Qbaa [ Generaďż˝ ]

proponuję dodać do wstępniaka, na samą górę, że gdy wkleja się jakiś kod, to żeby wyłączać opcję "znaczniki" w okienku dodawania postu ;)

19.03.2005
19:22
[118]

Hiacynt. [ Centurion ]

Qbaa <-- dzieki za przypomnienie, teraz powinno byc juz chyba poprawnie:

/* Dana jest tablica kwadratowa. Funkcje:
A)Druk
B)Obliczenie sumy elementow na glownych przekatnych
C)Obliczanie sredniej arytmetycznej wyrazow parzystych
Tablica typu int */

#include<stdio.h>
#include<conio.h>
#include<string.h>
#define K 10
#define czyt(k) ‹ printf("\nPodaj rozmiar tablicy k: \n"); scanf("%d", &k); ›
#define tekst printf("\nPodaj k*k elementow tablicy: \n");
int A[K][K], pom, i, j, k, s=0, d=0;
float sr=0;
druk(x,T)
int x;
int T[K][K];
‹ int i, j;
for(i=0; i<x; i++)
‹ printf("\n");
for(j=0; j<k; j++) printf("%4d", T[j]);

return(0);




int suma(x,T)
int x;
int T[K][K];
‹ int i, j, s=0;
for(i=0; i<x; i++)
for(j=0; j<x; j++)
if((i==j) && (i+j==x-1)) s=s+T[j];
return(s);


float srednia(x,T)
int x, T[K][K];
‹ int i, j, d=0;
float sr=0;
for(i=0; i<x; i++)
for(j=0; j<x; j++)
if(T[j]%2==0) ‹ sr=sr+T[j]; d++; ›
sr=sr/d;
return(sr);


main()
‹ clrscr();
czyt(k);
tekst;
for(i=0; i<k; i++)
for(j=0; j<k; j++) ‹ scanf("%d", &pom); A[j]=pom; ›
clrscr();
druk(k,A);
suma(k,A);
srednia(k,A);
printf("\nSuma wynosi %5d , a srednia %2.2f", s, sr);

getch();
return(0);

19.03.2005
19:24
[119]

Hiacynt. [ Centurion ]

nadal ucina niektore reczy :)

19.03.2005
22:45
[120]

Qbaa [ Generaďż˝ ]

a nie powinno. ale i tak wiadomo, że GOL nie lubi żadnych źródeł :)
znów test ;)
i[i]b[b]u[u]stop :)

19.03.2005
22:56
smile
[121]

KULL [ Gladiator ]

ale z nawiasami dalej problem ?! :/

‹ › ‹› ‹› ‹› ‹› ‹› ‹›

trzeba to zglosic MOderatorom, niech to naprawia :).

Wypowiedź została zmodyfikowana przez jej autora [2005-03-19 22:56:49]

21.03.2005
21:27
smile
[122]

KULL [ Gladiator ]

Moze sie komus przyda :).

oto nowa, poprawiona wersja mojego programu do sortowania liczb, od najmn. do najw. :)

wersja 1.01.; trwaja prace nad jej ulepszeniem... za kilka miesiacy bedzie full wypas, a program bede sprzedawal w wersji box :P.




#include <conio.h>
#include <iostream.h>

int main()

int i;
int tablica[10];


for (i=0 ; i <10 ; i++)

cout << "podaj liczbe numer" << i+1 <<endl;
cin >> tablica[i];

getchar();
cout << "Liczby w kolejnosci wpisania:" << endl;

for (i=0 ; i<10 ;i++)

cout << "liczba" << "to: " << tablica[i] <<'\n';

getchar ();



/* szuka jaka jest najwieksza liczba */
int max;
int a;
for (a=0; a<10 ; a++)


if (tablica[a]>max)

max=tablica[a];




max++;

/* sortowanie */


int c;
long int tab[10];

int b;
for (int c=0 ; c<=10 ; c++)


int min=tablica[0];
for (a=0; a<10 ; a++)


if (tablica[a]<min)

min=tablica[a];
b=a;


tab[c]=min;
tablica[b]=max;
b=0;



getchar();
for (int g=0 ; g<10 ;g++)

cout << tab[g] << endl;




getchar();

return 1;




//wszystkie prawa zastrzezone - by KULL

22.03.2005
19:50
smile
[123]

KULL [ Gladiator ]

Kupiłem sobie najnowsze wydanie biblioteczki Komputer Swiat o programowaniu C++. Nawet fajne, ale tylko dla początkujących. Opis wszystkiego od początku, ale ładnie wytłumaczone ... o grafice cos napisali w C++ itp. Nawet spox, polecam, glownie tym, co nie maja zielonego pojecia o C++ lub tym co jak ja, mysla ze cos umieja, ale jak się okazuje gowno wiedza :)


wiecej info w linku :)

22.03.2005
21:14
[124]

fanlegii79 [ Konsul ]

KULL -> Pomijajac brak inicjacji niektorych zmiennych i kwadratowy czas dzialania, z ciekawosci zapytam dlaczego zawsze zwracasz kod bledu 1?

22.03.2005
21:21
smile
[125]

Regis [ ]

fanlegii79 --> Ja tez tak dlugo robilem, bo po prostu nikt mi nie powiedzial (a w ksiazkach roznie bylo 1 albo 0) ze powinno byc 0 - program dzialal, to mi to zwisalo co zwraca :) Dopiero jak sie na tym nacialem na Wielkiej Przesmyckiej (konkurs organizowany przez Uniwerek Wroclawski), to zapamietalem raz na zawsze ;)

22.03.2005
21:27
[126]

fanlegii79 [ Konsul ]

Zamieszcze jesze swoje sortowanie :
#include <iostream>
#include <algorithm>
using namespace std;

int main() ‹
int tablica[10] = ‹23, 1, 33, -20, 6, 6, 9, 23, 45, 56›;

sort(tablica, tablica+10);

for (int i=0; i<10; i++) ‹
cout << a << " ";

return 0;

22.03.2005
21:27
smile
[127]

KULL [ Gladiator ]

fanlegii79 --> to jest wersja 1.01, pracuje jeszcze nad nia ;). czego nie zainicjowalem ?

co do return to mam podobnie jak Regis :). teraz bede tam pisal 0.thx za uwage!
W ksiazeczce Komputer Swiat :) pisza, aby wpisywac tam: "return EXIT_SUCCESS;".

23.03.2005
01:35
[128]

fanlegii79 [ Konsul ]

To dziwne z tym EXIT_SUCCESS, zwracanie 0 jest bardzo fundamentalne. Np w kodzie linuksa nie widzialem zeby gdzies byla stala na sukces, zwykle pisza 0 z palca, natomiast bledy maja swoje kody.

Dodam jeszcze sortowanie w c.

#include <stdio.h>
#include <sys/types.h>

int compare (const void * a, const void * b)

return ( *(int*)a - *(int*)b );


int main(int args, char * argv[])‹
int tablica[10] = ‹23, 1, 33, -20, 6, 6, 9, 23, 45, 56›;
int j;

qsort(tablica, 10, sizeof(int), compare);
for (j=0;j<10;j++)‹
printf("%d\n",tablica[j]);

return 0;

23.03.2005
08:33
smile
[129]

KULL [ Gladiator ]

wytlumaczy mi ktos jeszcze dokladnie to using namespace std; ?? bo ja i bez tego pisze bez problemu i wszystko dziala.

23.03.2005
10:21
[130]

Kubol [ Pretorianin ]

KULL-->

Bo używasz przestarzalych headerów. Powinno sie używać #include<iostream> a nie
#include <iostream.h>. Jesli uzywasz kompilatora niezgodnego z ansi C++, to musisz uzywac starych, jesli uzywasz np/ g++, czy VS studio 6.0 i +, to mozesz uzywac nowych.

Używając nowych, uzywasz biblioteki standardowej c++. Biblioteka ta jest cała zawarta
w namespacie st, stąd, każdy element powinno się tak prefixoweć, czyli powinno być
std::cout<<, std::string, std::endl itp. Aby sie tyle nie napisac, uzywa sie dyrektywy using, która
to dopisuje standardowo do wszystkiego czego nazwy nie da sie zrezolvovac std::, wiec
mozesz sobie wtedy napisac cout zamiast std::cout a kompilator to zamieni na std::cout.

Namespacy uzywa sie, bo nazwa funkcji, klasy itp musi byc unikalna w calym skompilowanym programie. Jesli mialbyc 2 biblioteki, i kazada mialaby funkcje create(), to linker by sie wywalil, bo nie mialby zielonego pojecia, ktora implementacje podlinkowac. W C++ zatem wprowadzono namespacy, ktore ten problem roziazuje. Biblioteka 1 ma namestace ns1, dwa ma ns2 i mozesz sie wtedy odwolac ns1::create() i ns2::create() i linker bedzie wiedzial o ktorej konkretnie funkcji mowisz. To jest jedno z rozszerzen w stosunku do C

23.03.2005
14:02
smile
[131]

KULL [ Gladiator ]

Kubol --> wielkie dzieki za wytlumaczenie !!!

23.03.2005
16:40
smile
[132]

PikiMar [ Pretorianin ]

Hej!
Mam napisac dosc prostacki programik, ale wszystkie moje proby spelzly na niczym ;) Otoz nie wiem jak utworzyć klasę zawierającą tablicę 5 liczb tworzoną za pomocą operatora new.
Probowalem takich kombinacji:

class tabl

private:
int tab[5]; <---Tak zadziala
int *tab=new int[5]; <--- Przy tym wywali blad 'Cannot initialize a class member here'
...

Czy ktos kto rozumie moj problem i wie jak go rozwiazac moglby napisac poprawna deklaracje tej tablicy?
Z gory dziekuje.

23.03.2005
17:39
[133]

Kubol [ Pretorianin ]

Piki-->

Tak sie nie da, to nie Java. Musisz napisać konstruktor i wnim zrobic new, czyli

class tabl

private:
int *tab;
public:

tabl(int size)

tab = new int[size];
›;

~tabl()

delete[] tab;
›;
...


Mam nadzieje, ze tak sie da, jak nie to zadeklaruj konstruktor i destruktor poza definicja klasy w pliku .cpp

tabl::tabl() ...

i potem

tabl a(10);
i masz obiekt ...

23.03.2005
19:28
[134]

robert2k4 [ Pretorianin ]

nie mam zielonego pojecia na temat c/c++, a chcialbym sie nauczyc tego jezyka od ktorego kursu njalepiej zaczynac? Powinien bys jak najprosciej napisany i po polsku. Ktory polecacie?

23.03.2005
19:31
smile
[135]

KULL [ Gladiator ]

robert2k4 --> ja polecam ten co jest od kilku numerow w KS Expert, no i ta ksiazeczke KS C++. Aby nie bylo, ze robie reklame czasopisma :) to zapraszam na sama gore watku tam jest sporo fajnych linkow. Osobiscie duzo sie nauczylem z tego adresy --> https://www.keeller.kompozytor.net/

23.03.2005
20:32
smile
[136]

Kubol [ Pretorianin ]

Coz, jesli ktos chce zaczac programowac, powinien jak najwczesniej zaczac czytas WSZYSTKO po angielsku. Bez tego nigdy nie beda z was programisci ! To absolutna podstawa. Bo samego jezyka to sie po polsku nauczysz z ksiazek, ale jezyk to dopiero poczatek. Zeby cos napisac trzeba korzystac z gotowych bibliotek, a ich dokumentacja jest prawie zawsze po angielsku.
Potem zeby sie dowiedziec czegos, co jest w 100 miejscach opisane w necie bedziecie musieli kupowac ksiazki po polsku za gruba kaske.

23.03.2005
21:36
smile
[137]

PikiMar [ Pretorianin ]

Kubol --> Dzieki za podpowiedz, przydala sie :)
Pozdrawiam

23.03.2005
21:43
smile
[138]

Didier z Rivii [ life 4 sound ]

moze nie do konca odpowiedni watek, ale srodowisko programistow moze bedzie moglo mi pomoc ;)
niewiecie czy mozna gdzies znalezc elektroniczna wersje ksiazki "Linux programowania" Mattew i Stones'a ?

23.03.2005
21:52
[139]

Esqualante [ Jyhad Baghadyr ]

Didier >>>> a to jest książka Heliona? Kumpel ma coś na ftpie, ale nie wiem, czy to to :/

31.03.2005
15:26
smile
[140]

Bereek [ Junior ]

Cześć,
czy mógłby ktoś naprowadzić mnie jak napisać taki program w pythonie ?

Napisz program, który zamieni wprowadzony przez użytkownika ciąg cyfr na formę tekstową:
a. znaki nie będące cyframi mają być ignorowane
b. konwertujemy cyfry, nie liczby, a zatem:
i. 911 to „dziewięć jeden jeden”
ii. 1100 to „jeden jeden zero zero”

31.03.2005
19:59
[141]

KULL [ Gladiator ]

Bereek --> w C++ bym chyba potrafil cos takiego zrobic :). a bez odmiany slow to chyba nie jest duzy problem. python - co to za rodzaj jezyka ?? do czego jest podobny ??

31.03.2005
23:59
smile
[142]

hotDog [ Outsider ]

Polecam wykład mojego wykładowcy, jest przykład w Pythonie :-)

01.04.2005
01:20
[143]

fanlegii79 [ Konsul ]

Ostatnio wielu pytonistow szalalo w watkach o tym jak rozpoczac przygode z programowaniem. Python to jezyk podobny do ocamla ale z dynamicznym sprawdzaniem typow a nie statycznym. W ocamlu bym umial, jezeli do jutra zaden pytonista sie nie odezwie to zerkne w skladnie pythona i cos skrobne.

01.04.2005
11:15
[144]

Bereek [ Junior ]

Dzięki za zainteresowanie, może ten link pomoże. Ja wciąż nie mam pomysłu jak napisać taki program mimo przestudiowaniu poniższego linka.

https://sus.univ.szczecin.pl/~jakubs/py5.html

01.04.2005
12:48
[145]

aka [ Chor��y ]

taka konstrukcja w mieszance c i pythona ktorego nie znam ale ide jest taka:

wczytanie do napis
for (i=0; i < len(napis); i++)

switch napis

case '1':
print "jeden "
break;
case '2':
print "dwa "
break;
case '3':
print "trzy "
break;
i tak dalej

01.04.2005
12:58
[146]

aka [ Chor��y ]

nie odznaczylem poprzedni znacznikow

napis = raw_input("Podaj liczbe:")
for (i=0; i < len(napis); i++)

switch napis

case '1':
print "jeden "
break;
case '2':
print "dwa "
break;
case '3':
print "trzy "
break;
i tak dalej

01.04.2005
13:27
[147]

aka [ Chor��y ]

ok teraz jest w pytonie i dziala i nie zaznaczam znacznikow :)

napis = raw_input("Podaj liczbe:")
out = ""
for i in napis:
if i=='1':
out+="jeden "
elif i=='2':
out+="dwa "
elif i=='3':
out+="trzy "
elif i=='4':
out+="cztery "
elif i=='5':
out+="piec "
elif i=='6':
out+="szesc "
elif i=='7':
out+="siedem "
elif i=='8':
out+="osiem "
elif i=='9':
out+="dziewiec "
elif i=='0':
out+="zero "
print out

01.04.2005
13:55
smile
[148]

Bereek [ Junior ]

aka: Dziękuję bardzo, działa :)
Innym też dziękuję za pomoc i zainteresowanie.

01.04.2005
14:37
[149]

Bereek [ Junior ]

Jednak mam jeszcze jeden kłopot, chcę by program przyjmował inne znaki jako błąd, czyli
wpisuję po znaczniku else: out = 'miales podac liczbe'
Problem pojawia się wtedy jak podaję coś co ma na końcu liczbę np "ouik78", wtedy wynik programu wygląda tak "miales podac liczbe siedem osiem". Oczywiście chcę sam tekst "miales podac liczbe". W innych przypadkach jest dobrze.

01.04.2005
14:55
[150]

aka [ Chor��y ]

else:
out="babol"
break

Z tym, że teraz jest to niezgodne z poleceniem. Bo należy ignorowac inne znaki, ale jak uważasz.
Dziwny język swoją drogą z tego pythona, gdyż istotne są tabulacje na początku linii.

01.04.2005
15:28
[151]

Bereek [ Junior ]

Dziękuję.
Wiem że niezgodne z poleceniem ale chciałem wiedzieć.
Co do samego języka to nie bardzo mnie przekonuje szczególnie ze względu na znikomą ilość literatury. A może ktoś poleci jakąś książkę dotyczącą pythona?

08.04.2005
00:12
smile
[152]

KULL [ Gladiator ]

na dniach zrobie nowy watek, bo ten juz jest dosc duzy. Przez weekend bede siadzial nad programem na inf. z C++, wiec bede mial pewnie kilka pytan ;). No i jak macie to dajcie nowe fanjne linki zwiazane z programowaniem (ja mam juz ich troche) co by mozna bylo w pierwszym poscie zaszpanowac duza iloscia linkow ;).

08.04.2005
23:57
smile
[153]

KULL [ Gladiator ]

Pytanie:

mam

cout << "Ile liczb chcesz posortowac?" << endl;
cin >> ilosc;


jak uzyskac efekt, aby po wpisaniu wybranej liczby, zostala ona zpisana do zmiennej ilosc, ale aby wartosc ta nie pokazala sie na ekranie po wybraniu jej z klawiatury ?? bo to robi balagan.

09.04.2005
01:35
[154]

Sir Skull [ Know your enemy ]

KULL --> AFAIK w C++ nie ma takiej możliwości.

char bufor[10];
int i;
printf("Ile liczb chcesz posortowac ?\n");
for (i = 0; i < sizeof (bufor) - 1; ++i)

bufor = _getch();
if (bufor == '\r')
break;

bufor = '\0';

To natomiast zadziała.

09.04.2005
02:00
[155]

fanlegii79 [ Konsul ]

No powiedzenie ze w c++ nie da rady wczytac znaku bez wypisywania na konsole to chyba duza przesada. Pewnie nie mzona tego zrobic operatorami obiektu ostream, ale getch() jest takze w c++. (zaleznie od kompilatora i biblotek nazywa sie getch(), getchar(), czy _getch())

09.04.2005
08:12
[156]

Sir Skull [ Know your enemy ]

fanlegii79 --> W standardzie C++ nie ma funkcji do pobierania znaku bez echa (getch nie ma tam). Oto mi chodziło w pierwszym zdaniu poprzedniego post'a.

Mała poprawka do kodu, bo zapomniałem wyłączyć znaczniki ;)

char bufor[10];
int i;
printf("Ile liczb chcesz posortowac ?\n");
for (i = 0; i < sizeof (bufor) - 1; ++i)

bufor[i] = getch();
if (bufor[i] == '\r')
break;

bufor[i] = '\0';

Mam nadzieje, że widać teraz. powinno być bufor_od_i a nie samo bufor.

09.04.2005
09:47
[157]

fanlegii79 [ Konsul ]

Rzeczywiscie trudno to zrobic w ansi c++ (w turbo c++ i visual c++ jest getch).

14.04.2005
23:48
smile
[158]

konioz [ Konsul ]

Mam pewien problem z moim programem. Prosze was o pomoc.

Mam klase wielomianow. Wielomian przechowywany jest w tablicy 't' typu float (z rozmiarem przydzielanym dynamicznie) w taki sposob, ze wolny wyraz jest t[0], wspolczynnik przy x^1 w t[1] i tak dalej. Musze przeladowac operator zczytywania tak zeby po podaniu na ekranie wielomianu on zczytal odpowiednie wspolczynniki do odpowiednich elementow tablicy. Jak to zrobic?

Mialem taki pomysl zeby wprowadzac wielomian jako serie danych w nawiasach (potega, wspolczynnik).
Czyli np.
(5,1) (4,-2) (0,1) odpowiadalo by wielomianowi x^5 - 2x^4 + 1

No wlasnie tylko jak wtedy poradzic sobie z wczytaniem minusa z nawiasu itd.

Prosze o pomoc. Wszelki pomysly beda mile widziane.

Z gory dzieki.

15.04.2005
10:03
[159]

Kubol [ Pretorianin ]

Hmm, mogę Ci pomóc jedynie w sparsowaniu tego, nie pamiętam jak sie przeładowywało operatory.
Generalnie nic nie stoi na przeszkodzie, żeby wczytywać to w formie x^5 + ... wymaga to jednak kilku zabiegów.

Najproście byłoby to zrobić używając werażeń regularnych, ale to wiązałoby się z wykorzystaniem jakiejś dodatkowej biblioteki.

Mógłbyś to parsować z ręki - typu wczytywać po kolei stringi oddzielone bialymi znakami i przestać na takim który nie ma 'x' w środku. A potem sprawa jest prosta, bo zakładając, za postać jest <wsp>"x""^"<pot> to szukasz w stringu 'x' i to co po lewej traktujesz jako wartość wspolczynika, to co na prawo od '^' jako wykładnik potęgi. Na początek to będzie najlepsze rozwiązanie

No i w końcu można zrobić prawdziwy parser ;-)

15.04.2005
10:23
[160]

Romanujan [ Konstruktor Katapult ]

Do parsowania polecam duet flex+bison :-)

16.04.2005
18:03
[161]

Kubol [ Pretorianin ]

Flex + bison daje rade, ale po co wyciągać armatę na mrówkę ?
Nie każdy jest na studiach i zna choć troszke teorię jezyków formalnych, a niestety napisanie gramatyki nigdy nie jest proste. Zanim gość załapie o co chodzi w parserach LR i lexerach to 3 razy to z ręki napisze ;-)

16.04.2005
18:22
smile
[162]

picuś [ Generaďż˝ ]

Witam.
Czy ktos wie jak zrobic cos takiego w C++ ?

Mam tablice 4 elementowa do ktorej wpisuje dowolne liczby calkowite z przedzialu od 0 do 255.
Teraz program powinien liczby z tej tablicy zlozyc w jedna liczbe i zapisac w zmiennej typu int.
Ma to wygladac mniej wiecej tak :
00000001 00000100 00000011 00000010 = 17040130
tab[3]=1 tab[2]=4 tab[1]=3 tab[0]=2

Czyli jesli do kolejnych elementow tej tablicy wprowadzilismy liczy 2341 to nasza nowa zmienna typu int a wiec 4 bajty powinna je ulozyc na tych bajtach i "stworzyc" z tego nowa liczbe.

Jesli ktos wie jak to zrobic to prosze o jakas wskazowke, zakladajac ze w ogole da sie to zrobic.

16.04.2005
20:13
[163]

picuś [ Generaďż˝ ]

W skrocie jak te liczby z 4 elemenotowej tablicy umiescic w kolejnych 4 bajtach zmiennej typu int.

16.04.2005
21:26
[164]

fanlegii79 [ Konsul ]

char tab[4];
int i;
tab[0]=1;
tab[2]=2;
...
i = (int) tab[0];

Jakos tak. nie mam czasu pobawic sie kompilatorem zeby sprawdzic.

16.04.2005
23:40
smile
[165]

Esqualante [ Jyhad Baghadyr ]

#include <iostream>

using namespace std;

int main()

char tab[] = ‹2,3,4,1›;

int i = tab[3];
i = i << 8; //przesuniecie liczby o 8 bitow w lewo
i += tab[2];
i = i << 8;
i += tab[1];
i = i << 8;
i += tab[0];

cout << i;

return 0;


dziala w MVC++6

17.04.2005
15:03
[166]

hotDog [ Outsider ]

Witam, potrzebuję pilnej pomocy z moim problemem :-)

Muszę zapisać liczny (int) do pliku poprzez funkcje fopen(), fputs(), fclose() itd (nie mogę korzystać z fstream). I mam problem: czy puts przyjmuje tylko stringi do zapisu na strumień? Jaką funkcję wybrać żebym mógł zapisać liczby całkowite na strumień? :-)

17.04.2005
15:07
smile
[167]

SEW [ Generaďż˝ ]

Prosilbym o pomoc. Mam do wykonania niby prosty program w assemblerze. Lecz jako początkujący nie wiem jak wogole się za niego wziasc. Oto co program musi umiec:
-konwersja kodu binarnego na BCD,
-w CL ma być informacja z ilu cyfr sklada się liczba która wpisze (np. jeżeli liczba ta to 1243 to w CL ma być 4)
-umiescic ta liczbe która wpisze na stosie w taki sposób , jeżeli będzie to liczba 2137 to na stosie ma to tak wyglądać:
2
1
3
7
(do tego ostatniego należy uzyc rozkazu push ale tez jeszcze nie wiem jak dokladnie)

Jeżeli ktos by był w stanie mi pomoc bylbym bardzo wdzieczny ,a jeżeli ktos by to jeszcze wytłumaczył co i jak to wogole było by super.
Z gory wielkie dzieki.

17.04.2005
15:08
smile
[168]

hotDog [ Outsider ]

Hmm... nie wiem czy dobrze trafiłem, bo na razie nie mogę skompilować całego kodu, ale wybrałem funkcję fputc() i kompilator już się nie pluje... :-)

17.04.2005
15:58
[169]

fanlegii79 [ Konsul ]

No coz poprzednie nie chcailo dzialac. To dziala:

#include <iostream>
using namespace std;

int main()‹
char tab[] = ‹0,0,2,2›;

int *k;
k = (int *) &tab[0];
int i= *k;

cout << i;
return 0;


Daje odpowiedz na moim procesorze spodziewana odpowiedz 514 (0,1,0,0) daje 65536, wiec tez spoks. Niestety ja nie ma intela tylko mam apple, wiec mam procesor o innej edianowsci. Jezeli kots moglby sprawdzic jak to dzial na intelu. Powinno skalddac chyba w druga strone.

17.04.2005
16:49
[170]

hotDog [ Outsider ]

Mam strukturę TMacierz, a w niej tablicę wskaźników (macierz) int **tab;

Czy jak stworzę dwa obiekty tej struktury: TMacierz Macierz1 oraz TMacierz Macierz2 to czy ten int **tab z Macierz1 ma coś wspólnego z int **tab z Macierz2 ??

Bo jak próbuję dodać te dwie macierze ze sobą, to zamiast poprawnych wyników wyskakuje mi informacja: "Windows XP... itd itd" w trybie MS-DOS :-/

Próbuję zrobić coś takiego (w pętli for): Macierz1.tab[i][j] += Macierz2.tab[i][j]


Proszę mnie wyprowadzić z błędu jeśli robię coś nie tak :-)

17.04.2005
17:20
[171]

fanlegii79 [ Konsul ]

Co to za wiadomosc "Windows Xp i tak dalej". Nigdy zaden program w c kotry kompilowalem na linuksie ano mac os x nie pokazal mi takiego bledu? Na moj gust dodajesz wskazniki.

17.04.2005
17:49
[172]

Esqualante [ Jyhad Baghadyr ]

SEW >>>> rozumiem, że liczbę w kodzie binarnym masz np w AX i musisz po zamianie na BCD zapisać każdą cyfrę osobno na stosie?

Jeżeli tak, to:
CL = 0
dzielisz liczbę przez dziesięć
resztę zapisujesz na stosie
inkrementujesz CL
znowu dzielisz przez dziesięć
resztę zapisujesz na stosie
inkrementujesz CL
...
jak wynik dzielenia będzie równy 0 (a reszta ileśtam), to otrzymałeś wynik, a w CL masz podaną liczbę cyfr.

17.04.2005
18:01
smile
[173]

Esqualante [ Jyhad Baghadyr ]

fanlegii79 >>>>> Twoje rozwiązanie u mnie działa tak:

dla
char tab[] = ‹0,0,1,0›;

daje 65536

a dla
char tab[] = ‹2,3,4,1›;

daje
17040130

czyli tak, jak potrzebował picuś.

17.04.2005
18:20
[174]

hotDog [ Outsider ]

fanlegii79 --> wiesz, mnie się wydaje, że to Windows pokazuje gdy jakiś program naruszy pamięć albo coś w tym stylu, bo gdy pojawiał się ten komunikat, to kończył program i po prostu pojawiał się znak zachęty na trybie MS-DOS.

Wrzucę screena z moim aktualnym problemem.. może mi pomożecie, bo ja już lekko zgłupiałem.


a tutaj metoda odpowiadająca za dodawanie macierzy:



TMacierz TMacierz::DodajDwieMacierze(TMacierz Macierz1, TMacierz Macierz2)

// kod dodający dwie macierze do siebie


if (Macierz1.Liczba_wierszy == Macierz2.Liczba_wierszy &&
Macierz1.Liczba_kolumn == Macierz2.Liczba_kolumn)



for (int i=0; i < Macierz1.Liczba_wierszy; ++i)

for (int j=0; j < Macierz1.Liczba_kolumn; ++j)

Macierz1.tab[i][j] =+ Macierz2.tab[i][j];





else

cout << "Tych macierzy nie mozna ze soba dodac!" << endl;


return Macierz1;

17.04.2005
18:21
[175]

hotDog [ Outsider ]

Nie wiem dlaczego obrazek się nie wkeił :-/

17.04.2005
18:23
[176]

hotDog [ Outsider ]

Ehh... coś forum nawala ;-/

Link do screena:

17.04.2005
18:30
[177]

Esqualante [ Jyhad Baghadyr ]

Nie wiem na ile ma to znaczenie, ale zamiast '=+' napisz '+='.

17.04.2005
18:40
[178]

hotDog [ Outsider ]

Niestety :-/ Nic to nie dało.

Przeciążanie operatora też daje taki efekt, ale nie wiem czy dobrze napisałem:




TMacierz TMacierz::operator+(TMacierz dod)

TMacierz kopia = *this;

for(int i=0; i < kopia.Liczba_wierszy; ++i)

for (int j=0; j < kopia.Liczba_kolumn; ++j)

kopia.tab[i][j] += dod.tab[i][j];



return (kopia);

17.04.2005
18:53
[179]

Esqualante [ Jyhad Baghadyr ]

hmmm, nie wiem, wklej cały program, albo pobaw się debuggerem...

17.04.2005
19:46
[180]

Kubol [ Pretorianin ]

TMacierz kopia = *this;

A zdajesz sobie sprawę z tego że to nie kopiuje tej tablicy w której trzymasz kolumny ?
To kopiuje tylko wskaznik. Musisz jeszce zaalokowac pamiec na nowa tablice, bo inaczej
te obiekty beda mialy wspolne wartości.

17.04.2005
20:11
smile
[181]

SEW [ Generaďż˝ ]

Esqualante --> dzieki za zainteresowanie ale mam co do tego rozwiazania kilka pytan.
1. A co z zamiana na BCD?
2. Gdy podziele np liczbe 2345 przez dziesiec wtedy gdy wzuce na stos reszte to bede mial na SP 5, to jest dobrze, ale jak mam pozniej dzielic ktora liczbe?? Cos tego nie czaje (a to chyba prosta matematyka jest)
3. Jak rozumiem do odczytania liczby z klawiatury mam uzyc pierwszej funkcji tak (bez echa)??
Pewnie to co napisalems jest poprawne ale zrozum - moje poczatki :]

17.04.2005
21:48
[182]

Esqualante [ Jyhad Baghadyr ]

1. No zamiana z binarnego na BCD polega na tym aby w każdym bajcie (albo w każdych 4 bitach) była zakodowana informacja o jednej cyfrze dziesiętnej, czyli z
211D = 11010011B = 0010 0001 0001 BCD
Wiec, jak podzielisz 211 przez dziesiec, otrzymasz 21 i reszta 1. Resztę zapisujesz na stosie zgodnie z trescia programu, a 21 znowu dzielisz przez 10. Wynik = 2, reszta 1. Reszte zapisujesz na stosie, 2 dzielisz przez 10. Wynik = 0 (czyli koniec), reszta 2 - zapisana na stosie. Ponieważ 3 razy zapisywałeś na stosie, CL = 3.
2. samo dzielenie jest proste, bo jak masz liczbę w DX:AX i podzielisz przez SI = 10
MOV SI,10
DIV SI
to wynik będziesz miał w AX, a resztę w DX. Wrzucasz wartosc DX na stos (PUSH DX), zerujesz DX i znowu mozesz dzielić
DIV SI
3. Nie wiem, bo to Ty podałeś treść zadania :), a w niej nic nie było o pobieraniu liczby, więc stwierdziłem, ze masz ją już daną w rejestrze AX. Poza tym pobieranie najpierw liczby cyfra po cyfrze, zapis w postaci binarnej, a potem zamiana spowrotem na BCD wydaje mi się dziwna....

Tak samo jak nie wiem, czy dobrze piszę o zapisie na stosie, gdyż na stosie nie można zapisywac pojedynczych bajtów,a co za tym idzie, albo tak ma być (czyli zapis co 2 bajty), albo trzeba podczas jednego zapisu umieszczać na stosie 2 cyfry.

17.04.2005
22:03
smile
[183]

KULL [ Gladiator ]

nowy watek!! tutaj sie juz nie da gadac bo sie dluzej wczytuje niz sie czyta posty ;). ostatnie posty mozecie skopiowac, aby w nowym watku ktos na nie odpowiedzial :)


zapraszam:

https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=3620101&N=1

© 2000-2024 GRY-OnLine S.A.