• 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?

Cloud VPS
0 głosów
494 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,610 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,790 wizyt
pytanie zadane 15 kwietnia 2016 w C i C++ przez ludfik Nowicjusz (150 p.)
0 głosów
0 odpowiedzi 687 wizyt
pytanie zadane 4 maja 2018 w C i C++ przez miki7331 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 3,012 wizyt

93,481 zapytań

142,414 odpowiedzi

322,758 komentarzy

62,894 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

Kursy INF.02 i INF.03
...