Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Tomáš Holík :28.3.2023 19:23

Dobrý den, jsem začátečník a potřeboval bych pomoct s pracovním listem v C# zaměřený na problematiku pole

Vytvořte metody a použijte je v programu:

  1. naplnPole - naplní pole o 10 prvcích náhodnými čísly z intervalu <0, 100)
  2. vypisPole - vypíše pole na monitor
  3. pocetLichych - vrátí číslo, které představuje počet lichých prvků v poli. Pro vstup použijte pole vygenerované v metodě naplnPole
  4. upravenePole - hodnoty prvků v poli, které jsou na lichých pozicích (index 1, 3, atd.) vynuluje. Pro vstup použijte pole vygenerované v metodě naplnPole
  5. naplnRuznymi - naplní pole o 10 prvcích náhodnými navzájem různými čísly z intervalu <0, 20> (žádné číslo se nesmí opakovat)
  6. jeSestupne - zjistí, zda pole je setříděné sestupně. Vyzkoušejte na poli, které zadáte přímo v programu. Výstup metody bude bool

Byl bych moc vděčný za jakoukoliv pomoc, protože si vůbec nevím rady. Děkuji

Zkusil jsem:
using System;
using System.Collec­tions.Generic;
using System.Linq;
using System.Text;
using System.Threadin­g.Tasks;

namespace TP06
{
internal class Program
{
static void naplnPole(string[] pole)
{
int[] poleNah = new int[10];
Random rand = new Random();
for (int i = 0; i < poleNah.Length; i++)
{
poleNah[i] = rand.Next(0, 99);
}
vypisPole(poleNah);

}

static void vypisPole(int[] pole)
{

foreach (var i in pole)
{
Console.Write($"{i} ");
}
Console.Write­Line();

}

static int pocetLichych(int[] poleCisel)
{

int pocl = 0;
for (int i = 0; i < poleCisel.Length; i++)
{
if (poleCisel[i] % 2 == 0)
{

}
else
{
pocl++;
}

}
return pocl;

static void upravenePole(strin­g[] pole)
{

}
static void naplnRuznymi(strin­g[] pole)
{
int[] poleRuz = new int[10];
Random rand = new Random();
for (int i = 0; i < poleRuz.Length; i++)
{
poleRuz[i] = rand.Next(0, 20);
}
vypisPole(poleRuz);
}
static void jeSestupne(string[] pole)
{

}
Console.ReadKey();
}
}
}

Chci docílit: nemůžu přijít na další části

 
Odpovědět
28.3.2023 19:23
Avatar
Šimon Raus
Člen
Avatar
Šimon Raus:17. dubna 22:42

Dobrý den, zde posílám vypracovanou verzi. Nechť se dačí v prozkoumávání dalších zákoutí programování.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TP06
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int[] pole = new int[10];

            // a) Naplnění pole náhodnými čísly
            naplnPole(pole);

            // b) Výpis pole
            Console.WriteLine("Pole:");
            vypisPole(pole);

            // c) Počet lichých prvků v poli -> int
            Console.WriteLine($"Počet lichých prvků: {pocetLichych(pole)}");

            // d) Upravené pole (vynulování lichých prvků) -> int[]
            upravenePole(pole);
            Console.WriteLine("Upravené pole (liché prvky jsou vynulovány):");
            vypisPole(pole);

            // e) Naplnění pole náhodnými různými čísly -> int[]
            naplnRuznymi(pole);
            Console.WriteLine("Pole s náhodnými různými čísly:");
            vypisPole(pole);

            // f) Kontrola, zda je pole setříděné sestupně
            Console.WriteLine($"Je pole setříděné sestupně? {jeSestupne(pole)}");

            Console.ReadKey();
        }

        static void naplnPole(int[] pole)
        {
            Random rand = new Random();
            for (int i = 0; i < pole.Length; i++)
            {
                pole[i] = rand.Next(0, 100);
            }
        }

        static void vypisPole(int[] pole)
        {
            foreach (var i in pole)
            {
                Console.Write($"{i} ");
            }
            Console.WriteLine();
        }

        static int pocetLichych(int[] pole)
        {
            int pocl = 0;
            foreach (int cislo in pole)
            {
                if (cislo % 2 != 0)
                {
                    pocl++;
                }
            }
            return pocl;
        }

        static void upravenePole(int[] pole)
        {
            for (int i = 0; i < pole.Length; i++)
            {
                if (i % 2 != 0)
                {
                    pole[i] = 0;
                }
            }
        }

        static void naplnRuznymi(int[] pole)
        {
            Random rand = new Random();
            for (int i = 0; i < pole.Length; i++)
            {
                pole[i] = rand.Next(0, 20);
            }
        }

        static bool jeSestupne(int[] pole)
        {
            for (int i = 1; i < pole.Length; i++)
            {
                if (pole[i] > pole[i - 1])
                {
                    return false;
                }
            }
            return true;
        }
    }
}
 
Nahoru Odpovědět
17. dubna 22:42
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Šimon Raus
DarkCoder:18. dubna 14:54

Bod e) naplnRuznymi, postrádá podmínku unikátního čísla.. tak mu to tam ještě doplň.

Nahoru Odpovědět
18. dubna 14:54
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Šimon Raus
Člen
Avatar
Šimon Raus:20. dubna 11:55

Zapomněl jsem na něj, zde je správný blok kódu

static void naplnRuznymi(int[] pole)
{
    int n = 21;
    Random rand = new Random();
    bool[] pouzitaCisla = new bool[n];

    for (int i = 0; i < pole.Length; i++)
    {
        int nahodneCislo;
        do
        {
            nahodneCislo = rand.Next(0, n);
        } while (pouzitaCisla[nahodneCislo]);

        pole[i] = nahodneCislo;
        pouzitaCisla[nahodneCislo] = true;
    }
}
 
Nahoru Odpovědět
20. dubna 11:55
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Šimon Raus
DarkCoder:20. dubna 12:22

Proč rozsah randomu nepřevezmeš jako parametr funkce? Tím zajistiš, že funkce bude obecná a znovupoužitelná.

Nahoru Odpovědět
20. dubna 12:22
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.