C# segítség? (egy kis repülővel átrepültünk. ) Egyszerűen nem bírom elkezdeni. Alapokat tudom nagyjából. Azt tudom h a szigetek minden egyes tömb ha jól értelmezem. Valaki segítene elkezdeni vagy megírni?
Egy kis repülővel átrepülünk a tenger felett és bizonyos időközönként megmérjük a tengerszint feletti magasságot. A 0 tengert jelent, a pozitív érték szárazföldet. Az első és utolsó mérés biztosan szárazföld felett történik. Az 1000 mérés eredménye a sziget.txt állományban található. Oldja meg az alábbi feladatot az állomány tartalma alapján.
Készíts programot, amely meghatározza, hogy az út során a szigetek egyre kisebbek lettek-e!
A feladatok szövege használ olyan fogalmakat (csúcs, völgy, szárazföld, ...), amelyeket nem definiál pontosan. Ezekre neked kell (értelmes) definíciót találni, amit a forráskódban (megjegyzésben) fel kell tüntetni.
Először valami könnyebb problémán gondolkozz, mondjuk hogy meg tudnád-e találni: 1. hol van (kezdődik) az első sziget, 2. milyen hosszú, 3. meddig tart.
(van egy kezdeti szárazföldünk, amíg nincs 0, addig tart, utána az első 0 sorozat a tenger stb..)
Hát, hogy tétel-e ? Egymás utáni pozitív számok darabszámát kell vizsgálni.
Első körben hozz létre egy 1000 elemű int tömböt, töltsd fel az adatokkal. Kell még két int változó. Az egyik az előző sziget 'hosszát' tartalmazza a másik a következőét. Ha a második kisebb mint ez első akkor az első értéke lesz a másodiké, a másodikban pedig számolod a soron következő sziget hosszát. Ha a második értéke nagyobb mint az elsőé akkor könnyes búcsút intünk és kiírjuk, hogy a szigetek mérete az út során nem csökkent.
Akkor ez a beadandó félretesz és visszamész az első órai feladatra.
Megoldod egyedül, ha nem sikerül, akkor belenézel hogyan csináltátok meg.
Ha bele kellett nézni, akkor újra nekiállsz megoldani egyedül.
Ha sikerült belenézés nélkül megoldani, akkor mész a következő órai feladatra és követed az előző módszert.
Mire így eljutsz ehhez a beadandó feladathoz nem fog problémát okozni a megoldása és a gyakorit sem kell szemetelned ostoba házi feladatokkal.
Pl itt egy megoldás, nem kell hozzá tömb, igy gyakorlatilag bármekkora adatmenyniséggel megbirkózik:
private static bool EgyreKisebbekEASzigetek(string path)
{
int elozoMeret = int.MaxValue;
int meret = 0;
using (var reader = new StreamReader(path))
{
string line;
while ((line = reader.ReadLine()) != null)
{
int h = int.Parse(line);
if (h == 0)
{
if (meret > 0)
{
if (elozoMeret <= meret) // vagy csak kisebb, ha nem szigoruan csokkeno kell
{
return false;
}
elozoMeret = meret;
meret = 0;
}
}
else
{
meret++;
}
}
}
return meret < elozoMeret;
}
A sziget méretét úgy értelmeztem, hogy hány db pozitiv szám van egymás után. Sztem egy másik értelmezés lehetne a sziget mértére a maximális magassága.
Simkol köszönöm nagy segítség így eltudok indulni belőle talán :) Utolsó kommentelő.:hát most igy járok a programban:
static void Main(string[] args)
{
int[] t = Feltolt(new int[1000]);
int e;
int n;
Console.ReadKey();
}
static int[] Feltolt(int[] a)
{
FileStream fs = new FileStream("sziget.txt", FileMode.Open);
StreamReader sr = new StreamReader(fs);
for (int i = 0; i < a.Length;i++)
{
a[i] = Convert.ToInt32(sr.ReadLine());
}
sr.Close();
fs.Close();
return a;
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!