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

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

Восстановить пароль Регистрация
 
Xaapxyc
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 54
12.05.2014, 08:15     Исправить сортировку структуры #1
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;
                }
            }
Помогите пожалуйста, не работает правильно сортировка...выдает такое сообщение
Миниатюры
Исправить сортировку структуры  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2014, 08:15     Исправить сортировку структуры
Посмотрите здесь:

Реализовать односвязный список и обеспечить его сортировку по одному из полей структуры. C++
C++ Массив с элементами структуры (исправить ошибку)
C++ Структуры в С++ и вывод студентов со средним баллом больше 7. Исправить код
Оформление списка в виде структуры, исправить ошибку в коде C++
Вывод структуры в файл. Исправить ошибки в коде C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimabubyakin
 Аватар для dimabubyakin
158 / 123 / 44
Регистрация: 16.10.2013
Сообщений: 1,731
Завершенные тесты: 5
12.05.2014, 08:40     Исправить сортировку структуры #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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 секунд
Попробуйте вот так)
Xaapxyc
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];
dimabubyakin
 Аватар для dimabubyakin
158 / 123 / 44
Регистрация: 16.10.2013
Сообщений: 1,731
Завершенные тесты: 5
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;
Xaapxyc
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 54
12.05.2014, 08:52  [ТС]     Исправить сортировку структуры #5
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Попробуйте вот так)
все равно не хочет, он почему соединяет их вот смотрите на скрине, плательщик 111 получатель 222 он их соединил в одну строчку почему, а точнее прописал получателя два раза.
Миниатюры
Исправить сортировку структуры  
dimabubyakin
 Аватар для dimabubyakin
158 / 123 / 44
Регистрация: 16.10.2013
Сообщений: 1,731
Завершенные тесты: 5
12.05.2014, 08:54     Исправить сортировку структуры #6
Если у вас все данные числовые, зачем вы используете тип char?

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

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

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

Добавлено через 4 минуты
Цитата Сообщение от dimabubyakin Посмотреть сообщение
Xaapxyc, сделаю ка я по своему
как по своему?
dimabubyakin
 Аватар для dimabubyakin
158 / 123 / 44
Регистрация: 16.10.2013
Сообщений: 1,731
Завершенные тесты: 5
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 09:30     Исправить сортировку структуры
Еще ссылки по теме:

Вывести первые буквы всех слов в строке. Структуры. Исправить C++
Сортировку вставками меняем на Пирамидальную сортировку и на Сортировку подсчётом C++
C++ Задача. Структуры. Исправить ошибки

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

Или воспользуйтесь поиском по форуму:
Xaapxyc
0 / 0 / 0
Регистрация: 12.05.2014
Сообщений: 54
12.05.2014, 09:30  [ТС]     Исправить сортировку структуры #13
C++
1
[quote="dimabubyakin;6158990"]Вот так[/quote]
спасибо..ток блин это слишком сложно...
Yandex
Объявления
12.05.2014, 09:30     Исправить сортировку структуры
Ответ Создать тему
Опции темы

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