Prevod z arabskych do rimskych cislic a naopak – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Prevod z arabskych do rimskych cislic a naopak – C / C++ – Fórum – Programujte.comPrevod z arabskych do rimskych cislic a naopak – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
RedSoul0
Duch
31. 1. 2016   #1
-
0
-

Chcel by som sa spytat:

1. ked mam program ktory mi vypise na konci pole char o 20 znakoch ale ja zaplnim len 10 znakov a zvysok vypise nieco random, je tento kod standardny postup aby mi vypis pola char nevypisal navyse znaky?

char rimske[20];
    for (int i = 0; i < 20; i++)
        rimske[i] = '\0';

2. Mal by som len otazku k programu, nejak som zosmolil funkcny program (az na poradie zadaneho vstupu) co prehodi cisla na rimske a naopak, a tak sa chcem spytat, ci je to v pohode robit pomocou cyklu "for" alebo som mal nato pouzit "switch" pripadne nieco ine matematicky specialne... pripadne rad budem za kazdu upozornenu chybu ktoru tam mam :) som samouk zaciatocnik ale chcem sa to naucit robit najlepsie ako budem vediet:

#include <iostream>
using namespace std;

int main()
{

cout << "Zadajte rimske cislice ktore premenime na arabske:\n";
    char rimske[20];
    for (int i = 0; i < 20; i++)
        rimske[i] = '\0';
    cin >> rimske;

    int pocet = strlen(rimske);
    int arabske = 0;
    
    for (char *p = rimske; *p != '\0'; ++p)
    {
        *p = toupper(*p);
    }

    for (int i = 0; i <= pocet; i++)
    {
        if (rimske[i] == 'M')
            arabske = arabske + 1000;
        else if (rimske[i] == 'D')
            arabske = arabske + 500;
        else if (rimske[i] == 'C')
            arabske = arabske + 100;
        else if (rimske[i] == 'L')
            arabske = arabske + 50;
        else if (rimske[i] == 'X')
            arabske = arabske + 10;
        else if (rimske[i] == 'V')
            arabske = arabske + 5;
        else if (rimske[i] == 'I')
            arabske = arabske + 1;
        
    }
    cout << "rimske cislice " << rimske << " je v prepocte arabskych: " << arabske << endl;

    cout << endl << "Zadajte arabske cislo: ";
    cin >> arabske;
    int celok = arabske;

    for (int i = 0; arabske > 0; i++)
    {
        if ((arabske - 1000) >= 0)
        {
            rimske[i] = 'M';
            arabske = arabske - 1000;
        }
        else if ((arabske - 500) >= 0)
        {
            rimske[i] = 'D';
            arabske = arabske - 500;
        }
        else if ((arabske - 100) >= 0)
        {
            rimske[i] = 'C';
            arabske = arabske - 100;
        }
        else if ((arabske - 50) >= 0)
        {
            rimske[i] = 'L';
            arabske = arabske - 50;
        }
        else if ((arabske - 10) >= 0)
        {
            rimske[i] = 'X';
            arabske = arabske - 10;
        }
        else if ((arabske - 5) >= 0)
        {
            rimske[i] = 'V';
            arabske = arabske - 5;
        }
        else if ((arabske -1) >= 0)
        {
            rimske[i] = 'I';
            arabske = arabske - 1;
        }

    }

    cout << "prepocet z " << celok << " arabskych na rimske je " << rimske << endl;

    system("pause");
    return 0;
}

Nahlásit jako SPAM
IP: 92.52.55.–
Reklama
Reklama
BDS+2
Věrný člen
31. 1. 2016   #2
-
0
-

Myslím, že by ses měl v první řadě podívat na správný zápis/čtení římských čísel. Úplně ses vykašlal na zohlednění pořadí písmen.

Nahlásit jako SPAM
IP: 185.69.69.–
Visual Studio C/C#/C++
(pouze samouk)
PiranhaGreg0
Stálý člen
31. 1. 2016   #3
-
+1
-
Zajímavé
Nahlásit jako SPAM
IP: 147.32.126.–
RedSoul0
Duch
31. 1. 2016   #4
-
0
-

BDS - jj viem, s tym som aj pocital, bolo to prilis zlozite namna :)

#3 PiranhaGreg

vdaka, bolo to tam dobre napisane :) inspirovalo ma to ale je to teda dost tazke pre zaciatocnika, by ma nikdy nenapadol ten postup s porovnavanim poslednej hodnoty...

Nahlásit jako SPAM
IP: 92.52.55.–
BDS+2
Věrný člen
31. 1. 2016   #5
-
+1
-
Zajímavé

#4 RedSoul
v tom případě bych tady:

 if (rimske[i] == 'M')
            arabske = arabske + 1000;
        else if (rimske[i] == 'D').....

použil switch ;)

Nahlásit jako SPAM
IP: 185.69.69.–
Visual Studio C/C#/C++
(pouze samouk)
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, 62 hostů

Moderátoři diskuze

 

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