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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2008, 18:20   #1
Kamikadze_666
Пользователь
 
Аватар для Kamikadze_666
 
Регистрация: 11.05.2007
Сообщений: 20
По умолчанию Программа по работе с массивами

Доброго времени суток. Помогите пожалуйста с программой:
Сформировать массив заданного размера из целых случайных чисел, взятых из диапазона [0, 40]. Сформировать новый массив по следующему правилу :первый элемент есть сумма первого и последнего чисел исходного массива, второй элемент есть сумма второго и предпоследнего чисел исходного массива, и так далее. Оба массива вывести на экран.

Пример:
Ввод - 4 2 9 6 7 5 3 8
Вывод - 12 5 14 13

Код:
//---------------------------------------------------------------------------
#pragma hdrstop
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include <vcl.h>
#pragma argsused
// объявляются глобально функции обработки массива
int *memory(int k)
{
int *a;
a=new int[k];
return a;
}

void rnd(int k, int *a, int d)
{
randomize();
for (int i=0; i<k; i++)
{a[i]=random(d);}
}

void vivod(int k, int *a)
// функция выводит элементы массива по пять в строку
{int i,m=0;
for(i=0; i<k; i++)
{printf("%d ", a[i]);m++;
if (m==15){printf("\n"); m=0;}}
printf("\n");}

void destroy(int *a)
{   delete []a;  }

void main(void) //главная функция программы
{int *mas, *nov,
N,     // обозначение размера массива mas
i,      // обозначение номера элемента в mas
j;      // обозначение номера элемента в nov
printf("razmer-? ");
scanf("%i",&N);  //ввод размера для массива mas
mas=memory(N);  //выделение памяти массиву mas
rnd(N, mas, 40);  //заполнение массива mas случайными числами
printf("mas: \n");
vivod(N, mas);  //вывод  массива  mas  на экран
printf("mas: \n");

for (i=0;i=N;i++)
{


}

getch();
destroy(mas);
destroy(nov);
}
//---------------------------------------------------------------------------
Буду очень благодарен!
Kamikadze_666 вне форума Ответить с цитированием
Старый 15.12.2008, 18:49   #2
ivan89
Пользователь
 
Аватар для ivan89
 
Регистрация: 22.09.2008
Сообщений: 59
По умолчанию

Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void genrator(int *mas, int lim)
{
	srand(time(0));
	for(int i=0; i<lim; i++)
      mas[i]=rand()%40;
}
void vivod(int *mas, int lim)
{
	for(int i=0; i<lim; i++)
		cout<<mas[i] <<"  ";
	cout<<endl;
}
int main()
{
      int *a,n,*b,k=0,i=0;
	 cout<<"vvedi kolihestvo:=";
	  cin>>n;
      a=new int[n];
      b=new int[n/2];
	  genrator(a,n);
	  while(k<n/2)
	  {
		  b[k]=a[i]+a[n-i-1];
		  k++;
		  i++;
	  }
	  cout<<"vvod \n";
	  vivod(a,n);
	  cout<<"vivod \n";
	  vivod(b,k);
	  return 0;
}
ivan89 вне форума Ответить с цитированием
Старый 16.12.2008, 18:29   #3
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

ivan89, в этих строчках
Код:
a=new int[n];
b=new int[n/2];
Во первых, если число элементов нечетное, то в массив b не попадет последний элемент, т.к. их должно быть n/2+1
Во вторых, нужно удалять динамически созданные массивы через
Код:
delete [] a;
delete [] b;
StarWorm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа на паскале с одномерными массивами Loga Помощь студентам 27 14.01.2010 11:12
Вопрос по работе с таблицей НД БД golt-andrej БД в Delphi 4 06.10.2008 08:58
Помогите по работе с процедурами... ЕвгениуS Помощь студентам 1 28.05.2008 15:52