Visual studio hibajelentés nélkül leállítja a kód futattását (c# probléma)?
Egy adott sor mellett piros pont jelenik meg és lilán kiszínezi, illetve lent kiírja a véltozók értékét:
int max(int[] a)
{
int maxv = 0;
int maxp = 0;
int j = 0;
while (j < 10)
{
if (maxv<a[j])
{
maxv = a[j];
maxp = j; //ezt színezi be
}
j++;
}
return maxp; }
Nagyon új vagyok még az ide-ben és a nyelvben is, minden segítséget nagyra értékelek.
Gondolom mert az átadott tömb mérete kisebb, mint 10.
Nem szokás méret nélkül átadogatni tömböket.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp14
{
class Program
{
static Random r = new Random();
static void Main(string[] args)
{
int[] array = new int[10];
rng(array);
display(array);
Console.WriteLine(max(array));
void rng(int[] a)
{
for (int i = 0; i < 10; i++)
{
int number = r.Next(1, 11);
if (number >= 7)
a[i] = 0;
else a[i] = r.Next(1, 11);
}
}
void display(int[] a)
{
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine(a[i]);
}
}
int max(int[] a)
{
int maxv = 0;
int l = 0;
for (int j=0; j<10; j++)
{
if (maxv<a[j])
{
maxv = a[j];
l = j;
}
}
return l; }
Console.ReadLine();
}
}
}
Az, hogy lokális függvényeket használtál, (ami C# 7.0-s feature) az gondolom teljesen szándékos, másképp hogy is oldottad volna meg a problémát.
Nálam egyébként lefut hiba nélkül, csak rossz eredményt ad.
Ez amit másodszorra másoltál be lefut nálam.
Nem értek annyira a c#-hoz, de szerintem nem a Main függvénybe akartad tenni a többi függvényed.
Érdemes amúgy a tömbbel foglalkozó függvényeknek csinálni egy saját osztályt, ha már ilyen szép objektumorientált nyelvet használsz.
Ez a max függvényed nem tudom, mit akar csinálni, de ha a tömbben lévő maximális elem kell, akkor azt az array.Max() beépített függvény megadja neked.
Tehát egy új .cs fájlba egy RandomArray nevű osztály, ami tartalmazza a tömböt, amit a konstruktor hoz létre:
class RandomArray
{
private static Random random;
private int[] array;
public RandomArray()
{
array = new int[10];
random = new Random();
for (int i = 0; i < 10; i++)
{
int number = random.Next(1, 11);
if (number >= 7)
{
array[i] = 0;
}
else array[i] = random.Next(1, 11);
}
}
public void displayArray()
{
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(array[i]);
}
}
public int getMaxElementOfArray()
{
return array.Max();
}
}
A Main függvényt tartalmazó osztály pedig:
class Program
{
static void Main(string[] args)
{
RandomArray arrayHandler = new RandomArray();
arrayHandler.displayArray();
Console.WriteLine("a legnagyobb elem: " + arrayHandler.getMaxElementOfArray());
}
}
Tehát ez elkészít egy példányt egy olyan osztályból, ami tartalmaz egy randomizált tömböt, meghívja a displayArray() függvényét, ami kiírja a tömböt, aztán elkéri és kiírja a legnagyobb elemét a tömbnek.
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!