Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/58: Рейтинг темы: голосов - 58, средняя оценка - 4.59
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93

Описать структуру NOTE

07.12.2009, 21:49. Показов 11289. Ответов 7

Студворк — интернет-сервис помощи студентам
Столкнулся с такой проблемой.
Дана задачка:
Описать структуру с именем NOTE, содержащую следующие поля:
-фамилия, имя;
-номер телефона;
-дата рождения(массив из трех чисел).
Написать программу, выполняющую следующие действия:
-ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE(записи должны быть размещены по алфавиту);
-вывод на экран информации о людях, чьи дни рождения приходятся на месяяц, значение которого введено с клавиатуры(если тких нет, вывести соответствующее сообщение).
Вот пример кода(не законченный):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System;
using System.Collections.Generic;
using System.Text;
 
namespace pr
{
    struct birthday
    {
        public byte day;
        public byte month;
        public int year;
    }
 
    struct NOTE
    {
        public string surname_name;
        public int phone_number;
        public birthday[] data;
    }
 
    class Program
    {
        //Ввод данных вручную
        static void Input(out NOTE people)
        {
            Console.Write("Введите ФАМИЛИЮ и ИМЯ: ");
            people.surname_name = Console.ReadLine();
            Console.Write("Введите ТЕЛЕФОН: ");
            people.phone_number = Convert.ToInt32(Console.ReadLine());
 
            Console.WriteLine("Введите ДАТУ РОЖДЕНИЯ: ");
            birthday[] d = new birthday[3];
            people.data = d;
            Console.Write("День: ");
            people.data[0].day = Convert.ToByte(Console.ReadLine());
            Console.Write("Месяц: ");
            people.data[1].month = Convert.ToByte(Console.ReadLine());
            Console.Write("Год: ");
            people.data[2].year = Convert.ToInt32(Console.ReadLine());
        }
        //вывод информации о людях
        static void Print(NOTE people)
        {
            Console.WriteLine("{0}\t{1}\t{2}.{3}.{4}", people.surname_name, people.phone_number, people.data[0].day, people.data[1].month, people.data[2].year);
            Console.WriteLine();
        }
 
        static void Main(string[] args)
        {
            NOTE[] zizi = new NOTE[3];
            for (int i = 0; i <= 1; i++)
            {
                Input(out zizi[i]);
            }
            foreach (NOTE a in zizi) Print(a);
            Console.ReadLine();
        }
    }
}
Я задал пока ввод 2 записей. Ввожу 2 записи, они выводятся на экран но с ошибкой. Ошибку пишет в этой строке:
C#
1
Console.WriteLine("{0}\t{1}\t{2}.{3}.{4}", people.surname_name, people.phone_number, people.data[0].day, people.data[1].month, people.data[2].year);
В чем может быть проблема?
Если не сложно, помогите еще разобраться с этим:
-ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE(записи должны быть размещены по алфавиту);
-вывод на экран информации о людях, чьи дни рождения приходятся на месяяц, значение которого введено с клавиатуры(если тких нет, вывести соответствующее сообщение).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2009, 21:49
Ответы с готовыми решениями:

Описать структуру с именем Note
Описать структуру с именем Note, содержащую следующие поля: Фамилия и имя; Номер телефона; Дата рождения Написать программу,...

Описать структуру с именем NOTE
Помогите плиз с задачкой или подкинте идею. Желательно в формах

Описать структуру с именем NOTE
- фамилия, имя; - номер телефона; дата рождения (массив из трёх чисел). Написать программу, выполняющие следующие действия: -ввод с...

7
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
08.12.2009, 01:40
Зачем юзать:
public birthday[] data;?
Ведь структура birthday итак имеет 3 поля: день, месяц, год.
Ели писать через структуру то:
C#
1
2
3
4
5
6
struct NOTE
    {
        public string surname_name;
        public int phone_number;
        public birthday data;
    }
И соответственно убрать индекс при вводе.
Если через масив трех чисел то:
C#
1
2
3
4
5
6
struct NOTE
    {
        public string surname_name;
        public int phone_number;
        public int[] birthday;
    }
Добавлено через 10 минут
Далее:
ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE(записи должны быть размещены по алфавиту);
Решение: После ввода отсортировать масив из методом пузырка. Готовіх кодов с методом есть куча посему писать не будем.

вывод на экран информации о людях, чьи дни рождения приходятся на месяяц, значение которого введено с клавиатуры(если тких нет, вывести соответствующее сообщение).

C#
1
2
3
4
5
6
7
8
9
10
string query = Console.ReadLine();
bool result=false;
                for (int i=0;i<8;i++)
                {if (zizi[i].month==Convert.ToInt32(query))
                       {
                          Console.WriteLine(zizi.ToString()) //метод ToString() следует переопределить
                           result=true;
                        }
                }
                  if (result==false) Console.WriteLine("There are no people for output");
1
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93
09.12.2009, 13:47  [ТС]
Вроде массив переделал. Ввод тоже работает. Но выводит информацию о дате рождения последнего введенного пользователя. Как можно это исправить?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections.Generic;
using System.Text;
 
namespace pr1
{
    struct NOTE
    {
        public string surname_name;
        public int phone_number;
        public int[] birthday;
 
        public NOTE(string surname_name, int phone_number, int[] birthday)
        {
            this.surname_name = surname_name;
            this.phone_number = phone_number;
            this.birthday = birthday;
        }
    }
    class Program
    {
 
        static void Main(string[] args)
        {
            NOTE[] note = new NOTE[3];
            
            int[] birthday = new int[3];
 
            for (int i=0; i<=2; ++i)
            {
                Console.Write("Введите ФАМИЛИЮ и ИМЯ: ");
                note[i].surname_name = Console.ReadLine();
                Console.Write("Введите ТЕЛЕФОН: ");
                note[i].phone_number = Convert.ToInt32(Console.ReadLine());
 
                Console.WriteLine("Введите ДАТУ РОЖДЕНИЯ(ДД/ММ/ГГГГ): ");
 
                for (int z = 0; z <= 2; z++)
                {
                    birthday[z] = Convert.ToInt32(Console.ReadLine());
                }
 
            }
 
            for (int j = 0; j <= 2; ++j)
            {
                Console.WriteLine("{0}\t{1}\t{2}.{3}.{4}", note[j].surname_name, note[j].phone_number, birthday[j], birthday[j], birthday[j]);
            }
 
            Console.ReadLine();
        }
    }
}
0
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93
09.12.2009, 21:31  [ТС]
Помогите исправить вывод данных по введенному месяцу:
Вот код программы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System;
using System.Collections.Generic;
using System.Text;
 
namespace pr1
{
    struct NOTE
    {
        public string surname;
        public string name;
        public string phone_number;
        public int[] birthday;
    }
    class Program
    {
 
        static void Main(string[] args)
        {
            NOTE[] note = new NOTE[4];
            //ввод данных
            for (int i=0; i<=2; i++)
            {
                Console.Write("Введите ФАМИЛИЮ: ");
                string surname = Console.ReadLine();
                Console.Write("Введите ИМЯ: ");
                string name = Console.ReadLine();
                Console.Write("Введите ТЕЛЕФОН: ");
                string phone_number = Console.ReadLine();
                Console.Write("Введите ДАТУ РОЖДЕНИЯ(дд.мм.гггг): ");
                string TempBirthday = Console.ReadLine();
                string[] TempMassive = TempBirthday.Split('.');
                int[] birthday = new int[] { int.Parse(TempMassive[0].ToString()), int.Parse(TempMassive[1].ToString()), int.Parse(TempMassive[2].ToString()) };
 
                note[i].surname = surname.Trim();
                note[i].name = name.Trim();
                note[i].phone_number = phone_number.Trim();
                note[i].birthday = new int[2];
                note[i].birthday = birthday;
            }
            
            //сортировка по фамилии
 
            //вывод введеных с клавиатуры данных
            Console.WriteLine();
            for (int j = 0; j <= 2; ++j)
            {
                Console.WriteLine("{0} {1}\t\t{2}\t\t{3}.{4}.{5}", note[j].surname, note[j].name, note[j].phone_number, note[j].birthday[0], note[j].birthday[1], note[j].birthday[2]);
            }
 
            //вывод данных по введенному месяцу
            Console.Write("Введите МЕСЯЦ, чтобы показать людей с днем рождения приходящим на этот месяц: ");
            string input_month = Console.ReadLine();
            for (int n = 0; n <= 2; ++n)
            {
                if (Convert.ToInt32(input_month) == note[n].birthday[1])
                {
 
                    for (int m = 0; m <= 2; ++m)
                    {
                        Console.WriteLine("{0} {1}\t\t{2}\t\t{3}.{4}.{5}", note[m].surname, note[m].name, note[m].phone_number, note[m].birthday[0], note[m].birthday[1], note[m].birthday[2]);
                    }
                }
                else Console.WriteLine("Людей, с днем рождения приходящим на введый Вами МЕСЯЦ не существует.");
            }
            //конец
            Console.ReadLine();
        }
    }
}
Этот кусок:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Console.Write("Введите МЕСЯЦ, чтобы показать людей с днем рождения приходящим на этот месяц: ");
            string input_month = Console.ReadLine();
            for (int n = 0; n <= 2; ++n)
            {
                if (Convert.ToInt32(input_month) == note[n].birthday[1])
                {
 
                    for (int m = 0; m <= 2; ++m)
                    {
                        Console.WriteLine("{0} {1}\t\t{2}\t\t{3}.{4}.{5}", note[m].surname, note[m].name, note[m].phone_number, note[m].birthday[0], note[m].birthday[1], note[m].birthday[2]);
                    }
                }
                else Console.WriteLine("Людей, с днем рождения приходящим на введый Вами МЕСЯЦ не существует.");
            }
Добавлено через 4 минуты
Исправил. Вот кусок:
C#
1
2
3
4
5
6
7
8
9
10
Console.Write("Введите МЕСЯЦ, чтобы показать людей с днем рождения приходящим на этот месяц: ");
            string input_month = Console.ReadLine();
            for (int n = 0; n <= 2; ++n)
            {
                if (Convert.ToInt32(input_month) == note[n].birthday[1])
                {
                        Console.WriteLine("{0} {1}\t\t{2}\t\t{3}.{4}.{5}", note[n].surname, note[n].name, note[n].phone_number, note[n].birthday[0], note[n].birthday[1], note[n].birthday[2]);
                }
                else Console.WriteLine("Людей, с днем рождения приходящим на введый Вами МЕСЯЦ не существует.");
            }
Добавлено через 5 минут
Кто-нибудт может помоч с сортировкой по фамилии?
0
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93
10.12.2009, 23:32  [ТС]
Вроде с сортировкой по фамилии и телефону разобрался. а как сделать так, что бы отсортированным фамилиям соответствовали дынные о днях рождения из массива?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System;
using System.Collections.Generic;
using System.Text;
 
namespace pr1
{
    struct NOTE
    {
        public string surname_name;
        public string phone_number;
        public int[] birthday;
    }
    class Program
    {
 
        static void Main(string[] args)
        {
            NOTE[] note = new NOTE[8];
            //ввод данных
            for (int i = 0; i <= 7; i++)
            {
                Console.Write("Введите ФАМИЛИЮ и ИМЯ: ");
                note[i].surname_name = Console.ReadLine();
                Console.Write("Введите ТЕЛЕФОН: ");
                note[i].phone_number = Console.ReadLine();
                Console.Write("Введите ДАТУ РОЖДЕНИЯ(дд.мм.гггг): ");
                string TempBirthday = Console.ReadLine();
                string[] TempMassive = TempBirthday.Split('.');
                int[] birthday = new int[] { int.Parse(TempMassive[0].ToString()), int.Parse(TempMassive[1].ToString()), int.Parse(TempMassive[2].ToString()) };
 
                //note[i].surname_name = surname_name.Trim();
                //note[i].phone_number = phone_number.Trim();
                note[i].birthday = new int[2];
                note[i].birthday = birthday;
            }
 
            //сортировка по фамилии
            string tmp;
            for (int i = 0; i < note.Length; i++)
            {
                for (int j = i + 1; j < note.Length; j++)
                {
                    if (note[i].surname_name.CompareTo(note[j].surname_name) > 0)
                    {
                        tmp = note[i].surname_name;
                        note[i].surname_name = note[j].surname_name;
                        note[j].surname_name = tmp;
 
                        tmp = note[i].phone_number;
                        note[i].phone_number = note[j].phone_number;
                        note[j].phone_number = tmp;
                    }
                }
            }
 
            //вывод введеных с клавиатуры данных
            Console.WriteLine();
            for (int j = 0; j <= 7; ++j)
            {
                Console.WriteLine("{0}\t\t{1}\t\t{2}.{3}.{4}", note[j].surname_name, note[j].phone_number, note[j].birthday[0], note[j].birthday[1], note[j].birthday[2]);
            }
 
            //вывод данных по введенному месяцу
            Console.Write("Введите МЕСЯЦ, чтобы показать людей с днем рождения приходящим на этот месяц: ");
            string input_month = Console.ReadLine();
            for (int n = 0; n <= 7; n++)
            {
                if (Convert.ToInt32(input_month) == note[n].birthday[1]) Console.WriteLine("{0}\t\t{1}\t\t{2}.{3}.{4}", note[n].surname_name, note[n].phone_number, note[n].birthday[0], note[n].birthday[1], note[n].birthday[2]);
                else Console.WriteLine("Людей, с днем рождения приходящим на введый Вами МЕСЯЦ не существует.");
            }
            //конец
            Console.ReadLine();
        }
    }
}
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
10.12.2009, 23:45
а почему при сортировке не перезаписывать все элементы структуры (и личные данные и телефон и массив birthday) - тогда все будет соответствовать. Размерности ж этих элементов в массиве у каждой структуры равные.
0
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93
10.12.2009, 23:51  [ТС]
Переменная tmp имеет тип string, а birthday массив. А как перевести строковое значение переменной в массив?
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
11.12.2009, 00:29
Цитата Сообщение от posthuman Посмотреть сообщение
Переменная tmp имеет тип string, а birthday массив. А как перевести строковое значение переменной в массив?
ну так создайте переменную
C#
1
2
3
4
NOTE tmp=new NOTE[1];
tmp.name_surname=note[i].name_surname; 
.......
и т.д.
- тем более будет компактнее и данные без розрыва передаватся будут.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.12.2009, 00:29
Помогаю со студенческими работами здесь

Описать класс Note музыкальных звуков
В европейской музыке весь диапазон музыкальных звуков делится на октавы, которые можно пронумеровать числами от −3 до 5. Октавы с...

Описать класс с именем "Note"
-Описать класс с именем Note (запись), содержащий следующие закрытые поля: фамилия; дата рождения; номер телефона. Предусмотреть...

Описать структуру
1. Описать структуру с именем TRAIN, содержащую следующие поля: NAZN – название пункта назначения; NUMR – номер поезда; TIME – время...

описать структуру
описать структуру, с ипоользованием implicit и explicit, а также переопределить метод ToString()

Описать структуру с именем AEROFLOT
Описать структуру с именем AEROFLOT, содержащую следующие поля: название пункта назначения, номер рейса, тип самолета. Написать программу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru