Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
2 / 2 / 0
Регистрация: 01.01.2010
Сообщений: 13

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

14.01.2010, 16:03. Показов 3177. Ответов 8

Студворк — интернет-сервис помощи студентам
Доработать структуру.
Знающему и понимающему человеку делов на 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.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.01.2010, 16:03
Ответы с готовыми решениями:

Описать структуру с именем Order
Описать структуру с именем Order содержащую следующие поля: расчётный счет плательщика, расчётный счёт получатля, перечисляемая сумма в...

Описать структуру с именем Order
Дорогие форумчане =) мне нужна ваша помощь. Нужно написать программу,первую часть сделал сам. #include &lt;iostream&gt; #include...

Описать структуру с именем ORDER
Помогите написать программу в MS Visual Studio 2008. Описать структуру с именем ORDER , содержащую следующие поля: 1) расчетный счет...

8
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
14.01.2010, 17:48
C++
1
 if ( strcmp(&Spisok[i].plat[0], &nomer_plat[0]) == 0 )
Так все должно сравниваться работать, НО: nomer_plat должна быть char [n] (т.е. массивом символов), strcmp видимо все равно какие типы сравнивать, но если сравнивать массив символов с числом думаю результат будет неверный. Попробуйте
1
2 / 2 / 0
Регистрация: 01.01.2010
Сообщений: 13
14.01.2010, 19:18  [ТС]
Спасибо, сейчас буду пробывать.

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

Добавлено через 5 минут
Что то с аналогией никак. Вопрос с сортировкой остается открыт. Буду очень благодарен.
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
14.01.2010, 20:35
Записи должны быть упорядочены по расчетным счетам плательщиков
Могу предложить банальную сортировку по типу
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;
}
1
2 / 2 / 0
Регистрация: 01.01.2010
Сообщений: 13
14.01.2010, 20:54  [ТС]
Хм.. Спасибо тебе большое что постарался. Но дело в том что использовать надо простейшие опрации типа if, strcmp, присвоения и тд.
С сортировкой частично работает: if ( strcmp(&Spisok[i].plat[0], &Spisok[i+1].plat[0]) > 0 )
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
14.01.2010, 22:46
Я никогда не понимал как работает strcmp кроме того чтобы сравнить результат её работы с 0 что означает равенство строк. Хорошо бы кто нибудь объяснил популярно...
А частично он как работает?... Сортирует только по первой цифре?
1
2 / 2 / 0
Регистрация: 01.01.2010
Сообщений: 13
15.01.2010, 08:39  [ТС]
Да, именно так. Сортирует только по первой цифре. И первая строк остается на своем месте, а вторая не правильно отображается. Остальные сотрируются по первой цифре.
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
15.01.2010, 14:18
видимо из 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;   
                }
            }
попробуйте
1
2 / 2 / 0
Регистрация: 01.01.2010
Сообщений: 13
15.01.2010, 18:20  [ТС]
Программа написана. Всё работает. Огромное спасибо товарищу insideone за оказаную мне помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.01.2010, 18:20
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru