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

Dodawanie wartości do słownika <Enum , MyType>

Object Storage Arubacloud
0 głosów
137 wizyt
pytanie zadane 23 października 2020 w C# przez Masterkk121 Początkujący (280 p.)

Witam mam pytanie jak przypisać wartość min i max do słownika do klucza najmniejsza najwieksza średnia nie mg przekonwertować double na mytype 

using System;
using System.Collections.Generic;
using System.Linq;

namespace pp
{
    public enum Srednia
    {
        srednianieokresona, sredniaNajnizsza, sredniaNajwyzsza
    }

    class Program
    {
        static void Main(string[] args)
        {
            RandomNumber random = new RandomNumber();
            Dictionary dicc = new Dictionary();
            dicc.Slownik();
            Console.ReadKey();
        }
    }

    class RandomNumber
    {
        public List<int> lista = new List<int>();

        public double Najmniejsza;

        public double Najwieksza;

        public RandomNumber()
        {

            Random rng = new Random();

            for (int i = 0; i < 10; i++)

            {
              lista.Add(rng.Next(1, 100));
            }

        }

       
    }


    class Dictionary : RandomNumber
    {

        public List<RandomNumber> lista2 = new List<RandomNumber>();

        Dictionary<Srednia, RandomNumber> slownik = new Dictionary<Srednia, RandomNumber>();

        private int i;

        public void Slownik()
        {
            for (int j = 0; j < 100; j++)
            {
                lista2.Add(new RandomNumber());
            }

            int lenght = lista2.Count;
            

            for (int k = 0; k < lenght; k++)
            {

             RandomNumber losoweliczby = lista2[k];
             losoweliczby.lista.Average();

            }


            for (int i = 1; i < lenght; i++)
            {
                for (int l = lenght - 1; l >= i; l--)
                {
                    if (lista2[l - 1].lista.Average() > lista2[l].lista.Average())
                    {
                        RandomNumber temp = lista2[l];
                        lista2[l] = lista2[l-1];
                        lista2[l - 1] = temp;
                    }

                }
                Console.WriteLine(lista2[i].lista.Average());
            }

            double min = lista2[i].lista.Average();

            double max = lista2[i].lista.Average();

            for (int i = 0; i < lista2.Count; i++)
            {
                if (min > lista2[i].lista.Average())
                {
                    min = lista2[i].lista.Average();
                }
                if (max < lista2[i].lista.Average())
                {
                    max = lista2[i].lista.Average();
                }
                
            }


            Console.WriteLine(min + " min");
            Console.WriteLine(max +  " max ");

            slownik.Add(Srednia.sredniaNajnizsza, new RandomNumber());
            slownik.Add(Srednia.sredniaNajwyzsza, new RandomNumber());


            foreach(KeyValuePair<Srednia, RandomNumber>item in slownik)
            {
                Console.WriteLine(item.Key + " : " +item.Value);
            }
       
        }


    }
}

 

komentarz 23 października 2020 przez adrian17 Ekspert (344,860 p.)
Czy możesz napisać, co w zasadzie próbujesz napisać? Bo ten kod znowu dziwnie wygląda. Masz sto stu-elementowych list i masz je posortować od listy o najmniejszej średniej do listy o największej średniej?
komentarz 23 października 2020 przez Masterkk121 Początkujący (280 p.)

@Masterkk121, Mam te listy i dla każdej listy jest policzona średnia i chce żeby słownik który ma klucz enum najmniejsza i najwieksza przyjmowali wartości tych średnich które mam min i max które mam wyliczone i te zmienne min i max chce dodać jako wartość do słownika

komentarz 23 października 2020 przez VBService Ekspert (253,120 p.)
komentarz 23 października 2020 przez adrian17 Ekspert (344,860 p.)

Mam te listy i dla każdej listy jest policzona średnia i chce żeby słownik który ma klucz enum najmniejsza i najwieksza przyjmowali wartości tych średnich które mam min i max które mam wyliczone i te zmienne min i max chce dodać jako wartość do słownika

To widzę. Ale zadam jeszcze raz pytanie:

Masz sto stu-elementowych list i masz je posortować od listy o najmniejszej średniej do listy o największej średniej?

Dobrze to rozumiem?

komentarz 23 października 2020 przez Masterkk121 Początkujący (280 p.)
Tak i wypisać najmniejsza i najwieksza średnia i te pozostałe elementy  przypisać do Enuma średnia.nieokresolona
komentarz 23 października 2020 przez adrian17 Ekspert (344,860 p.)

te pozostałe elementy  przypisać do Enuma średnia.nieokresolona

To się zdecyduj - albo trzymasz w słowniku jako wartość pojedynczą listę, albo zbiór list.

1 odpowiedź

+1 głos
odpowiedź 23 października 2020 przez adrian17 Ekspert (344,860 p.)
wybrane 23 października 2020 przez Masterkk121
 
Najlepsza

No to... skoro posortowałeś tą listę tutaj:

            for (int i = 1; i < lenght; i++)
            {
                for (int l = lenght - 1; l >= i; l--)
                {
                    if (lista2[l - 1].lista.Average() > lista2[l].lista.Average())
                    {
                        RandomNumber temp = lista2[l];
                        lista2[l] = lista2[l-1];
                        lista2[l - 1] = temp;
                    }
 
                }
                Console.WriteLine(lista2[i].lista.Average());
            }

(bo to jest ręcznie napisane sortowanie bąbelkowe, nie?)

Więc lista o najmniejszej i największej średniej to po prostu pierwsza i ostatnia lista:

slownik.Add(Srednia.sredniaNajnizsza, lista2.First());
slownik.Add(Srednia.sredniaNajwyzsza, lista2.Last());
foreach(var item in slownik)
{
    Console.WriteLine(item.Key + " : " +item.Value.lista.Average());
}

i tyle.

A przy okazji:

private int i;

To tylko bałagani, bo miesza się ze zmiennymi w funkcji,

class Dictionary : RandomNumber

i nie wiem po co to dziedziczenie,

            for (int k = 0; k < lenght; k++)
            {
 
             RandomNumber losoweliczby = lista2[k];
             losoweliczby.lista.Average();
 
            }

A te linie kodu... zupełnie nic nie robią.

Plus:

Random rng = new Random();

Zrób jeden (statyczny) Random, bo tutaj jest ryzyko że będą Ci się liczby losowe powtarzały.

Podobne pytania

0 głosów
1 odpowiedź 194 wizyt
pytanie zadane 8 marca 2020 w Python przez viGor Użytkownik (740 p.)
+1 głos
1 odpowiedź 406 wizyt
pytanie zadane 4 września 2021 w Python przez Hajpa Użytkownik (880 p.)

92,556 zapytań

141,404 odpowiedzi

319,560 komentarzy

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

...