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

Error C4789: буфер для X, Y, Z - переполнен - C++

Восстановить пароль Регистрация
 
 
BadPumba
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 27
20.03.2014, 23:15     Error C4789: буфер для X, Y, Z - переполнен #1
Возможно много ошибок,но попрошу при возможности исправлять их, а не писать новую. Выдает ошибку error C4789: буфер для X, Y, Z - переполнен. Заранее спасибо.
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
#include <stdafx.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
void main ()
{
    const int m=5,n=7,b=9;
    double d,f,pr;
    int i,j,k;
    int X[m],Y[n],Z[b];
    
 
for (i = 0; i < m; i++)
{ X[m] = i; }
for ( j = 0; j < n; j++)
{ Y[n] = j; }   
for ( k = 0; k < b; k++)
{Z[b] = k;}
 
cout << X[i];
cout << Y[j];
cout << Z[k];
cout << "Введите i,j,k \n ";
cin >> i>>j>>k;
 
pr=1;
    for (j=1; j<7; j++) {
        if (f = (1-j*j) >0,5)
            for (i=0;i<=5;i++)
                d = sin(i)+2;}
        for (j=1; j<7; j++) {
            if (f = (1-j*j) <=0,5)
                 for( k = 0; k < 9; k++) 
                     d = (1-k*k*k);}
cout << "Результат = \n";
cin >> d;
 
system("PAUSE");
}
Миниатюры
Error C4789: буфер для X, Y, Z - переполнен  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
20.03.2014, 23:45     Error C4789: буфер для X, Y, Z - переполнен #2
C++
1
X[m] = i;
в си массив начинается с нулевого элемента, и соответственно массив из m элементов содержит элементы с индексами 0,1,...,m-1, т.е. массив должен содержать m+1 элемент ( т.е. m=6,n=8,b=10)

также касательно этого куска
C++
1
2
for (i = 0; i < m; i++)
{ X[m] = i; }
по заданию должно быть
C++
1
2
for (i = 0; i < m; i++)
{ X[i] = i; }
BadPumba
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 27
21.03.2014, 16:49  [ТС]     Error C4789: буфер для X, Y, Z - переполнен #3
Насколько я понял, мне и даны массивы начиная с нулевого. Теперь запускается, но пока что бурда все равно. Спасибо

Добавлено через 56 минут
Он не считывает результат переменной d. и выдаются массивы все по 9 значений. не знаю почему.

Добавлено через 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
#include <stdafx.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
void main ()
{
    setlocale(LC_ALL, "rus");
    const int m=5,n=7,b=9;
    double d,f,pr;
    int i,j,k;
    int X[m],Y[n],Z[b];
    
 
for (i = 0; i < m; i++)
{ X[i] = i; }
for ( j = 0; j < n; j++)
{ Y[j] = j; }   
for ( k = 0; k < b; k++)
{Z[k] = k;}
 
cout << X[i];
cout << Y[j];
cout << Z[k];
cout << " \n Введите i,j,k \n ";
cin >> i>>j>>k;
 
pr=1;
    for (j=1; j<7; j++) {
        if (f = (1-j*j) >0,5)
            for (i=0;i<=5;i++)
                d = sin(i)+2;}
        for (j=1; j<7; j++) {
            if (f = (1-j*j) <=0,5)
                 for( k = 0; k < 9; k++) 
                     d = (1-k*k*k);}
            cout << "Результат = \n"<< d;
 
 
system("PAUSE");
}
Добавлено через 35 секунд
всегда выдает -511.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
21.03.2014, 16:53     Error C4789: буфер для X, Y, Z - переполнен #4
А вот мне интересно как это
C++
1
2
3
4
for (j=1; j<7; j++) {
        if (f = (1-j*j) >0,5)
            for (i=0;i<=5;i++)
                d = sin(i)+2;}
должно по вашему отрабатывать (опишите словами), а заодно посмотрите и следующее:
C++
1
2
3
4
        for (j=1; j<7; j++) {
            if (f = (1-j*j) <=0,5)
                 for( k = 0; k < 9; k++) 
                     d = (1-k*k*k);}
BadPumba
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 27
31.03.2014, 19:57  [ТС]     Error C4789: буфер для X, Y, Z - переполнен #5
Предполагал использование элемента j из массива Y для условия, а потом циклом делать произведение. не так ли? Вопрос с неправильной работой все еще актуален!

Добавлено через 2 часа 14 минут
изначально неправильно выводит массив. все имеют 9 элементов.
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
31.03.2014, 20:30     Error C4789: буфер для X, Y, Z - переполнен #6
C++
1
2
3
4
 for (j=1; j<7; j++) {
        if (f = (1-j*j) >0,5)
            for (i=0;i<=5;i++)
                d = sin(i)+2;}
этот кусок присваевает переменной а значение 1-j*j, зетем сравнивает f с 0.5 и если условие верное то вычисляет d = sin(i)+2, в итоге получая d = sin(5)+2, а произведение где? в условии и при выполнении длжно быть по условию задачи произведение


C++
1
2
3
4
5
6
7
8
9
10
double d,f=1,res=1,pr;
...
for ( j = 0; j < n; j++)
f*=1-Y[j]*Y[j];
 
if(f>0.5)
{
for ( j = 0; j < m; j++)
res*=sin(X[i])+2;
}
остальное сделаешь сам

и ещё коечто
если в массиве должно быть 6 элементов то и создавать его нужно под 6 элементов (а в массиве X должно быть 6 элементов от 0 до 5 ), а не под 5,
Цитата Сообщение от BadPumba Посмотреть сообщение
const int m=5
я же вроде писал уже

Цитата Сообщение от kiborgdelto Посмотреть сообщение
в си массив начинается с нулевого элемента, и соответственно массив из m элементов содержит элементы с индексами 0,1,...,m-1, т.е. массив должен содержать m+1 элемент ( т.е. m=6,n=8,b=10)
BadPumba
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 27
31.03.2014, 20:31  [ТС]     Error C4789: буфер для X, Y, Z - переполнен #7
C массивом разобрался. Косячит в формуле.
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
#include <stdafx.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
void main ()
{
    setlocale(LC_ALL, "rus");
    const int m=6,n=8,b=10;
    double d,f,pr;
    int i,j,k;
    int X[m],Y[n],Z[b];
    
for (i = 0; i < m; ++i)
{ X[i] = i;
cout <<  X[i]; }
cout << " - массив X\n";
for ( j = 0; j < n; j++)
{ Y[j] = j; 
cout << Y[j] ;} 
cout << " - массив Y\n";
for ( k = 0; k < b; k++)
{Z[k] = k;
cout << Z[k];}
cout << " - массив Z\n";
cout << "\nВведите i,j,k\n";
cin >>i>>j>>k;
 
 
 
 
pr=1;d=1;f=1;
 for (j=1; j<7; j++) {
        if (f = (1-j*j) >0,5)
            for (i=0;i<=5;i++)
                d = sin(i)+2;}
        for (j=1; j<7; j++) {
            if (f = (1-j*j) <=0,5)
                     d = (1-k*k*k);}
            cout << "Результат = \n"<< d;
 
 
system("PAUSE");
}
Добавлено через 1 минуту
Секунду, не заметил твоего поста. Спасибо.
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
31.03.2014, 20:40     Error C4789: буфер для X, Y, Z - переполнен #8
C++
1
2
3
cout << X[i];
cout << Y[j];
cout << Z[k];
и накой ты выводишь несуществующие элементы?
если хочешь вывести массивы
C++
1
2
3
cout<<"Massiv X\n";
for ( j = 0; j < m; j++) cout<<X[j]<<"\t";
cout<<endl;
а потом вводищь значения перменных, если после этого их всёравно обнуляешь?
C++
1
2
3
cout << " \n Введите i,j,k \n ";
cin >> i>>j>>k;
for (j=1; j<7; j++) {
Добавлено через 6 минут
этот кусок считает условие, в верхнем 6-м не с того индекса начал вычисление
C++
1
2
for ( j = 1; j < n; j++)
f*=1-Y[j]*Y[j];
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
31.03.2014, 20:41     Error C4789: буфер для X, Y, Z - переполнен #9
Цитата Сообщение от kiborgdelto Посмотреть сообщение
этот кусок присваевает переменной а значение 1-j*j, затем сравнивает f с 0.5
Вот в том то и дело, что нет... там не с 0.5 сравнение 0 (а далее идет после запятой 5)....

Но даже если так, то (1-j*j) всегда меньше 0.
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
31.03.2014, 20:47     Error C4789: буфер для X, Y, Z - переполнен #10
вообщето то задание касательно массивов X,Y,Z имелось ввиде что в них 6, 8,10 элементов, а про сами элементы ничего не говарится, они могут быть любыми вещественными, т.е. любоми действительными числами

Добавлено через 1 минуту
и сравнение именно с 0.5, просто вместо десятичной точки использовали запятую, в некоторых случаях это допустимо
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
31.03.2014, 20:54     Error C4789: буфер для X, Y, Z - переполнен #11
Цитата Сообщение от kiborgdelto Посмотреть сообщение
и сравнение именно с 0.5
Сомневаюсь, что Вы правы
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
using namespace std;
 
    int main()
    {
       
      double  m;
        m=0,5; 
        cout << m;
        return 0;
    }
На печать 0 но проект собирается...
BadPumba
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 27
31.03.2014, 21:25  [ТС]     Error C4789: буфер для X, Y, Z - переполнен #12
Теперь полный стопор. создание и распечатка массива в такой форме
C++
1
2
3
4
cout<<"Massiv X\n";
for ( i = 0; i < m; i++) 
{cout<<X[i]<<"\t";
cout<<endl;}
не работает.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
31.03.2014, 21:31     Error C4789: буфер для X, Y, Z - переполнен #13
BadPumba, Вы не давайте кусок, а выкладывайте весь код! Есть подозрение, что какой-нибудь if или for не пропускает
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
31.03.2014, 21:38     Error C4789: буфер для X, Y, Z - переполнен #14
Цитата Сообщение от mustimur Посмотреть сообщение
Сомневаюсь, что Вы правы
в си целая часть от дробной отделяется точкой, но при письме это без разницы (к примеру в книгах можно встретить отделение дробной части и точкой и запятой ), в приведённом задании использовали запятую, иначе задание не верное

Добавлено через 3 минуты
Цитата Сообщение от BadPumba Посмотреть сообщение
не работает.
что именно не работает? ничего не выводит? выводит не то? не так? или что другое?
BadPumba
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 27
31.03.2014, 21:45  [ТС]     Error C4789: буфер для X, Y, Z - переполнен #15
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
#include <stdafx.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
void main ()
{
    setlocale(LC_ALL, "rus");
    const int m=6,n=8,b=10;
    double d=1,f=1,res=1,pr;
    int i,j,k;
    int X[m],Y[n],Z[b];
    
 
cout<<"Massiv X\n";
for ( i = 0; i < m; i++); 
{cout<<X[i]<<"\t";
cout<<endl;}
 
 
    
        
            
cout << "Результат = \n"<< d;
system("PAUSE");
}
Да я пока убрал всё, хочу чтобы он правильно создал и распечатал массив, а дальше уже думать с этой формулой. Ведь массив же должен получаться из рандомных вещественных чисел размером =6 (ну для X)? Извините, если совсем в глупостях ошибки. Совсем недавно в си.

Добавлено через 5 минут
раз вещественные элементы, то
C++
1
int X[m],Y[n],Z[b];
надо перекинуть в дабл, нет?
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
31.03.2014, 21:48     Error C4789: буфер для X, Y, Z - переполнен #16
элементы массива получаются не рандомно а берутся из памяти (а что там лежит чёрт его знает, скорее всего чтото вроде -30342 или чтото подобное)

если нужно рандомное задание элементов то можно задать так,

C++
1
for ( i = 0; i < m; i++); X[i]=(rand()%25-12)/123.;
оператор рандома rand() даёт число в диапозоне от 0 до 32767, причём рандомный массив при каждом запуске программы будет одним и темже, чтобы этого избежать нужно добавить строку
C++
1
srand(time(0));
перед циклом и подключить библиотеку <ctime>

Добавлено через 1 минуту
Цитата Сообщение от BadPumba Посмотреть сообщение
надо перекинуть в дабл, нет?
да, хотя можно воспользоваться float? все зависит сколько знаков после запятой вам надо
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
31.03.2014, 21:49     Error C4789: буфер для X, Y, Z - переполнен #17
Цитата Сообщение от BadPumba Посмотреть сообщение
правильно создал
Вот ошибка:

Цитата Сообщение от BadPumba Посмотреть сообщение
for ( i = 0; i < m; i++);
; - лишняя
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
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL, "rus");
    const int m=6,n=8,b=10;
    double d=1,f=1,res=1,pr;
    int i,j,k;
    int X[m],Y[n],Z[b];
 
    for ( i = 0; i < m; i++) X[i]=i;
    cout<<"Massiv X\n";
 
    for (i = 0; i < m; i++) 
    {
        cout<<X[i]<<"\t";
        cout<<endl;
    }
    cout << "Результат = \n"<< d;
    system("PAUSE");
    return 0;
}
BadPumba
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 27
31.03.2014, 22:18  [ТС]     Error C4789: буфер для X, Y, Z - переполнен #18
mustimur, а если для вещественных в чем ошибка
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
#include <iostream>
#include <math.h>
using namespace std;
 
int main ()
{
    setlocale(LC_ALL, "rus");
    const int m=6,n=8,b=10;
    int i,j,k;
    double d=1,f=1,res=1,pr;
    double X[m],Y[n],Z[b];
     
    
 
        srand(time(0));
         cout<<"Massiv X\n";
    for ( i = 0; i < m; i++); 
    X[i]=rand()%100;
    {
        cout<<X[i]<<"\t";
        cout<<endl;
    }
    cout << "Результат = \n"<< d;
    system("PAUSE");
    return 0;
}
Добавлено через 6 минут
помимо подключения библиотеки stdafx.h

Добавлено через 12 минут
и #include<ctime>
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
31.03.2014, 22:22     Error C4789: буфер для X, Y, Z - переполнен #19
Цитата Сообщение от BadPumba Посмотреть сообщение
for ( i = 0; i < m; i++);
точку с запятой убери

должно быть так
C++
1
2
3
4
5
6
7
8
 srand(time(0));
         cout<<"Massiv X\n";
    for ( i = 0; i < m; i++)
        {
        X[i]=rand()%100;
        cout<<X[i]<<"\t";
        }
cout<<endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 22:27     Error C4789: буфер для X, Y, Z - переполнен
Еще ссылки по теме:

C++ Оптимальный буфер при считывании файла для максимальной производительности
C++ Стек переполнен,
C++ Error LNK1120, error LNK2019, error LNK2028, queue

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

Или воспользуйтесь поиском по форуму:
BadPumba
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 27
31.03.2014, 22:27  [ТС]     Error C4789: буфер для X, Y, Z - переполнен #20
kiborgdelto, Теперь верно, скорее всего.
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
#include <stdafx.h>
#include <iostream>
#include <math.h>
#include <time.h>
#include <ctime>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "rus");
    const int m=6,n=8,b=10;
    int i,j,k;
    double d=1,f=1,res=1,pr;
    double X[m],Y[n],Z[b];
    
    
    srand((unsigned)time(NULL));
    cout<<"Massiv X\n";
    for (i=0; i<m; i++)
    {
        X[i]=rand()%100;
   cout<<X[i]<<"\t"; }
   cout<<endl;
    
    
    
    cout << "Результат = \n"<< d;
    system("PAUSE");
    return 0;
}
Yandex
Объявления
31.03.2014, 22:27     Error C4789: буфер для X, Y, Z - переполнен
Ответ Создать тему
Опции темы

Текущее время: 12:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru