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

question-closed [C++][Linux] Funkcja sleep()

VPS Starter Arubacloud
0 głosów
2,368 wizyt
pytanie zadane 15 marca 2019 w C i C++ przez Teslum_369 Gaduła (4,190 p.)
zamknięte 15 marca 2019 przez Teslum_369

Witam,

Próbuję użyć funkcji sleep() na Linux.

Problem polega na tym, że najpierw wypisuję tekst, potem używam sleep'a, a program najpierw czeka i potem wypisuje wszystko na raz. Chciałbym zrobić taki mini loading kropek w sensie:

"Twoja odpowiedz jest (1s) .  (1s) . (1s) . Poprawna!"

A kompilator wykonuje coś takiego: (3s) Twoja odpowiedz jest...Poprawna!;

 

Legenda:

(xs) oznacza x sekund wstrzymania programu.

Dołączam pełen kod:

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <unistd.h>
#include <algorithm>


std::string temat, nick;
std::string tresc[5];
std::string odpA[5],odpB[5],odpC[5],odpD[5];
std::string poprawna[5];

int main()
{
  std::string linia{};
  int nr_linii{1};
  int nr_pytania{};
  
  int punkty{};
  std::string odpowiedz[5];
  
      std::fstream file;
      file.open("abc.txt", std::ios::in);
      if(file.good() == false) {std::cout << "Access denied!"; exit(0);}
      
      while(getline(file,linia))
      {
        switch(nr_linii)
        {
          case 1: temat                = linia;break;
          case 2: nick                 = linia;break;
          case 3: tresc[nr_pytania]    = linia;break;
          case 4: odpA[nr_pytania]     = linia;break;
          case 5: odpB[nr_pytania]     = linia;break;
          case 6: odpC[nr_pytania]     = linia;break;
          case 7: odpD[nr_pytania]     = linia;break;
          case 8: poprawna[nr_pytania] = linia;break;
        }
        if(nr_linii == 8)
        {
          nr_linii = 2;
          nr_pytania++;
        }
        
        nr_linii++;
      }
      
      file.close();
      
      
      for(int i{}; i<5; i++)
      {
        std::cout << '\n' << tresc[i];
        std::cout << '\n' << "A) " << odpA[i];
        std::cout << '\n' << "B) " <<odpB[i];
        std::cout << '\n' << "C) " <<odpC[i];
        std::cout << '\n' << "D) " <<odpD[i];
        std::cout << '\n' << "\nTwoja odpowiedz: ";
        std::cin >> odpowiedz[i];
        
        std::cout << "\nTwoja odpowiedz jest";
        
        
        sleep(1); std::cout << "."; 
        sleep(1); std::cout << "."; 
        sleep(1); std::cout << "."; 
      
          
          std::transform(odpowiedz[i].begin(), odpowiedz[i].end(), odpowiedz[i].begin(), ::tolower);
        if(odpowiedz[i] == poprawna[i])
        {
          std::cout << " Poprawna!\n\n";
          punkty++;
        }
        else std::cout << " Niepoprawna!\n\n";
        
      }


      std::cout << "\nKoniec quizu! Zdobyte punkty: " << punkty;




  std::cin.ignore();
  getchar();
  return 0;
}

Plik .txt:

Programowanie w C++
XYZ
Typ zmiennych o nazwie float przechowuje:
liczby calkowite
napisy
liczby zmiennoprzecinkowe
pojedyncze znaki
c
Wstrzymanie wykonania programu na czas 2 sekund uzyskasz instrukcja:
Wait(2000)
Stop(2000)
Delay(2000)
Sleep(2000)
d
Ktora deklaracja jest zapisana poprawnie?
int x;
integer x;
x:integer;
x=integer;
a
Z jakiego przedzialu zostanie wylosowana liczba: rand()%10+2
0..9
2..9
2..11
0..11
c
Ile razy wykona sie petla: for (int i=4; i>=-2; i--)
ani razu
nieskonczenie wiele razy
6
7
d

(Dałem txt w bloczku na kod)

Kombinowałem coś z std::cin.ignore() po funkcji sleep(), ale program wymaga wciśnięcie klawisza + enter (czego bym nie chciał)

Czy ktoś wie, jak rozwikłać ten problem?

 

Z góry dziękuję.

komentarz zamknięcia: Problem solved

1 odpowiedź

0 głosów
odpowiedź 15 marca 2019 przez Teslum_369 Gaduła (4,190 p.)

[SOLVED]

Przeglądarka forumowa nie pokazała mi wcześniej takiego pytania. Jeśli ktoś będzie zmagał się w z tym problemem to odpowiedź znajdzie w tym poście: https://forum.pasja-informatyki.pl/194588/funkcja-sleep-linux

Podobne pytania

0 głosów
2 odpowiedzi 2,821 wizyt
pytanie zadane 7 listopada 2016 w C i C++ przez Undisputed Gaduła (3,040 p.)
0 głosów
1 odpowiedź 225 wizyt

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...