x-kom hosting

[Rozwiązany]Program który wyświetla od tyłu liczby.

Los_Emilos
utworzono
utworzono

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
komentarz

prosze bardzo :P (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
komentarz

Zapomniałem dodać że tu chodzi o Turbo Pascal :/ . Sry.

tofik177
komentarz
komentarz

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
komentarz

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
komentarz

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
komentarz

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
komentarz
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
komentarz

Dzięki, znowu przez ciebie będę miał na infe do zrobienia coś czego nigdy nie mieliśmy :D. 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
komentarz

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
komentarz

Tylko to jest najdziwniejsze że to działa!

luq
komentarz
komentarz

Masz racje dłużej się zastanawiając to to działa :D

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 :D

Los_Emilos
komentarz
komentarz

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
komentarz

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
komentarz

Wielkie dzięki, to było takie proste aż wstyd że na to nie wpadłem :D .

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.