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

Jak w tym przypadku zastosować system("cls")

Object Storage Arubacloud
+5 głosów
31,932 wizyt
pytanie zadane 5 kwietnia 2015 w C i C++ przez falauthy Stary wyjadacz (11,550 p.)

Witam,

Pewnie każdy z was kojarzy film Pana Mirosława z liczbami pseudolosowymi i był tam pierwszy program jako gra - zgadnij liczbę. Drugi program, to był symulator lotto i tu rodzi się moje pytanie - chcę, aby napis "Witaj w losowaniu! Za 3 sekundy nastapi zwolnienie blokady." został i był czyszczony czas do zwolnienia blokady. Cały kod wygląda tak.

//symulator lotto
#include <iostream>
#include <windows.h>
#include <time.h>

using namespace std;

int main()
{
    int liczba;

    cout << "Witaj w losowaniu! Za 3 sekundy nastapi zwolnienie blokady." << endl;

    for(int i=3;i>=1;i--)
    {
    Sleep(1000);
    system("cls");
    cout << i << endl;
    }
    srand(time(NULL));
    for(int i=1;i<=6;i++)
    {
    liczba = rand()%49+1;
    Sleep(1000);
    cout << liczba <<"\a" << endl;
    }

    return 0;
}

6 odpowiedzi

+2 głosów
odpowiedź 5 kwietnia 2015 przez szmq Pasjonat (22,770 p.)
wybrane 5 kwietnia 2015 przez falauthy
 
Najlepsza
#include <iostream> 
#include <windows.h> 
#include <time.h>
using namespace std;
int main() 
{ 
    int liczba;
    cout << "Witaj w losowaniu! Za 3 sekundy nastapi zwolnienie blokady." << endl;
    for(int i=3;i>=1;i--) 
    { 
    Sleep(1000); 
    system("cls"); 
    cout << "Witaj w losowaniu! Za 3 sekundy nastapi zwolnienie blokady." << endl;
    cout << i << endl; 
    } 
    srand(time(NULL)); 
    for(int i=1;i<=6;i++) 
    { 
    liczba = rand()%49+1; 
    Sleep(1000); 
    cout << liczba <<"\a" << endl; 
    }
    return 0; 
}

 

komentarz 5 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
To mi pomogło, tylko wyrzuciłem ten pierwszy cout i wszystko działa. :)
komentarz 5 kwietnia 2015 przez szmq Pasjonat (22,770 p.)
Służe pomocą :) Tak, 1 cout był niepotrzebny ;p
+2 głosów
odpowiedź 5 kwietnia 2015 przez Harsay Pasjonat (23,640 p.)

Co odliczenie ekran jest czyszczony i wyświetlone zostaje tylko pozostala ilosc sekund bez calej informacji.

Zmień

cout << i << endl; 

na

cout << "Witaj w losowaniu! Za " <<  i << " sekundy nastapi zwolnienie blokady." << endl; 

 

komentarz 5 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
+ za kreatywne rozwiązanie. :) Dzięki!
+1 głos
odpowiedź 5 kwietnia 2015 przez krecik1334 Maniak (58,390 p.)
//symulator lotto
#include <iostream>
#include <windows.h>
#include <time.h>
 
using namespace std;
 
int main()
{
    int liczba;
 

 
    for(int i=3;i>=1;i--)
    {
    cout << "Witaj w losowaniu!" << "Za " << i << " sekund nastapi zwolnienie blokady." << endl;
    Sleep(1000);
    system("cls");
    cout << i << endl;
    }
    srand(time(NULL));
    for(int i=1;i<=6;i++)
    {
    liczba = rand()%49+1;
    Sleep(1000);
    cout << liczba <<"\a" << endl;
    }
 
    return 0;
}

 

O to Ci chodziło? Jak coś to komentarz.

 

komentarz 5 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Nie o to chodziło - chodzi żeby odliczało od 3 do 0 tak jak w zadanie z bombą - bodajże 3 odcinek. :)
+1 głos
odpowiedź 5 kwietnia 2015 przez kryCHa Obywatel (1,960 p.)
Może nie koniecznie na temat, ale tak na przyszłość ;). Nie powinniśmy używać tak brzydkich funkcji jak system("cls"), już lepiej wyświetlić jest kilka/kilkanaście razy spację.
komentarz 5 kwietnia 2015 przez krecik1334 Maniak (58,390 p.)
Dlaczego? Bo fanboystwo Linuxa? Gdy mamy Windę kilkanaście spacji zamiast cls będzie redundancją.
komentarz 5 kwietnia 2015 przez kryCHa Obywatel (1,960 p.)
Nie chodzi o fanboystwo. Przeczytaj to.

http://www.cplusplus.com/articles/j3wTURfi/
komentarz 5 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
No ale w tym przypadku co zastosować żeby było kasowanie i pokazywanie znowu cyfry?
komentarz 5 kwietnia 2015 przez kryCHa Obywatel (1,960 p.)

Albo wykorzystać bibliotekę ncurses, która jest specjalnie przygotowana do pracy w konsoli.

Albo te nieszczęsne spacje.

for (int i = 0; i < 5; i++) {
   std::cout << "\n\n\n\n\n";
}

Oczywiście można to opakować w funkcję.

komentarz 25 grudnia 2020 przez VBService Ekspert (253,340 p.)

... albo użyć wink

cout << "\r" << string;

Printing on same line in c++

0 głosów
odpowiedź 5 kwietnia 2015 przez Wirus Stary wyjadacz (14,000 p.)

Może najprostsza funkcja

void odliczaj()
{
for(int i = 3; i > 0; i--)
{
cout << i << endl;
Sleep(1000);
system("cls");
cout << "Witaj..." << endl;
}
}

Nie wiem czy zadziała, ale jeśli tak to dodajesz sobie później ją w miejscu gdzie chcesz, aby było odliczanie.

komentarz 5 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Funkcja też fajna rzecz dla początkujących (o dziwo), ale nie o takie zamieszanie w kodzie mi chodziło. :D Dzięki!
komentarz 5 kwietnia 2015 przez Wirus Stary wyjadacz (14,000 p.)
xD nie nazwałbym tego zamieszaniem, trzeba kombinować na różne sposoby :P
komentarz 5 kwietnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Chyba mnie źle zrozumiałeś. :D Dobrze jest napisać funkcję, ale chyba dla takiej błachostki pisanie kolejnych 10 linijek kodu jest trochę marnowaniem czasu. Przynajmniej ja bym na to wpadł na samym końcu - w końcu minimalizm. :p
–1 głos
odpowiedź 5 kwietnia 2015 przez 1110200039910 Gaduła (4,630 p.)

Tutaj Ci bedzxie chodzic tak jak mowiles, do tego usunalem ta ostatnia liczbe z odliczania aby nie mieszala sie z liczbami wylosowanymi: 

 

//symulator lotto
#include <iostream>
#include <windows.h>
#include <time.h>

using namespace std;

int main()
{
    int liczba;

    cout << "Witaj w losowaniu! Za 3 sekundy nastapi zwolnienie blokady." << endl;

    for(int i=3;i>=1;i--)
    {
    Sleep(1000);
    system("cls");
    cout << "Witaj w losowaniu! Za 3 sekundy nastapi zwolnienie blokady." << endl;
    cout << i << endl;
    }
    system ("cls");
    cout << "Witaj w losowaniu! Za 3 sekundy nastapi zwolnienie blokady." << endl;
    srand(time(NULL));
    for(int i=1;i<=6;i++)
    {
    liczba = rand()%49+1;
    Sleep(1000);
    cout << liczba << endl;
    }

    return 0;
}

 

Podobne pytania

0 głosów
4 odpowiedzi 681 wizyt
pytanie zadane 29 października 2017 w Algorytmy przez TeslaX93 Gaduła (3,600 p.)
+1 głos
3 odpowiedzi 623 wizyt
pytanie zadane 17 lutego 2021 w C i C++ przez Drożdżówka Obywatel (1,870 p.)
0 głosów
3 odpowiedzi 1,115 wizyt

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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!

...