Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Николайка
1 / 1 / 0
Регистрация: 29.05.2015
Сообщений: 44
#1

Описать структуру с именем DATE - C++

11.01.2017, 14:15. Просмотров 187. Ответов 5
Метки нет (Все метки)

Описать структуру с именем DATE, состоящую из: Фамилия, имя, номер телефона, дата рождения (массив из трех чисел). В программе использовать вспомогательные функции:
Не совсем получается, помогите разобрать в чём ошибка
1) вывода шапки таблицы (имена полей); - получилось
2) ввода исходных данных - массива структур;- получилось
3) вывода данных в виде таблицы с форматом вывода; - получилось
4) поиска и вывода экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры или сообщение о неуспешном поиске; - получилось, только при выводе дата рождения выводится адресом
5) подсчета количества абонентов, телефон которых начинается с цифры "5"; - не получилось
6) сортировки массива структур по фамилии в алфавитном порядке. - не знаю правильно сделал или нет, не выводится.

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
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
#include<conio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
using namespace std;
struct DATE
{
   char Familia[20];
   char Name[15];
   int Nomer;
   int data_r[3];
};
void vvod(DATE *M,int N)
{
     for (int i=0;i<N;i++)
      {
    
        cout<<"Familia: ";cin>>M[i].Familia;
        cout<<"Name: "; cin>>M[i].Name;
        cout<<"Nomer: ";cin>>M[i].Nomer;  
        cout<<"data_r: ";
            cin >> M[i].data_r[0];
            cin >> M[i].data_r[1];
            cin >> M[i].data_r[2];
 
    }}
void vivod(DATE *M,int N)
{   
    
   for (int i=0;i<N;i++)
    {cout<<endl;
     cout<<M[i].Familia<<" ";cout.width(10);
     cout<<M[i].Name<<" ";cout.width(10);
     cout<<M[i].Nomer<<" ";cout.width(10);
     cout<<M[i].data_r<<" ";cout.width(10);
    }}
 
void vivod1()
{ cout<<endl;
     cout<<"Familia";cout.width(10);
     cout<<"Name";cout.width(10);
     cout<<"Nomer";cout.width(10);
     cout<<"data_r";cout.width(10);
     cout<<endl;}
     
     void poisk(DATE *M,int N,int sp)
{ int k=0;
 
     
       for (int i=0;i<N;i++)
if (M[i].data_r[1]==sp) {cout<<endl;
   cout<<M[i].Familia<<" ";cout.width(10);
     cout<<M[i].Name<<" ";cout.width(10);
     cout<<M[i].Nomer<<" ";cout.width(10);
     cout<<M[i].data_r<<" ";cout.width(10); 
     k++;
     }
     if (k==0) cout<<"informacia ne naidena ";cout<<endl;}
    
    
   int chet(DATE *M,int N)
{   int k=0;
    for (int i=0;i<N;i++){
   if (M[1].Nomer)==5) {k=k+1;    
   return k;}
   void sort   (DATE *M,int N) 
{int i,j;DATE k;
    for(i=0;i<N;i++)
      for(j=0;j<N-1;j++)
        if(M[j].Familia>M[j+1].Familia) {k=M[j];
                        M[j]=M[j+1];
                        M[j+1]=k;
 }}
      
int main()
{int N,SP,k; cout<<"vvedite  N: ";cin>>N;char ui;
       
      DATE *M=new DATE[N];
        vvod(M,N); //Ввод данных в массив структур
      do{ cout<<"vvedite nomer operacii:\n 1-vivod info;\n 2-poisk;\n 3-schet;\n 4-sortirovat;";
         cin>>k;
      if(k==1){ vivod1();
                vivod(M,N); //Вывод массива структур на экра
                cout<<endl;}
       if(k==2) {cout<<"vvedite speed dla poiska";cin>>SP;
        poisk(M,N,SP); cout<<endl;}
    if(k==3) {cout<< chet(M,N); cout<<endl;}
      if(k==4){sort(M,N); vivod1();} 
       while (k<=6);
     delete []M;}
     while (!(kbhit()));
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2017, 14:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Описать структуру с именем DATE (C++):

Описать структуру с именем ZNAK - C++
Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • дата рождения (массив из трех чисел). ...

Описать структуру с именем NOTE - C++
Народ почти не знаю С++ но нужно написать вот прогу желательно на Буилдере 1. Описать структуру с именем NOTE, содержащую следующие...

Описать структуру с именем TRAIN - C++
Описать структуру с именем TRAIN,содержащую следующие поля: -название пункта назначения -номер поезда -время отправления Написать...

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

Описать структуру с именем Order - C++
Описать структуру с именем ORDER, содержащую следующие поля: • расчетный счет плательщика; • расчетный счет получателя; •...

Описать структуру с именем Student - C++
Условие программы: Описать структуру с именем Student, содержащую следующие поля: фамилия и инициалы, группа, успеваемость (массив из пяти...

5
redseven
56 / 15 / 11
Регистрация: 07.02.2015
Сообщений: 327
11.01.2017, 18:31 #2
Пока что так
По телефону(я ввёл 3 человека с номером 5,и нашёл 3 человеком с телефонным номером 5)

C++
1
2
3
4
5
6
7
8
9
int chet(DATE *M,int N)
{ 
    int k=0;
for (int i=0;i<N;i++)
{
    if (M[1].Nomer=5) k=k+1; 
}
    return k;
    }
0
Николайка
1 / 1 / 0
Регистрация: 29.05.2015
Сообщений: 44
11.01.2017, 21:07  [ТС] #3
Еще в цикле надо было- for (int i=1;i<N;i++).

Теперь вот в другом нужно ошибки наити

Добавлено через 43 минуты
Почему дата неправильно выводится, и не выводится сортировка

Добавлено через 19 минут
хотя с номером была случайность, не правильно количество выводит, всё равно цифру 3 выводит, есть там в номере, в начале 5 или нет

Добавлено через 10 минут
при количестве введенных 3х человек
0
ANGEL1
3 / 3 / 0
Регистрация: 04.10.2016
Сообщений: 25
Завершенные тесты: 1
11.01.2017, 22:18 #4
Дату так нужно виводить
C++
1
      cout<<M[i].data_r[0]<<"."<<M[i].data_r[1]<<"."<<M[i].data_r[2]<<" ";cout.width(10);
Добавлено через 7 минут
Сортировка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void sort(DATE *M, int N)
{
int i, j;
DATE k;
for (i = 0; i<N; i++)
    for (j = 0; j<N ; j++)
        if (strcmp(M[j].Familia,M[j + 1].Familia)>0) {
        swap(M[j],M[j+1]);
        }
        for (int i=0;i<N;i++)
    {cout<<endl;
     cout<<M[i].Familia<<" ";cout.width(10);
     cout<<M[i].Name<<" ";cout.width(10);
     cout<<M[i].Nomer<<" ";cout.width(10);
     cout<<M[i].data_r[0]<<"."<<M[i].data_r[1]<<"."<<M[i].data_r[2]<<" ";cout.width(10);
    }
        
        
        }
Добавлено через 38 минут
Подсчет количества абонентов, телефон которых начинается с цифры "5"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int chet(DATE *M, int N)
{
    int k = 0;
    int y;
    for (int i = 0; i<N; i++) {
        y = M[i].Nomer;
        while (y > 10)
            y =y/10;
        
        
        if ((y = y % 10)== 5)
            k++;
    }
    return k;
}
1
Николайка
1 / 1 / 0
Регистрация: 29.05.2015
Сообщений: 44
11.01.2017, 22:49  [ТС] #5
Что то не получается с сортировкой:
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <iostream>
#include<conio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
using namespace std;
struct DATE
{
   char Familia[20];
   char Name[15];
  int Nomer;
   int data_r[3];
};
void vvod(DATE *M,int N)
{
     for (int i=0;i<N;i++)
      {    
        cout<<"Familia: ";cin>>M[i].Familia;
        cout<<"Name: "; cin>>M[i].Name;
        cout<<"Nomer: ";cin>>M[i].Nomer;  
        cout<<"data_r: ";
            cin >> M[i].data_r[0];
            cin >> M[i].data_r[1];
            cin >> M[i].data_r[2];
    }}
void vivod(DATE *M,int N)
{       
   for (int i=0;i<N;i++)
    {cout<<endl;
     cout<<M[i].Familia<<" ";cout.width(10);
     cout<<M[i].Name<<" ";cout.width(10);
     cout<<M[i].Nomer<<" ";cout.width(10);
     cout<<M[i].data_r[0]<<"."<<M[i].data_r[1]<<"."<<M[i].data_r[2]<<" ";cout.width(10);
    }}
void vivod1()
{ cout<<endl;
     cout<<"Familia";cout.width(10);
     cout<<"Name";cout.width(10);
     cout<<"Nomer";cout.width(10); 
     cout<<"data_r";cout.width(10);
    cout<<endl;}    
     void poisk(DATE *M,int N,int sp)
{ int k=0;
 for (int i=0;i<N;i++)
if (M[i].data_r[1]==sp) {cout<<endl;
   cout<<M[i].Familia<<" ";cout.width(10);
     cout<<M[i].Name<<" ";cout.width(10);
     cout<<M[i].Nomer<<" ";cout.width(10);
     cout<<M[i].data_r[0]<<"."<<M[i].data_r[1]<<"."<<M[i].data_r[2]<<" ";cout.width(10);
     k++;
     }
     if (k==0) cout<<"informacia ne naidena ";cout<<endl;}   
 
int chet(DATE *M, int N)
{
    int k = 0;
    int y;
    for (int i = 0; i<N; i++) {
        y = M[i].Nomer;
        while (y > 10)
            y =y/10;
        
        
        if ((y = y % 10)== 5)
            k++;
    }
    return k;
}
       
  void sort(DATE *M, int N)
{
int i, j;
DATE k;
for (i = 0; i<N; i++)
    for (j = 0; j<N ; j++)
        if (strcmp(M[j].Familia,M[j + 1].Familia)>0) {
        swap(M[j],M[j+1]);
        }
 
 
        for (int i=0;i<N;i++)
    {cout<<endl;
     cout<<M[i].Familia<<" ";cout.width(10);
     cout<<M[i].Name<<" ";cout.width(10);
     cout<<M[i].Nomer<<" ";cout.width(10);
     cout<<M[i].data_r[0]<<"."<<M[i].data_r[1]<<"."<<M[i].data_r[2]<<" ";cout.width(10);cout<<endl;
 }}
      
int main()
{int N,SP,k; cout<<"vvedite  N: ";cin>>N;
       
      DATE *M=new DATE[N];
        vvod(M,N); //Ввод данных в массив структур
        
        cout<<"vvedite nomer operacii:\n 1-vivod info;\n 2-poisk;\n 3-schet;\n 4-sortirovat;";
         cin>>k;
        
  while(k!=5)   do{ 
      if(k==1){ vivod1();
                vivod(M,N); //Вывод массива структур на экра
                cout<<endl;}
       if(k==2) {cout<<"vvedite speed dla poiska";cin>>SP;
        poisk(M,N,SP); cout<<endl;}
   if(k==3) {cout<< chet(M,N); cout<<endl;}
      if(k==4)sort(M,N); 
         
      cout<<"vvedite nomer operacii:\n 1-vivod info;\n 2-poisk;\n 3-schet;\n 4-sortirovat;";
         cin>>k;
   
     delete []M;}
   while (!(kbhit()));
    return 0;
}
0
Миниатюры
Описать структуру с именем DATE  
gru74ik
Эксперт CЭксперт С++
4273 / 1861 / 198
Регистрация: 20.02.2013
Сообщений: 4,996
Записей в блоге: 22
12.01.2017, 13:52 #6
 Комментарий модератора 
Николайка, пожалуйста, прочитайте правила форума.
Особое внимание обратите на следующие пункты:

.
0
12.01.2017, 13:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2017, 13:52
Привет! Вот еще темы с ответами:

Описать структуру с именем STUDENT - C++
1. Описать структуру с именем STUDENT, содержащую следующие поля: фамилия и инициалы; номер группы; успеваемость (массив из пяти...

Описать структуру с именем Student - C++
Вот задание . Описать структуру с именем Student, содержащую следующие поля: name – имя, group – группа, marks – успеваемость (массив из 4...

Описать структуру с именем WORKER - C++
Помогите пожалуйста: 1: Описать структуру с именем WORKER, содержащую следующие поля: -NAME - фамилия и инициалы паботника; -POS...

Описать структуру с именем Order - C++
Всем Привет! #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;algorithm&gt; struct Order { long payer; long receiver; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.