Witam. Mam do was prośbę. Muszę napisać program w języku C# który czyta z klawiatury 50 liczb typu int do tablicy. następnie usuwa z tablicy liczby podzielne przez 7 i 21, pozostałe elementy tego ciągu zsuwa w laewo, a puste wypełnia zerami.
Próbowałem coś robić ale to jest na pewno źle zrobione. dlatego proszę o pomoc.
na aktualnym etapie nie wiem w którym miejscu wstawić warunek podzielności liczb oraz jak zrobić aby liczby spełniające ten warunek zostały przesunięte w prawo a liczby nie spełniające go w lewo.
nie wiem jak to wygląda w C# ale algorytm jest prosty;)
Robisz pętle od 1 do 50 i z każda iterracją wczytujesz liczbe do tab_;_
Nastąpnie tak zapełnioną tablicę sprawdzasz funkcją Modulo która zwraca resztę z dzielenie i jeżeli reszta jest równa 0 to usuwasz dany element i podstawiasz zero.
Piszesz o przesuwaniu liczb, a z zadania wynika ze ze masz podstawic zero pod liczby które spełniają warunek;)
using System;
namespace dobreprogramy
{
class Program
{
int[] tab = new int[50];
public static void Main(string[] args)
{
Program p = new Program();
p.sortowanie();
}
public void sortowanie()
{
//odpuscimy sobie wczytywanie
for (int i = 0; i < 50; i++)
tab[i] = i;
for (int i = 0; i < 50; i++)
{
if (tab[i] % 7 == 0)
{
this.tab[i] = 0;
for (int j = i+1; j < 50; j++)
{
int swap = tab[j-1];
tab[j-1] = tab[j];
tab[j] = swap;
}
}
}
for (int i = 0; i < 50; i++)
Console.Write(tab[i] + " ");
Console.ReadKey(true);
}
}
}
cos w tym stylu?? program wszystkie zamiast wszystkich liczb podzielnych przez 7 pisze 0 i przesuwa je na koniec tablicy czyli w efekcie dostajemy np: