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

Wskazniki - pomiar szybkosci. Wysypanie programu

Object Storage Arubacloud
0 głosów
370 wizyt
pytanie zadane 11 października 2017 w C i C++ przez ccn Nowicjusz (150 p.)
Witam, przerabiam wlasnie 10 odcinek kursu C++ na temat wskaznikow (https://www.youtube.com/watch?v=0DQl74alJzw) i jeden z przykladowych programow (ktory mial dokonac pomiaru czasu zapisu bez wskaznika oraz ze wskaznikiem) nie dziala tak jak powinien, a wydaje mi sie ze kod mam identyczny jak w kursie. Program dziala dopoki ilosc liczb w tablicy jest mniejsza lub rowna 54 (pokazuje wtedy 0 ze wzgledu na zbyt mala ilosc czasu aby dokonac pomiaru), od ilosci 55 i wyzszej program wysypuje sie jak widac na zalaczonych screenach. Moze ma ktos pomysl o co moze chodzic? Dziekuje za pomoc i pozdrawiam ;)

#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;
int ile;
clock_t start, stop;
double czas;

int main()
{
    cout<<"Ile liczb w tablicy: "<<endl;
    cin>>ile;

    int *tablica;
    tablica = new int [ile];

    start=clock();

    for (int i=0; i<ile; i++)
    {
    tablica[i]=i;
    tablica[i]+=50;
    }

    stop=clock ();
    czas=(double)(stop - start) / CLOCKS_PER_SEC;

    cout<<"Czas zapisu (bez wskaznika): "<<czas<<endl;

    delete [] tablica;

    int*wskaznik=tablica;
    tablica= new int [ile];

    start=clock();

    for (int i=0; i<ile; i++)
    {
    *wskaznik=i;
    *wskaznik+=50;
    *wskaznik++;
    }

    stop=clock ();
    czas=(double)(stop - start) / CLOCKS_PER_SEC;

    cout<<"Czas zapisu (ze wskaznikiem): "<<czas<<endl;

    delete [] tablica;


    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 11 października 2017 przez criss Mędrzec (172,590 p.)
wybrane 11 października 2017 przez ccn
 
Najlepsza
int*wskaznik=tablica;
tablica= new int [ile];
 
start=clock();
 
for (int i=0; i<ile; i++)
{
    *wskaznik=i;
    *wskaznik+=50;
    *wskaznik++;
}

Dwie pierwsze linie w powyższym fragmencie powinieneś zamienić miejscami, inaczej to nie ma sensu. To tak samo jakbyś napisał..

int a = 5;
int b = a;
a = 6;

..i oczekiwał, że b == 6.

komentarz 11 października 2017 przez obl Maniak (51,280 p.)
To samo chciałem napisać.
komentarz 11 października 2017 przez ccn Nowicjusz (150 p.)
Racja, dzięki.

Poprawilem błąd usuwajac poprostu zbedna * przy wskaznik++. Co ciekawe program dziala teraz do liczby 130046, a przy 130047 nadal sie wysypuje..
komentarz 11 października 2017 przez criss Mędrzec (172,590 p.)

Poprawilem błąd usuwajac poprostu zbedna * przy wskaznik++.

Racja, nie zauważyłem tego. Ale do mojej odpowiedzi też się zastosowałeś? :D

 Co ciekawe program dziala teraz do liczby 130046, a przy 130047 nadal sie wysypuje..

Nie widze żadnych więcej błędów :/ Jesteś w stanie powiedzieć gdzie się wysypuje? (np. postaw jakieś couty w krytycznych miejscach i sprawdź do którego dojdzie) Ew. wrzuć znowu cały kod jeśli zmieniałeś coś więcej.

komentarz 11 października 2017 przez ccn Nowicjusz (150 p.)
Zamienilem te linie i dziala, dzieki za pomoc :)

Podobne pytania

0 głosów
1 odpowiedź 335 wizyt
pytanie zadane 2 lipca 2022 w C i C++ przez polandonion Mądrala (7,040 p.)
0 głosów
1 odpowiedź 296 wizyt
pytanie zadane 26 czerwca 2022 w C i C++ przez polandonion Mądrala (7,040 p.)
0 głosów
1 odpowiedź 109 wizyt
pytanie zadane 22 kwietnia 2020 w C i C++ przez TOWaD Mądrala (5,700 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

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

...