Objektumtömb elemeinek változtatása feltétel alapján
2021-12-01T12:29:48+01:00
2021-12-01T13:02:33+01:00
2022-08-12T05:55:30+02:00
Monodevelop
Sziasztok! Lenne egy olyan problémán, hogy van egy Szamok osztály, aminek három tagja van, mindhárom írható és olvasható más osztályok számára. Egy konstruktorral kell megadni a három számot. A program osztály main metódusában példányosítok egy Szamok példányt: szam1=10, szam2=20, szam3=30. Majd létrehozok egy Szamok típusú 10 elemű listát, és feltöltöm a példányosított Szamokkal. Majd a listán végigmegyek egy for ciklussal és ha az adott elem indexe páratlan akkor Szam1-et növelem 100-zal. Azonban nem az adott eleme változik meg a tömbnek, hanem az összes, ahányszor belép a feltételbe, az előző taghoz adja hozzá, majd egy egész listát azzal tölti fel. Légyszi segítsetek, hogy hogy lehet azt elérni, hogy ne az összes, hanem csak a feltételnek megfelelő tagjai módosuljanak, és ne adódjon össze az értékük. Linkelek kódot is:

A Számok osztály:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tulajdonságok { class Szamok { int szam1; int szam2; int szam3; public Szamok(int szam1, int szam2,int szam3) { this.szam1 = szam1; this.szam2 = szam2; this.szam3 = szam3; } public int Szam1 { get => szam1; set => szam1 = value; } public int Szam2 { get => szam2; set => szam2 = value; } public int Szam3 { get => szam3; set => szam3 = value; } } }
A Program osztály.

using System; namespace Tulajdonságok { class Program { static void Main(string[] args) { Szamok szamok = new Szamok(10, 20, 30); Szamok[] lista = new Szamok[10]; for (int i = 0; i < lista.Length; i++) { lista = szamok; } for (int i = 0; i < lista.Length; i++) { if (i % 2 == 1) { lista.Szam1 += 100; } } for (int i = 0; i < lista.Length; i++) { Console.WriteLine(lista.Szam1); } } } }
A kimenet ez esetben: 510, pedig azt szeretném elérni, hogy a páratlan indexű tagok esetén 100zal növekedjen SZam1 értéke, tehát a kimenetnek így kéne kinéznie:
10
110
10
110
10
110
10
110
10
110
Mutasd a teljes hozzászólást!
Egy-egy új 'Számok' objektumot kell létrehoznod minden tömbelemhez.

for (int i = 0; i < lista.Length; i++) { lista[i] = new Szamok(10, 20, 30); }
Mutasd a teljes hozzászólást!

abcd