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

Wzór obliczający czas do zakończenia procedury - c#

Object Storage Arubacloud
+1 głos
206 wizyt
pytanie zadane 2 lipca 2016 w C# przez timrh Mądrala (6,030 p.)
edycja 2 lipca 2016 przez timrh

Witam, tworzę program który będzie wypisywał w podane miejsce dany wyraz bądź zdanie, i chciałbym aby użytkownik miał podgląd na to ile czasu to zajmie. Użytkownik przed wypisaniem podaje zdanie, ile razy program ma je wypisać, odstęp czasu przy wypisywaniu każdej litery, oraz odstęp czasu przy wypisywaniu tegoż zdania.

I właśnie nie wiem jaki wzór zastosować mając te 4 zmienne. Wymyśliłem już dużo kombinacji jednak żadna nie jest prawdziwa.

 void ObliczCzas()
        {
            double odsL = double.Parse(OdstepL.Text)/1000; //odstęp wypisywania liter dzielony na 1000 aby uzyskać czas w sekundach
            double odsS = double.Parse(OdstepS.Text)/1000; //odstęp wypisywania zdania dzielony na 1000 aby uzyskać czas w sekundach

            double ile = double.Parse(textBox1.Text); //ile razy wypisać
            double dlugoscTekstu = MiejsceNaTekst.Text.Length; //długość zdania

            string timeText=null;
            int s=0, m=0, g=0, d=0, t=0;
            double wynik=0;
            // MessageBox.Show(dlugoscTekstu.ToString());
            wynik = ((dlugoscTekstu * odsL) * odsS) * ile ; //wzór

            while (wynik > 0)
            {
                if(wynik >= 5184000) //ile tygodni
                {
                    t += 1;
                    wynik -= 5184000;
                }
                if(wynik >= 86400)//ile dni
                {
                    d += 1;
                    wynik -= 86400;
                }
                else if (wynik >= 3600)//ile godzin
                {
                    g += 1;
                    wynik -= 3600;
                }
                else if (wynik >= 60)//ile minut
                {
                    m += 1;
                    wynik -= 60;
                }
                else if (wynik >= 1)//ile sekund
                {
                    s += 1;
                    wynik -= 1;
                }
                else
                    break;
            }
            if (t > 0 || d > 0 || g > 0 || m > 0 || s > 0)
            {
                if (t > 0) timeText += t + " tygodni, ";
                if (d > 0) timeText += d + " dni, ";
                if (g > 0) timeText += g + " godzin, ";
                if (m > 0) timeText += m + " minut, ";
                timeText += s + " sekund.";
            }
            else timeText = " mniej niż sekundę.";
                richTextBox1.Text = "Procedura wypisyania tekstu zajmie: " + timeText;
        }

Proszę o pomoc.

1 odpowiedź

0 głosów
odpowiedź 2 lipca 2016 przez MichuDev Pasjonat (20,300 p.)
  • Musisz wiedzieć ile cykli procesora wyjdzie na daną funkcję i podzielić to na liczbę ich.
  • W kodzie richTestBox1.Text = "Procedura wypisywania tekstu zajmie: " + timeText; powinna być w ostatniej instrukcji if.
  • Wynik nie będzie dokładny ponieważ procesor skacze między procesami i wykonuje je w pewnym kwancie czasu / gdy potrzebne są zasoby zmienia proces / w wypadku poddania (yeld) - wywoływanym instrukcją Sleep(0)
komentarz 2 lipca 2016 przez timrh Mądrala (6,030 p.)
Nadal nie wiem jak to zrobić.
komentarz 2 lipca 2016 przez MichuDev Pasjonat (20,300 p.)

Poczytaj na msdn o przestrzeni nazw System.Diagnostics: https://msdn.microsoft.com/pl-pl/library/system.diagnostics(v=vs.110).aspx.

Podobne pytania

0 głosów
1 odpowiedź 329 wizyt
pytanie zadane 1 grudnia 2017 w C# przez BeFree Początkujący (380 p.)
0 głosów
1 odpowiedź 1,284 wizyt
pytanie zadane 27 października 2018 w C# przez aXen Początkujący (390 p.)
0 głosów
0 odpowiedzi 97 wizyt
pytanie zadane 12 marca 2016 w C i C++ przez Exus Początkujący (420 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 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!

...