Форум программистов, компьютерный форум CyberForum.ru

провести упорядочивание данных - C++

Восстановить пароль Регистрация
 
Kiker
1 / 1 / 0
Регистрация: 12.11.2011
Сообщений: 18
27.11.2011, 07:10     провести упорядочивание данных #1
По данным таблицы, содержащей информацию о работниках предприятия, провести упорядочивание данных по возрастанию или убыванию значения реквизита, указанного в варианте. Вывести на печать исходную таблицу и упорядоченную таблицу.

Упорядочить сведения о женщинах в порядке убывания их возраста.

Исодные данные

№ Фамилия И. О. Пол Год рождения || Год поступления на работу
1. Анисимов Ю. П. М 1940 || 1957
2. Иванов И. Н. М 1950 || 1975
3. Махова О. И. Ж 1960 || 1980
4. Огарев К. М. М 1945 || 1961
5. Егорова П. К. Ж 1955 || 1977
6. Голикова О. И. Ж 1962 || 1980
7. Сотников Т. С. М 1943 || 1960
8. Комов В. И. М 1947 || 1964
9. Лебедев А. А. М 1959 || 1981
10. Димова В. В. Ж 1965 || 1985





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
#include "stdafx.h"
#include <math.h>
#include <string.h>
#include <iostream>
#include <stdio.h>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale (0,"Rus");
struct rabotniki
 
{int number;
    char fio[20];
    char pol[1];
    int godrozhd;
    int godpost;
    
};
struct rabotniki rab[10];
int n;
cout<<"Введите количество работников : ";
cin>>n;
for (int i=0;i<=n;i++)
{ cout<<"Введите ФИО " <<i+1<< " рабочего : ";
cin>>rab[i].fio;
 
    
{cout<<"Введите пол: ";
        cin>>rab[i].pol;
        
        {cout<<"Год рождения : ";
           cin>>rab[i].godrozhd;
    
           {cout<<"Год поступления на работу : ";
        cin>>rab[i].godpost;
    
        {double max=1900;
    for (int i=0;i<=n;i++)
    if (rab[i].godrozhd>max)
        max=rab[i].godrozhd;
    
        }
           }
        }
}
}return 0;
}
Добавлено через 44 секунды
посмотрите пожалуйста, правильно или нет???
и подскажите что дальше?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
27.11.2011, 07:31     провести упорядочивание данных #2
Цитата Сообщение от Kiker Посмотреть сообщение
По данным таблицы, содержащей информацию о работниках предприятия, провести упорядочивание данных по возрастанию или убыванию значения реквизита, указанного в варианте. Вывести на печать исходную таблицу и упорядоченную таблицу.

Упорядочить сведения о женщинах в порядке убывания их возраста.

Исодные данные

№ Фамилия И. О. Пол Год рождения || Год поступления на работу
1. Анисимов Ю. П. М 1940 || 1957
2. Иванов И. Н. М 1950 || 1975
3. Махова О. И. Ж 1960 || 1980
4. Огарев К. М. М 1945 || 1961
5. Егорова П. К. Ж 1955 || 1977
6. Голикова О. И. Ж 1962 || 1980
7. Сотников Т. С. М 1943 || 1960
8. Комов В. И. М 1947 || 1964
9. Лебедев А. А. М 1959 || 1981
10. Димова В. В. Ж 1965 || 1985





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
#include "stdafx.h"
#include <math.h>
#include <string.h>
#include <iostream>
#include <stdio.h>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale (0,"Rus");
struct rabotniki
 
{int number;
    char fio[20];
    char pol[1];
    int godrozhd;
    int godpost;
    
};
struct rabotniki rab[10];
int n;
cout<<"Введите количество работников : ";
cin>>n;
for (int i=0;i<=n;i++)
{ cout<<"Введите ФИО " <<i+1<< " рабочего : ";
cin>>rab[i].fio;
 
    
{cout<<"Введите пол: ";
        cin>>rab[i].pol;
        
        {cout<<"Год рождения : ";
           cin>>rab[i].godrozhd;
    
           {cout<<"Год поступления на работу : ";
        cin>>rab[i].godpost;
    
        {double max=1900;
    for (int i=0;i<=n;i++)
    if (rab[i].godrozhd>max)
        max=rab[i].godrozhd;
    
        }
           }
        }
}
}return 0;
}
Добавлено через 44 секунды
посмотрите пожалуйста, правильно или нет???
и подскажите что дальше?
Давайте разбираться, насколько у вас правильно.

Первое. стандартные заголовочные файлы, перешедщие из С в С++, должны указываться без расширения ".h" и иметь префикс "c'". То есть вместо

C++
1
2
3
4
5
#include "stdafx.h"
#include <math.h>
#include <string.h>
#include <iostream>
#include <stdio.h>
Должно быть

C++
1
2
3
4
5
#include "stdafx.h"
#include <cmath>
#include <cstring>
#include <iostream>
#include <cstdio>
Дальше, объявление структуры и определение массива этих структур следует объединить. То естьвместо вашего кода

C++
1
2
3
4
5
6
7
8
9
10
struct rabotniki
 
{int number;
    char fio[20];
    char pol[1];
    int godrozhd;
    int godpost;
    
};
struct rabotniki rab[10];
следует написать

C++
1
2
3
4
5
6
7
8
struct rabotniki
{
   int number;
   char fio[20];
   char pol[1];
   int godrozhd;
   int godpost;
} rab[10];
Далее вы просите ввести число работников, но при этом не проверяете, что могут ввести число, которое превосходит размерность вашего массива, равную 10.

C++
1
2
3
int n;
cout<<"Введите количество работников : ";
cin>>n;
Поэтому этот код некорректен. Либо вы делаете проверку на то, что вам введут число меньшее или равное 10, либо вообще не запрашиваете ввод, а используете массив из 10 элементов априори.

Далее вы вводите значения полей структур для вашего масива, но вы вставили излишние фигурные скобки. То есть вместо

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i=0;i<=n;i++)
{ cout<<"Введите ФИО " <<i+1<< " рабочего : ";
cin>>rab[i].fio;
 
    
{cout<<"Введите пол: ";
        cin>>rab[i].pol;
        
        {cout<<"Год рождения : ";
           cin>>rab[i].godrozhd;
    
           {cout<<"Год поступления на работу : ";
        cin>>rab[i].godpost;
Должно быть один блок кода (составной оператор)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i=0;i<=n;i++)
{
   cout<<"Введите ФИО " <<i+1<< " рабочего : ";
   cin>>rab[i].fio;
    
   cout<<"Введите пол: ";
        cin>>rab[i].pol;
        
   cout<<"Год рождения : ";
           cin>>rab[i].godrozhd;
    
  cout<<"Год поступления на работу : ";
        cin>>rab[i].godpost;
Когда вы это исправите, то можно смотреть ваш код дальше. А пока достаточно в нем уже найдено ошибок.
Kiker
1 / 1 / 0
Регистрация: 12.11.2011
Сообщений: 18
27.11.2011, 07:43  [ТС]     провести упорядочивание данных #3
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
#include "stdafx.h"
#include <math.h>
#include <cstring>
#include <iostream>
#include <cstdio>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale (0,"Rus");
struct rabotniki
 
{
    int number;
    char fio[20];
    char pol[1];
    int godrozhd;
    int godpost;
    
} rab[10];
for (int n;n=1;n<=10;n++)
cout<<"Введите количество работников : ";
cin>>n;
for (int i=0;i<=n;i++)
{ cout<<"Введите ФИО " <<i+1<< " рабочего : ";
cin>>rab[i].fio;
 
    cout<<"Введите пол: ";
        cin>>rab[i].pol;
        
        cout<<"Год рождения : ";
           cin>>rab[i].godrozhd;
    
          cout<<"Год поступления на работу : ";
          cin>>rab[i].godpost;
    
        {double max=1900;
    for (int i=0;i<=n;i++)
    if (rab[i].godrozhd>max)
        max=rab[i].godrozhd;
}
       
}return 0;
}
Добавлено через 23 секунды
так?)
Kiker
1 / 1 / 0
Регистрация: 12.11.2011
Сообщений: 18
01.12.2011, 11:52  [ТС]     провести упорядочивание данных #4
вот что-то написал отсортировал, только как вывести полностью таблицу по году рождения?
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
#include "stdafx.h"
#include <cmath>
#include <cstring>
#include <iostream>
#include <cstdio>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{   int tmp;
    setlocale (0,"Rus");
    struct rabotniki
    {
        char fio[20];
        int number;
        char pol[1];
        int godrozhd;
        int godpost;
    }rab[9];
    
    int n;
cout<<"Введите количество работников : ";
cin>>n;
for (int i=0;i<n;i++)
{
   cout<<"Введите ФИО " <<i+1<< " рабочего : ";
   cin>>rab[i].fio;
    
   cout<<"Введите пол: ";
        cin>>rab[i].pol;
        
   cout<<"Год рождения : ";
           cin>>rab[i].godrozhd;
    
  cout<<"Год поступления на работу : ";
        cin>>rab[i].godpost;
                        
}
    for(int i=0;i<n;i++)         
 
         for(int j=0;j<n-1;j++)
 
                  if(rab[j].godrozhd<rab[j+1].godrozhd)    
 
                  {int temp=rab[j].godrozhd;
 
                 rab[j].godrozhd=rab[j+1].godrozhd;
 
                  rab[j+1].godrozhd=temp;
        }
    for(int i=0;i<n;i++)
                cout<<rab[i].godrozhd<<"\t"<<"\n---------------------------------------"<<endl;
    cout<<endl<<endl;
 
           
    return 0;
}
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
01.12.2011, 11:56     провести упорядочивание данных #5
Цитата Сообщение от Сыроежка Посмотреть сообщение
объявление структуры и определение массива этих структур следует объединить.
Могу я поинтересоваться, а в чем, собственно, разница?
Yandex
Объявления
01.12.2011, 11:56     провести упорядочивание данных
Ответ Создать тему
Опции темы

Текущее время: 09:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru