Форум программистов, компьютерный форум, киберфорум
Наши страницы

Заменить в массиве каждую группу из нечетного количества подряд идущих нулей на один нуль - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ http://www.cyberforum.ru/cpp-beginners/thread66210.html
Помогите решить пару задачек!! Очень надо!!! 1) Даны первые члены и разноть арифметической прогрессии . Написать рекурсивную функцию для нахождения: а) n-го члена прогресии ...
C++ Строки и файлы Написать программу, которая считывает текст из файла и выводит на экран предложения, содержащие максимальное количество знаков пунктуации. помогите плиз!!! послезавтра экзамен а хотелось бы... http://www.cyberforum.ru/cpp-beginners/thread66209.html
C++ Вывести первые а строк треугольника Паскаля
Ввести а. Вывести первые а-строк треугольника Паскаля. Помогите найти ошибку. Добавлено через 15 секунд #include <iostream> using namespace std; int main () { int array; int n, i, j;...
C++ оч срочна нужна блок схема к программе=(
надо написать блок схему к программе - # include <iostream.h> # include <stdio.h> # include <math.h> void main () { file *fp; fp=fopen("test.txt","w"); int n;
C++ БЛОК СХЕМА!!!! http://www.cyberforum.ru/cpp-beginners/thread66198.html
НАРИСОВАТЬ БЛОК СХЕМУ К ПРОГРАММЕ: надо поменять местами рядок в котором есть максимальный элемент с рядком в котором есть минимальный элемент матрицы E(N,M). тип элементов целые;N=4,M=7; ЧИСЛА...
C++ не выводится текст в окне( visual studio 2009. File>new project>win32 application dalee v faile s rashireniem .cpp pishu programmu: #include <iostream> #include <conio.h> using namespace std; int main(void) { cout <<... подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт С++
4681 / 2507 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
24.11.2009, 07:12
Я прокоментирую строки самой замены нулей. Остальное я надеюсь не вызовет у Вас затруднений (если вызовет, обращайтесь.)
Итак сама замена нулей осуществляется в строках 26-49 кода.
Начинаем просмотр элементов массива с начала. Если вдруг встретили нулевой элемент
Цитата Сообщение от valeriikozlov Посмотреть сообщение
if(mas[i]==0)
то переменной j присваиваем значение i (текущий индекс массива). Идем далее, пока очередной элемент массива равен нулю и массив не закончился, увеличиваем J
Цитата Сообщение от valeriikozlov Посмотреть сообщение
while(mas[j]==0 && j<n)
j++;
После того как подряд идущие нули закончились, вычисляем четное их количество или не четное
Цитата Сообщение от valeriikozlov Посмотреть сообщение
if((j-i)%2==1)
Далее, в зависимости от четного или нечетного количества нулей, основной счетчик i увеличиваем на 1 или на 2 (порпускаем один или два нуля).
Затем переписываем все элементы массива, которые идут после нулей, на новые места, начиная с того места куда указывает наш основной счетчик i.
Цитата Сообщение от valeriikozlov Посмотреть сообщение
for(; j<n; j++)
mas[i+j-temp]=mas[j];
И в конце уменьшаем верхнюю границу массива, на количество удаленных нулей.
Цитата Сообщение от valeriikozlov Посмотреть сообщение
n-=(temp-i);
После этого продолжаем те же действия дальше.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru