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

C++, printf, scanf

Object Storage Arubacloud
0 głosów
1,147 wizyt
pytanie zadane 8 listopada 2016 w C i C++ przez Piotr Ponikwia Początkujący (330 p.)
Witam od pewnego czasu przygotowywuje się do oig. na stronie z zadaniami pisze że w przypadku programowania c++ należy użyć printf i scanf . Podczas nauki c++ uczyłem się wypisywać i wczytywac za pomocą cout i cin. Nie mam jednak pojęcia jak to się robi w języku c . Wiem że trzeba użyć jakieś biblioteki.  Może macie jakaś stronę abym mógł poćwiczyć algorytmy i nauczyć się na test wiedzy z informatyki. Za wszelką pomóc serdecznie dziękuję.

O to cytat z strony

Wczytywanie w języku C++

W języku C++ zachęcam do korzystania z funkcji scanf() oraz printf(). W systemie olimpiady cin oraz cout działają znacznie wolniej, co może spowodować utratę punktów.

Paweł Burzyński
komentarz 8 listopada 2016 przez jpacanowski VIP (101,940 p.)
Teraz już wiecie dlaczego ciągle piszę aby zaczynać od języka C...
komentarz 8 listopada 2016 przez adrian17 Ekspert (344,860 p.)
W sumie nie wiem dlaczego :)

3 odpowiedzi

+1 głos
odpowiedź 8 listopada 2016 przez mrcnsct Nałogowiec (36,390 p.)
wybrane 8 listopada 2016 przez Piotr Ponikwia
0 głosów
odpowiedź 8 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)

Witam. Z ciekawości napisałem prosty program sprawdzający szybkość wypisywania dla cout, oraz printf i ku mojemu zdziwieniu printf wcale nie jest szybsze. Chyba że ja nie rozumiem na czym ta szybkość polega. 

W obydwu przypadkach czas wypisania ciągu 1000 liczb od 1 wynosi około 3,9 sekundy z małym marginesem błędu bo wszyscy wiemy jak działa funkcja Sleep();

 

#include <iostream>
#include <cstdio>
#include <time.h>
#include <windows.h>

using namespace std;

int main()
{
    clock_t start, stop;
    double czas_printf, czas_cout;

    //printf

    start=clock();

    for(int i=0; i<=1000; i++)
    {
        i++;
        Sleep(1);

        printf("%i",i);
        system("cls");
    }

    stop=clock();

    czas_printf = (double)(stop-start) / CLOCKS_PER_SEC;

    //cout

    start=clock();

    for(int i=0; i<=1000; i++)
    {
        i++;
        Sleep(1);

        cout<<i;
        system("cls");
    }

    stop=clock();

    czas_cout = (double)(stop-start) / CLOCKS_PER_SEC;

    cout<<"Czas dla printf: "<<czas_printf<<endl;
    cout<<"Czas dla cout: "<<czas_cout<<endl;

    return 0;
}

 

1
komentarz 8 listopada 2016 przez adrian17 Ekspert (344,860 p.)
edycja 8 listopada 2016 przez adrian17
Um, co? 70% tego "benchmarku" spędzisz w system("cls");, kolejne 30% w sleep() (po co on tam w ogóle jest?). Różnica w czasie printf/cout jest kompletnie niezauważalna na tle innego kodu wykonywanego w pętli.
komentarz 8 listopada 2016 przez unknown Nałogowiec (39,560 p.)
Funkcje printf i scanf są minimalnie szybsze od cout i cin(żeby to zobaczeć musiałbyś wykonać więcej testów najlepiej używają jakiegoś zegara z chrono). Jednak po użyciu tych dwóch funkcji:

http://en.cppreference.com/w/cpp/io/ios_base/sync_with_stdio

http://en.cppreference.com/w/cpp/io/basic_ios/tie

cin i cout stają się tak samo szybkie jak printf i scanf.

Zamiast endl powinnio się używać '\n'.
0 głosów
odpowiedź 8 listopada 2016 przez adrian17 Ekspert (344,860 p.)

co może spowodować utratę punktów.

Typowy program w zadaniu algorytmicznym spędza <1% czasu na czytaniu/pisaniu, używanie printf to często ślepa mikrooptymalizacja.

Podobne pytania

0 głosów
1 odpowiedź 314 wizyt
pytanie zadane 3 kwietnia 2020 w C i C++ przez ResCrove Obywatel (1,700 p.)
0 głosów
0 odpowiedzi 391 wizyt
pytanie zadane 2 lipca 2019 w C i C++ przez Przemek49 Obywatel (1,260 p.)
+5 głosów
7 odpowiedzi 1,087 wizyt
pytanie zadane 15 kwietnia 2015 w C i C++ przez RedRevenge Obywatel (1,230 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

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

...