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

структуры !!! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структура http://www.cyberforum.ru/cpp-beginners/thread304450.html
Всем привет!!Помогите подкорректировать программку....Буду очень благодарин!! Условие: Составьте структуру, проинициализируйте переменную типа структуры и выведите на экран полное значение такой...
C++ Обработка препроцессора Дня доброго. Есть небольшая проблема #include<iostream> using namespace std; #define M 10 #ifndef N #define N 20 #endif #if M>5 cout << "Cool\n"; //Вот тут ругатся начинает http://www.cyberforum.ru/cpp-beginners/thread304421.html
Поменять местами элементы матрицы C++
ЗАДАНИЕ ТАКОЕ: Дано: прямоугольные матрицы A и B. Поменять местами последние отрицательные элементы матрицы. Нахождение последнего отрицательного элемента матрицы оформить как функцию. Ввод и вывод...
Матрица с использованием двухмерных массивов C++
Добрый день. Нужна помощь в написании программы. Дана матрица размера M х M. Найти все положительные элементы матрицы. Элементы я должен вводить сам.
C++ как создать неконсольное приложение http://www.cyberforum.ru/cpp-beginners/thread304399.html
куда там запихивать сам текст .cpp? не могу никак разобраться
C++ Вывести на экран таблицу степеней двойки Вывести на экран таблицу степеней двойки: 2^n, где n изменяется от -10 до 10. Операцию возведения целого числа в степень оформить в виде функции. подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
20.09.2011, 10:30
Цитата Сообщение от intmain Посмотреть сообщение
1. Описати структуру з ім’ям SKLAD, яка містить наступні поля:
- Name – Назва товару;
- Type – одиниця вимірювання:
- Quantity – кількість одиниць товару;
- Cost – ціна одиниці товару.
2. Написати програму, що використовує дану структуру і виконує наступні дії:
- вводить з клавіатури масив даних SHOP, що складається з N змінних типу SKLAD;
- Впорядковує записи по спаданню поля Name;
- Виводить на екран ціну та кількість товару, назва якого вводиться з клавіатури або виводить повідомлення про його відсутність.
Вот на страрых плюсах (когда писал проект пытался обеспечить поддержку даже Борланда - алгоритм работает и в нём). Кто хочет на новых ++ пишем так
C++
1
2
3
#include <iostream>
#include <conio.h>
using namecpase std;
+ в програме std::cout(cin)
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
 
//Руссификация
ostream& operator<<(ostream &stream,char* s){
    for(char* ps=s; *ps; ps++){
        if(*ps=='ё')
            stream<<char(241);
        else if(*ps=='Ё')
            stream<<char(240);
        else if(*ps>=-64 && *ps<=-17)           
            stream<<char(*ps+64+128);
        else if(*ps<0)
            stream<<char(*ps+64+176);
        else
            stream<<*ps;
    }
    return stream;
}
 
struct SKLAD
{
    char Name[64];
    char Type[8];
    long Quantity;
    float Cost;
};
//Вывод полей структуры SKLAD
void OutStruct(SKLAD pSKLAD)
{
    cout<<"Name : "    <<pSKLAD.Name<<"\r\n";
    cout<<"Type : "    <<pSKLAD.Type<<"\r\n";
    cout<<"Quantity : "<<pSKLAD.Quantity<<"\r\n";
    cout<<"Cost : "    <<pSKLAD.Cost<<"\r\n";
}
 
long SearchName(long n, SKLAD * lpSKLAD, char * sFind)
{
    long index = -1;//Считаем что в списке нет товара
    for(long i = 0; i < n; i++)
    {
        index = i;
        if(strstr(lpSKLAD[i].Name,sFind))
            break;
    }
    //Если прошли весь цикл без break товара в списке нет
    if(index == n)
        index = -1;
    return index;
}
 
int main()
{
    SKLAD * SHOP;
    SKLAD BUFER;
    long i,j,N;
    do
    {
        cout<<"Введите число товаров N: ";
        cin>>N;
        SHOP = new SKLAD[N*sizeof(SKLAD)];
        cout<<"\tВвод товаров\r\n";
        for(i = 0; i < N; i++)
        {
            cout<<"Товар # "<<i + 1<<"\r\n";
            cout<<"Name : ";cin>>SHOP[i].Name;
            cout<<"Type : ";cin>>SHOP[i].Type;
            cout<<"Quantity : ";cin>>SHOP[i].Quantity;
            cout<<"Cost : ";cin>>SHOP[i].Cost;
        }
        cout<<"\tСортировка(по возрастанию) списка товаров по Name\r\n";
        for(i = 0; i < N; i++)
        {
            for(j = i + 1; j < N; j++)
            if(SHOP[j].Name[0] < SHOP[i].Name[0])
            {
                BUFER   = SHOP[j];
                SHOP[j] = SHOP[i];
                SHOP[i] = BUFER;
            }
            cout<<"Товар # "<<i + 1<<"\r\n";
            OutStruct(SHOP[i]);
        }
        do
        {
            cout<<"\tПоиск товара\r\n";
            cout<<"Find Name : ";cin>>BUFER.Name;
            if(0 < (j = SearchName(N, SHOP,BUFER.Name)))
            {
                cout<<"Товар найден\r\n";
                OutStruct(SHOP[j]);
            }
            else
                cout<<"Товар не найден\r\n";
            cout<<"Нажмите F для продолжения поиска\r\n";
        }
        while(toupper(getch()) == 'F');
        
        delete [] SHOP;
        cout<<"Нажмите Y для нового ввода\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
Результат работы
Введите число товаров N: 3
Ввод товаров
Товар # 1
Name : Dini
Type : kg
Quantity : 1800
Cost : 4.2
Товар # 2
Name : Arbyzi
Type : kg
Quantity : 2500
Cost : 1.2
Товар # 3
Name : Vinograd
Type : yashiki
Quantity : 200
Cost : 80.5
Сортировка(по возрастанию) списка товаров по Name
Товар # 1
Name : Arbyzi
Type : kg
Quantity : 2500
Cost : 1.2
Товар # 2
Name : Dini
Type : kg
Quantity : 1800
Cost : 4.2
Товар # 3
Name : Vinograd
Type : yashiki
Quantity : 200
Cost : 80.5
Поиск товара
Find Name : Dini
Товар найден
Name : Dini
Type : kg
Quantity : 1800
Cost : 4.2
Нажмите F для продолжения поиска
Нажмите Y для нового ввода
Press any key to continue


PS:Для руссификации ввёл перегрузку оператора вывода, но ввод только латиницей Чтобы был и русский ввод нужно перегрузить >> или использовать OemToChar (в Борланде к сожалению её нет). Перегрузку ввода я предлагаю уже осуществить самостоятельно...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru