• 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")

Cloud VPS
+5 głosów
34,129 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 (256,600 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 1,001 wizyt
pytanie zadane 29 października 2017 w Algorytmy przez TeslaX93 Gaduła (3,600 p.)
+1 głos
3 odpowiedzi 831 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,520 wizyt

93,487 zapytań

142,420 odpowiedzi

322,772 komentarzy

62,903 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
...