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

Odstepy w petli for miedzy wypisywaniem.

Object Storage Arubacloud
0 głosów
616 wizyt
pytanie zadane 19 grudnia 2016 w C i C++ przez Michał Biernacki Użytkownik (670 p.)

Mam pytanie, a mianowice co zrobic, aby zamiast jak to dotad bylo w moim programie odczekania tego czasu i dopiero pojawienie sie naraz napisu "Prosze czekac..." pomiedzy nastepowaniem po sobie kropek byl jakis odstep np. 1sekunda?

#include <iostream>
#include <conio.h>
#include <unistd.h>

using namespace std;


int main()
{
	cout<<"Prosze czekac";
   
	for(char i=1; i<=3; i++)
{
	cout<<"."<<i;
	sleep(1);
}

return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 19 grudnia 2016 przez playerony Pasjonat (15,240 p.)

Funkcja Sleep przyjmuje czas w milisekundach z tego co pamiętam:


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

using namespace std;


int main()
{
    cout<<"Prosze czekac";

    for(char i=1; i<=3; i++)
    {
        cout << "." << i;
        Sleep(1000);
    }

return 0;
}

 

komentarz 19 grudnia 2016 przez Michał Biernacki Użytkownik (670 p.)
Tylko ty masz w windowsie :) I ta funkcje pisze sie troszke inaczej i chyba wartosc czasowa tez jest inna.
komentarz 19 grudnia 2016 przez playerony Pasjonat (15,240 p.)

#include <iostream>
#include <conio.h>
#include <unistd.h>

using namespace std;


int main()
{
    cout<<"Prosze czekac";

    for(char i=1; i<=3; i++)
    {
        cout << "." << i;
        usleep(10000 * 60);
    }

return 0;
}

 

0 głosów
odpowiedź 19 grudnia 2016 przez lnkoc Stary wyjadacz (13,960 p.)

Funkcja sleep jest odpowiednia, ale jej argumentem są milisekundy. Więc jeśli chcesz aby przed wypisaniem każdej kropki program czekał 1 sekundę powinieneś napisać:

sleep(1000);

 

komentarz 19 grudnia 2016 przez lnkoc Stary wyjadacz (13,960 p.)

Twój program od razu na samym końcu wyrzuca output (po zakończeniu programu). Aby tego uniknąć trzeba użyć funkcji flush():

#include <iostream>
#include <conio.h>
#include <unistd.h>
 
using namespace std;
 
 
int main()
{
    cout<<"Prosze czekac";
    cout.flush();
    for(char i=1; i<=3; i++)
{
    cout<<"."<<i;
    cout.flush();
    usleep(1000000);
}
 
return 0;
}

Poza tym usleep działa w mikrosekundach, więc jeśli chcesz poczekać 1 sekundę, to argumentem musi być jeden milion.

Kod sprawdziłem u siebie i działa.

komentarz 19 grudnia 2016 przez Michał Biernacki Użytkownik (670 p.)
error: stray '/302' in program

error: stray '/240' in program

 

A to co?
komentarz 19 grudnia 2016 przez lnkoc Stary wyjadacz (13,960 p.)
Nie wiem, ja skomentowałem linijkę z conio.h. Jest niepotrzebna.
komentarz 19 grudnia 2016 przez lnkoc Stary wyjadacz (13,960 p.)

Już wiem w czym problem, w pętli zamiast int i, używasz char więc kompilator protestuje, że ma niewłaściwe znaki przerwy podawane do strumienia wyjścia.

Edit: Jeśli w pętli zamienisz "char i" na "int i" będzie w porządku, ewentualnie jeśli chcesz iterować po znakach char powinieneś usunąć je z wypisywania do strumienia wyjściowego:

 

    for(char i=1; i<=3; i++)
{
    cout<<"."; // lub jak wolisz cout << "." << " ";
    cout.flush();
    usleep(1000000);
}

 

komentarz 19 grudnia 2016 przez Michał Biernacki Użytkownik (670 p.)
Przepraszam... Wszystko dziala jak nalezy poprostu  skopiowalem to co napisales a wtedy moga wdrozyc sie jakies niepozadane niepuste spacje itd. :)

Podobne pytania

0 głosów
2 odpowiedzi 408 wizyt
pytanie zadane 9 stycznia 2016 w C i C++ przez sapala94 Początkujący (320 p.)
0 głosów
2 odpowiedzi 260 wizyt
pytanie zadane 24 września 2015 w C i C++ przez Armando Obywatel (1,870 p.)
+1 głos
1 odpowiedź 307 wizyt
pytanie zadane 2 marca 2021 w JavaScript przez Majka Nowicjusz (130 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

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

...