IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> Помогите исправить программу по одномерным массивам, Turbo C++
Neon6868
сообщение 7.04.2007 15:20
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Одномерный массив, состоящий из n целых элементов, преобразовать таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечётных позициях, а во второй половине - элементы, стоявшие в чётных позициях.

Я прогу написал, но она правильно преобразует только половину массива, а вторую половину она преобразует неправильно, так как после первого преобразования массив изменяется!!!!!Как это можно исправить?????

Вот программа:
# include <iostream.h>
# include <stdlib.h>
  void main()
  {
  const int n=10;
  int i,a[n];
  cout<<"Isxodnii massiv:\n";
  randomize();
  for (i=0;i<n;i++)
	{
	a[i]=random(50)-25;
	cout<<a[i]<<' ';
	}
  int m=0;
  for (i=1;i<n;i+=2)
	{
	a[m]=a[i];
	m+=1;
	}
  for (i=0;i<n;i+=2)
	{
	a[m]=a[i];
	m+=1;
	}
  cout<<"Preobrazovannii massiv:\n";
  for (i=0;i<n;i++)
  cout<<a[i]<<' ';
  }
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.04.2007 15:43
Сообщение #2


Гость






В данном конкретном случае (число элементов четное) - вот так:
#include <iostream.h>
#include <stdlib.h>

int main() {

  const int n=10;
  int i, a[n];

  cout << endl << "Isxodnii massiv:\n";
  randomize();
  for(i = 0;i < n; i++) {
    a[i] = random(50)-25;
    cout << a[i] << " ";
  }

  int T;
  for(i = 0; i < n - 1; i += 2) {
    T = a[i]; a[i] = a[i + 1]; a[i + 1] = T;
  }
  for(int k = 1; k <= n/2; ++k) {
    T = a[k];
    for(i = k + 1; i < n; ++i) a[i - 1] = a[i];
    a[n - 1] = T;

  }
  cout << endl << "Preobrazovannii massiv:\n";
  for(i = 0; i < n; i++) cout << a[i] << " ";
  return 0;
}

 К началу страницы 
+ Ответить 
Neon6868
сообщение 7.04.2007 16:07
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 7.04.2007 16:43) *

В данном конкретном случае (число элементов четное) - вот так:


А что если число элементов нечётное????? blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Neon6868
сообщение 7.04.2007 16:58
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Я сделал с помощью второго массива, но если в массиве нечётное количество элементов, например 11, то в преобразованном массиве выводится последний элемент, равный 1094!!!!! Кто-нибудь знает как исправить это?????

Вот программа:
# include <iostream.h>
# include <stdlib.h>
  void main()
  {
  const int n=11;
  int i,a[n],b[n];
  cout<<endl<<"Isxodnii massiv:\n";
  randomize();
  for (i=0;i<n;i++)
	{
	a[i]=random(50)-25;
	cout<<a[i]<<' ';
	}
  int x,j,m=0;
  for (i=0;i<n/2;++i)
	b[i]=a[2*i+1];
	for (i=0;i<n/2;++i)
	  b[n/2+i]=a[2*i];
  cout<<"Preobrazovannii massiv:\n";
  for (i=0;i<n;i++)
  cout<<b[i]<<' ';
  int imax=0;
  for (i=1;i<n;i++)
	if (b[i]>b[imax]) imax=i;
  cout<<"Nomer maksimalnogo elementa massiva:\n"<<imax;
  }
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.04.2007 17:43
Сообщение #5


Гость






Не ТЫ, а ТЕБЕ сделали...

Я уже ответил тебе на том форуме, сюда копировать не буду...
 К началу страницы 
+ Ответить 
Neon6868
сообщение 7.04.2007 18:42
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 7.04.2007 18:43) *

Я уже ответил тебе на том форуме, сюда копировать не буду...


Прога работает, большое спасибо за помощь! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 18.07.2025 1:48
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"