IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Помогите найти ошибку, C++
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


У меня есть массив: mas=21213140404040. Хочу получить из него следующий массив: m1= 223140. Счётчик "cnt" не инкрементируется. В чём причина?
 #include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
char mas[16];

void ToDisplay()
{ char m[16],m1[8];
int cnt=0, b= 0, x,i,j=0;

for (i=0; i<16; i++)
m[i]=(int)mas[i];

for (i=0; i<16; i+=2)
{

x=(int)m[i];

while(j<16)
{
cout<<x<<endl;
cout<<(int)m[j]<<endl;
cout<<(int)m[j+1]<<endl;
if ((m[j]==x)&&(m[j+1]==1))
{
cnt++; // <--- !!!
cout<<"Cnt = "<<cnt<<endl;
break;
}

j+=2;
}

m1[b]=x;
m1[b+1]=cnt;
b+=2;
cnt=0;
}

for (i=0; i<8; i++)
{
cout<<(int)m1[i]<<" ";
}
cout<<endl;

getch();

}

int main()
{
mas[0]=2;
mas[1]=1;
mas[2]=2;
mas[3]=1;
mas[4]=3;
mas[5]=1;
mas[6]=3;
mas[7]=0;
mas[8]=4;
mas[9]=0;
mas[10]=4;
mas[11]=0;
mas[12]=4;
mas[13]=0;
mas[14]=4;
mas[15]=0;

for(int i=0;i<16;i++)
{
cout<<(int)mas[i]<<" ";
}
cout<<endl;

ToDisplay();
getch();
}

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Все увеличивается, до тех пор, как
       while(j<16)
{
cout<<x<<endl;
cout<<(int)m[j]<<endl;
cout<<(int)m[j+1]<<endl;
if ((m[j]==x)&&(m[j+1]==1))
{
cnt++;
cout<<"Cnt = "<<cnt<<endl;
break;
}

j+=2;
}

m1[b]=x; // <--- Здесь b = 8, и все остальное уже неважно -
m1[b+1]=cnt;
b+=2;
cnt=0;
}
, поскольку
Цитата
19/10/2008 21:26:21 started a CodeGuard™ process: Project1.exe
Access overrun in process: Project1.exe(2084) - File1.cpp
Attempt to access 1 byte(s) at 0x0012FF60+8, that is at offset 0+8 in local block 0x0012FF60(=[ebp-0x14]
@Project1.exe:0x01:00035B) which is only 8 bytes long.


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(volvo @ 19.10.2008 23:22) *

Все увеличивается, до тех пор, как
       while(j<16)
{
cout<<x<<endl;
cout<<(int)m[j]<<endl;
cout<<(int)m[j+1]<<endl;
if ((m[j]==x)&&(m[j+1]==1))
{
cnt++;
cout<<"Cnt = "<<cnt<<endl;
break;
}

j+=2;
}

m1[b]=x; // <--- Здесь b = 8, и все остальное уже неважно -
m1[b+1]=cnt;
b+=2;
cnt=0;
}
, поскольку

А как это исправить?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 18:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name