• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

HELP! Jak skonstruować licznik taki jak w samochodzie?

Object Storage Arubacloud
0 głosów
279 wizyt
pytanie zadane 16 listopada 2015 w C i C++ przez setup Nowicjusz (120 p.)
Witam, jestem początkujący i proszę o wyrozumiałość.

W moim nowym projekcie muszę użyć licznika zbudowanego z łańcucha zbudowanego 10 szufladek. Ostatnia szufladka przyjmuje wartość 1 powiększa się do 9 i uruchamia nastęną, która ma działać jak poprzednia, itd. aż do ostatniej, czyli pierwszej.

Da się coś takiego zrobić?

4 odpowiedzi

+2 głosów
odpowiedź 16 listopada 2015 przez emSon Stary wyjadacz (10,480 p.)

Furas podał dobry sposób. Ja mam inny, krótszy:

#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    long long licznik = 0;

    while(licznik < 9999999999)
    {
        for(long long i=10; i<10000000000; i*=10)
        {
            if((licznik / i) == 0) cout << "0";
        }

        cout << licznik;
        Sleep(20);
        licznik++;
        system("CLS");
    }
}

 

komentarz 16 listopada 2015 przez setup Nowicjusz (120 p.)
DZIAŁA!!! Jesteście WSPANIALI :-D. Bardzo dziękuję za pomoc :))
komentarz 16 listopada 2015 przez furas Maniak (53,800 p.)

@emSon - tak się zasugerowałem tablicą w pytaniu, że nie pomyślałem o zwykłej liczbie :)

Wydaje mi się, że można by wypisać to bez pętli używając czegoś w stylu 

printf("%010d", licznik);

 

komentarz 16 listopada 2015 przez furas Maniak (53,800 p.)

już mam

 

#include <iostream> // cout
#include <iomanip>  // setfill, setw
#include <stdio.h>  // printf
 
using namespace std;

int main()
{
    int licznik = 999;
    
    printf("%010d\n", licznik); 
    // 0000000999

    cout << setfill('0') << setw(10) << licznik << endl; 
    // 0000000999
}

 

komentarz 16 listopada 2015 przez emSon Stary wyjadacz (10,480 p.)
brawo furas ;)

przyznam szczerze, że nie znam innych funkcji cout niż endl :P
komentarz 16 listopada 2015 przez furas Maniak (53,800 p.)
Tak rzadko sie ich używa, że sam ich nie pamiętam :)
+1 głos
odpowiedź 16 listopada 2015 przez furas Maniak (53,800 p.)
#include <iostream>
 
using namespace std;

int tablica[10];

void wypisz()
{
    for(int i = 0; i < 10; i++)
        cout << tablica[i];

    cout << endl;
}

void zwieksz()
{
    for(int i = 9; i > -1; i--)
    {
        // zwiekszenie o 1 modulo 10
        tablica[i] = (tablica[i] + 1) % 10;

        // wyskocz jesli nie nastapilo przepelnienie
        if(tablica[i] != 0)
            break;
    }
}

int main()
{
    wypisz(); // 0000000000
        
    zwieksz();
    wypisz(); // 0000000001

    zwieksz();
    zwieksz();
    zwieksz();
    zwieksz();
    zwieksz();
    wypisz(); // 0000000006

    zwieksz();
    zwieksz();
    zwieksz();
    zwieksz();
    zwieksz();
    wypisz(); // 0000000011

    tablica[8] = 9;
    tablica[9] = 9;
    wypisz(); // 0000000099

    zwieksz();
    zwieksz();
    wypisz(); // 0000000101    
}

 

0 głosów
odpowiedź 16 listopada 2015 przez Rogargol Pasjonat (16,600 p.)
Masz zadane co ma reprezentowac te szufladki? Czy to ma byc jakas tablica, czy na jakiej zasadzie?
komentarz 16 listopada 2015 przez setup Nowicjusz (120 p.)
na zasadzie licznika samochodowego
komentarz 16 listopada 2015 przez setup Nowicjusz (120 p.)
zwykła pętla np. for nie rozwiązuje problemu... ważne aby ostatnia szufladka z każdym obrotem pętli zwiększała się 0 - 9 i kiedy po 9 następuje następna pętla uruchamia nast. szufladkę, która liczy obroty swojego rodzica(poprzedniej szufladki).
0 głosów
odpowiedź 16 listopada 2015 przez Wadim Początkujący (260 p.)
Chodzi Ci o coś takiego?

#include <iostream>

using namespace std;

int main()
{
    int tablica[10];
    for(int i = 9; i >= 0; i--)
    {
        for(int i2 = 0; i2 <= 9; i2++)
        {
            tablica[i] = i2;
            cout << tablica[i] << endl;
        }
    }
    return 0;
}

 

komentarz 16 listopada 2015 przez setup Nowicjusz (120 p.)

 

0 0 0 0 0 0 0 1 0 9

mniej-więcej coś takiego.... ostatnia obraca się o 1 do 9... a przy następnym obrocie, czyli na zero pojawia się jedynka w poprzedniej i mamy 10 itd... aż do końca licznika [9,9,9,9,9,9,9,9,9,9]

Podobne pytania

0 głosów
2 odpowiedzi 2,288 wizyt
pytanie zadane 15 kwietnia 2016 w C i C++ przez ludfik Nowicjusz (150 p.)
0 głosów
0 odpowiedzi 618 wizyt
pytanie zadane 4 maja 2018 w C i C++ przez miki7331 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 2,570 wizyt

92,654 zapytań

141,543 odpowiedzi

319,948 komentarzy

62,022 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...