Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C#] - Wykres na podstawie danych z tablicy i zaokrąglanie wartości

Jan.max 04 Gru 2015 20:23 1542 14
  • #1 04 Gru 2015 20:23
    Jan.max
    Poziom 4  

    Witam, piszę program w VisualStudio używając języka C#

    I mam dwa problemy.
    1. Stworzyłem instrukcję warunkową która działa doskonale,
    I tworzy kolejne wartości w Tablicy (typu double),
    ale sprawdzając jej działanie przez wyświetlenie w richTextBox'je
    okazuje się że wartości na początku są dobre,
    a po kilkunastu liczbach występuję błąd zaokrągleń tj. np. 5.6, 5.5, 5.4 i nagle 5.39999999999 (Wygląda to tak jak w załączniku)
    Pytanie jak to doprowadzić do ładnej zaokrąglonej postaci ?


    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    2. Kolejnym krokiem w moim programie jest rysowanie wykresu na podstawie
    dwóch tablic w których zawarte są dane (oczywiście liczbowe)
    Chciałbym się spytać czy da się dodać jako serie danych w chart właśnie tablice danych, i jak to uczynić.
    Jeżeli się nie da, to lepiej użyć picture boxsa do rysowania wykresu czy też innego tworu ?

    0 14
  • #2 05 Gru 2015 00:38
    rufek90
    Poziom 23  

    Do zaokrąglania możesz użyć funkcji Math.Round()
    A tu masz przykłady z wykresami: http://www.dotnetperls.com/chart z tego, co pamiętam to kontrolkę do wykresów trzeba było sobie doinstalować w winformsach

    0
  • #3 05 Gru 2015 11:20
    Jan.max
    Poziom 4  

    W C# nie ma (chyba) funkcji, tylko metoda Math.Round,
    problem w tym że materiały w necie kompletnie nie pomagają mi jej zaimplementować ich do tablic.
    https://msdn.microsoft.com/pl-pl/library/75ks3aby%28v=vs.110%29.aspx
    Tutaj przykład który wałkowałem na różne sposoby i nie działa mi tak żeby zaokrąglić do jednego miejsca po przecinku.

    Co do wykresu, to potrzebuję wykresu liniowego, a w podanym przykładzie nakazuje mi aby jedna z tablic była typu string i rysuje wykresy słupkowe.
    Próbowałem coś pozmieniać w tym przykładowym kodzie, aby dostosować do własnych potrzeb ale nie działa.

    0
  • #4 05 Gru 2015 11:34
    rufek90
    Poziom 23  

    No to spieszę z pomocą :) Przetestowane i działa. Jedyne, co wyklikałem to wszedłem w domyślną serię wykresu i zmieniłem typ na liniowy.

    Co do Math.Round() to faktycznie w kontekście C# lepiej nazwać to metodą, co nie zmienia faktu, że jest to również funkcja :)

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Edit: jak nie chcesz klikać, to typ wykresu możesz zmienić tak:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #5 05 Gru 2015 13:23
    marcinj12
    Poziom 40  

    Możesz robić zaokrąglenia przed przypisaniem wyniku do tablicy:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Zamiast typu double zawsze możesz też zastosować decimal.

    0
  • #6 05 Gru 2015 14:02
    Jan.max
    Poziom 4  

    Super, zaokrąglenia działają poprawnie, Dzięki :D
    Natomiast z wykresami nadal się męczę, twój programik działa poprawnie,
    ale u Ciebie zawartość tablicy jest generowana losowo, ja mam dwie tablice wypełniane wartościami po kliknięciu guzika i chcę możliwe najprostszym sposobem dodać te dane do wykresu.

    0
  • #7 05 Gru 2015 14:09
    rufek90
    Poziom 23  

    Ciekawostka: losowanie liczb polega na przeprowadzeniu bardziej skomplikowanych obliczeń niż Twoje :) Ale to bez znaczenia... Zauważ, że mając gotową tablicę po prostu w pętli for biorę jej kolejne elementy i dodaję do listy punktów w domyślnej serii wykresu. Musisz zrobić to samo i nie ma tu znaczenia, skąd bierzesz wartości.

    Edit: A jeżeli chcesz umieścić dwie różne tablice na wykresie, to musisz po prostu dodać nową serię do wykresu. Proponuję wyklikać - możesz zmieniać kolory i etykiety. To samo możesz też zrobić z kodu.

    0
  • #8 05 Gru 2015 14:41
    Jan.max
    Poziom 4  

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    Niby proste ale przypisanie
    Kod: csharp
    Zaloguj się, aby zobaczyć kod
    nie jest poprawne dla kompilatora.

    0
  • #9 06 Gru 2015 16:48
    Jan.max
    Poziom 4  

    Można przekonwertować typ tablicy z double na string ?
    Jeśli tak to w jaki sposób ?

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Udało mi się dodać serie i wartości na osi Y są prawidłowe, ale nadal pracuje nad osią X

    0
  • #10 06 Gru 2015 16:52
    rufek90
    Poziom 23  

    Podrzuć cały kod, albo najlepiej zuploaduj projekt i opisz dokładnie, co chcesz osiągnąć i co jeszcze nie działa

    0
  • #11 06 Gru 2015 17:01
    Jan.max
    Poziom 4  

    Ogólnie w moim programie chodzi o to aby po wpisaniu wartości i kliknięciu przycisku
    "wykres" rysował się prawidłowy wykres mocy od napięcia.
    Działa to tak że wpisane wartości są zapisywane i obliczane poszczególne napięcia i moce, potem to jest przechowywane w tablicach które to w moim założeniu miały przekazywać dane do wykresu.

    Działa wszystko, po za przekazywaniem osi oX

    0
  • Pomocny post
    #12 06 Gru 2015 17:50
    rufek90
    Poziom 23  

    Zamiast używać Points.Add() użyj tego:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #14 06 Gru 2015 18:44
    rufek90
    Poziom 23  

    Wykres rysuje to, co mu każesz :) Kombinuj, gdzieś pewnie masz błąd.
    Dla podanych przez ciebie danych rysuje takie coś:

    [C#] - Wykres na podstawie danych z tablicy i zaokrąglanie wartości

    Zauważyłem, że wykres się psuje jak dwa razy klikasz button "Wykres"

    0
  • #15 08 Gru 2015 10:17
    Jan.max
    Poziom 4  

    rufek90, marcinj12 dzięki za pomoc ;D . Temat zamykam.

    0