Parzystość i nieparzystość liczb - tablica

0

Temat parzystości i nieparzystości na forum był pewnie wałkowany wielokrotnie, ale mam z tym problem.

Polecenie, które dostałem brzmi: Napisz program generujący tablicę 20-elementową o wartościach losowych z
przedziału 1-50. Niech program wypisze na ekranie parzyste wartości wygenerowanej tablicy. Użyj pętli "while".

Mój program wygląda tak:

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

namespace Zad2
{
    class Program
    {
        public static void Main(string[] args)
        {
            int[] tab = new int[20];
            int i = 0;


            
            for (i = 0; i < tab.Length; i++)
            {
                Random los = new Random();
                tab[i] = los.Next(1, 50);
            }
         

            while (i < tab.Length)
            {
                if (tab[i] % 2 == 0)
                    Console.WriteLine("{0} ", tab[i]);
                i++;
            }

            Console.ReadKey();
        }
    }
}

Kompiluje się, ale wyświetla się tylko czarny ekran cmd. W konsoli Visual Studio czysto.
Dodatkowo mam zrobić podobny program tylko pobierający 10 liczb wprowadzonych przez użytkownika z przedziału 1-50 i wyświetlający te nieparzyste.

Ktoś podpowie co jest nie tak?

0

deklarujesz zmienna i poza petla, zamiast w petli for. W petli while i juz ma tyle samo co tablica.length (bo nigdzie tej wartosci nie resetujesz)

btw mozesz uzyc funkcji jezyka ktore wprowadzili w 6.0 zamiast

Console.WriteLine("{0} ", tab[i]);

mozesz napisac

Console.WriteLine($"{tab[i]} ");
3

Masz źle umiejscowioną instrukcję

Random los = new Random();
0
fasadin napisał(a):

deklarujesz i po za petla zamiast w petli, w petli while i juz ma tyle samo co tablica.length

Nie do końca rozumiem, co chciałeś przekazać w tym zdaniu. Może dlatego, że jest tak skonstruowane. ;)

1

deklarujesz i po za petla zamiast w petli, w petli while i juz ma tyle samo co tablica.length

 int i = 0;

for (i = 0; i < tab.Length; i++) // uzywasz tutaj wczesniej zadeklarowanego i ktory powiekszasz 

jak myslisz ile wynosi i w tej linijce?

while (i < tab.Length) 

powinienes napisac tak

for (int index = 0; i < tab.Length; index++)// nazywaj zmienne z sensem  

a najlepiej to zrobic tak

Random _rand = new Random();
var results = Enumerable.Range(0, _rand.Next(100))
                        .Select(r => _rand.Next(10))
                        .ToList();
1

Może coś takiego?*

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

public class Test {
	public static void Main() {
		Random random = new Random();
		
		var values = Enumerable
			.Range(1, 20)
			.Select(n => random.Next(1, 50))
			.ToArray();
			
		var output = string.Join(
			Environment.NewLine,
			values.Where(x => x % 2 == 0)
		);
		
		Console.WriteLine(output);
	}
}

http://ideone.com/dEeh6M
ofc złamie to warunek Użyj pętli "while", ale shbshb

0

OK, w takim jak zmienić moją wersję kodu, aby działała jak należy?

0

Między pętlami dopisz

i = 0;

przenieś instrukcję

Random los = new Random();

przed pętlę for.

0

Proszę o weryfikację:

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

namespace Zad2
{
    class Program
    {
        public static void Main(string[] args)
        {
            int[] tab = new int[20];
            
            Random los = new Random();
            for (int i = 0; i < tab.Length; i++)
            {
                tab[i] = los.Next(1, 50);
            }
         
            int = 0;

            while (int i < tab.Length; i++)
            {
                if (tab[i] % 2 == 0)
                Console.WriteLine("{0} ", tab[i]);
               
            }

            Console.ReadKey();
        }
    }
}
 
0

Przecież to się nie skompiluje, zamień

int = 0;

na

int i = 0;
2
            Random los = new Random();
            int i = 0;
            for (i = 0; i < tab.Length; i++)
            {
                tab[i] = los.Next(1, 50);
            }
 
            i = 0;
 
            while (i < tab.Length)
            {
                if (tab[i] % 2 == 0)
                Console.WriteLine("{0} ", tab[i]);
                i++;
            }

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