Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите исправить программу по одномерным массивам
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Neon6868
Одномерный массив, состоящий из 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]<<' ';
}
volvo
В данном конкретном случае (число элементов четное) - вот так:
#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
Цитата(volvo @ 7.04.2007 16:43) *

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


А что если число элементов нечётное????? blink.gif
Neon6868
Я сделал с помощью второго массива, но если в массиве нечётное количество элементов, например 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;
}
volvo
Не ТЫ, а ТЕБЕ сделали...

Я уже ответил тебе на том форуме, сюда копировать не буду...
Neon6868
Цитата(volvo @ 7.04.2007 18:43) *

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


Прога работает, большое спасибо за помощь! smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.