następnych czterech wyniki odejmowania od stu w dół
Jeżeli dobrze rozumiem treść zadania to pętla while w tym kontekście jest zbędą
zapisz ją sobie tak i zobacz po wynikach na ekranie co się dzieje.
[ on-line ]
for (int i=0; i<tab.Length; i++)
{
/*
if (i<=3) // 0 1 2 3
{
tab[i] = rand.Next(-29,30);
}
*/
if (i>=4 && i<=7) // 4 5 6 7
{
int sto = 101;
while (sto!=0)
{
sto -= 1;
tab[i] = sto;
Console.WriteLine("tab[" + i + "] = " + sto);
}
}
/*
if (i>=8) // 8 9 10 11
{
tab[i] = int.Parse(Console.ReadLine());
}
*/
}
gdy i przyjmuje wartość 4 to w pętli while pozycja w tablicy tab o indeksie 4 jest nadpisywana, aż do momentu osiągnięcia wartości zero przez zmienną sto (analogicznie się dzieje dla i = 5, 6, 7)
Druga sprawa w tym zapisie
for (int i=0; i<tab.Length; i++)
{
if (i<=3) // 0 1 2 3
{
tab[i] = rand.Next(-29,30);
}
if (i>=4 && i<=7) // 4 5 6 7
{
int sto = 101;
while (sto!=0)
{
sto -= 1;
tab[i] = sto;
Console.WriteLine("tab[" + i + "] = " + sto);
}
}
if (i>=8) // 8 9 10 11
{
tab[i] = int.Parse(Console.ReadLine());
}
}
przy każdej inkrementacji zmiennej i są sprawdzane wszystkie warunki, IMO w tym kontekście jeżeli jeden warunek jest spełniony reszta powinna być pominięta, czyli np.
for (int i=0; i<tab.Length; i++)
{
if (i<=3) // 0 1 2 3
{
tab[i] = rand.Next(-29,30);
}
else if (i>=4 && i<=7) // 4 5 6 7
{
int sto = 101;
while (sto!=0)
{
sto -= 1;
tab[i] = sto;
Console.WriteLine("tab[" + i + "] = " + sto);
}
}
else if (i>=8) // 8 9 10 11
{
tab[i] = int.Parse(Console.ReadLine());
}
}
propozycja zmian [ on-line ]
using System;
class HelloWorld {
static void Main() {
int n=12, sto=100;
int [] tab = new int[n];
Random rand = new Random();
for (int i=0; i<tab.Length; i++)
{
if (i<=3) // 0 1 2 3
{
tab[i] = rand.Next(-29,30);
}
else if (i>=4 && i<=7) // 4 5 6 7
{
tab[i] = sto--;
}
else if (i>=8) // 8 9 10 11
{
tab[i] = int.Parse(Console.ReadLine());
}
}
Console.WriteLine();
foreach (var x in tab)
{
Console.WriteLine(x);
}
}
}
P.S. int sto = 101 chyba sto_jeden
int sto = 100;
while (sto!=0)
{
tab[i] = sto;
sto -= 1;
}
albo po prostu użyć: Pre- & Post Increment in C#
int sto = 100;
while (sto!=0)
{
tab[i] = sto--;
}
How to use ternary operator in C#
for (int i=0; i<tab.Length; i++)
{
tab[i] = (i<=3) ? rand.Next(-29,30) : ((i>=8) ? int.Parse(Console.ReadLine()) : sto--);
}
// lub
for (int i=0; i<tab.Length; i++)
tab[i] = (i<=3) ? rand.Next(-29,30) : ((i>=8) ? int.Parse(Console.ReadLine()) : sto--);