Author's photo
Törölt fiók
informatika

Hogyan lehetne megoldani ezt az informatika példát?

Feladat:
A véradók nyilvántartásában szerepel a név mellett az értesítési cím és a vércsoport.
Egy balesetet szenvedett X vércsoportú emberhez keressünk megfelelő donort! Az
eredmény a donor neve és címe legyen! (projektnév: E_VI_7)
Adott ez a program, de a vége nem fordul le. Tudna valaki segíteni a végében, hogy mit rontottam el? KiVercsoportok résznél jelez hibát a C# szintaxisban a Visual Studio.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace E_VI_7
{
class Program
{
struct Tverado
{
public string nev, cim, vercsoport;
}
static void Main(string[] args)
{
Tverado[] veradok = new Tverado[100];
int letszam;
Beolvasas("veradok.txt", out letszam, ref veradok);

KiVercsoportok("vercsoportok.txt");
Console.Write("Milyen vércsoportú véradót keres? ");
string vercsoportkereses = Console.ReadLine();


Console.Write("\nKilépéshez üssön Enter-t!");
Console.ReadLine();
}
static void Beolvasas(string fajlnev, out int N, ref Tverado[] X)
{
string[] sorok = File.ReadAllLines(fajlnev);
N = sorok.Length;
X = new Tverado[N];
string[] sor;
for (int i = 0; i < N; i++)
{
sor = sorok[i].Split(' ');
X[i].nev = sor[0];
X[i].cim = sor[1];
X[i].vercsoport = sor[2];
}
}
static void KiVercsoportok(string fajlnev)
{
Console.WriteLine("A vércsoportok:");
string[] sorok = File.ReadAllLines(fajlnev);
for (int i = 0; i < sorok.Length; i++)
{
if (X[i].vercsoport == vercsoportkereses)
{
Console.WriteLine($" {sorok[i].nev + sorok[i].cim}");
}
}

Console.WriteLine();
}

}
}

Veradok.txt fájl tartalma:
Nem Tamás;Alsófalva Ezmi u. 9;B Rh pozitív
Kun Béla;Bélapátfalva Bili u. 17;AB Rh pozitív
Fogarasi Árpád;Kocsord Objektum u. 1;B Rh pozitív
Vagyok Ibolya;Demjén Csatorna u. 1;A Rh negatív
Polgár Jenő;Polgárfalva Polgár u. 15;A Rh negatív
Somogyi Erika;Szada Lenin u. 15.;AB Rh pozitív
Szalacsi Sándor;Kocsord Nemtom u. 30;0 Rh negatív
William Clinton;Ózd Wájtháusz u. 1;AB Rh negatív
Sipos Károly;Tiszakécske Fürdő utca 15.;A Rh pozitív
Ináncsi József;Szigetszentmiklós Ady u.96.;0 Rh negatív
Kuti Kamilla;Szigetszentmiklós Vénusz u.1.;A Rh negatív
Sipos Gábor;Bög Pici köz 5.;AB Rh negatív
Varga Dóra;Szolnok Som köz 48.;A Rh pozitív
Varga Tamás;Szeged Teve köz 45.;0 Rh negatív
Szabó Éva;Mezőhegyes Béke u.16.;AB Rh pozitív
Szabó Attila;Tiszakécska Szabolcskai u.1;AB Rh pozitív
Sunyi Béla;Kecskemét Kossuth L. u.14.;0 Rh negatív
Németh Noémi;Pécs Szabó köz 20.;AB Rh negatív
Németh Sára;Eger Dobó utca 10.;0 Rh pozitív
Kiss Jenő;Budapest Kossuth utca 23.;AB Rh negatív
Nagy Antal;Kecskemét Ó utca 3.;AB Rh negatív
Végh József;Győr Körte utca. 23.;0 Rh pozitív
Szigeti Sándor;Pécs Könyv utca 34.;B Rh negatív
Horváth Kinga;Mosonmagyaróvár Kölcsey utca 182.;A Rh negatív
Torgyán Andrea;Szeged Posztógyár utca 12.;AB Rh pozitív
Kondor Katalin;Budapest Zrínyi utca 112.;AB Rh negatív
Kovács Helga;Szombathely Alma utca 11.;0 Rh pozitív
Pintér Sándor;Debrecen Petőfi utca 33.;0 Rh pozitív
Bodor Enikő;Budapest Erdőalja út 8.;AB Rh negatív
Céhes Eszter;Budapest Kossuth u. 78.;0 Rh negatív
Takács Lilla;Szeged Agár u. 1.;B Rh negatív
Bak Dániel;Vecsés Gyöngy u. 6.;AB Rh negatív
Szabó Péter;Cegléd Cegléd u. 78.;AB Rh negatív
Szokai Barbara;Dég Galambóc köz 96.;0 Rh pozitív
Czeczei András;Tököl Repülő út 9.;B Rh pozitív
Horváth Dezső;Budapest Cservenka u. 12.;AB Rh negatív
Karap Béla;Szigliget Kölcsey u. 37.;B Rh pozitív
Morvay Jenő;Pécs Fülemile köz 56.;B Rh pozitív
Vígh József;Budapest Zsil u. 32;AB Rh pozitív
Éliás Tóbiás;Zalaháza Péterfi u. 53;AB Rh pozitív
Bomberra Krisztina;Pécs Maja u. 153;A Rh negatív
Zsák Judit;Marosháza József u. 54;AB Rh pozitív
Méh Erika;Bugyi Csipke u. 13;A Rh negatív
Fritz Attila;Komárom Baross u. 765;AB Rh pozitív
Vaal Máté;Vác Teréz u. 367;AB Rh negatív
Kárai Kata;Pécs Vízvezeték u. 666;B Rh negatív
Prezma Aurora;Gyál Majom u. 3445;B Rh pozitív
Mária Terézia;Baja Gyorskocsi u. 323;A Rh negatív
Asztal Sándor;Budapest Sötét u. 23;AB Rh pozitív
Hűtő Béla;Dunafalva Bobby u. 665;0 Rh pozitív
Gép Béla;Ráckeve Az u. 17;0 Rh pozitív
Mayer Tamás;Miskolc Teknő u. 132;AB Rh pozitív
Inger Rozália;Sopron Trianon u. 22;0 Rh negatív
Csavar Pista;Szeged Killer u. 23;A Rh pozitív
Víz Gizella;Berlin Szék u. 13;B Rh negatív
Nem János;Visegrád Persze.u. 666;B Rh pozitív
Prézli János;Szigetszentmiklós Oázis u.34;0 Rh negatív
Gomb Sára;Debrecen Seholsincs u.4;A Rh negatív
Czeczei Zsolt;Budapest Fülemile utca 7.;B Rh negatív
Sarkadi Csaba;Budapest Fürdő utca 8.;AB Rh negatív
Gábor Gizella;Pécs Fő tér 6548.;A Rh pozitív
Gaz Julianna;Szombathely Hősők tere 45.;A Rh negatív
Fül Elek;Szeged Kenguru sétány 15.;0 Rh negatív
Dávid Ilona;Nemesvita Rákóczi Ferenc út 34.;0 Rh pozitív
Presser Gábor;Tapolca Petőfi Sándor út 45.;A Rh pozitív
Fehér Jakab;Eger Kölcsey Ferenc utca 4.;0 Rh negatív
Szokai Kinga;Debrecen Dobó Béla kör 556.;A Rh pozitív
Kodály Zoltán;Aggtelek Juhász István köz 45.;A Rh negatív
Fekete Andrea;Biharkeresztes Aradi út 2.;A Rh negatív
Seres András;Szekszárd Fő utca 145.;B Rh pozitív
Károly Zoltán;Agárd Őz út 21.;AB Rh pozitív
Barna Ágota;Veresegyháza Puli sétány 11.;A Rh negatív
Balogh Éva;Ópusztaszer Rigó utca 14.;B Rh pozitív
Szabó Dénes;Kisvárda Bab utca 7.;0 Rh negatív
Kónya Anett;Szalkszentmárton Mátra utca 19.;A Rh pozitív
Budai Antal;Győr Iskola tér 36.;0 Rh negatív
Kovács János;Budapest Rákóczi tér 3.;B Rh negatív
Lakatos Pál;Siófok Szajkó utca 6.;0 Rh pozitív
Vonal Deodát;Pécs Sík u. 19.;A Rh pozitív
Fritz Géza;Budapest Fény u. 23.;AB Rh pozitív
Szabó András;Tas Erdő u. 34.;B Rh negatív
Kiss Csilla;Bélatelep Örs u. 1.;B Rh pozitív
Gulág Tóbiás;Budapest Nap u. 23.;A Rh pozitív
Wesselényi Brúnó;Szarvas Állat u. 34.;0 Rh negatív
Pán Péter;Andorváros Zulu u. 70.;0 Rh negatív

Vercsoportok.txt fájl tartalma:
0 Rh pozitív
0 Rh negatív
A Rh pozitív
A Rh negatív
B Rh pozitív
B Rh negatív
AB Rh pozitív
AB Rh negatív

3 válaszok
avatar
Törölt fiók
Magánórák segítségével :)
Kedves Balázs!

A megoldásoddal több probléma is. A fájlt beolvasása a Tverado[] veradok tömbbe kellene kerüljön, akkor ennek a tömbnek a referenciáját kellene átadnod, és a beolvasás végén az X-ből átadni az értékeket.
A második metódus már teljesen rossz. Ha egy változót létrehozol, akor az a változó csak azon a blokkon { } belül él, a blokkon kivül már nem látszódik. A bekért vércsoportod is át kell adnod a metódusodnak. A sorrendsiség fontos, a vércsoportkeresést hivod, miközben nem tudjuk mit keresel, hisz csak a metódus lefutása után kéred be az adatot. . Azzal a tömbbel kellene dolgoznod, amit a mainben létrehoztál, nem lenne szabad még egyszer beolvasnod a fajlt.

Keress meg, és segitek.

Üdvözlettel: Bogdán Marianna
+3620 9696 512
Kedves Balázs!

Mariann alapjáraton jókat írt, de neki is volt 1-2 tévedése, mert ti két különböző .txt fájlt olvastatok be, az első Beolvasas metódussal ti a veradok.txt-ét olvastátok be, a KiVercsoportok metódussal pedig a vercsoportok.txt-ét, amit szimplán csak kiírattatok, vele nem kellett volna már csinálnod semmit.
A mainben szimplán csak végig kellett volna menni a veradok.txt tartalmán egy for ciklussal a vércsoport bekérése után, majd egy if elágazással meg kellett volna nézni, hogy kinek van a keresett vércsoporttal azonos vércsoportja, majd kiíratni a nevét és a lakcímét. Küldöm csatolva a teljes kódot: https://pastebin.com/CSX35X3L

Console.WriteLine("A potenciális véradók neve és címe: ");
for (int i = 0; i < veradok.Length; i++)
{
if (veradok[i].vercsoport == vercsoport)
{
Console.WriteLine(veradok[i].nev + " " + veradok[i].cim);
}
}