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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ http://www.cyberforum.ru/cpp-beginners/thread66210.html
Помогите решить пару задачек!! Очень надо!!! 1) Даны первые члены и разноть арифметической прогрессии . Написать рекурсивную функцию для нахождения: а) n-го члена прогресии б)cуммы n первых членов прогрессии. 2) Структура PriseList хранит данные о тоывре : name? count, prise,info,firma Задание: а)Описать пользовательский тип структуры б)...
C++ Строки и файлы Написать программу, которая считывает текст из файла и выводит на экран предложения, содержащие максимальное количество знаков пунктуации. помогите плиз!!! послезавтра экзамен а хотелось бы получить его автоматом благодоря этой задаче))) заранее благодарен!!! http://www.cyberforum.ru/cpp-beginners/thread66209.html
C++ Вывести первые а строк треугольника Паскаля
Ввести а. Вывести первые а-строк треугольника Паскаля. Помогите найти ошибку. Добавлено через 15 секунд #include <iostream> using namespace std; int main () { int array; int n, i, j; cout<<"Input number \n";
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; ЧИСЛА в интервале от -12 до 30!! заранее огромное спасибо!!!!!!
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 << "This is a test\n" ; getch(); подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 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);
После этого продолжаем те же действия дальше.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru