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

Ошибка run-time check failure #2 - stack around the variable 'findmonths' was corrupted - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Одномерный массив http://www.cyberforum.ru/cpp-beginners/thread604449.html
здравствуйте! помогите пожалуйста, очень надо. В одномерном массиве, состоящем из n вещественных элементов, вычислить: -сумму элементов с нечётными номерами; -количество элементов массива, расположенных между первым и последним отрицательными элементами. сжать массив, удалив из него все элементы, модуль которых не превышает 1. освободившиеся в конце массива элементы заполнить нулями....
C++ Определить, сколько раз в последовательности встречается символ ‘a’ Вот код исправте ошибку... #include<iostream.h> #include<stdio.h> #include<conio.h> int a(void); int main() { char s,q; int i=0; clrscr(); http://www.cyberforum.ru/cpp-beginners/thread604448.html
C++ Массив случайных неповторяющихся чисел
Ребят работал всю ночь и сейчас голова не пашет! объясните в чем проблема private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { n: int a = rand()%20+1; { for (int j=1; j<10; j++) { if (mase == a) {
Построить график C++
Для функции Y = f(X), график которой приведен в Вашем индивидуальном задании, вывести на экран значения Y для Х = 0, 0.25, 0.5, ... 19.75.
C++ Реализация многоуровневого меню http://www.cyberforum.ru/cpp-beginners/thread604423.html
Всем доброго дня! Помогите с кодом меню, проблема в том что нажимая клавишу 1 он опять же выкидывает меню и тоже самое при нажатие 0, то есть при нажатие 1 он должен вводить данные, что не делает а при нажатие 0, выходить, что тоже не делает! Вот код: #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv) { int kod,min,menu;
C++ Заполнить матрицу случайными числами. Развернуть матрицу на 90(градусов) против часовой стрелки Заполнить матрицу случайными числами. Развернуть матрицу на 90o против часовой стрелки подробнее

Показать сообщение отдельно
aleks_pilipenko
)))
604 / 181 / 9
Регистрация: 31.12.2009
Сообщений: 2,584
Записей в блоге: 3

Ошибка run-time check failure #2 - stack around the variable 'findmonths' was corrupted - C++

13.06.2012, 14:12. Просмотров 506. Ответов 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
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
#include <string.h>
#include <windows.h>
 
char *filename="c:/meteo.dat";
char *Months[12] = {"Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"};
char *Veters[8] = {"Северный","Северо-восточный","Восточный","Юго-восточный","Южный","Юго-западный","Западный","Северо-западный"};
 
struct meteo{                               //структура записи
    char DateChislo[3];                     //Число
    int DateMonth;                          //Месяц
    double precipitation;                   //Количество осадков
    int windDirection;                      //Направление ветра
    double humidity;                        //Влажность
    int temperature;};                      //Температура
    int nCount;  //переменная для хранения количества дат в списке
void showMenu()
{
    cout<<"Выберете действие:"<<endl;
    cout<<"1. Ввести элементы списка\n2. Преобладающее направление ветра для заданного "
        "времени года(осень, зима, весна, лето)\n3. Наиболее засушливый месяц\n4. "
        "Средняя температура заданного месяца\n5. Удалить запись\n6. "
        "Наиболее влажный месяц\n7. Выйти"<<endl;
}
//начальная инициализация файла библиотеки
void initLib()
{
    FILE *fp=fopen(filename,"r");
    if (fp==NULL) //если файл не существует
    {
        nCount=0;
        fp=fopen(filename,"w");  //создаем его
        if(fp==NULL)
        {cout<<"Ошибка создания файла библиотеки. Программа будет закрыта!";
         _getch();
         exit(1);
        }
        fwrite(&nCount, sizeof(int), 1, fp);   //заносим в начало нового файла количество записей в нем - 0
    }
    else fread(&nCount, sizeof(nCount), 1, fp); //из существующего файла считываем количество записей
    fclose(fp);
}
//функция добавления новой даты в конец файла
void addDay()
{
    FILE *fp;
    meteo b;
    char ch;
    fp=fopen(filename,"r+");
    if(fp==NULL)cout<<"Ошибка чтения данных из файла";
    else
        {
            bool go=true;
            do
            { //вводим информацию об очередной записи
                system("cls"); 
                cin.sync();
                cout<<"Введите данные"<<endl;
                cout<<"Число: \t" ; cin.getline(b.DateChislo , 3);
                go=true;
                while(go)
                    {
                        int Mesyaz;
                        cout<<"Месяц укажите цифрой:\n";
                        for(int i=0;i<12;i++)cout<<i+1<<" - "<<Months[i]<<endl;
                        cin>>Mesyaz;
                        if(Mesyaz>0 && Mesyaz<13){go=false;b.DateMonth=Mesyaz-1;}
                        else cout<<"Неверный ввод!!!"<<endl;
                    }
                cout<<"\nКоличество осадков: \t"; cin>>b.precipitation;
                go=true;
                while(go)
                    {
                        int Veter;cout<<"\nНаправление ветра укажите цифрой:\n";
                        for(int i=0;i<8;i++)cout<<i+1<<" - "<<Veters[i]<<endl;
                        cin >> Veter;
                        if(Veter>0 && Veter<9){go=false;b.windDirection=Veter-1;}
                        else cout<<"Неверный ввод!!!"<<endl;
                    }
                cout<<"Влажность: \t" ; cin>>b.humidity;
                cout<<"Температура: \t" ; cin>>b.temperature;
                nCount++;   //заносим информацию об очередной записи в конец файла
                fseek(fp,0,SEEK_END);
                fwrite(&b, sizeof(meteo), 1, fp);//заносим информацию о количестве записей в начало файла
                fseek(fp,0,SEEK_SET);
                fwrite(&nCount, sizeof(int), 1, fp);
                cout<<"\nВвести данные о еще одной дате (д/н)?";
                ch=_getche();
            }while(ch=='Д' || ch=='д'); //можно ввести данные о нескольких датах
   fclose(fp);
  }
   cout<<endl;
}
 
//Наиболее засушливый месяц
void findDriestMonth()
{
    meteo b;int driestMonth = 0, numberOfMonth = 0;
    FILE *fp=fopen(filename,"r");
    int findMonths[12];
    memset(findMonths,0,48);
    if(fp==NULL)cout << "Ошибка чтения данных из файла" << endl;
    else
        {
            fread(&nCount, sizeof(int), 1, fp);
            for(int i=0;i<nCount;i++) //перебираем все даты из файла
            {
                fread(&b, sizeof(meteo), 1, fp);//проверяем считанную дату на соответствие месяцу
                findMonths[b.DateMonth-1] += b.precipitation;
            }
            for(int i=0; i<12; i++) if(driestMonth < findMonths[i]) {driestMonth = findMonths[i];numberOfMonth = i; }
            char* hh = Months[numberOfMonth];
            cout << "Самый засушливый месяц: " << hh << endl;
        }
        fclose(fp);
}
int main()
{
    SetConsoleCP(1251);  //Устанавливаем кодировку для ввода
    SetConsoleOutputCP (1251); //Устанавливаем кодировку для вывода
    setlocale(LC_ALL, "Russian");
    char* fff = Months[0];
    char ch='0';
    initLib();   
    showMenu();    //выводим меню
    ch=_getch();
    while(ch!='7')
    {
         switch(ch)     //в зависимости от выбора пользователя вызываем функцию
        {
            case '1': addDay();break;
            //case '2': findveter();break;
            case '3': findDriestMonth();break;
            //case '4': averagetemperaturmonth();break;
            //case '5': delBook();break;
            //case '6': findBook(1); break;
            //case '7': findBook(2); break;
            default: cout<<"Неверный ввод!!!"<<endl;
        }
        cout<<"Нажмите любую клавишу...";
        _getch();
        system("cls"); 
        showMenu();      //выводим меню
        ch=_getch();
    }
    return 0;}
После заполнения файла, нажимаю: Наиболее засушливый месяц он находит все как надо, но перед выходом из void findDriestMonth() выдает эту ошибку, что делать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru