Wątek przeniesiony 2017-02-08 15:07 z C# i .NET przez bogdans.

wielokrotność liczby 3

0

Mam takie zadanie:
Napisać program, który wypełni tablicę jednowymiarową 100 elementową wielokrotnościami liczby 3.

Zrobiłam to tak:

class Program
  
  {
        static void Main(string[] args)
        {
            int[] tab = new int[100];
            int wielokrotnosc = 1;
            for (int i = 0; i < 100; i++)
            {
                wielokrotnosc = wielokrotnosc * 3;
                Console.WriteLine(wielokrotnosc);
            }
            Console.ReadKey();
        }
    }
}

na początku wyświetla prawidłowy wynik, natomiast później co jakiś czas z minusem dlaczego?

screenshot-20170208150723.png

0

A np. 6 albo 12 jest wielokrotnością 3? Masz z - bo pewnie wychodzisz poza zakres inta. Nie mieści Ci się taka wielka liczba.

0

Zamień mnożenie na dodawanie i zastanów się dlaczego jest lepiej :)

0

z mnożeniem zamiast wielokrotności wyszły potęgi 3, ale nadal jest coś nie tak:

screenshot-20170208151735.png

1

Po pierwsze, przekraczasz zakres typu int.
Po drugie, nie wypełniasz tablicy.
Zamień

wielokrotnosc = wielokrotnosc * 3;
Console.WriteLine(wielokrotnosc);

na

tab[i] = i*3;
Console.WriteLine(tab[i]);

A jeśli korzystasz z dodawania, to początkowa wartość zmiennej wielokrotnosc musi się dzielić przez 3.

1

Można jeszcze tak(java ale zasada działania identyczna):

 public class Mulitply {
    public static void main(String... args) {
        int[] tab = new int[100];
        for (int i = 0; i < tab.length; i++) {
            if (i % 3 == 0) {
                tab[i] = i;
                System.out.println(tab[i]);
            }
        }
    }
}
0

Jeśli to ma być wypełnione wielokrotnościami trójki i od niej się zaczynać, to chyba zrobiłbym to tak:

 class Program
 
  {
        static void Main(string[] args)
        {
            int[] tab = new int[100];
            int start = 3;
            int index = 0;
            while (index <100)  {
                tab[index] = start;
                Console.WriteLine(tab[index]);
                index++;
                start += 3;
            }
            Console.ReadKey();
        }
  }

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