Programowanie C#

0

Napisz program rysujący poziomy histogram z gwiazdek ilustrujący rozkład wartości w podanym przez użytkownika ciągu liczb z przedziału 1 – 5. Program powinien najpierw zapytać użytkownika o długość ciągu. Przykład dla ciągu dziesięciu liczb: 5, 1, 5, 4, 1, 5, 5, 4, 1, 2.

1 ***
2 *
3
4 **
5 ****
Pomoże ktoś ?

0

Z czym masz konkretnie problem? Pokaż co już zrobiłaś. A jeśli chcesz gotowca, to jest do tego odpowiedni dział https://4programmers.net/Forum/Og%C5%82oszenia_drobne

0

static void Main(string[] args)

{
System.Console.WriteLine("Podaj długość ciągu.");

int dlugoscCiagu;

dlugoscCiagu = int.Parse(System.Console.ReadLine());

int[] ciag = new int[dlugoscCiagu];

for (int i = 0; i < dlugoscCiagu; i++)
{
    System.Console.WriteLine("Podaj {0} liczbę ciągu w przedziale 1-5: ", i);
    ciag[i] = int.Parse(System.Console.ReadLine());
}

System.Console.WriteLine("\n\n\nZawartość ciągu to: ");
foreach (int x in ciag)
    System.Console.Write(x + ", ");

foreach (int wartosc in ciag)
{
    int i;
    if (i != 1)
    {
        if (i == 2)
        {
            System.Console.Write("\n");
            System.Console.WriteLine("*");
        }
        else if (i == 3)
        {
            System.Console.Write("\n");
            System.Console.WriteLine("*");
        }
        else if (i == 4)
        {
            System.Console.Write("\n");
            System.Console.WriteLine("*");
        }

        else if (i == 5)
        {
            System.Console.Write("\n");
            System.Console.WriteLine("*");
        }
    }
    else
    {
        System.Console.Write("{0} *", i);
    }
}

}
Zrobiłam już coś takiego, ale wyskakują mi błędy i w ogóle nie wiem co mam zrobić

0

Pętla foreach jest do poprawy - musisz najpierw policzyć ile razy dana liczba wystąpiła, dopiero potem wypisać odpowiednią liczbę gwiazdek. Dodatkowo w pętli używasz niezainicjalizowanej zmiennej

int i;

i nigdzie nie przypisujesz do niej wartości,

0
john_klamka napisał(a):

Pętla foreach jest do poprawy - musisz najpierw policzyć ile razy dana liczba wystąpiła, dopiero potem wypisać odpowiednią liczbę gwiazdek. Dodatkowo w pętli używasz niezainicjalizowanej zmiennej

int i;

i nigdzie nie przypisujesz do niej wartości,

Mógł byś to za mnie zrobić, bo ja totalnie tego nie ogarniam ?

0

Zawsze można pójść całkowicie na łatwiznę i wykorzystać Linq:

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

namespace App
{
    public class Program
    {
        static void Main(string[] args)
        {
            var numbers = new int[] { 5, 1, 5, 4, 1, 5, 5, 4, 1, 2 };
            var grouped = numbers
                .GroupBy(n => n)
                .Select(n => new { Number = n.Key, Count = n.Count() })
                .OrderBy(n => n.Number);

            foreach (var n in grouped)
            {
                Console.Write(n.Number);
                for (int i = 0; i < n.Count; i++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
        }
    }
}
0

Nie kumam o co tutaj chodzi , Masz wzór na ten ciąg ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1