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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2014, 14:22   #1
svetlan@
Новичок
Джуниор
 
Регистрация: 09.04.2014
Сообщений: 2
По умолчанию переписать программу с Паскаль на С++

Вставить после первого положительного элемента в массиве два элемента, равных заданному значению. Если вставка элементов невозможна, выдать об этом сообщение.
Ребят помогите пожалуйста сделать, заранее спасибо.

const
nmax=100;
var
a: array[1..nmax] of integer;
n,i,ip,k: integer;
f: boolean;
begin
write('Введите размер массива n: ');
readln(n);
f:=true;
writeln('Исходный массив:');
for i:=1 to n do
begin
a[i]:=random(19)-9;
write(a[i]:4);
if (a[i]>0) and f then
begin
ip:=i;
f:=false;
end;
end;
writeln;
if f then writeln('В массиве нет положительных элементов')
else
begin
write('Введите вставляемое число k: ');
readln(k);
for i:=n downto ip do a[i+2]:=a[i];
a[ip+1]:=k;
a[ip+2]:=k;
n:=n+2;
writeln('Полученный массив:');
for i:=1 to n do write(a[i]:4);
end;
readln;
end.
svetlan@ вне форума Ответить с цитированием
Старый 09.04.2014, 14:43   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

А что самостоятельно сделано?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 09.04.2014, 16:35   #3
troyan90
Пользователь
 
Регистрация: 23.06.2011
Сообщений: 54
По умолчанию

Код:
#include "stdafx.h"
#include <vector>
#include <iostream>
#include <cstdlib>
#include <ctime>

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL, "Rus");
	srand(time(0));

	int array_size = 0;

	std::cout << "Введите размер массива: ";
	std::cin >> array_size;

	std::vector<int> array;
	array.resize(array_size);

	for (int i = 0; i < array.size(); i++)
	{
		array[i] = rand() % 2 ? rand() % 20 : -rand() % 20;
		std::cout << array[i] << std::endl;
	}

	bool f = false;

	for (int i = 0; i < array.size(); i++)
	{
		if (array[i] > 0)
		{
			f = true;
			int k;
			std::cout << "Введите вставляемое число: ";
			std::cin >> k;

			array.insert(array.begin() + i + 1, k);
			array.insert(array.begin() + i + 1, k);

			break;
		}
	}

	if (!f)
		std::cout << "В массиве нет положительных элементов." << std::endl;

	std::cout << std::endl;

	for (int i = 0; i < array.size(); i++)
		std::cout << array[i] << std::endl;

	system("pause");
	return 0;
}
troyan90 вне форума Ответить с цитированием
Старый 10.04.2014, 13:29   #4
svetlan@
Новичок
Джуниор
 
Регистрация: 09.04.2014
Сообщений: 2
По умолчанию

Спасибо большое!
svetlan@ вне форума Ответить с цитированием
Старый 10.04.2014, 13:37   #5
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

svetlan@ практически выгнали из аудитории, если она скопипастила ответ. Подумай, прежде чем нести ответ преподу.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 10.04.2014, 14:12   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

а что не нак в ответе.
насколько я вижу, делается именно то, что нужно...

svetlan@ практически выгнали из аудитории

не страшно, её в армию все равно не заберут, так шта... (Ж
Rififi вне форума Ответить с цитированием
Старый 10.04.2014, 14:18   #7
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Да, с нашей точки зрения, все правильно, программа делает то, что в нее запрограммировали. Но на паскале обычный статический массив, в сишном варианте динамический вектор (array_size может быть не совсем равен array.size()) ну и так, по мелочи...
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 10.04.2014 в 14:20.
Krok27 вне форума Ответить с цитированием
Старый 10.04.2014, 14:20   #8
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

только одна такая мааленькая особенность: не знаю как в ваших паскалях, а в C/C++ размер тру-массива не может быть изменен после создания oO
)
Rififi вне форума Ответить с цитированием
Старый 10.04.2014, 14:32   #9
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Цитата:
Сообщение от svetlan@ Посмотреть сообщение
const
nmax=100;
var
a: array[1..nmax] of integer;
Здесь то же нет возможности изменить, с запасом

var a:array of integer; - объявление динамического массива.
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 10.04.2014 в 14:35.
Krok27 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переписать программу с Delphi на C# newresident Фриланс 4 06.05.2013 10:48
Переписать программу с Pascal на С++. Kimi_kun Общие вопросы C/C++ 0 21.12.2011 18:03
переписать программу попроще fasty Помощь студентам 6 20.12.2011 22:54
переписать программу геннадий522 Visual C++ 2 18.12.2011 14:46
переписать программу d0nDi Общие вопросы Delphi 1 06.08.2011 22:55