Instrukcje iteracyjne

wiola_pachla
Użytkownik
Użytkownik
Posty: 24
Rejestracja: 2 gru 2004, o 21:05
Płeć: Kobieta
Lokalizacja: Tomaszów Lub.

Instrukcje iteracyjne

Post autor: wiola_pachla »

Witam Was! znalazłam sie tu ponieważ studiuje informe i nie za bardzo kojarze tzw "pętle". Nie wiem czy moge znaleźć cos na ten temat w internecie a mianowicie przykładowe pętle z ich rozwiązaniemi.Nie chodzi mi tu o gotowe rozwiązania od razu w języku programowania lecz ich rozwiązania w schematach zwartych.


Przykładowe zadanie:
Napisz schemat algorytmu wykonującego:
1.łączenie dwóch ciągów niemalejących w jeden ciąg uporządkowany nie malejąco,
2.łączenie trzech ciągów nierosnących w jeden ciąg uporządkowany nierosnąco

Napisz schemat algorytmu obliczającego a^n.Liczbę rzeczywistą a oraz naturalną n pobieramy od uzytkownika.

Wiem ze te zadania są proste ale nie wiem za bardzo jak je zapisać w schemacie zwartym. Wiedzących coś na te temat prosze o pomoc! Dziękuje. Pozdrawiam!!
arigo
Użytkownik
Użytkownik
Posty: 852
Rejestracja: 23 paź 2004, o 10:17
Płeć: Mężczyzna
Lokalizacja: Lublin
Pomógł: 28 razy

Instrukcje iteracyjne

Post autor: arigo »

ad 1 i 2
to co rozumiesz pod pojeciem laczenie ciagow ??

ad 3
to nielubie pisac slownych alorytmow wiec na biegu sklecilem szkic rozwiazania i przedstawiam je ponizej

Kod: Zaznacz cały

root@packard:/333# cat pot.c

int main(int argc, char *argv[])
{
long int a,n,wyn=1;
unsigned char i;

a=atoi(argv[1]);
n=atoi(argv[2]);

for(i=0;i<n;i++)
wyn*=a;
printf("%d
",wyn);

return 0;
}

root@packard:/333# gcc pot.c -o pot
root@packard:/333# ./pot 2 5
32
root@packard:/333# ./pot 2 2
4
root@packard:/333# ./pot 4 2
16
root@packard:/333# ./pot 4 4
256
root@packard:/333# ./pot 1 2
1
root@packard:/333# ./pot 2 1
2
wiola_pachla
Użytkownik
Użytkownik
Posty: 24
Rejestracja: 2 gru 2004, o 21:05
Płeć: Kobieta
Lokalizacja: Tomaszów Lub.

Instrukcje iteracyjne

Post autor: wiola_pachla »

W sumie to ja nie za bardzo rozumiem To jest treść zadania z książki wiec chyba kazdy sam ma sobie reszte dopowiedziec. Podkreślam jedynie ze nie ma to być suma lecz łączenie!

Dzięki za rozwiązanie tego algorytmu ale to mi nie wiele mówi bo jestem na początku programowania tj. narazie to my piszemy na karteczkach schematy zwarte. Ale dzięki za szczere chęci!
pozdrawiam
marlon
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 24 gru 2004, o 20:43
Płeć: Mężczyzna
Lokalizacja: azerbejdzan

Instrukcje iteracyjne

Post autor: marlon »

...
mov ecx, n
mov ebx, a
xor eax, eax
inc eax
@@:
mul ebx
loop @b
...

asm rulez
arigo
Użytkownik
Użytkownik
Posty: 852
Rejestracja: 23 paź 2004, o 10:17
Płeć: Mężczyzna
Lokalizacja: Lublin
Pomógł: 28 razy

Instrukcje iteracyjne

Post autor: arigo »

wiadomo ze asm r00x :)
ale w tym wypadku nie polecalbym rozkazow mul poniewaz one nie ustawiaja flag ze wzgledu na przekroczenie zakresow co w tego typu programie moze byc wada :)
marlon
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 24 gru 2004, o 20:43
Płeć: Mężczyzna
Lokalizacja: azerbejdzan

Instrukcje iteracyjne

Post autor: marlon »

ej nie czepiajmy sie szczegolow
SoD
Użytkownik
Użytkownik
Posty: 83
Rejestracja: 3 lis 2004, o 18:34
Płeć: Mężczyzna
Lokalizacja: L-ca

Instrukcje iteracyjne

Post autor: SoD »

A moze chodzi o to ze laczenie ciagow oznacza ze bierzemy jeden ciag a nastepnie do niego wtykamy wyrazy drugiego ciagu tylko ze w ten sposob aby byl on uporzadkowany nie malejaco, czyli trzeba porownywac kolejne wyrazy jednego i drugiego a nastepnie ukladac je razem w jeden ciag tak aby ulozyly sie nie malejaco! Przynajmniej ja tak to rozumiem!
Gambit
Użytkownik
Użytkownik
Posty: 123
Rejestracja: 8 wrz 2004, o 22:17
Płeć: Mężczyzna
Lokalizacja: Łowicz
Podziękował: 2 razy

Instrukcje iteracyjne

Post autor: Gambit »

arigo pisze: ale w tym wypadku nie polecalbym rozkazow mul poniewaz one nie ustawiaja flag ze wzgledu na przekroczenie zakresow co w tego typu programie moze byc wada :)
Nie wiem o jakim Assembler'ze mówisz, ale w NASM'ie instrukcja "mul" ustawia flagi O (Overflow) i C (Carry).
ODPOWIEDZ