С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 54
1

Исправить сортировку структуры

12.05.2014, 08:15. Показов 1053. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#pragma hdrstop
#pragma argsused
 
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
 
using namespace std;
    int const n=3;
struct ORDER {
       char plat[n],pol[n];
       float summa;
};
 int main()
{system("chcp 1251>0");
 ORDER tmp;
 ORDER Spisok[15];
 char nomer_plat[15];
 bool r=false;
 float snyataya_summa=0;
    for (int i=0;i<=n;i++)
     { cout<<"Платильщик - ";
        cin>>Spisok[i].plat;
        cout<<"Получатель - ";
        cin>>Spisok[i].pol;
        cout<<"Перечисляемая сумма - ";
        cin>>Spisok[i].summa;
     }
for (int i=0;i<=n;i++)
        for (int j=0;j<=n;j++)
            {
             if ( i != j )
             if (strcmp(&Spisok[i].plat[0], &Spisok[j].plat[0]))
                {
                  tmp=Spisok[j];
                  Spisok[j]=Spisok[i];
                  Spisok[i]=tmp;
                }
            }
   for (int i=0;i<=n;i++)
   cout<<"Плательщик "<<Spisok[i].plat<<" Получатель "<<Spisok[i].pol<<" Сумма "<<Spisok[i].summa<<"\n";
   cout<<"Введите номер лицевого счета(плательщика)\n";
   cin>>nomer_plat;
   for (int i=0;i<=n;i++)
       if (strcmp(&Spisok[i].plat[0], &nomer_plat[0]) == 0 ) //выдает ошибку
 
          {
             snyataya_summa+=Spisok[i].summa;
             r=true;
          }
   if (r==true)
      cout<<"С расчетного счета "<<nomer_plat<<" снято "<<snyataya_summa<<"\n";
   else
       cout<<"Такого счета нет\n";
    system("PAUSE");
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i=0;i<=n;i++)
        for (int j=0;j<=n;j++)
            {
             if ( i != j )
             if (strcmp(&Spisok[i].plat[0], &Spisok[j].plat[0]))
                {
                  tmp=Spisok[j];
                  Spisok[j]=Spisok[i];
                  Spisok[i]=tmp;
                }
            }
Помогите пожалуйста, не работает правильно сортировка...выдает такое сообщение
Миниатюры
Исправить сортировку структуры  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2014, 08:15
Ответы с готовыми решениями:

Исправить сортировку
Разработать программу учета посадок на участке в ботаническом саду. Данные хранить в виде массива...

Исправить сортировку подсчетом
Всем привет! Есть программа сортировки подсчетом #include &lt;fstream&gt; #include &lt;iostream&gt; using...

Как реализовать быструю сортировку для структуры?
Что нужно поправить? #include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;vector&gt; #include&lt;string&gt;...

Реализовать сортировку массива объектов пользовательского типа по заданному полю (структуры)
Есть перечень студентов, прибывших в лагерь по форме: ФИО, факультет, номер отряда. Упорядочить...

12
161 / 122 / 85
Регистрация: 16.10.2013
Сообщений: 1,738
12.05.2014, 08:40 2
Лучший ответ Сообщение было отмечено Xaapxyc как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool f;
do 
    {
    f=false;
    for (int i=0;i<n-1;i++)
    if (strcmp(&Spisok[i].plat[0], &Spisok[j].plat[0]))
                {
                  f=true;
                  tmp=Spisok[i];
                  Spisok[i]=Spisok[i+1];
                  Spisok[i+1]=tmp;
                }
    }
    while(f==true);
Добавлено через 26 секунд
Попробуйте вот так)
0
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 54
12.05.2014, 08:44  [ТС] 3
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Попробуйте вот так)
Спасибо, и можете помочь объяснить пару строк, с 17 по 19 включительно)
А само задание такое, структура ORDER включает (номер плательщика, получателя, и перечисляемая сумма)
там они должны быть отсортированы. просто не понимаю под что отводится
C++
1
2
ORDER Spisok[15];
 char nomer_plat[15];
0
161 / 122 / 85
Регистрация: 16.10.2013
Сообщений: 1,738
12.05.2014, 08:51 4
Xaapxyc, не знаете что для чего в вашем коде?
C++
1
2
3
 cout<<"Плательщик "<<Spisok[i].plat<<" Получатель "<<Spisok[i].pol<<" Сумма "<<Spisok[i].summa<<"\n";
   cout<<"Введите номер лицевого счета(плательщика)\n";
   cin>>nomer_plat;
0
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 54
12.05.2014, 08:52  [ТС] 5
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Попробуйте вот так)
все равно не хочет, он почему соединяет их вот смотрите на скрине, плательщик 111 получатель 222 он их соединил в одну строчку почему, а точнее прописал получателя два раза.
Миниатюры
Исправить сортировку структуры  
0
161 / 122 / 85
Регистрация: 16.10.2013
Сообщений: 1,738
12.05.2014, 08:54 6
Если у вас все данные числовые, зачем вы используете тип char?

Добавлено через 55 секунд
Напишите задание, ибо из "кода" ничего не понятно
0
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 54
12.05.2014, 08:54  [ТС] 7
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Если у вас все данные числовые, зачем вы используете тип char?
я делал все по лекциям, нам так наша преподавательница показывала, её под 60 лет..
0
161 / 122 / 85
Регистрация: 16.10.2013
Сообщений: 1,738
12.05.2014, 08:56 8
Xaapxyc, а если бы она сказала записать строку в int вы бы записали
0
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 54
12.05.2014, 08:57  [ТС] 9
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Напишите задание, ибо из "кода" ничего не понятно
Описать структуру с именем ORDE: Записи должны быть размещены в алфавитном порядке по расчетным счетам плательщиков. Вывод на экран о сумме снятой с расчетного счета плательщика веденного с клавиатуры. Если такого счет нет то выдать такого расчетного счета нет

Добавлено через 56 секунд
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Xaapxyc, а если бы она сказала записать строку в int вы бы записали
значит записать вместо char все в интом?
0
161 / 122 / 85
Регистрация: 16.10.2013
Сообщений: 1,738
12.05.2014, 09:00 10
Xaapxyc, хм.. если расчетный счет я представляю числами,
Цитата Сообщение от Xaapxyc Посмотреть сообщение
Записи должны быть размещены в алфавитном порядке
Добавлено через 1 минуту
Xaapxyc, сделаю ка я по своему
0
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 54
12.05.2014, 09:06  [ТС] 11
Цитата Сообщение от dimabubyakin Посмотреть сообщение
хм.. если расчетный счет я представляю числами,
это так у неё в задачнике было написано, я так понимаю по убыванию в числовом варианте, а не алфавитном.

Добавлено через 1 минуту
Цитата Сообщение от dimabubyakin Посмотреть сообщение
сделаю ка я по своему
ток не забубенно, а то я не смогу объяснить ей, она придирчивая.

Добавлено через 4 минуты
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Xaapxyc, сделаю ка я по своему
как по своему?
0
161 / 122 / 85
Регистрация: 16.10.2013
Сообщений: 1,738
12.05.2014, 09:24 12
Вот так
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 <iostream>
#define n 5
using namespace std;
struct ORDER
{
    int id_plat;
    float summa;
};
int main()
{
    ORDER a[n];
    bool t;
    ORDER tmp;
    int id;
    float sum;
    cout<<"VVedite spisok"<<endl;
    for(int i=0;i<n;i++)
    {
        cout<<"ID    : ";
        cin>>a[i].id_plat;
        cout<<"Summa : ";
        cin>>a[i].summa;
    }
    system("cls");
    do 
        {
            t=false;
            for (int i=0;i<n-1;i++)
            if (a[i].id_plat>a[i+1].id_plat)
                {
                  t=true;
                  tmp=a[i];
                  a[i]=a[i+1];
                  a[i+1]=tmp;
                }
        }
        while(t==true);
    cout<<"Spisok platelschikov :"<<endl;
    for(int i=0;i<n;i++)
    cout<<a[i].id_plat<<"    "<<a[i].summa<<endl;
    cout<<"Vvedite ID :";
    cin>>id;
    cout<<"Vvedite summu :";
    cin>>sum;
    t=false;
    for(int i=0;i<n;i++)
    if(a[i].id_plat==id)
    {
        t=true;
        a[i].summa-=sum;
        cout<<a[i].id_plat<<"    "<<a[i].summa<<endl;
    }
    if(!t)cout<<"Ne nayden"<<endl;
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 54
12.05.2014, 09:30  [ТС] 13
C++
1
[quote="dimabubyakin;6158990"]Вот так[/quote]
спасибо..ток блин это слишком сложно...
0
12.05.2014, 09:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2014, 09:30
Помогаю со студенческими работами здесь

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

Сортировку вставками меняем на Пирамидальную сортировку и на Сортировку подсчётом
Здравствуйте. Я не как не могу разобраться.Помогите. У меня есть листинг сортировки вставками: ...

Структуры. Исправить вывод
Задание: На основе данных входного файла составить инвентарную ведомость склада, включив следующие...

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru