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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2011, 07:00   #1
D.176
 
Регистрация: 24.03.2011
Сообщений: 9
По умолчанию Найдите ошибку C++

Дан массив с большим количеством нулевых элементов. Заменить в нем каждую группу из нечетного количества подряд идущих нулей на один нуль, а из четного количества - на два
Новый массив не создавать.
Код:
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>

void main () {
const n=18;
int m,j,i,f, a[n];
clrscr();
cout<<"Введите массив:"<<endl;
for (i=0; i<n; i++)
cin>>a[i];
cout<<endl<<"Новый массив:"<<endl;
f=n;
for (i=0; i<n;i++){
if (a[i]==0 ){
 m++;
 if ((a[i+1]==1) || (i == n-1)){
  j=i;
  if (m%2!=0){
   while (j<n-1){
    a[j-m+2]=a[j+1];
    j++;
    }
    f=f-m+1;
    m=0;
   }
   else{
   while (j<n-1){
    a[j-m+3]=a[j+1];
    j++;
    }
    f=f-m+2;
    m=0;
   }
  }
 }
}
 for (i=0; i<f; i++)
  cout<<a[i]<<" ";
getch();
}
При наборе
1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1
выдает
1 0 0 1 0 0 1 0 0 0 1 1 1 1
Но на наборе
1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 1
работает нормально, т. е.
1 0 0 1 1 0 0 1 1 0 1 1
Где ошибка???
D.176 вне форума Ответить с цитированием
Старый 24.05.2011, 07:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А если так:
Код:
...
int k=0;
for(int i=0;i<n;i++){
 if(a[i]!=0) {a[k++]=a[i];} else {
  int e=1;
  for(;a[i]==0;i++) e++;
  if (e%2==0) {a[k++]=0;a[k++]=0;} else {a[k++]=0;}
 }
}
...
А потом выводить от нуля до к
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите ошибку vladxxl Общие вопросы C/C++ 0 26.04.2011 17:01
Найдите ошибку Гиро-Гинор Помощь студентам 2 12.11.2010 23:16
Найдите ошибку *natali* Помощь студентам 3 08.11.2009 17:30
Найдите ошибку! geniy JavaScript, Ajax 4 04.12.2007 16:22