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.

program w C++ prosze o pomoc

kamykczest 04 Sty 2006 22:11 1480 6
  • #1 04 Sty 2006 22:11
    kamykczest
    Poziom 13  

    Witam jestem na pierwszym roku na bydownictwie. Z informatyki na zaliczenie mamy napisac program w c++(program jakim robimy to borland), Wyklady wygladaly calkiem inaczej niz cwiczenia za to ze sie chodzilo ma sie zalke natomiast cwiczenia podobnie nic nie robilismy gosciu przychodzil nakoniec lekcji a my siedzielismy a nigdy nie milem doczynienia z programowaniem Mam napisac taki program prosze o pomoc

    Napisz program ktory bedzie sprawdzal czy dana liczba naturalna ma tą samą wartosc jezeli czyta sie ja od poczatku do konca i od konca do poczatku oblicz ile takich liczb pojawi sie na 5-cyfrowym liczniku samochodowym od jego wyprodukowania do chwili gdy licznik ponownie sie wyzeruje.

    wogole nie mam pojecia jak to zapisac i o co w tym chodzi tzn co to ma robi dziekuje za pomoc

    0 6
  • #2 04 Sty 2006 23:09
    Faust
    Poziom 16  

    Borlanda nie znam, tzn jeżeli ma to być aplikacja pod win (VCL), jeżeli ma to być aplikacja w konsoli to program ruszy.

    Code:
    #include<iostream>
    
    #include<string>
    #include<windows.h>
    using namespace std;

    //funkcja sprawdza czy liczba podana w stringu jest taka jakiej szukamy
    bool sprawdz(char *liczba)
    {
       int dlugosc=(int)strlen(liczba);
       for(int i=0;i<dlugosc/2;i++)
          if(liczba[i]!=liczba[dlugosc-i-1])return false; //porownuje kolejne liczby te na poczatku z tymi na koncu
                                              //jezeli sie roznia to false
       return true; //jezeli sie nie roznia to w takim razie to jest ta liczba, wiec true, liczby jedno cyfrowe sie kwalifikuja
    }
    int main()
    {
       int ile=0;
       char liczba[20];
       cout << "Podaj liczbe(max 20 cyfr) :";
       cin.get(liczba,19);
       if(sprawdz(liczba))cout<<"Liczba ma taka sama wartosc...."<<endl;
       else cout<<"Liczba nie ma takiej samej wart..."<<endl;
       for(int i=0;i<=99999;i++)
       {
          itoa(i,liczba,10); //trzeba zamienic liczbe na tekst
          if(sprawdz(liczba))ile++;
       }
       cout<<endl<<"Takich liczb na 5 cyfrowym liczniku pojaiw sie: " << ile << endl;
       system("pause");
       return 0;
    }

    0
  • #3 07 Sty 2006 22:01
    kamykczest
    Poziom 13  

    hm a da sie jakos inaczej to zrobic jakos prosciej bo polowe z tych funkcji wogole nie widzialem na oczy :)

    0
  • #4 07 Sty 2006 22:19
    elektryk
    Poziom 42  

    kamykczest napisał:
    hm a da sie jakos inaczej to zrobic jakos prosciej bo polowe z tych funkcji wogole nie widzialem na oczy :)
    To jest chyba najprostrza wersja, ja bym to zrobił przy pomocy 5ciu zagnieżdzonych for`ów, ale tak jest dużo czytelniej. Pozatym do problemu można podejść całkiem od drugiej strony, skoro mamy 5 cyfr to wystarczy odliczać 10x10x10 razy a pozostałe 2 cyfry skopiować (bo w końcu ma być liczba symetryczna). Wtedy będzie o 100 razy mniej iteracji pętli.

    0
  • #5 14 Sty 2006 18:02
    kamykczest
    Poziom 13  

    Napisz program ktory bedzie sprawdzal czy dana liczba naturalna ma tą samą wartosc jezeli czyta sie ja od poczatku do konca i od konca do poczatku oblicz ile takich liczb pojawi sie na 5-cyfrowym liczniku samochodowym od jego wyprodukowania do chwili gdy licznik ponownie sie wyzeruje.

    witam mam takie dane pytalem nauczyciela i tyle mi podpowiedzial
    ma byc to od 0 z krokiem 1 do 99999
    alaiza liczby i ile takich liczb sie powtorzy
    Cdt Ct Cs Cd Cj
    0 0 0 0 0 pierwszy przypadek gdy licznik ma same zera
    9 9 9 9 9 koncowy przypadek gdy są same dziewiatki

    czyli c dziesiatek tysiecznych c tysiecy c setek c dziesiatek c jednosci
    Cj=i%10
    Cd=((i-Cj)/10)%10
    Cs =((i-cd)/10)%10
    Cd=((i-Cs)/10)%10
    Cdt ((i-cd)/10)%10


    czyli zeby liczby byly rowne to cj=cdt i cd=ct nie zalezy to od parametrow cs
    wspomnial tez ze liczba ma byc palindromem czyli taka sama jak sie czyta od poczatku do konca i odwrotnie ale tez zwrocil uwage za gdy i <10000 to Cdt=0
    i<1000 Cdt=0 Ct=0
    i jak zaczynalismy pisac program uzywalismy takich znakow
    #include<stdio.h>
    #include<conio.h>
    Bede wdzieczny za kazda pomoc Dziekuje

    0
  • #6 17 Sty 2006 17:12
    kamykczest
    Poziom 13  

    co jest z tym programem program jest niby dobrze napisany liczby 11111 potwierdza ze sa palindromem czyli czytane od poczatku do konca i odrotnie maja ta sama wartosc 10001 ze sa a jak wpisuje 01010lub 01110, 02220 to ze nie sa a przecierz d0=d4 a d2=d3 a jak wpisze 05550 to potwierdza ze jest palindromem


    #include <iostream.h>
    #include <conio.h>

    bool CzyPalindrom(int liczba)
    {
    int d0 = liczba % 10;
    int d1 = (liczba % 100) / 10;
    int d2 = (liczba % 1000) / 100;
    int d3 = (liczba % 10000) / 1000;
    int d4 = liczba / 10000;

    if ((d0 == d4) && (d1 == d3)) return true;
    else return false;
    }

    int main(int argc, char* argv[])
    {
    cout << "Podaj liczbe ktora podejrzewaz o to ze jest palindromem :" << endl;
    int Syndromik;
    cin >> Syndromik;

    if (CzyPalindrom(Syndromik) == true)
    {
    cout << "Wprowadzona liczba jest palindromem" << endl;
    }
    else
    {
    cout << "Wprowadzona liczba nie jest palindromem" << endl;
    }

    int licznik = 0;

    for (int i=0 ; i<= 99999; i++)
    {
    if (CzyPalindrom(i) == true) licznik++;
    }

    cout << "Liczb takich na liczniku jest : " << licznik;
    getch();

    return 0;
    }

    0
  • #7 17 Sty 2006 17:17
    Bielsky
    Poziom 20  

    Ale np. 0101010 to 101010 czyli nie jest palindromem.

    0