číslo obráceně – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

číslo obráceně – C / C++ – Fórum – Programujte.comčíslo obráceně – C / C++ – Fórum – Programujte.com

 

Lukas
~ Anonymní uživatel
301 příspěvků
21. 10. 2012   #1
-
0
-

Zdravím,

jsem začátečník a mám za úkol napsat v C program na zjištění číselného palindromu, ale nevím jak napsat část, kdy se z čísla (např: a=83 stane číslo b=38 ). Nedokázal by mi někdo poradit prosím?     

Nahlásit jako SPAM
IP: 89.103.102.–
Franceq+1
Stálý člen
21. 10. 2012   #2
-
0
-

Ahoj, rozsekej číslo do pole a pak ho prožeň cyklem pozpátku a postupně sestavuj nové číslo...malá nápověda...
číslo např. 438 se dá napsat jako...
4 x 100 + 3 x 10 + 8 x 1....když ho proženeš cyklem, tak ho sestavíš jako 8 x 100 + 3 x 10 + 4 x 1....

Nahlásit jako SPAM
IP: 31.133.8.–
Franceq+1
Stálý člen
21. 10. 2012   #3
-
0
-

to rozsekání se provádí dělením 10 a modulem 10...

Nahlásit jako SPAM
IP: 31.133.8.–
21. 10. 2012   #4
-
0
-

zkonvertovat číslo na řetězec, vytvořit nový řetězec tak, že tak první přečteš po znacích pozpátku a zkonvertuješ na číslo.  Stačí sprintf, cyklus for a pak sscanf.

hu

Nahlásit jako SPAM
IP: 188.95.60.–
crazy
~ Moderátor
+10
Grafoman
21. 10. 2012   #5
-
0
-

#4 hlucheucho
když si zjistíš "délku" toho čísla, tak to projedeš jedním cyklem a nemusíš převádět na řetězec... stačí pak porovnávat první číslici s poslední, druhou s předposlední, atd...

Nahlásit jako SPAM
IP: 147.32.31.–
All you need is vision and time.
21. 10. 2012   #6
-
0
-

#5 crazy
když máš číslo, nemáš jeho jednotlivé cifry a ani nevíš, kolik jich je. Ty získáš buď tak, že budeš dělit 10, zaznamenávat si je a počítat je, nebo si usnadníš práci a funkce sprintf a strlen to udělají za tebe. 

Nahlásit jako SPAM
IP: 188.95.60.–
21. 10. 2012   #7
-
0
-

ještě jednodušší je použít třídu string ze STL, viz http://www.cplusplus.com/reference/string/string/rend/

hu

Nahlásit jako SPAM
IP: 188.95.60.–
crazy
~ Moderátor
+10
Grafoman
21. 10. 2012   #8
-
0
-

#6 hlucheucho
psal jsem, že když si zjistíš kolik těch cifer je...

Nahlásit jako SPAM
IP: 147.32.31.–
All you need is vision and time.
21. 10. 2012   #9
-
+1
-
Zajímavé

jak zjistím? Tím, že to číslo rozeberu na cifry. Mohu si na to napsat funkci, ta bude dělat to samé, co se děje při převodu na jakýkoliv řetězec, bez ohledu na to, jestli je to nul terminated string, nebo string ze STL..... Akorát se s tím víc nadřu.

hu

Nahlásit jako SPAM
IP: 188.95.60.–
KIIV
~ Moderátor
+43
God of flame
22. 10. 2012   #10
-
0
-

hlucheucho: logaritmus - tak se da zjistit pocet pozic

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
ingiraxo+15
Grafoman
22. 10. 2012   #11
-
0
-

pokud je to v C++ tak 

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string cislo;
    cout << "Zadej cislo: ";
    getline(cin, cislo);

    reverse(cislo.begin(), cislo.end());
    cout << "Obracene cislo: " << cislo;

    return 0;
}

a v C to může být takto, v C nedělám, takže to možná jde lépe, takto procházim celej buffer

#include <stdio.h>
#include <stdlib.h>


int main()
{
    int i, cislo;
    char buffer[10];
    printf("Zadej cislo: ");
    scanf("%d", &cislo);
    itoa(cislo, buffer, 10);

    for (i = sizeof(buffer); i >= 0; --i)
    {
        if (*(buffer + i) > 0)
            printf("%c", *(buffer + i));
    }
    return 0;
}

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Lukas
~ Anonymní uživatel
301 příspěvků
22. 10. 2012   #12
-
0
-

Dík za rady, ale pořad mi to nějak nejde udělat  (pole jsem ještě ani nebrali)... Teď jsem ještě zkoušel ten program co jsem napsal pan Ingiraxo a ten mi jako výsledek vyhodí řetězec a ne číslo... abych to upřesnil potřebuji například z čísla a=123 udělat číslo b=321 a poté tyto dvě čísla sečíst.

Nahlásit jako SPAM
IP: 89.103.102.–
JoDiK
~ Anonymní uživatel
987 příspěvků
22. 10. 2012   #13
-
0
-

#12 Lukas
Použij celočíselné dělení a zbytek po dělení. Ten tvůj příklad

děleno deseti:       123 12 1

zbytky po dělení:      3   2  1

Součet zbytků s
násobením deseti:    3  32  321  (předchozí hodnota*10+nový zbytek)

No a máš z čísla 123 číslo 321.

Nahlásit jako SPAM
IP: 88.103.233.–
ingiraxo+15
Grafoman
22. 10. 2012   #14
-
0
-

#12 Lukas
to v zadání nebylo... v každým případě není problém to lehce upravit 

int main()
{
    int i, j, cislo, cislo2;
    char buffer[10], out[10];

    printf("Zadej cislo: ");
    scanf("%d", &cislo);
    itoa(cislo, buffer, 10);

    for (i = sizeof(buffer), j = 0; i >= 0; --i)
    {
        if (*(buffer + i) > 0)
            sprintf((out + j++), "%c", *(buffer + i));
    }
    cislo2 = atoi(out);
    printf("Soucet cisel %d a %d je: %d", cislo, cislo2, cislo + cislo2);
    return 0;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 36 hostů

Podobná vlákna

Jde to i obráceně ? — založil gastonx

Jméno obráceně. — založil DeathHumanCZ

Cislo? — založil Alan

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý