Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2012, 16:16   #1
Prokill
 
Регистрация: 09.11.2011
Сообщений: 7
По умолчанию Ошибка: _BLOCK_TYPE_IS_VALID(phead->nBlockUse)

вот код помогите , а то вылезает это ошибка в конце при вводе счета плательщика
#include "stdafx.h"

#include <iostream>
#include <string.h>

using namespace std;
struct ORDER {
char CustomerBill[255];
char PayerBill[255];
long int Sum;
};

ORDER SetOrderValues()
{
ORDER temp;
cout << "vvedite raschetnii schet pokupatelya: ";
cin >> temp.CustomerBill;
cout << "vvedite raschetnii schet platilchika: ";
cin >> temp.PayerBill;
cout << "vvedite summu v rublyah: ";
cin >> temp.Sum;

return temp;
}

void OrderArrayToConsole(ORDER Array[], int ArrayLen)
{
for (int i = 0; i < ArrayLen; i++) {
cout << "informacia po " << i+1 << " schetu:" << endl;
cout << "schet platilchika: " << Array[i].PayerBill << endl;
cout << "schet pokupatelya: " << Array[i].CustomerBill << endl;
cout << "summa v rublyah: " << Array[i].Sum << endl << endl;
}
}

void SortOrderArray(ORDER Array[], int ArrayLen)
{
ORDER temp;
for (int i = 0; i < ArrayLen; i++)
for (int j = i+1; j < ArrayLen; j++)
if (strcmp(Array[i].PayerBill, Array[j].PayerBill) > 0)
{
temp = Array[i];
Array[i] = Array[j];
Array[j] = temp;
}
}

int GetOrderSum(ORDER Array[], int ArrayLen, char* CustomBill)
{
long int Result = -1;

for (int i = 0; i < ArrayLen; i++)
if (strcmp(Array[i].PayerBill, CustomBill) == 0)
{
Result = Array[i].Sum;
break;
}

return Result;
}

int main()
{
int aLen = 0; // Кол-во счетов, размер будущего массива

do {
cout << "vvedite kol-vi schetov : ";
cin >> aLen;
} while (aLen < 1 || aLen > 8);

ORDER *OrderArray = new ORDER[aLen]; // Динамически создали массив элементов ORDER

for (int i = 0; i <= aLen; i++) {
cout << "vvedite dannie dlya " << i+1 << " scheta:" << endl;
OrderArray[i] = SetOrderValues(); // Заполняем для каждого элемента все его значения
}

SortOrderArray(OrderArray, aLen); // Сортируем "пузырьком" элемента массива по алфавиту
cout << "otsortirovannii macciv schetov:" << endl;
OrderArrayToConsole(OrderArray, aLen); // Выводим на консоль элементы массива

char Bill[255];
cout << "vvedite schet platilchika: ";
cin >> Bill;
int Sum = GetOrderSum(OrderArray, aLen, Bill);
(Sum == -1) ? cout << "scheta ne suchestvuet" : cout << Sum << " rub";

return 0;
}
Prokill вне форума Ответить с цитированием
Старый 05.01.2012, 16:21   #2
AlexDark
Форумчанин
 
Аватар для AlexDark
 
Регистрация: 23.12.2011
Сообщений: 117
По умолчанию

< не <= - выход за пределы массива

...
ORDER *OrderArray = new ORDER[aLen];
for (int i = 0; i < aLen; i++) {
cout << "vvedite dannie dlya " << i+1 << " scheta:" << endl;
...
AlexDark вне форума Ответить с цитированием
Старый 05.01.2012, 16:25   #3
Prokill
 
Регистрация: 09.11.2011
Сообщений: 7
По умолчанию

Цитата:
Сообщение от AlexDark Посмотреть сообщение
< не <= - выход за пределы массива

...
ORDER *OrderArray = new ORDER[aLen];
for (int i = 0; i < aLen; i++) {
cout << "vvedite dannie dlya " << i+1 << " scheta:" << endl;
...
спасибо , работает)
Prokill вне форума Ответить с цитированием
Старый 05.01.2012, 16:27   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Prokill

у вас жуткая смесь Си и C++ кода, иными словами, типичный говнокод.

правильный способ ввода массива структур ORDER

Код:
std::vector<ORDER> OrderArray; // Динамически создали массив элементов ORDER
OrderArray.reserve(aLen);

for (size_t i = 0; i < aLen; i++) {
cout << "vvedite dannie dlya " << i+1 << " scheta:" << endl;
OrderArray.push_back(SetOrderValues()); // Заполняем для каждого элемента все его значения
}
Rififi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nero - ошибка драйвера DMA. ошибка CRC NecRoMat Софт 5 09.05.2012 01:29
ошибка очистки памяти символьного массива BLOCK_TYPE_IS_VALID(pHead->nBlockUse) dasvex Помощь студентам 2 08.08.2011 02:05
BLOCK_TYPE_IS_VALID(pHead->nBlockUse) mansp Общие вопросы C/C++ 4 07.04.2011 17:56
Ошибка run-time Error 1004 общая ошибка ODBC kaval88 Microsoft Office Excel 0 27.02.2011 20:20
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58