1

Тема: Вивід даних на консоль

Всім привіт. Є одна задача -вивести прізвища абонентів, номери телефонів яких починаються на задані цифри. Тобто я ввожу телефон. Потім при запиті треба ввести тільки початок телефону. І вивести список з цим початком телефону.Хто знає - допоможіть!!!!

using System;
using System.IO;

namespace Praktika
{
    class Program
    {
        public struct Abonentu
        {
            public string sename;
            public uint number;
            public string adress;
            public uint vudOplatu;
            public uint vartist;
        }

        static void Main(string[] args)
        {
            FileInfo fi = new FileInfo("text.txt");
            StreamWriter sw;

            FileInfo fi1 = new FileInfo("text1.txt");
            StreamWriter sw1;

            if (fi.Exists)
            {
                sw = fi.AppendText();
            }
            else
            {
                sw = fi.CreateText();
                sw.WriteLine("Abonentu".PadRight(30, '-'));
            }

            Console.WriteLine("Vvedit kilkist elementiv masuvy");
            int kilkist = Convert.ToInt32(Console.ReadLine());
            Console.Clear();

            Abonentu[] ab = new Abonentu[kilkist];

            for (int i = 0; i < kilkist; i++)
            {
                ab[i] = new Abonentu();

                Console.WriteLine("Vvedit prizvushche");
                ab[i].sename = Convert.ToString(Console.ReadLine());

                Console.WriteLine("Vvedit nomer");
                ab[i].number = Convert.ToUInt32(Console.ReadLine());

                Console.WriteLine("Vvedit adresu (index, misto, vyluca, bydunok)");
                ab[i].adress = Convert.ToString(Console.ReadLine());

                Console.WriteLine("Vvedit vud oplatu");
                Console.WriteLine("1 - shcohvulunna");
                Console.WriteLine("2 - abonementna");
                ab[i].vudOplatu = Convert.ToUInt32(Console.ReadLine());

                Console.WriteLine("Vvedit vartist oplatu");
                ab[i].vartist = Convert.ToUInt32(Console.ReadLine());
            }

            Console.Clear();

            Console.WriteLine("Abonentu".PadRight(30, '-'));
            foreach (Abonentu abonentu in ab)
            {
                Console.WriteLine("{0} {1} {2} {3} {4}", abonentu.sename, abonentu.number, abonentu.adress, abonentu.vudOplatu, abonentu.vartist);
                sw.WriteLine("{0} {1} {2} {3} {4}", abonentu.sename, abonentu.number, abonentu.adress, abonentu.vudOplatu, abonentu.vartist);
            }
            Console.ReadLine();
            sw.Close();
            Console.Clear();

            if (fi1.Exists)
            {
                sw1 = fi1.AppendText();
            }
            else
            {
                sw1 = fi1.CreateText();
                sw1.WriteLine("Abonentu".PadRight(30, '-'));
            }

            Console.WriteLine("Vvedit pochatok telefony");
            int num = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Abonentu z takum pochatkom nomera - {0}", num);

            foreach(Abonentu abonentu in ab)
            {
                if (abonentu.number == num)
                {
                    Console.WriteLine("{0} {1}", abonentu.number, abonentu.sename);
                    sw1.WriteLine("{0} {1}", abonentu.number, abonentu.sename);
                }
            }

            sw1.Close();
            Console.ReadLine();
            Console.Clear();

        }
    }
}

2

Re: Вивід даних на консоль

Просто з цікавості - назви змінних румунською? Я не можу придумати іншу мову, де можна було б вживати слова sename, number, adress, vudOplatu і vartist одночасно.
По суті: номер телефону - це рядок, а не число. Ключове питання - які дії можна робити із номером? Додавати не можна, а от змінювати префікс - можна. Тобто операції - як із рядками, а не як із числами. Тим більше, що можливі номери типу "+38001234567p55". Відповідно переробляй програму на string, далі легко.

Подякували: Replace, truesupport2

3 Востаннє редагувалося stas_kovel (27.06.2013 11:46:30)

Re: Вивід даних на консоль

ну зараз попробую. Але якщо можиш, то свою ідею напиши кодом саме як запит реалізувати. Дякую

4

Re: Вивід даних на консоль

Все зробив. Кому цікаво і буде похоже щось потрібне:

using System;
using System.IO;

namespace Praktika
{
    class Program
    {
        public struct Abonentu
        {
            public string sename;
            public string number;
            public string adress;
            public uint vudOplatu;
            public uint vartist;
        }

        static void Main(string[] args)
        {
            FileInfo fi = new FileInfo("text.txt");
            StreamWriter sw;

            FileInfo fi1 = new FileInfo("text1.txt");
            StreamWriter sw1;

            if (fi.Exists)
            {
                sw = fi.AppendText();
            }
            else
            {
                sw = fi.CreateText();
                sw.WriteLine("Abonentu".PadRight(30, '-'));
            }

            Console.WriteLine("Vvedit kilkist elementiv masuvy");
            int kilkist = Convert.ToInt32(Console.ReadLine());
            Console.Clear();

            Abonentu[] ab = new Abonentu[kilkist];

            for (int i = 0; i < kilkist; i++)
            {
                ab[i] = new Abonentu();

                Console.WriteLine("Vvedit prizvushche");
                ab[i].sename = Convert.ToString(Console.ReadLine());

                Console.WriteLine("Vvedit nomer");
                ab[i].number = Console.ReadLine();

                Console.WriteLine("Vvedit adresu (index, misto, vyluca, bydunok)");
                ab[i].adress = Convert.ToString(Console.ReadLine());

                Console.WriteLine("Vvedit vud oplatu");
                Console.WriteLine("1 - shcohvulunna");
                Console.WriteLine("2 - abonementna");
                ab[i].vudOplatu = Convert.ToUInt32(Console.ReadLine());

                Console.WriteLine("Vvedit vartist oplatu");
                ab[i].vartist = Convert.ToUInt32(Console.ReadLine());
            }

            Console.Clear();

            Console.WriteLine("Abonentu".PadRight(30, '-'));
            foreach (Abonentu abonentu in ab)
            {
                Console.WriteLine("{0} {1} {2} {3} {4}", abonentu.sename, abonentu.number, abonentu.adress, abonentu.vudOplatu, abonentu.vartist);
                sw.WriteLine("{0} {1} {2} {3} {4}", abonentu.sename, abonentu.number, abonentu.adress, abonentu.vudOplatu, abonentu.vartist);
            }
            Console.ReadLine();
            sw.Close();
            Console.Clear();

            if (fi1.Exists)
            {
                sw1 = fi1.AppendText();
            }
            else
            {
                sw1 = fi1.CreateText();
                sw1.WriteLine("Abonentu".PadRight(30, '-'));
            }

            Console.WriteLine("Vvedit pochatok telefony");
            string num = Console.ReadLine();

            Console.WriteLine("Abonentu z takum pochatkom nomera - {0}", num);

            foreach(Abonentu abonentu in ab)
            {
                if (abonentu.number.Contains(num))
                {
                    Console.WriteLine("{0} {1}", abonentu.number, abonentu.sename);
                    sw1.WriteLine("{0} {1}", abonentu.number, abonentu.sename);
                }
            }

            sw1.Close();
            Console.ReadLine();
            Console.Clear();

        }
    }
}
Подякували: Chemist-i, koala, Replace3

5

Re: Вивід даних на консоль

Потім при запиті треба ввести тільки початок телефону. І вивести список з цим початком телефону.

if (abonentu.number.Contains(num))

?!?!?!?!

Я не перевіряв але так здається ніби ви неправильно зробили своє завдання.

6

Re: Вивід даних на консоль

Я тестував. Суть метода трохі не така, але працює для такого запиту. Тобто метод шукає в рядку послідовність яку я ввів. І получається що початок співпадає з тими телефонами які є в базі. І ввиводить добре. Так як треба!!!

7

Re: Вивід даних на консоль

Ну так знаходить всі ті що має знаходити, але крім них може знаходити і інші. Якщо вас це не хвилює, тоді все добре.