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

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

Восстановить пароль Регистрация
 
gery-
2 / 2 / 0
Регистрация: 01.01.2010
Сообщений: 13
14.01.2010, 16:03     Описать структуру с именем Order #1
Доработать структуру.
Знающему и понимающему человеку делов на 5 минут, не больше. Ребят, очень прошу, помогите.
Собственно вот задание:
Описать структуру с именем Order, содержащую следующие поля: plat-расчетный счет плательщика, pol- расчетный счет получателя, summa-перечисляемая сумма. Написать программу, выполняющую ввод с клавиатуры данных в массив Spisok, состоящий из 15 элементов типа Order. Записи должны быть упорядочены по расчетным счетам плательщиков. Вывести на экран информацию о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры. Если такого расчетного счета нет, то вывести соответствующее сообщение.

Что требуется:
1)счёт плательщика 20 символов. одномерный массив plat[20];
2)счёт получателья 20 символов. pol[20];
3)сортировку настроить.
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    int const n=20;
struct order {
       char plat[n],pol[n]; // сдесь я ввёл счета, длинной 20 символов. дальше никак:(
       float summa;
};
 order tmp;
 order Spisok[15];
 int nomer_plat;
 bool r=false;
 float snyataya_summa=0;
    for (int i=0;i<=14;i++)
     { cout<<"Platel'shik - ";
        cin>>Spisok[i].plat;
        cout<<"Poluchatel - ";
        cin>>Spisok[i].pol;
        cout<<"summa - ";
        cin>>Spisok[i].summa;     
     }          
for (int j=0;j<=14;j++)
        for (int i=1;i<=14;i++)
            {                                                    //сорировка не работает
             if (Spisok[i].plat < Spisok[i-1].plat)
                { 
                  tmp=Spisok[i-1];
                  Spisok[i-1]=Spisok[i];
                  Spisok[i]=tmp;   
                }
            }
   for (int i=0;i<=14;i++)
   cout<<"Platel'shik "<<Spisok[i].plat<<" Poluchatel' "<<Spisok[i].pol<<" summa "<<Spisok[i].summa<<"\n";
   cout<<"Vvedite nomer raschetnogo scheta\n";
   cin>>nomer_plat; 
   for (int i=0;i<=14;i++)                  //не ищет счёт.
       if (Spisok[i].plat == nomer_plat)
          {
             snyataya_summa+=Spisok[i].summa;
             r=true;                   
          }
   if (r==true)
      cout<<"S raschetnogo scheta "<<nomer_plat<<" snyato "<<snyataya_summa<<"\n";
   else
       cout<<"Takogo scheta ne sushestvuet\n";           
    system("PAUSE");
    return EXIT_SUCCESS;
}
Добавлено через 22 часа 49 минут
Никак не получается. Использую strcmp. всё равно никак. Помоги пожалуйста. если можно в операторе if используйте strcmp.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2010, 16:03     Описать структуру с именем Order
Посмотрите здесь:

C++ Описать структуру с именем Order
C++ Описать структуру с именем ORDER
C++ Описать структуру с именем Order
Структура: Описать структуру с именем ORDER C++
C++ Описать структуру с именем ORDER
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insideone
Модератор
Автор FAQ
 Аватар для insideone
3620 / 898 / 47
Регистрация: 10.01.2010
Сообщений: 2,422
14.01.2010, 17:48     Описать структуру с именем Order #2
C++
1
 if ( strcmp(&Spisok[i].plat[0], &nomer_plat[0]) == 0 )
Так все должно сравниваться работать, НО: nomer_plat должна быть char [n] (т.е. массивом символов), strcmp видимо все равно какие типы сравнивать, но если сравнивать массив символов с числом думаю результат будет неверный. Попробуйте
gery-
2 / 2 / 0
Регистрация: 01.01.2010
Сообщений: 13
14.01.2010, 19:18  [ТС]     Описать структуру с именем Order #3
Спасибо, сейчас буду пробывать.

Добавлено через 6 минут
Ещё раз огромное спасибо, теперь поиск работает. Сейчас попробую по аналогии перенести на сортировку.

Добавлено через 5 минут
Что то с аналогией никак. Вопрос с сортировкой остается открыт. Буду очень благодарен.
insideone
Модератор
Автор FAQ
 Аватар для insideone
3620 / 898 / 47
Регистрация: 10.01.2010
Сообщений: 2,422
14.01.2010, 20:35     Описать структуру с именем Order #4
Записи должны быть упорядочены по расчетным счетам плательщиков
Могу предложить банальную сортировку по типу
C++
1
2
3
4
5
6
7
8
9
10
for (int i=0; i < n; i++)
   for(int j=0; j < n; j++)
      if ( i != j )
         if ( ToInt(Spisok[i].plat) > ToInt(Spisok[j].plat)
         { // меняем местами
             order TempOrder;
             TempOrder = Spisok[i].plat;
             Spisok[i].plat = Spisok[j].plat;
             Spisok[j].plat = TempOrder;
         }
Где ToInt функция возвращающая int из char[] и допустим она будет такая
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
int ToInt(char* Donor)
{
    int Negative=1;
    int i=0, j=0, tempN[64], mult = 1, iReturned = 0;
 
    // Если это не цифра а '-' нужно запомнить что число отрицательное
    if ( Donor[0] == 0x2d ) { Negative = -1; i++; }
    // Пока char не кончится
    while (Donor[i])
    {
        tempN[j] = (Donor[i]-0x30);
        i++; j++;
    }; j--;
 
    do
    {
        iReturned += (mult*tempN[j]);
        mult *= 10;
        j--;
    }
    while ( j > -1 );
 
    return iReturned*Negative;
}
gery-
2 / 2 / 0
Регистрация: 01.01.2010
Сообщений: 13
14.01.2010, 20:54  [ТС]     Описать структуру с именем Order #5
Хм.. Спасибо тебе большое что постарался. Но дело в том что использовать надо простейшие опрации типа if, strcmp, присвоения и тд.
С сортировкой частично работает: if ( strcmp(&Spisok[i].plat[0], &Spisok[i+1].plat[0]) > 0 )
insideone
Модератор
Автор FAQ
 Аватар для insideone
3620 / 898 / 47
Регистрация: 10.01.2010
Сообщений: 2,422
14.01.2010, 22:46     Описать структуру с именем Order #6
Я никогда не понимал как работает strcmp кроме того чтобы сравнить результат её работы с 0 что означает равенство строк. Хорошо бы кто нибудь объяснил популярно...
А частично он как работает?... Сортирует только по первой цифре?
gery-
2 / 2 / 0
Регистрация: 01.01.2010
Сообщений: 13
15.01.2010, 08:39  [ТС]     Описать структуру с именем Order #7
Да, именно так. Сортирует только по первой цифре. И первая строк остается на своем месте, а вторая не правильно отображается. Остальные сотрируются по первой цифре.
insideone
Модератор
Автор FAQ
 Аватар для insideone
3620 / 898 / 47
Регистрация: 10.01.2010
Сообщений: 2,422
15.01.2010, 14:18     Описать структуру с именем Order #8
видимо из strcmp больше не выжмешь... он видит что одна строка начинается с более раннего символа чем другая да и выдает результат
с другой стороны:
C++
1
2
3
4
5
6
7
8
9
10
for (int j=0;j<=14;j++)
        for (int i=1;i<=14;i++)
            {                                                    //сорировка не работает
             if (Spisok[i].plat < Spisok[i-1].plat)
                { 
                  tmp=Spisok[i-1];
                  Spisok[i-1]=Spisok[i];
                  Spisok[i]=tmp;   
                }
            }
зачем цикл j?
я предлагал вам почти так же
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i=0;i<=15;i++)
        for (int j=0;j<=15;j++)
            {
             if ( i != j )
             if (strcmp(&Spisok[i].plat[0], &Spisok[j].plat[0]))
                { 
                  tmp=Spisok[j];
                  Spisok[j]=Spisok[i];
                  Spisok[i]=tmp;   
                }
            }
попробуйте
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2010, 18:20     Описать структуру с именем Order
Еще ссылки по теме:

Описать структуру с именем "ORDER" C++
C++ Описать структуру с именем Order
C++ Описать структуру с именем Order

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

Или воспользуйтесь поиском по форуму:
gery-
2 / 2 / 0
Регистрация: 01.01.2010
Сообщений: 13
15.01.2010, 18:20  [ТС]     Описать структуру с именем Order #9
Программа написана. Всё работает. Огромное спасибо товарищу insideone за оказаную мне помощь.
Yandex
Объявления
15.01.2010, 18:20     Описать структуру с именем Order
Ответ Создать тему

Метки
order, order c++, описать структуру, описать структуру c++, описать структуру order c++, описать структуру order, описать структуру с именем order, описать структуру с именем order c++, структура order, структура order c++, структуры данных, структуры данных c++
Опции темы

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