Los_Emilos utworzono 17 marca 2008 utworzono 17 marca 2008 Mam do zrobienia program który wyświetla od tyłu liczby np. wpisując 13467, program nam wyświetli 76431. Przy tym, jak tłumaczyła mi nauczycielka, powinienem wykorzystać div i mod ale nie mam szczerze pomysłu na ten program. Byłbym wdzięczny na nakierowanie mnie na rozwiązanie ponieważ nie chce dostać tego na tacy bo chce się czegoś nauczyć, ale za gotowca nie obrażę się jeśli będzie wytłumaczone jak nie zrozumiem na pierwszy rzut oka. Z góry dziękuje za pomoc.
tofik177 komentarz 17 marca 2008 komentarz 17 marca 2008 prosze bardzo (prg devc++) masz tu jeszcze 2 metiody sortowania bąbelkowego do szeregowania naszych liczb za "n" podajesz ile liczb wczytujesz potem podajesz te liczby potem wyswietla tak jak podałes odwrotnie i uszeregowane pewnie dojdziesz co i jak niepotrzebne wywal mialem to jako jedno z zadan na zaliczeniu c++ ;d #include <cstdlib> #include <iostream> #include <conio.h> using namespace std; int main(int argc, char *argv[]) { int tab[999]; int n,i; int tmp,rob; int suma,srednia; cout<<"podaj n"; cin>>n; for(int i=0; i<n; i++) { cout<<"podaj liczbe"<<endl; cin>>tab; } system("cls"); cout<<"---------------------------"<<endl; cout<<" nasze liczby"<<endl; cout<<"---------------------------"<<endl; for (int i=0; i<n; i++) cout<<tab<<" "; cout<<endl<<"---------------------------"<<endl; for (i=0; i<n/2; i++) { rob=tab; tab=tab[n-1-i]; tab[n-1-i]=rob; } cout<<endl; cout<<"po zamianie"<<endl; cout<<"---------------------------"<<endl; for (int i=0; i<n; i++) cout<<tab<<" "; //to jest kod sortowania 2 w wersjach cout<<endl<<"---------------------------"<<endl; cout<<endl<<"nasze liczby po sortowaniu "<<endl; cout<<"---------------------------"<<endl; /* for (int i=0; i<n; i++) //metoda 1 sortowanie od najmniejszej do najwiekszej ,porownywanie sasiednich elementow { for (int j=0; j<n-1; j++) { if (tab[j]>tab[j+1]) { tmp=tab[j]; tab[j]=tab[j+1]; tab[j+1]=tmp; }}} for (int i=0; i<n; i++) cout<<tab<<" < "; cout<<endl<<"---------------------------"<<endl; for (int i=0; i<n; i++) //sortowanie od najwiekszej do najmniejszej { for (int j=0; j<n-1; j++) { if (tab[j]<tab[j+1]) { tmp = tab[j]; tab[j] = tab[j+1]; tab[j+1] = tmp; }}} for (int i=0; i<n; i++) cout<<tab<<" > "; cout<<endl<<"---------------------------"<<endl; */ // sortowanie 2 mozliwosc porownywanie pierwszego elementu z kolejnymi potem drogiego itd for (int j=0; j<n; j++) //przeskakuje po sortowaniu do kolejnej komorki { rob=tab[j]; for (int i=j+1; i<n; i++) //sprawdzanie kolejnych elementów w tab if (rob>tab) { rob=tab; tab=tab[j]; tab[j]=rob; } } for (int i=0; i<n; i++) cout<<tab<<" > "; getch(); }
Los_Emilos komentarz 17 marca 2008 Autor komentarz 17 marca 2008 Zapomniałem dodać że tu chodzi o Turbo Pascal :/ . Sry.
tofik177 komentarz 17 marca 2008 komentarz 17 marca 2008 heheh a to ja jusz TP nie pamietam to nie pomoge popróbuj modyfikowac ten mój kod i napisac cos podobnego w TP
luq komentarz 17 marca 2008 komentarz 17 marca 2008 Hm nie bardzo rozumiem co nauczycielka chcial od moda i diva. Co ma się tu dzielić. Spiszujesz sobie liczby do tablicy i potem pentelkę od ilosc_liczb do 0 wypisz liczba i tyle, żadna fizolofia. tofik1778983 tu chyba chodzi o odwrocenie podanych liczb a nie wypisanie ich od największej. Chyba że ja się myle.
tofik177 komentarz 17 marca 2008 komentarz 17 marca 2008 dobrze jest:P tu masz wczytanie i wyswietlenie jak wpisałes i wpisane z zamiana miejsc cout<<"podaj liczbe"<<endl; cin>>tab; } system("cls"); cout<<"---------------------------"<<endl; cout<<" nasze liczby"<<endl; cout<<"---------------------------"<<endl; for (int i=0; i<n; i++) cout<<tab<<" "; cout<<endl<<"---------------------------"<<endl; for (i=0; i<n/2; i++) { rob=tab; tab=tab[n-1-i]; tab[n-1-i]=rob; } cout<<endl; cout<<"po zamianie"<<endl; cout<<"---------------------------"<<endl; for (int i=0; i<n; i++) cout<<tab<<" "; a dalej dopiero sprawdzanie i szeregowanie od najmniejszej do największej
Los_Emilos komentarz 17 marca 2008 Autor komentarz 17 marca 2008 Znalazłem takie coś: uses crt; var x: longint; BEGIN ClrScr; Write('Podaj x: '); ReadLn(x); while x > 0 do begin Write(x mod 10); x:=x div 10; end; ReadKey; END. Tylko nie rozumiem jasnej rzeczy, a mianowicie o co chodzi w tym "while x > 0 do". Byłbym wdzięczny za wytłumaczenie.
luq komentarz 17 marca 2008 komentarz 17 marca 2008 Tylko nie rozumiem jasnej rzeczy, a mianowicie o co chodzi w tym "while x > 0 do". Byłbym wdzięczny za wytłumaczenie. Pętla while. Jeśli x > 0 to zrób mi to i to ... tofik1778983 a nie lepiej for (int i=n; i<0; i--)cout<<tab[i]<<" "; i bez tego for (i=0; i<n/2; i++){rob=tab[i];tab[i]=tab[n-1-i];tab[n-1-i]=rob;} Pozatym dalej nie czaje gdzie tu ma być dzielenie wykorzystane
Los_Emilos komentarz 18 marca 2008 Autor komentarz 18 marca 2008 Dzięki, znowu przez ciebie będę miał na infe do zrobienia coś czego nigdy nie mieliśmy . Mam jeszcze jeden problem, dokładnie będzie to bardziej matematyczne ale dlaczego: Write(x mod 10); x:=x div 10; używając tego przekształci mi liczby? Nie rozumiem, jak ma się do tego reszta z dzielenia i całości?
luq komentarz 19 marca 2008 komentarz 19 marca 2008 No właśnie wydaj mi się że albo ty źle zrozumiałeś nauczycielkę albo ona coś pokręciła. Nie wiedzę żadanej zależności pomięcy dzieleniem a odwracaniem podanego ciągu. while x > 0 dobeginWrite(x mod 10);x:=x div 10;end; Ta część kodu odpowiada za wypisanie reszty z dzielenia podajel liczby (x) przez 10 a nastepnie przypisanie jej calkowitą cześć z dzielenia przez 10. Czyli dla x:= 173 otrzymasz: 3 0.7 0.1
Los_Emilos komentarz 19 marca 2008 Autor komentarz 19 marca 2008 Tylko to jest najdziwniejsze że to działa!
luq komentarz 19 marca 2008 komentarz 19 marca 2008 Masz racje dłużej się zastanawiając to to działa Przeoczyłem że nie otrzymasz wyniku 0.x a x i dla x:= 173 otrzymasz: 3 7 1 Czyli od tyłu. Nie wiedziałem o takiej zależności w matematyce, nawet logiczne to jest
Los_Emilos komentarz 20 marca 2008 Autor komentarz 20 marca 2008 A ja nadal się gapiąc na to nie wiem w jaki sposób jednak wynik jest dobry. Kiedy będę musiał pogadać ze swoją nauczycielką informatyki lub matematyki.
luq komentarz 21 marca 2008 komentarz 21 marca 2008 To jest bardzo proste. Jak wiadomo dzieląc przez 10 przecinek przesówa się o jedno miejsce w lewo. np. 1984 / 10 = 198,4 Wiec program wybiera tą resztę z dzielenia (w tym przypadku 4) i wypisuje ją, a pod zmienną x przypisuje wszystko przed przecinkiem (czyli 198) i powtarza tą operację do skączenia liczb (dokładniej kiedy liczba przed przecinkiem jest równa 0). Chodzi tutaj o to że dzieląc przez 10 zawsze po przecinku dostaniesz ostatnią cyfrę podanej liczby (oczywiście jeśli liczba wyjściowa jest całkowita), a przed przeciniem resztę cyfr. Mam nadzieję że wytłumaczylem to dość sensownie.
Los_Emilos komentarz 21 marca 2008 Autor komentarz 21 marca 2008 Wielkie dzięki, to było takie proste aż wstyd że na to nie wpadłem .
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.