Hogyan szorzom meg a páros tömb elemeit 2vel c#-ban?
Sziasztok!
a feladat hogy c#ban írjak 1 programot amiben 2 tömbben bekérek 10 számot és a páros tömb elemeit beszorzom 2-vel
Eddig jutottam hogy bekérem kiíratom de nem tudom hogy szorozzam
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] tomb = new int[10];
int[] paros = new int[10];
int[] paratlan = new int[10];
int i;
int szamlalo = 1;
for (i = 0; i < 10; i++)
{
Console.WriteLine("kérem az " + szamlalo + " számot");
tomb[i] = int.Parse(Console.ReadLine());
szamlalo++;
}
for (i = 0; i < 10; i++)
{
if (tomb[i] % 2 == 0)
{
paros[i] = tomb[i];
}
else
{
paratlan[i] = tomb[i];
}
}
for (i = 0; i < 10; i++)
{
Console.WriteLine("A páros tömb elemei: {0}", paros[i]);
for (i = 0; i < 10; i++)
{
Console.WriteLine("A páratlan tömb elemei: {0}", paratlan[i]);
}
Console.ReadKey();
}
}
}
foreach(int cursor in paros) cursor *=2;
Legalább is ahogy én értelmezem, erre gondolsz.
amúgy nem értem... ha ezt meg tudtad írni:
for (i = 0; i < 10; i++)
{
if (tomb[i] % 2 == 0)
{
paros[i] = tomb[i];
}
akkor ez hogyhogy nem sikerült?
for (i = 0; i < 10; i++)
{
paros[i] = paros[i]*2; // vagy paros[i] *= 2;
}
A kiírás rész nem jó, memóriaszemetet vagy 0-kat fogsz kiírni.
Ugyanis beolvasol 10 számot, utána kiírsz 2*10 számot (10 párosat, 10 páratlant).
Ezt úgy tudod orvosolni, hogy pl. két külön számlálóban (int) beolvasáskor megszámolod a páros, illetve a páratlan számokat. És kiíráskor csak a megfelelő számlálóig írod ki a két tömböt.
#1-es megoldása nem jó szerintem, ha a tömb elemeit kell megváltoztatni (2-vel szorozni). (Véleményem szerint, csak a lokális cursor változót szorozza meg 2-vel, nem a tömb elemét!)
helyette:
for (i = 0; i < paros_szamlalo; ++i) paros[i] *= 2;
#3, Te is túlindexelsz (a valós adatokon) :)
"megszámolod a páros, illetve a páratlan számokat"
Minek? :) tomb.Lenght
Az ilyeneknél is működik?
"int[] paros = new int[10]; "
Utána is néztem :)
Szóval elnézést kérek a korábbi hozzászólásaim és tudatlanságom maitt :)
'Minek? :) tomb.Lenght' dinamikus tömb esetén :)) De jelen esetben mindig 10-et kapsz vissza.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] tomb = new int[10];
int[] paros = new int[10];
int[] paratlan = new int[10];
int odd = 0, even = 0 ;
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Kérem az " + Convert.ToString(i+1)+ ". számot");
tomb[i] = int.Parse(Console.ReadLine());
if (tomb[i] % 2 == 0)
{
paros[odd] = tomb[i];
odd++;
}
else
{
paratlan[even] = tomb[i];
even++;
}
}
Console.WriteLine();
Console.WriteLine("A tömb elemei: ");
for (int i = 0; i < 10; i++) Console.Write(tomb[i] + " ");
Console.WriteLine();
Console.WriteLine("Párosak: ");
for (int i = 0; i < odd; i++) Console.Write(paros[i] + " ");
Console.WriteLine();
Console.WriteLine("Párosak kétszeres értéke: ");
for (int i = 0; i < odd; i++) Console.Write(paros[i] * 2 + " ");
Console.WriteLine();
Console.WriteLine("Páratlanok: ");
for (int i = 0; i < even; i++) Console.Write(paratlan[i] + " ");
Console.WriteLine();
Console.ReadKey();
}
}
}
Elszoktam már a fix méretektől... de igazatok van.
Azért engedj meg egy apró korrekciót:
jelen esetben az i++ helyett hatékonyabb a ++i (ez igaz a odd és even-re is)
persze ilyen esetben nincs mérhető különbség, de jobb ha rögzül, hogy ilyen helyzetekben felesleges az i++
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!