Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] - Zamiana liczb rzymskich na arabskie

SkarpetaNaDotarcie 15 Mar 2013 15:23 3177 6
  • #1 15 Mar 2013 15:23
    SkarpetaNaDotarcie
    Poziom 2  

    Witam
    Mam pewien problem, jestem początkujący jeżeli chodzi o programowanie, chociaż na dzień dzisiejszy tym planuje się zająć w przyszłości, w tym roku zdaje maturę z informatyki, jako język programowania wybrałem sobie C++, nauczyciel dał mi przykładowe zadanie z którym po paru nieudanych próbach postanowiłem się podzielić na forum. Otóż zadanie to polega na napisaniu programu zawierającego funkcje zamieniającą liczby rzymskie (I,VI,XI etc.) na arabskie (konkretnie chodzi o lata). Liczby te program ma pobierać z pliku .txt w którym zapisane są w podany sposób

    Cytat:

    I
    IV
    VI
    IX
    XII
    CCCXII
    CM
    MCXIII
    MCDX
    MCMLXX
    MCMXCVIII
    MCMXCIX
    MMVI

    Oraz utworzyć drugi plik zawierający te lata, zamienione już na liczby arabskie.
    Próbowałem użyć m.in getline, jednak wczytuje mi wtedy tylko pierwszą linie, a po próbie wczytania całego pliku do tablicy (zaczerpnięte z jakiegoś tutka) program się najzwyczajniej w świecie rozkracza. Nie mam też zbytnio pomysłu na zamianę, rozpisałem parę algorytmów które moim zdaniem powinny działaś, ale jakoś nei potrafie żadnego wprowadzić w życie, czy powinienem następnie wczytywać każdą datę, jako osobne znaki? Prosiłbym o pomoc w zrozumieniu całej procedury jaką program musiałby wykonać, nie pogniewam się za gotowy kod, ale prosiłbym aby był opisany, abym mógł poćwiczyć później wykonując program odwrotny, czy coś w tym stylu. Przede wszystkim chodzi mi o zrozumienie programu i naukę programowania, nie o gotowiec, gdyż to i tak nie będzie oceniane, za to może mnie czekać podobne zadanie na maturze. Z góry dziękuje za pomoc

    1 6
  • #2 15 Mar 2013 15:50
    Raphaw
    Poziom 20  

    Pokaż kod, bez tego nie ma o czym dyskutować.

    0
  • #3 15 Mar 2013 16:37
    SkarpetaNaDotarcie
    Poziom 2  

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    To jest próba wczytania całej tablicy, według poradnika, mówiąc szczerze w niektórych momentach się gubię, program nic nie wyświetla,nie robi nic. Co do getline to używałem czegoś takiego
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    I nie wiem jak zrobić żeby wczytał coś poza pierwszą linią. Co do zamiany rzymskich w arabskie po wczytaniu- nie mam pojęcia, póki co jestem pod koniec pierwszego tomu "Symfonii C++" i nie używałem w ogóle jak dotąd wczytywania danych z pliku.

    0
  • #4 15 Mar 2013 16:57
    Raphaw
    Poziom 20  

    Po kolei:
    1. jakiego rodzaju dane wczytuje się z pliku tekstowego (jakiego typu powinna być tablica)?
    2.

    SkarpetaNaDotarcie napisał:
    program nic nie wyświetla

    a) dlaczego ta pętla się nie wykona?:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    b) Dlaczego ten cout nie zadziała nigdy?
    Kod: c
    Zaloguj się, aby zobaczyć kod

    3. co do samego wczytywania:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    próbujesz wczytać wiersz i umieścić go w jednej komórce tablicy.

    Co do drugiego programu:
    SkarpetaNaDotarcie napisał:
    jak zrobić żeby wczytał coś poza pierwszą linią

    Trzeba wywoływać wczytywanie linii tak długo, aż nie dotrzesz do końca pliku najprościej -
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #5 15 Mar 2013 21:10
    Krzysztof Gustaw
    Poziom 23  

    Witam!
    Tutaj podaję przykładowy sposób konwersji liczb rzymskich na odpowiadający im zapis dziesiętny, wraz z opisem działania i "czym to sie je"

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Pozdrawiam!

    0
  • #6 17 Mar 2013 13:07
    SkarpetaNaDotarcie
    Poziom 2  

    Przepraszam że z takim opóźnieniem, niestety jakieś problemy z internetem, a nie cierpię pisać z telefonu.Dziękuje bardzo za tą konwersje, zaraz wypróbuje i przeanalizuje. Co do wcześniejszych pytań
    1.Chyba zmienne znakowe - char?
    2.
    a) nie wiem, po prostu nie rozumiem tego
    b)czy to przez to że umieściłem go po returnie?
    Spróbuje użyć tej pętli wieczorem, gdyż niestety zostaje odciągnięty od kompa do tego czasu. Dzięki bardzo za pomoc, i dziękuje za wyrozumiałość ;)

    0
  • #7 18 Mar 2013 00:55
    Krzysztof Gustaw
    Poziom 23  

    Witam!
    w języku C jak i C++, jeśli sterowanie natrafi na instrukcję return to kończy działanie funkcji, zatem instrukcje napisane po return nigdy sie nie wykonają.

    0