예제 #1
0
        static void Main(string[] args)
        {
            string[]  fajlbol         = File.ReadAllLines("kektura.csv");
            adatsor[] adatok          = new adatsor[100];
            int       vegpontmagassag = Convert.ToInt32(fajlbol[0]);

            Console.WriteLine(vegpontmagassag);
            int    tindex         = 0; //sorok száma a fájlban
            double szumhossz      = 0; //túra teljes hossza
            int    min            = 0; //legrövidebb szakasz indexe
            int    hianyosnevekdb = 0; //hiányos nevű végpontok száma
            int    max            = 0; //tengerszint feletti legnagyobb magasság

            for (int i = 1; i < fajlbol.Count(); i++)
            {
                string[] egysordarabolva = fajlbol[i].Split(';');
                adatok[tindex].kezdopont = egysordarabolva[0];
                adatok[tindex].vegpont   = egysordarabolva[1];
                adatok[tindex].turahossz = Convert.ToDouble(egysordarabolva[2]);
                adatok[tindex].emelkedes = Convert.ToInt32(egysordarabolva[3]);
                adatok[tindex].lejtes    = Convert.ToInt32(egysordarabolva[4]);
                if (egysordarabolva[5] == "i")
                {
                    adatok[tindex].pecset = true;
                }
                else
                {
                    adatok[tindex].pecset = false;
                }

                //4.feladat
                szumhossz += adatok[tindex].turahossz;
                Console.WriteLine(szumhossz);
                //5. feladat
                if (adatok[min].turahossz > adatok[tindex].turahossz)
                {
                    min = tindex;
                }
                //6. 7. feladat
                if (adatok[tindex].pecset && HianyosNev(adatok[tindex].vegpont))
                {
                    hianyosnevekdb++;
                }
                vegpontmagassag        += adatok[tindex].emelkedes - adatok[tindex].lejtes;
                adatok[tindex].magassag = vegpontmagassag;
                if (adatok[max].magassag < adatok[tindex].magassag)
                {
                    max = tindex;
                }
                tindex++;
            }
            //adatok kiíratása
            for (int i = 0; i < fajlbol.Count(); i++)
            {
                Console.Write(adatok[i].kezdopont);
                Console.Write(";");
                Console.Write(adatok[i].vegpont);
                Console.Write(";");
                Console.Write(adatok[i].turahossz);
                Console.Write(";");
                Console.Write(adatok[i].emelkedes);
                Console.Write(";");
                Console.Write(adatok[i].lejtes);
                Console.Write(";");
                Console.WriteLine(adatok[i].pecset);
                Console.Write(";");
                Console.WriteLine(adatok[i].magassag);
            }
            //3. feladat szakaszok száma
            Console.WriteLine("3. feladat: szakaszok száma: {0} db", tindex);
            //4. feladat a túra teljes hossza
            Console.WriteLine("4. feladat: A túra teljes hossza: {0} km", szumhossz);
            //5. feladat legrövidebb szakasz adatai
            Console.WriteLine("5. feladat: legrövidebb szakasz adatai:");
            Console.WriteLine("\tKezdete: {0} ", adatok[min].kezdopont);
            Console.WriteLine("\tVége: {0}", adatok[min].vegpont);
            Console.WriteLine("\tTávolság: {0} km", adatok[min].turahossz);
            //Console.WriteLine("\tmin: {0}", min);
            //7. feladat a túra teljes hossza
            Console.WriteLine("7. feladat: Hiányos állomásnevek: ");
            if (hianyosnevekdb == 0)
            {
                Console.WriteLine("Nincs hiányos állomásnév!");
            }
            else
            {
                foreach (var elem in adatok)
                {
                    if (elem.pecset && HianyosNev(elem.vegpont))
                    {
                        Console.WriteLine("\t{0}", elem.vegpont);
                    }
                }
            }
            //8. feladat a túra legmagasabban fekvő végpontja
            Console.WriteLine("8. feladat: A túra legmagasabban fekvő végpontja:");
            Console.WriteLine("\tA végpont neve: {0} ", adatok[max].vegpont);
            Console.WriteLine("\tA végpont tengerszint feletti magassága: {0}", adatok[max].magassag);
            //9. feladat kektura2.csv fájl elkészítése
            FileStream   fnev      = new FileStream("kektura2.csv", FileMode.Create);
            StreamWriter fajlbairo = new StreamWriter(fnev);

            fajlbairo.WriteLine(fajlbol[0]);
            for (int i = 0; i < tindex; i++)
            {
                fajlbairo.Write("{0};", adatok[i].kezdopont);
                if (adatok[i].pecset && HianyosNev(adatok[i].vegpont))
                {
                    fajlbairo.Write("{0} pecsetelohely;", adatok[i].vegpont);
                }
                else
                {
                    fajlbairo.Write("{0};", adatok[i].vegpont);
                }
                fajlbairo.Write("{0};", adatok[i].turahossz);
                fajlbairo.Write("{0};", adatok[i].emelkedes);
                fajlbairo.Write("{0};", adatok[i].lejtes);
                fajlbairo.WriteLine(adatok[i].pecset?"i":"n");
            }
            fajlbairo.Close();
            fnev.Close();
            Console.ReadKey();
        }
예제 #2
0
        static void Main(string[] args)
        {
            //vizsgáljuk Vas megyében az élve születések számát.
            //A forrásállományba (vas.txt) az itt született csecsemők személyi azonosítója (személyi száma) került
            //A személyi szám úgynevezett „beszélő szám”, azaz struktúrája van.
            //11 decimális számjegyből áll és M-ÉÉHHNN-SSSK alakú:
            //Az M számjegy alapvetően a nemre és a születési év első két jegyére utal:
            //Az ÉÉHHNN számjegyek a születési év utolsó két jegyét, a hónapot és a napot kódolják.
            //Az SSS az azonos napon születettek megkülönböztetésére való.
            //A K ellenőrzési célokat szolgál.A többi számjegyből kell képezni.
            //k11=(10*k1+9*k2+...+1*k10)mod 11

/*Minta:
 * 2.	feladat: Adatok beolvasása, tárolása
 * 4.	feladat: Ellenőrzés
 * Hibás	a	3-000115-5882	személyi	azonosító!
 * Hibás	a	3-000227-3942	személyi	azonosító!
 * Hibás	a	2-990101-1394	személyi	azonosító!
 * 5.	feladat: Vas	megyében a vizsgált évek alatt 9126 csecsemő született.
 * 6.	feladat: Fiúk száma: 4543
 * 7.	feladat: Vizsgált időszak: 1998 - 2001
 * 8.	feladat: Szökőnapon született baba!
 * 9.	feladat: Statisztika
 * 1998	- 2253 fő
 * 1999	- 2320 fő
 * 2000	- 2248 fő
 * 2001	- 2305 fő
 */

//Olvassa be a vas.txt állományban lévő adatokat
            string[]  fajlbol = File.ReadAllLines("vas.txt");
            adatsor[] adatok  = new adatsor[20000]; //A fájlban legfeljebb 20 000 sor lehet
            int       tindex  = 0;                  //helyes adatok számláló
            int       k11;
            int       ellenorzoosszeg = 0;
            int       ferfiakszama    = 0;
            int       minev           = 0;
            int       maxev           = 0;
            int       evszam          = 0;
            int       n;
            string    Id, id;

            int[] k = new int[20000];
            Console.WriteLine("2. feladat: Adatok beolvasása tárolása");
            Console.WriteLine("4. feladat: ellőrzés");
            for (int i = 0; i < fajlbol.Count(); i++)
            {
                string[] m = fajlbol[i].Split('-');
                k11             = int.Parse(m[2].Substring(3, 1));
                Id              = fajlbol[i];
                id              = Id.Remove(1, 1).Remove(7, 1);//eltávolítom a - jelet
                ellenorzoosszeg = 0;
                for (n = 0; n < 10; n++)
                {
                    ellenorzoosszeg += int.Parse(id.Substring(n, 1)) * (10 - n);
                }
                if (k11 == ellenorzoosszeg % 11)//ha helyes az adat akkor eltárolom az adatokat
                {
                    adatok[tindex].nem = int.Parse(id.Substring(0, 1));
                    adatok[tindex].ev  = int.Parse(id.Substring(1, 1)) * 10 + int.Parse(id.Substring(2, 1));
                    if (adatok[tindex].nem == 1 || adatok[tindex].nem == 3)
                    {
                        ferfiakszama++;                                      //megszámolom a férfiak számát
                    }
                    adatok[tindex].ho  = int.Parse(id.Substring(3, 1)) * 10 + int.Parse(id.Substring(4, 1));
                    adatok[tindex].nap = int.Parse(id.Substring(5, 1)) * 10 + int.Parse(id.Substring(6, 1));
                    // adatok[tindex].sorsz = int.Parse(id.Substring(7, 1)) * 100 + int.Parse(id.Substring(8, 1)) * 10+ int.Parse(id.Substring(9, 1));
                    // adatok[tindex].ell = k11;
                    tindex++;
                }
                else //helytelen adatok esetén a hibás adatokat kiíratom
                {
                    Console.Write("\n\tHibás a ");
                    for (n = 0; n < id.Length; n++)
                    {
                        if (n == 1 || n == 7)
                        {
                            Console.Write("-{0}", id[n]);
                        }
                        else
                        {
                            Console.Write("{0}", id[n]);
                        }
                    }
                }
            }

//5.	Határozza meg és írja ki a képernyőre a minta szerint,
//hogy Vas megyében hány csecsemő született a vizsgált időszakban!
            Console.WriteLine("\n5. feladat: Vas megyében a vizsgált évek alatt {0} csecsemő született", tindex);

//6.	Határozza meg és írja ki a képernyőre a minta szerint a fiú csecsemők számát!
            Console.WriteLine("6. feladat: Fiúk száma {0}", ferfiakszama);

//7.	Határozza meg és írja ki a minta szerint a .vizsgált időszak kezdő és befejező évét!
//Feltételezheti, hogy az időszak legalább 2 évig tartott.
            minev = 3000;
            maxev = 1000;
            for (int i = 1; i < tindex; i++)
            {
                if (adatok[i].nem == 1 || adatok[i].nem == 2)
                {
                    evszam = 1900 + adatok[i].ev;
                }
                else
                {
                    evszam = 2000 + adatok[i].ev;
                }
                if (evszam < minev)
                {
                    minev = evszam;
                }
                if (evszam > maxev)
                {
                    maxev = evszam;
                }
            }
            Console.WriteLine("7. feladat: Vizsgált időszak {0} - {1}", minev, maxev);

//8.	Döntse el, hogy a szökőnapon (február 24-én) született-e csecsemő!
//A keresést ne folytassa, ha a választ meg tudja adni!
//Ebben a feladatban szökőévnek tekintheti az évet, ha az maradék nélkül osztható 4- gyel.
            bool voltszokonapos = false;
            int  j = 0;

            while ((j < tindex) && !voltszokonapos)
            {
                if (adatok[j].ev % 4 == 0 && adatok[j].ho == 2 && adatok[j].nap == 24)
                {
                    voltszokonapos = true;
                }
                j++;
            }
            if (voltszokonapos)
            {
                Console.WriteLine("8. feladat: Szökőnapon született baba");
            }
            else
            {
                Console.WriteLine("8. feladat: Szökőnapon nem született baba");
            }

//9.	Készítsen statisztikát évek szerint a született gyermekek számáról!
//A megoldást úgy készítse el, hogy az inputállományba később más évek adatai is bekerülhessenek!
            int[] statisztika = new int[20000];

            for (int i = 0; i < 3000; i++)
            {
                statisztika[i] = 0;
            }
            for (int i = 0; i < tindex; i++)
            {
                if (adatok[i].nem == 1 || adatok[i].nem == 2)
                {
                    evszam = 1900 + adatok[i].ev;
                }
                else
                {
                    evszam = 2000 + adatok[i].ev;
                }
                statisztika[evszam]++;
            }
            Console.WriteLine("9. feladat: Statisztika");
            for (int i = minev; i <= maxev; i++)
            {
                Console.WriteLine("\t{0} - {1} fő", i, statisztika[i]);
            }
            Console.ReadKey();
        }