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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Задача на одномерные массивы =(, C++
сообщение
Сообщение #1


Новичок
*

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

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


Задача:
Даны две последовательности a1 ≤ a2 ≤ ... ≤ аn и b1 ≤ b2 ≤ ... ≤ bn. Образовать из них новую последовательность чисел так, чтобы она тоже была неубывающей (дополнительный массив не использовать).
Я придумал следующий алгоритм:
Берем элемент массива Б(i) и сравниваем его со всеми элементами массива А. Если этот элемент больше или равен какому-либо элементу массива А(j) и меньше следующего в массиве А(J+1), то добавляем его после j и перед j+1 в массив А.
Получилась такая программа но при компиляции происходит либо ошибка памяти либо просто закрывается компилятор (Borland C++ 4.1). Подскажите плз ошибки в коде\алгоритме. При просмотре через дебаггер видно что в массив элементы дописываются не каждый раз.
Получившаяся программа:

 #include <iostream.h>
#include <conio.h>

int *fill(int* a, char nam, int* n)
{
int i;
cout << "\nEnter size of array " << nam << ": ";
cin >>*n;
for (i=0;i<=*n-1;i++)
{
cout << "\nEnter " << i+1 << " elem. of array:";
cin >> a[i];
}
return a,n;
}

int *work(int* a, int* sa, int* b, int* sb)
{
int m,n,t=0,sat;
for (n=0;n<=*sb-1;n++)
{
for (m=0;m<=*sa;m++)
{
if (a[m]<=b[n]) \\ Вопрос: Как эти два выражения совместить в одно?
{
if (a[m+1]>b[n])
{
for (t=*sa;t>=m+1;t--)
{
a[t+1]=a[t];
}
a[t]=b[n];
sa=sa+1;
}
}
}
}
return a,sa;
}




void main ()
{
clrscr();
int i,aa[20],ab[10],*sia,*sib;
fill(aa,'A',sia);

fill(ab,'B',sib);
work(aa,sia,ab,sib);
for (i=1;i<=*sia;i++)
{
cout << aa[i] <<" ";
}
getch();
}


Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
сообщение
Сообщение #2


Гость






Попробуй вот так (это твой же алгоритм, но моя реализация):

#include <iostream.h>
#include <conio.h>

void fill(int *a, char nam, int &n) {

cout << "\nEnter size of array " << nam << ": ";
cin >> n;
for(int i = 0; i < n; i++) {
cout << "\nEnter " << i+1 << " elem. of array:";
cin >> a[i];
}
}

void work(int *a, int &sa, int *b, int &sb) {

for(int j = 0; j < sb; j++) {
for(int i = 0; a[i] <= b[j]; i++);
for(int k = sa; k > i; k--) a[k] = a[k - 1];
a[i] = b[j]; sa += 1;
}

}


int main() {

clrscr();
int aa[20], ab[10], sia, sib;

fill(aa,'A',sia);
fill(ab,'B',sib);
work(aa,sia,ab,sib);

for(int i = 0; i < sia; i++)
cout << aa[i] << " ";
cout << endl;

getch();
return 0;
}

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


Новичок
*

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

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


Спасибо большое!

Сообщение отредактировано: Дмитрий -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 16.04.2024 20:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name