Jump to content
xemi

Programowanie

Recommended Posts

Co do dzielenia AFAIR:

 

div - dzielenie całkowite, czyli '6 div 4' da Ci 1 (czyli część całkowitą)

mod - reszta z dzielenia, czyli '6 mod 4' da Ci 2 (czyli licznik, 4 to mianownik)

Share this post


Link to post

Chyba jednak nie o to mi chodziło :>

 

No więc skombinowałem takie coś:

program ulamki;
uses crt;
var a,b,c,d:integer;
e,f,g,h,i,j,k,l:real;
begin
textcolor(red);
textbackground(blue);
clrscr;
write('Podaj pierwszy licznik:');
readln(a);
write('Podaj pierwszy mianownik:');
readln(b);
write('Podaj drugi licznki:');
readln(c);
write('Podaj drugi mianownik:');
readln(d);
if (b=0) or (d=0) then write ('Mianownik nie moľe by† zerem.')
else begin
e:=a/b;
f:=c/d;
i:=e+f;
j:=e-f;
k:=e*f;
if c=0 then writeln ('Dzielenie nie bedzie moľliwe.')
else
l:=e/f;
writeln('Dodawanie - wpisz 1');
writeln('Odejmowanie - wpisz 2');
writeln('Mnoľenie - wpisz 3');
writeln('Dzielenie - wpisz 4');
write('Jakie dziaˆanie chcesz wykona†?');
readln(g);

	if (g=1) then write ('Suma wynosi:',i:8:3)
else
	if (g=2) then write ('R˘ľnica wynosi:',j:8:3)
else
	if (g=3) then write ('Iloczyn wynosi:',k:8:3)
else
	if (g=4) and (c=0) then write ('Nie moľna dzieli† przez zero.')
	else
	write('Iloraz wynosi:',l:8:3);

end;
readln;
end.

I teraz mam pytanie: jak podać wyniki w postaci ułamków zwykłych?

Share this post


Link to post

Przede wszystkim - wspólny mianownik najłatwiej uzyskać mnożąc przez siebie mianowniki :]

 

czyli np

w_m:=b*d

 

Mnożymy także liczniki przez mianownik drugiego ułamka:

l1:=a*d; l2:=b*c

 

Dodawanie i odejmowanie masz proste (działamy tylko na licznikach, bo mianownik jest wspólny ;)):

 dodawanie:=l1+l2; 
odejmowanie:=l1-l2;

 

Mnożenie (licznik*licznik, mianownik*mianownik):

mnozenie_l:=a*c;
mnozenie_m:=b*d;

 

Dzielenie ułamków to? Mnożenie przez odwrotność? ;)

 

Ułamki wg Twoich zmiennych to a/b i c/d, więc wynikiem dzielenia będzie a*d/b*c. Robisz te dwie operacje i deklarujesz dwie zmienne dla licznika i dla mianownika i pod licznik podstawiasz a*d, a pod mianownik b*c.

dzielenie_l:=a*d;
dzielenie_m:=b*c;

 

Przedstawiasz w wynikach w ten sposób:

if (g=1) then write ('Suma wynosi:',dodawanie,' / ',w_m);

Itd.

Tyle filozofii.

Share this post


Link to post

Dzięki :*

 

Dopiero zaczynam przygodę z Pascalem, więc proszę nie śmiejcie się ;)

Share this post


Link to post

Nikt się nie śmieje ;)

 

Wiesz, jak Ci się chce, to możesz jeszcze skracanie ułamków, czy wyodrębnienie całości zaimplementować, bo ja poszedłem po najmniejszej linii oporu ;)

Share this post


Link to post

Longer ten pascal to edukacja w szkole/uczelni czy z własnej woli ? Bo jeśli to drugie to sobie odpuść i przejdź na coś obiektowego - C++/Java. Ewentualnie jako rozgrzewkę można się zabrać za czyste C.

Share this post


Link to post

W szkole. Z własnej woli w życiu za programowanie bym się nie brał, bo wiem, że studia informatyczne są nie dla mnie (choć na początku myślałem inaczej :P ) :] Zresztą nauczyciel informatyki powiedział, że trzeba zacząć od pascala, bo na uczelniach niby tego wymagają. Niedługo mamy przesiadać się na C++ :)

Share this post


Link to post
W szkole. Z własnej woli w życiu za programowanie bym się nie brał, bo wiem, że studia informatyczne są nie dla mnie (choć na początku myślałem inaczej :P ) :] Zresztą nauczyciel informatyki powiedział, że trzeba zacząć od pascala, bo na uczelniach niby tego wymagają. Niedługo mamy przesiadać się na C++ :)

raczej juz nie wymagaja.

 

na wiekszosc uczelni poszli po rozum do glowy i zaczynaja od razu od C++/Java zamiast meczyc Delphi - ktore swoja droga nie jest zlym jezykiem, ale niestety podbudowanie z Pascala robi swoje.

Share this post


Link to post
W szkole. Z własnej woli w życiu za programowanie bym się nie brał, bo wiem, że studia informatyczne są nie dla mnie (choć na początku myślałem inaczej :P ) :] Zresztą nauczyciel informatyki powiedział, że trzeba zacząć od pascala, bo na uczelniach niby tego wymagają. Niedługo mamy przesiadać się na C++ :)

raczej juz nie wymagaja.

 

na wiekszosc uczelni poszli po rozum do glowy i zaczynaja od razu od C++/Java zamiast meczyc Delphi - ktore swoja droga nie jest zlym jezykiem, ale niestety podbudowanie z Pascala robi swoje.

na dobrych uczelniach dobrzy wykładowcy / ćwiczeniowcy już od wielu lat prowadzą zajęcia tylko w oparciu o obiektowe języki programowania; w poprzednich latach był to raczej c/c++, a teraz dopiero w ostatnich latach częściej sięga się po javę, która bardzo szybko się rozwija

Share this post


Link to post

U mnie na uczelni obecny I rok jest pierwszym, który już nie ma pascala. Dali im C.

Share this post


Link to post
na dobrych uczelniach dobrzy wykładowcy / ćwiczeniowcy już od wielu lat prowadzą zajęcia tylko w oparciu o obiektowe języki programowania; w poprzednich latach był to raczej c/c++, a teraz dopiero w ostatnich latach częściej sięga się po javę, która bardzo szybko się rozwija

Delphi jest obiektowe - z Pascalowa skladnia.

Share this post


Link to post

Nawet gdyby Delphi wykladali to juz byloby cos, bo Delphi w sumie jest ok :) Tzn. ma swoje plusy - latwiej stworzyc cos konkretnego, dzialajacego niz np. w Javie. Wiec w sumie to nawet sie nie dziwie, ze na pewnych uczelniach nie ma np. Javy bo to tak naprawde olbrzymi sektor. Javy sie uczy kilka lat i to pracujac dzien w dzien po 8 godzin, wiec na uczelni poza praktycznie podstawami (zwiazanymi pewnie z obiektowoscia), ciezko to jakos konkretniej ruszyc.

 

No ale Pascal to juz zdecydowanie nie bardzo...

Share this post


Link to post

Obecnie na pierwszym roku u mnie mają C#. Ja leciałem starym programem nauczania, więc komputer i kompilator widziałem dopiero na trzecim roku :roll: Zdaje się, że potem pierwszaki będą mieć Javę, więc już jakaś podbudowa będzie. To oznaczałoby, że nieśmiertelne zajęcia z ANSI C z dr Kędzierskim odejdą w zapomnienie (powiem tylko, że i tak C tam było mało). W końcu...

 

Swoją drogą nie ważne w czym będą programować, ważne by nauczyli się podstaw obiektówki i programowania. Na resztę przyjdzie czas. Czy to we własnym zakresie, czy w pracy. Takie są, chcąc niechcąc, realia.

Share this post


Link to post

Zabawy z pascalem ciąg dalszy. Tym razem moje zadania polega na zbudowaniu z '*' trójkąta (na wzór tego programu). Pomoże ktoś? :)

Share this post


Link to post

Panowie potrzebuje cos do ... rysowania grafow!!

Tak zebym mogl sobie zaznaczyc wierzcholi, polaczenia miedzy nimi, oraz wagi tych drog i wagi wierzcholkow, oraz zeby na podstawie tego tworzylo mi jakas tablice polaczen i tablice wag wierzcholkow. Sam raczej nie mam na tyle wiedzy zeby samemu takie cos napisac:/ a potrzebuje to na b. szybko do szkoly:/

Share this post


Link to post

xemi, jak bardzo skomplikowane? Bo jak mało, to masz Worda, to możesz wykorzystać autokształty i łączniki. Wtedy przynajmniej przy przestawianiu kwadracików strzałki się same dopasowują.

Share this post


Link to post
xemi, jak bardzo skomplikowane? Bo jak mało, to masz Worda, to możesz wykorzystać autokształty i łączniki. Wtedy przynajmniej przy przestawianiu kwadracików strzałki się same dopasowują.

wwosik, dzieki, ale nie o to chodzi, takie cos opodobne to bym we flashu moze jakos juz wykombinowal.

Chodzi o to ze jak narysuje juz ten graf (wierzcholi, polaczenia miedzy nimi), dodam wagi dla tego, to ma mi program z tego wygenerowac tablice z wartosciami polaczen miedzy wierzcholkami, oraz tablice wag wierzcholkow. Z tej tablicy potem mam algorytmem policzyc njkrotsza droge miedzy wybranymi wierzcholkami. Algorytm sobie napisalem, ale tablice musze sam do niego wprowadzac recznie:/

Share this post


Link to post

ok :) niestety, nie dysponuję niczym takim :(

 

na marginesie - wyobrażam sobie, że w Wordzie jest to nadal możliwe, tylko wymaga trochę zabawy z Visual Basikiem ;)

Share this post


Link to post

rzecz zapewne trywialna, ale nie umiem sobie z nią poradzić :/ mianowicie muszę zrobić transponowanie macierzy kwadratowej

 

pierwsza idea była taka, żeby po prostu zamieniać wartość pola tablicy w stylu: tablica[x][y] = tablica[y][x] przy użyciu zmiennej pomocniczej, ale to nie chce działać :/

 

void transponowanieMacierzy()
{
int p=0;
	for (int i=0; i<rozmiar; i++)
		for (int j=0; j<rozmiar; j++)
			{
				p = tablica[i][j];
				tablica[i][j] = tablica[j][i];
				tablica[j][i] = p;
			}
 }

 

może jakaś podpowiedź? :)

Share this post


Link to post

Wydaje mi się, że działa Ci to źle dlatego, że robisz to dla całej macierzy, czyli zamieniasz ze sobą dane pola dwukrotnie, co w efekcie sprawia, że wracają do swoich pierwotnych stanów :>

Wystarczy to wykonać dla połowy elementów znad lub spod głównej przekątnej, np.

 

void transponowanieMacierzy()
{
int p=0;
	for (int i=0; i<rozmiar; i++)
		for (int j=0; j<i; j++) // tu jedyna modyfikacja - j<i zamiast j<rozmiar
			{
				p = tablica[i][j];
				tablica[i][j] = tablica[j][i];
				tablica[j][i] = p;
			}
 }

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...