Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 22.10.2011
Сообщений: 54

Структуры. исправьте пожалуйста...

30.11.2011, 18:01. Показов 620. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Описать структуру с именем NOTE, содержащую следующие поля:
• фамилия, имя;
• номер телефона;
• день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из восьми элементов типа 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
using namespace std;
 
 
struct note
{
        char name[30];
        int telnumb;
        int date[3];
};
 
void vvod(note* pt,int n)
{
        for(int i=0;i<n;i++)
        {
                cout<<"vvedite familiyu\n";
                cin>>pt[i].name;
                cout<<"vvedite nom telophona\n";
                cin>>pt[i].telnumb;
                cout<<"vvedite datu rozhdeniya:\n";
                for (int j=0;j<3;j++)
                {
                        cin>>pt[i].date[j];
                }
 
        }
}
 
void sort(note* pt,int n)
{
   char m[30];
   char* tmp=m;
   for (int i=0;i<n;i++)
                if (strcmp(pt[i].name,pt[i+1].name)<0)
                {
                        strcpy(tmp,pt[i].name);
                        strcpy(pt[i].name,pt[i+1].name);
                        strcpy(pt[i+1].name,tmp);
                }
}
void vuvod(note* pt, int n)
{
        for (int i=0;i<n;i++)
        {
                cout<<pt[i].name<<"\n";
                cout<<pt[i].telnumb<<"\n";
                for (int j=0;j<3;j++)
                  cout<<pt[i].date[j]<<"\n";
        }
}
 
void otp(note* pt,int n, int month)
{
        for (int i=0;i<n;i++)
                if (pt[i].date[2]==month)
                {
                cout<<pt[i].name;
                cout<<pt[i].telnumb;
                for (int j=0;j<3;j++)
                 cout<<pt[i].date[j];
                }
                else cout<<"Takih ludey net";
};
 
int main()
{
        const int n=3;
        note* spisok=new note[n];
        vvod(spisok,n);
        sort (spisok,n);
        vuvod(spisok,n);
        otp (spisok,n,month);
        getch();
 
return 0;
}
ошибка в этом блоке, пишет что "error: 'month' was not declared in this scope"

C++
1
2
3
4
5
6
7
8
9
int main()
{
        const int n=3;
        note* spisok=new note[n];
        vvod(spisok,n);
        sort (spisok,n);
        vuvod(spisok,n);
        otp (spisok,n,month);
        getch();
честно скажу, я в структурах ничего не знаю....
помогиитее!)))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.11.2011, 18:01
Ответы с готовыми решениями:

ввод из файла структуры..исправьте...
#include &lt;iomanip&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;string&gt; #include &lt;istream&gt; using...

Исправьте 1 ошибку пожалуйста
Помогите пожалуйста исправить ошибку, код должен быть для C++ 6.0 Вот код программы #include &lt;iostream.h&gt; #include...

Исправьте пожалуйста код
Есть код , как сделать чтобы числа a,b,c вводились с клавиатуры... (Программа находит булеан чисел a,b,c) Код программы: ...

4
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
30.11.2011, 18:05
И ведь не врет. Действительно, в используемой области видимости переменная month нигде не объявлена/инициализирована.
0
1 / 1 / 1
Регистрация: 22.10.2011
Сообщений: 54
30.11.2011, 18:59  [ТС]
Цитата Сообщение от lemegeton Посмотреть сообщение
И ведь не врет. Действительно, в используемой области видимости переменная month нигде не объявлена/инициализирована.
тыкните пожалуйста в позицию куда нужно вставить этот "month")

Добавлено через 43 минуты
так. исправила самостоятельно.
но теперь не выводит те записи месяц которой совпадает с месяцем введенного с клавы..
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
76
77
78
79
80
81
82
83
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
 
using namespace std;
int k;
 
 
struct note
{
        char name[30];
        int telnumb;
        int date[3];
};
 
void vvod(note* pt,int n)
{
        for(int i=0;i<n;i++)
        {
                cout<<"vvedite familiyu\n";
                cin>>pt[i].name;
                cout<<"vvedite nom telophona\n";
                cin>>pt[i].telnumb;
                cout<<"vvedite datu rozhdeniya:\n";
                for (int j=0;j<3;j++)
                {
                        cin>>pt[i].date[j];
                }
 
        }
}
 
void sort(note* pt,int n)
{
   char m[30];
   char* tmp=m;
   for (int i=0;i<n;i++)
                if (strcmp(pt[i].name,pt[i+1].name)<0)
                {
                        strcpy(tmp,pt[i].name);
                        strcpy(pt[i].name,pt[i+1].name);
                        strcpy(pt[i+1].name,tmp);
                }
}
void vuvod(note* pt, int n)
{
        for (int i=0;i<n;i++)
        {
                cout<<pt[i].name<<"\n";
                cout<<pt[i].telnumb<<"\n";
                for (int j=0;j<3;j++)
                  cout<<pt[i].date[j]<<"\n";
        }
}
 
void otp(note* pt,int n)
{
        cout<<"vvedite mesyac\n";
        cin>>k;
        for (int i=0;i<n;i++)
                if (pt[i].date[2]==k)
                {
                cout<<pt[i].name;
                cout<<pt[i].telnumb;
                for (int j=0;j<3;j++)
                 cout<<pt[i].date[j];
                }
                else cout<<"Takih ludey net";
};
 
int main()
{
        const int n=3;
        note* spisok=new note[n];
        vvod(spisok,n);
        sort (spisok,n);
        vuvod(spisok,n);
        otp (spisok,n);
        getch();
 
return 0;
}
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
30.11.2011, 19:51
Просто огромное количество недочетов. Начиная с некорректной работы с памятью.
Попробуйте создавать функцию на каждый чих. Например:
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
76
77
78
79
80
#include <iostream>
#include <cstring>
 
struct Note {
  char *name;
  size_t phone;
  size_t birthday[3];
};
 
Note *newNote(const char *name, size_t phone, size_t birthYear,
  size_t birthMonth, size_t birthDay) {
  Note *note = new Note;
  note->name = strcpy(new char[strlen(name) + 1], name);
  note->phone = phone;
  note->birthday[0] = birthYear;
  note->birthday[1] = birthMonth;
  note->birthday[2] = birthDay;
  return note;
}
 
void deleteNote(Note *note) {
  delete [] note->name;
  delete note;
}
 
void printNote(Note *note) {
  std::cout << "Name: " << note->name << "; phone: " << note->phone <<
    "; birthday: " << note->birthday[2] << "/" << note->birthday[1] <<
    "/" << note->birthday[0] << "." << std::endl;
}
 
void insertSorted(Note *note, Note **notes, size_t size) {
  size_t index = 0;
  for (; index < size; ++index)
    if (strcmp(note->name, notes[index]->name) < 0)
      break;
  for (size_t i = size; i > index; --i)
    notes[i] = notes[i - 1];
  notes[index] = note;
}
 
void printNotes(Note **notes, size_t size) {
  for (size_t i = 0; i < size; ++i)
    printNote(notes[i]);
}
 
void printNotesWithMonth(Note **notes, size_t size, size_t month) {
  for (size_t i = 0; i < size; ++i)
    if (notes[i]->birthday[1] == month)
      printNote(notes[i]);
}
 
int main(int argc, char *argv[]) {
  size_t capacity = 8;
  Note **notes = new Note*[capacity];
  size_t size = 0;
  
  // вводить лень, поэтому захардкожено
  insertSorted(newNote("Ivan Ivanov", 3144515, 1975, 11, 1), notes, size++);
  insertSorted(newNote("Sergey Petrov", 3144517, 1978, 7, 21), notes, size++);
  insertSorted(newNote("Petr Ivanov", 3144516, 1976, 7, 5), notes, size++);
  insertSorted(newNote("Ilya Sidorov", 3144518, 1974, 3, 22), notes, size++);
  insertSorted(newNote("Alexey Sergeev", 3144519, 1978, 2, 13), notes, size++);
  insertSorted(newNote("Andrey Kuznetsov", 3144520, 1976, 4, 15), notes, size++);
  insertSorted(newNote("Sergey Alexeev", 3144521, 1973, 1, 9), notes, size++);
  insertSorted(newNote("Anatoliy Morgin", 3144522, 1971, 1, 7), notes, size++);
  
  printNotes(notes, size);
 
  size_t month = 1;
 
  std::cout << std::endl << "Notes with month = " << month << ":" << std::endl;
 
  printNotesWithMonth(notes, size, 1);
  
  for (size_t i = 0; i < size; ++i)
    deleteNote(notes[i]);
  delete [] notes;
  return 0;
}
И повнимательней с динамической памятью. Её освобождать нужно.
1
1 / 1 / 1
Регистрация: 22.10.2011
Сообщений: 54
30.11.2011, 20:00  [ТС]
спасибо)
попытаюсь вникнуть!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2011, 20:00
Помогаю со студенческими работами здесь

исправьте ошибку,пожалуйста
Вычислить среднее значение элементов, расположенных в массиве между первым и послед-ним нулевыми элементами. Поменять местами максимальный...

Пожалуйста, исправьте ошибки
Написал программу, но она не работает, пожалуйста, исправьте и объясните мои ошибки, буду премного благодарен. #include &lt;iostream&gt; ...

Исправьте ошибку, пожалуйста
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; double Yx(double x) { return pow(x, 2) * atan(x); } double...

Исправьте программу пожалуйста
Почему последнюю строку в итоге в консоли выводит два раза, в чём ошибка и как это исправить? ...

Исправьте ошибку, пожалуйста
#include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;windows.h&gt; #include &lt;stdio.h&gt; using namespace std; struct product { ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru