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

ошибка номер...да их много. подскажите что не так. - C++

Восстановить пароль Регистрация
Другие темы раздела
Visual C++ Пример MFC http://www.cyberforum.ru/cpp-beginners/thread74967.html
Здраствуйте..! Кто может киньте пожалуста пример програмы 1.Hello World(нажатия на кнопку Привет и вывод в label "Привет Мир") 2.Простого калькулятора(+/-/=) Если можна то с коментами...
C++ и снова этот массив. двумерный. дана целочисленная прямоугольная матрица. определить: 1)количество строк не содержащий ни одного нулевого элемента. 2) максимальное из чисел, встречающихся в заданной матрице более одного раза. помогите кто знает... а то лаба зачетная..не сдам-незачет( и прощай стипендия((. всем скажу огромное спасибо. http://www.cyberforum.ru/cpp-beginners/thread74965.html
C++ Работа с файлами
Здравствуйте! Я вот с такой задачей: Дана последовательность из n вещественных чисел (0.3; 1.5; 2.6; 3.24; 5.89; 6.0; 7.3; 9.25; 10.98). Записать все эти числа в файл. Вывести на экран все компоненты, не попадающие в данный диапазон . Есть ток начало, и то не знаю, какой тип данных брать, записывает в файл слово ПОСЛЕДОВАТЕЛЬНОСТЬ, а цифры нет. И не могу дальше условия задачи записать! ...
Как всегда у новичков недоразумения с массивами:) C++
Короче у меня есть массив динамический 2-х мерный массив заполненный случайными числами от 0-до 100, нужно хотя бы вывести главную и побочную диагональ... У меня проблема в последней строке хочу что бы выводились числа ... у которых одинаковы индексы if(i==j) { cout<<ukazatel; } он у меня выводит почему-то последний столбец хотя по идее должен выводить главную диагональ? Вот мой...
C++ C++ >> UML http://www.cyberforum.ru/cpp-beginners/thread74953.html
Кто может перевести из С++ в UML. Знаю, что есть такие программы как umbrello и т.д. , но они или платные или для линкса. Кто поможет, буду очень благодарен! Заранее спасибо Вот из этого:
C++ Задача о рюкзаке Доброго вечера! Даны n типов предметов, каждый тип обладает своей стоимостью и весом, а также предел грузоподъемности limit. Нужно набрать максимум стоимости и не превысить грузоподъемность. За состояние на каждом шаге принимаем уже израсходованный ресурс. На n-ом можем взять столько предметов n-ого типа, сколько захотим, лишь бы только не превысить грузоподъемность. На первом это количество... подробнее

Показать сообщение отдельно
оренбуржец
5 / 5 / 0
Регистрация: 12.12.2009
Сообщений: 56
03.01.2010, 11:26  [ТС]     ошибка номер...да их много. подскажите что не так.
ок ща попробую исправить)

Добавлено через 2 минуты
все исправил но выдает огромную кучу ошибок.
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string.h>
using namespace std;
 
// Константы
const int MAX_NAME_LENGTH = 100; //Максимальная длина названия
const int MAX_BRAND_COUNT = 1000; //Максимальное количество товаров в массиве
const char* FILE_NAME = "Brand.dat"; //Имя файла для хранения записей о продукции
//Заголовочная константная строка, используемая при выводе записей
const char* HEADER = "  Index     NameOFbrand       Memory         Kolichestvo na sklade  ";
//Разделительная линия
const char* SEPARATING_LINE = "--------------------------------------------------------------------------------";
 
//Перечисление существующих марок
// bkNone - марка не указана;
// Apacer
// A_Data_My_Flash
// Kingston 
// QUMO 
enum BrandKind {skNone, Apacer, A_Data_My_Flash, Kingston, QUMO};
 
struct Production
{
    char NameBrand[MAX_NAME_LENGTH + 1];    //Название товара
unsigned short  int Memory_max[MAX_NAME_LENGTH + 1];        //объем памяти
 
unsigned short  int Kolichestvo_na_sklade;              //количество на складе
 
};
 
//Вспомогательная функция, осуществляющая преобразование 
//вида спорта, содержашегося в параметре Type в строку Str,
//т.е. в назваие спорта, представленное в виде строки
void BrandKindToStr(BrandKind Type, char Str[])
{
    //В зависимости от значения Type
    switch (Type)   
    {
        case Apacer:
            strcpy(Str, "Apacer"); //Копируем в Str название жанра "Apacer"
            break;
        case A_Data_My_Flash:
            strcpy(Str, "A_Data_My_Flash");  //Копируем в Str название жанра "A_Data_My_Flash"
            break;
        case Kingston:
            strcpy(Str, "Kingston"); //Копируем в Str название жанра "Kingston"
            break;
        case QUMO:
            strcpy(Str, "QUMO"); //Копируем в Str название жанра "QUMO"
        default:
            strcpy(Str, "unknown"); //Случай, когда задан тип bkNone
    }
}
//Вспомогательная функция, которая по названию товара, содержащемся в строке Str,
//возвращает его тип
BrandKind StrToBrandKind(char Str[])
{
    //Переводим строку Str к нижнему регистру
    strlwr(Str);
    //Если строка Str равна "Apacer", то возвращаем Apacer
    if (!strcmp(Str, "Apacer")) 
        return Apacer;
    //Если строка Str равна "A_Data_My_Flash", то возвращаем A_Data_My_Flash
    if (!strcmp(Str, "A_Data_My_Flash"))
        return A_Data_My_Flash;
    //Если строка Str равна "Kingston", то возвращаем Kingston
    if (!strcmp(Str, "Kingston"))
        return Kingston;
    //Если строка Str равна "QUMO", то возвращаем QUMO
    if (!strcmp(Str, "QUMO"))
        return QUMO;
    //Если в строке недопустимое название товара, то возвращаем agNone
    return bkNone;
}
    //Функция, осуществляющая ввод записи о товаре с консоли.
//Введенная запись возвращается в параметре producer, передаваемом по ссылке
void InputTovar(Tovar& producer)
{
    char Buf[MAX_NAME_LENGTH]; //Вспомогательная строка для ввода данных
    bool IsValidKindOfBrand; //Логическая переменная, определяющая правильно ли введен вид товара
    //Читаем символ перевода строки
    cin.get();
  cout << endl;
  cout << "Enter product info:" << endl;
  cout<< "Enter name of brand:";
  cin.getline(producer.NameBrand, sizeof producer.NameBrand);
  cout<<"enter memory:";
  cin.getline(producer.Memory_max, sizeof producer.Memory_max);
  cout<<"enter kolichestvo:";
  cin.getline(producer.Kolichestvo_na_sklade, sizeof producer.Kolichestvo_na_sklade);
    cin.get();
    do
    {   //Полагаем, что вид товара правильный
        IsValidKindOfBrand= true;       
        cout << "Kind of brand (Apacer, A_Data_My_Flash, Kingston, QUMO)";
        //Читаем в Buf строку вида товара
        cin.getline(Buf, sizeof Buf);
        //Преобразовывем введенную строку в переменную типа BrandKind
        producer.KindOfBrand = StrToBrandKind(Buf);
        //Если была введена недопустимая строка
        if (producer.KindOfBrand == bkNone)
        {
            //Выдаем сообщение, что строка неправильная
            cout << endl << "Invalid! Enter Apacer, A_Data_My_Flash, Kingston, QUMO" << endl << endl;
            //Устанавливаем значение лжи для флага правильности строки вида товара
            IsValidKindOfBrand = false;
        }
            //Цикл повторяется до тех пор, пока введенная строка вида товара не будет правильной
    }
}
//Функция вывода на консоль полей записи (структуры) producer, имеющей индекс Index
void PrintTovar(Tovar producer, int Index)
{
        char Buf[MAX_NAME_LENGTH];
    //Строковая переменная для строкового представления вида товара
    //Выводим индекс в поле максимальной ширины 5
    cout << setw(5) << Index << " ";
    //Выводим марку, объем, количество на складе. Каждое в своем поле максимальной ширины 13
    cout << setw(13) <<  producer.NameBrand << " " << setw(13) << producer.Memory_max << " "<< setw(13) << producer.Kolichestvo_na_sklade << " ";
//Функция, добавляющая запись о товаре producer в конец массива товаров BrandArray, 
//BrandCount - количество записей-элементов в массиве BrandArray
    void AddTovar(Tovar BrandArray[], int& BrandCount, Tovar producer)
{
    BrandArray[BrandCount++] = producer;
    }
}
    //Функция, удаляющая в массиве BrandArray запись-элемент с индексом RemovingIndex,
//BrandCount - количество записей-элементов в массиве BrandArray.
//Функция возвращает истину, если RemovingIndex лежит в допустимом диапазоне от 0 до BrandCount-1,
//иначе функция возвращает ложь
bool RemoveTovar(Tovar BrandArray[], int& BrandCount, int RemovingIndex)
{
    //Если индекс удаляемого элемента задан неправильно, то возвращаем ложь
    if (RemovingIndex < 0 || RemovingIndex >= BrandCount)
    {
        return false;
    }
    //Данный цикл осуществляет сдвиг элементов 
    // BrandArray[RemovingIndex], BrandArray[RemovingIndex], ..., BrandArray[BrandCount - 1]
    //на один элемент влево и тем самым затирает удаляемый элемент
    for (int i = RemovingIndex; i < BrandCount - 1; i++)
    {
        BrandArray[i] = BrandArray[i + 1];
    }
    //Уменьшаем количество элементов-записей на 1
    BrandCount--;
    //Возвращаем истину
    return true;
}
 
//Функция, осуществляющая поиск и вывод на консоль элементов-записей о товаре массива BrandArray,
//фамилия которых совпадает со строкой KeyNameBrand (ключом для поиска).
//BrandCount - количество записей-элементов в массиве BrandArray.
void SearchAndPrintTovar(Tovar BrandArray[], int BrandCount, char KeyNameBrand[])
{
    //Переменная для подсчета количества найденных записей, вначале равна 0
    int FoundRecordsCount = 0;
    cout << endl;   
    //Выводим заголовок
    cout << SEPARATING_LINE << endl;
    cout << HEADER << endl;
    cout << SEPARATING_LINE << endl;
    //Пробегаемся по все элементам массива SportsmenArray
    for (int i = 0; i < BrandCount; i++)
    {
        //Если название очередного элемента-записи совпадает с KeyNameBrand, то
        if (!strcmp(BrandArray[i].NameBrand, KeyNameBrand))
        {   
            //выводим сам элемент
            PrintTovar(BrandArray[i], i);       
            //выводим разделительную линию
            cout << SEPARATING_LINE << endl;
            //Увеличиваем на 1 количество найденных записей
            FoundRecordsCount++;
        }
    }
        //Выводим количество найденных записей
    cout << FoundRecordsCount << " records were found." << endl;
}
 
//Функция, осуществляющая вывод на консоль всех элеменов-записей о товаре,
//содержащихся в массиве BrandArray размера BrandCount
void PrintAllTovar(Tovar BrandArray[], int BrandCount)
{   
    cout << endl;
    //Выводим заголовок
    cout << SEPARATING_LINE << endl;
    cout << HEADER << endl;
    cout << SEPARATING_LINE << endl;
    //Пробегаемя по всем элементам
    for (int i = 0; i < BrandCount; i++)
    {       
        //Выводим очердной элемент-запись
        PrintTovar(BrandArray[i], i);       
        //Выводим разделительную линию
        cout << SEPARATING_LINE << endl;
    }
}
//Функция, осуществляющая чтение массива BrandArray и его размера BrandCount
//из бинарного файла с именем BrandCount
void LoadFromFile(Tovar BrandArray[], int& BrandCount, const char* FileName )
{
//Объявлем файловый поток ввода inp, передаем ему имя открываемого файла FileName
    ifstream inp(FileName);
    //Читаем из файла количество элементов в массиве
    inp >>BrandCount;
    //Читаем из файла целиком весь массив
    inp.read((char *)BrandArray, BrandCount * sizeof(BrandArray[0]));
}
void SaveToFile(Tovar BrandArray[], int BrandCount, const char* FileName)
{
    //Объявляем файловый поток вывода out, передаем ему имя открываемого файла FileName
    ofstream out(FileName);
    //Записываем в файл количество товарa
    out << BrandCount;
    //Записываем в файл весь массив целиком
    out.write((char *)BrandArray, BrandCount * sizeof(BrandArray[0]));
}
//Функция, реализующая главное меню программы. В зависимости от выбора пользователя, 
//осуществляет вызов соответствующих функций.
//Параметры:
//BrandArray - массив элементов-записей о товаре;
//BrandCount - количество элементов в массиве.
void MainMenu(Tovar BrandArray[], int& BrandCount)
{
    //Переменная, которая будет хранить номер выбранного пользователем пункта меню
    int UserChoise; 
    //Переменная-запись о спорстмене
    Tovar producer;
    //Переменная для хранения индекса удаляемого элемента
    int RemovingIndex;
    //Массив символов для хранения строки фамилии для поиска
    char KeyNameBrand[MAX_NAME_LENGTH];
    //Цикл с постусловием, осуществляющий вывод меню, ввод выбора пользователя и
    //выполнение соответстующих этому выбору действий до тех пор, пока пользователь
    //не выберет выход из программы
    do 
    {
        //Отображаем меню
        cout << endl;
        cout << "          MENU" << endl;
        cout << "=========================" << endl;
        cout << " [1] Add Brand" << endl;
        cout << " [2] Remove Brand" << endl;
        cout << " [3] Search Brand" << endl;
        cout << " [4] Show all Brands" << endl;
        cout << " [5] Exit" << endl;
        cout << "=========================" << endl;
        cout << "Your choice : ";
        //Вводим выбранный пользователем пункт меню
        cin >> UserChoise;
        //С помощью конструкции выбора анализируем этот выбор
        //и осуществляем соответствующие действия
        switch (UserChoise)
        {
            //Добавление новой записи о спортсмене в массив
            case 1: 
                InputTovar(producer);
                AddTovar(BrandArray, BrandCount, producer);
                break;
                //Удаление записи о спортсмене с указанным индексом из массива
            case 2:
                cout << endl << "Enter index of Brand to delete : ";
                //Вводим индекс удаляемого элемента-записи
                cin >> RemovingIndex;
                //Удаляем элемент. Если результат удаления ложь, то
                if (!RemoveTovar(BrandArray, BrandCount, RemovingIndex))
                {
                    //Выдаем ошибку
                    cout << endl << "Invalid index! Try again." << endl;
                }
                break;
                //Поиск всех записей о спорстменах, имеющих указанную фамилию
            case 3:
                cout << endl << "Enter product name for search : ";
                //Вводим символ перевода строки
                cin.get();
                //Вводим фамилию для поиска 
                cin.getline(KeyNameBrand, sizeof KeyNameBrand);             
                //Вызываем функцию поиска и вывода найденных элементов
                SearchAndPrintTovar(BrandArray, BrandCount, KeyNameBrand);
                break;
                //Печать всех записей о спортсменах
            case 4:
                PrintAllTovar(BrandArray, BrandCount);
                break;
            //Выход
            case 5:
                cout << "Bye-bye..." << endl;
                break;
            //Ошибка, пользователь выбрал несуществующий пункт меню
            default:
                cout << endl << "Invalid choice! Try again." << endl;
        }
        //цикл выполняется до тех пор, пока пользователь не выберет выход
    } while (UserChoise != 5);
}
int main()
{
    //Описание массива записей (структур) о спортсменах
    Tovar BrandArray[MAX_BRAND_COUNT];
    //Переменная для хранения количества записей в массиве
    int BrandCount = 0;
 
    //Загружаем все записи из файла
    LoadFromFile(BrandArray, BrandCount, FILE_NAME);
    //Выдаем меню и осуществляем операции
    MainMenu(BrandArray, BrandCount);   
    //Перед выходом из программы сохраняем все записи в файл
    SaveToFile(BrandArray, BrandCount, FILE_NAME);
    return 0;
}
 
Текущее время: 22:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru