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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
BadPumba
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 27
#1

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

20.03.2014, 23:15. Просмотров 1074. Ответов 27
Метки нет (Все метки)

Возможно много ошибок,но попрошу при возможности исправлять их, а не писать новую. Выдает ошибку 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 - переполнен  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2014, 23:15     Error C4789: буфер для X, Y, Z - переполнен
Посмотрите здесь:
C++ Стек переполнен,
Функция для записи в буфер из потока C++
Выделение текста для последующего занесение в буфер обмена C++
C++ Оптимальный буфер при считывании файла для максимальной производительности
Error 1 error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' C++
[ilink32 Error] Error: Unresolved external 'zamena (int * *) ' referenced C++
Причина ошибки [ilink32 Error] Error: Unable to perform link C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 Посмотреть сообщение
не работает.
что именно не работает? ничего не выводит? выводит не то? не так? или что другое?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 21:45     Error C4789: буфер для X, Y, Z - переполнен
Еще ссылки по теме:
C++ Ошибка error C2146: syntax error : missing ';' before identifier 'alph'
C++ Error 1 fatal error C1093: API call 'ImportFile' failed '0x80070003' : ErrorMessage:
error C2664 Исправьте пожалуйста / С++ для начинающих C++
Проверить правильность кода. Вылезает Error 5 error C2679: binary '<<' : no operator found which takes a right C++
Error C2760: синтаксическая ошибка / Fatal error C1004: непредвиденное обнаружение конца файла C++

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

Или воспользуйтесь поиском по форуму:
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];
надо перекинуть в дабл, нет?
Yandex
Объявления
31.03.2014, 21:45     Error C4789: буфер для X, Y, Z - переполнен
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru