Tablice oraz sumowanie wartości w nich

0

Witam!

Mam tablicę 10 elementowa, i z niej ma być stworzona tablica 5 elementowa.
Czyli suma elementów 0 i 1 będzie w wynikowej tablicy w pozycji 0. Natomiast suma elementu 2 i 3 bedzie w pozycji 1 itd...

int[] tablica1 = new int[10];
int[] tablica2 = new int[5];
for (int i = 0; i < 10; i++)
{
Console.Write("podaj {0} element tablicy: ", i);
tablica1[i] = int.Parse(Console.ReadLine());
}
int ik = 0;
int jk = 1;
for (int k = 0; k < 5; k++)
{
tablica2[k] = tablica1[ik] + tablica1[jk];
ik++; 
jk++;
}
for (int k = 0; k < 5; k++)
{
Console.Write("{0,3}", tablica2[k]);
}
Console.ReadKey();

Niestety zamiast dodawać pozycję 0 + 1 , a potem 2 + 3, dodaje mi pozycje 1+2.

Co trzeba zmienić?

0

W pętli, w której sumujesz liczby z pierwszej tablicy i wpisujesz do drugiej ustaw inkrementacje licznika nie o jeden, a o dwa lub pozostaw tak jak jest (licznik od 0 do 4), ale mnóż go przez dwa i dodaj 1 by uzyskać poprawne indeksy dla pierwszej 10-elementowej tablicy; Albo zwiększaj zmienną pomocniczą o 2, nie o 1;

Nie napiszę Ci tego w C# bo go nie znam, ale w pascalu wyglądałoby to tak:

var
  arrBig: array [0 .. 9] of Integer;
  arrSmall: array [0 .. 4] of Integer;
  I: Integer;
begin
  for I := 0 to 9 do
  begin
    Write('Podaj liczne nr ', I, ': ');
    ReadLn(arrBig[I]);
  end;

  // I = 0 | I * 2 = 0 | I * 2 + 1 = 1 | indeksy (0, 1)
  // I = 1 | I * 2 = 2 | I * 2 + 1 = 3 | indeksy (2, 3)
  // I = 2 | I * 2 = 4 | I * 2 + 1 = 5 | indeksy (4, 5)
  // I = 3 | I * 2 = 6 | I * 2 + 1 = 7 | indeksy (6, 7)
  // I = 4 | I * 2 = 8 | I * 2 + 1 = 9 | indeksy (8, 9)
  for I := 0 to 4 do
    arrSmall[I] := arrBig[I * 2] + arrBig[I * 2 + 1];

  for I := 0 to 4 do
    WriteLn('arrSmall[', I, ']: ', arrSmall[I]);

  ReadLn;
end.

Wynik działania kodu:

Podaj liczne nr 0: 0
Podaj liczne nr 1: 1
Podaj liczne nr 2: 2
Podaj liczne nr 3: 3
Podaj liczne nr 4: 4
Podaj liczne nr 5: 5
Podaj liczne nr 6: 6
Podaj liczne nr 7: 7
Podaj liczne nr 8: 8
Podaj liczne nr 9: 9
arrSmall[0]: 1
arrSmall[1]: 5
arrSmall[2]: 9
arrSmall[3]: 13
arrSmall[4]: 17

Jak widać nie potrzeba do tego zmiennych pomocniczych - wystarczy pomnożyć licznik pętli razy 2 (tej drugiej - od 0 do 4) dla pierwszego elementu większej tablicy, oraz pomnożyć przez 2 licznik pętli i dodać 1 by uzyskać liczbę z kolejnej komórki z dużej tablicy;

To samo zrób u siebie, tyle że w C#.

0
using System;
 
namespace Foo 
{
    class Bar
    {
        public static void Main()
        {
            int[] tablica1 = new int[10];
            int[] tablica2 = new int[5];
            for (int i = 0; i < 10; i++)
                tablica1[i] = int.Parse(Console.ReadLine());
 
            for (int k = 0; k < 5; k++)
            {
                tablica2[k] = tablica1[k*2] + tablica1[k*2+1];
                Console.Write("{0,3}", tablica2[k]);
            }
        }
    }
}

http://ideone.com/3CDOAO

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