Jak powrócić do poprzedniej pętli?

0

Witam chodzi mi o to aby z pętli pierwszej zapisywało wyniki do text i gdy osiągnie ostatnią wartość w tym przypadku 128 zapisało ją i przeszło do kolejnej pętli gdzie wartość skok przyjmie znowu 0 i do skokk doda się wartość 1 i zapisze po czym wróci do pierwszej pętli aż do tego momentu gdy skokk osiągnie wartość 255

Do tej pory napisałem coś takiego

            if (lwynikm == 2)
            {
                skoksieci = 128;

                int skok = 0;
                int skokk = 0;
                for (int  p = 1; skok < 255; skok += skoksieci, p++)
                {
                    text += " podsieć" + p.ToString() + " " + ip.text + "." + ip2.text + "." + skokk.ToString() + "." + skok.ToString();
                    if (skok == 128)
                    {
                        for (; skokk < 255; skok = 0, skokk++)
                            text += " podsieć" + p.ToString() + " " + ip.text + "." + ip2.text + "." + skokk.ToString() + "." + skok.ToString();
                       
                    }
                        
                    
                }

                petla.text = text;
       
            }

lecz wynik jest taki jak w załączonym obrazku. Z góry dziękuję za pomoc.

2

Znowu nikt nie rozumie co chcesz osiągnąć, bo znowu nie napisałeś konkretnie czego od tego kodu oczekujesz. Podaj przykład prawidłowych danych wyjściowych, które ma stworzyć ta para pętli, a coś się wymyśli.

0

Dane wyjściowe mają wyglądać tak podsieć1 192.168(192.168 wynika z wcześniejszego kodu wiec to jest mało ważne).0.0 podsieć2 192.168.0.128 podsieć3 192.168.1.0 podsieć4 192.168.1.128 podsieć5 192.168.2.0 ----- podsieć512 192.168.255.128

0

Dodam jeszcze że próbowałem aby ten kod wyglądał tak :

                int skok = 0;
                int skokk = 0;
                for (int  p = 1; (skok < 255) && lub || (skokk <255); skok += skoksieci, p++, skokk++)
                     text += " podsieć" + p.ToString() + " " + ip.text + "." + ip2.text + "." + skokk.ToString() + "." + skok.ToString();

ale nie przynosiło to poprawnego skutku

2

Powinieneś indeksować trzy wartości liczbowe w dwóch niezależnych pętlach – jedna iteruje po ostatnim oktecie, druga po przedostatnim, a trzecia zlicza podsieci. Powtarzające się iteracje dotyczą ostatniego oktetu, więc odpowiednia jej pętla powinna być pierwszą, a druga powinna być zagnieżdżoną. Trzeci iterator należy inkrementować w zagnieżdżonej pętli, bo tam zliczane są adresy.

string text = "Adresy:";

for(int net = 0, index = 0; net <= 255; net++)
  for(int comp = 0; comp <= 255; comp += 128, index++)
    text += string.Format(" podsieć{0} 192.168.{1}.{2}", index, net, comp);

https://ideone.com/E5IjTM

Łącznie na wyjściu dostaniesz pięćset dwanaście adresów. Jeśli nie rozumiesz nagłówków tych pętli to możesz sobie co nieco z niej wydzielić, aby było czytelniej:

string text = "Adresy:";
int index = 0;

for(int net = 0; net <= 255; net++)
  for(int comp = 0; comp <= 255; comp += 128)
  {
    text += string.Format(" podsieć{0} 192.168.{1}.{2}", index, net, comp);
    index++;
  }

Działać będzie tak samo, choć kodu jak sam widzisz więcej. No i zaprzyjaźnij się z metodą string.Format, bo pozwala łatwiej formatować ciągi znaków i wypełniać je różnymi danymi.

0

Dzięki wielkie po moim dodaniu jeszcze bo 198.168 nie jest stałą tylko zmienną wpisywaną ale wsm nie wspominałem o tym miłej nocy sorka że ciebie tak męczę.

                skoksieci = 128;
                for (int skok = 0, p = 1; skok <= 255; skok++)
                    for (int skok2 = 0; skok2 <= 255; skok2 += skoksieci, p++)
                        text += string.Format(" podsieć{0} {3}.{4}.{1}.{2}", p, skok, skok2, ip.text, ip2.text);

nie wiedziałem w ogóle że w stringu da się dodać takie cos jak {0}