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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2007, 23:59   #1
Scudetto
 
Регистрация: 22.09.2007
Сообщений: 6
По умолчанию одномерный массив, элементы которого собраны в возрастающем порядке из двух начальных массивов

Здравствуйте!!!
Помогите, пожалуйста, составить программу, которая создаёт одномерный массив, элементы которого собраны в возрастающем порядке из двух начальных массивов:
a1<=a2<=...<=a15;
b1<=b2<=...<=b25.
Но программу надо составить из одной главной и двух внешних функций. Каждая функция должна обрабатывать один и тот же массив, но первая должна реализоваться с помощью переменных, а вторая с помощью указателей.

А что значит ошибка ...ISO C++ forbids declaration of `i' with no type ?
Scudetto вне форума Ответить с цитированием
Старый 23.09.2007, 01:27   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от Scudetto Посмотреть сообщение
А что значит ошибка ...ISO C++ forbids declaration of `i' with no type ?
Значит, что тип у переменной должен быть определён.
Carbon вне форума Ответить с цитированием
Старый 28.09.2007, 10:51   #3
studenth
Форумчанин
 
Регистрация: 10.09.2007
Сообщений: 105
По умолчанию

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

#include <ctime>
#include <iostream.h>
#include <windows.h>
int size = 10; //переменная хранит размер массива
int* func_1(int*a, int*b); //функция принимает указатели на два массива и сваливает все в один
int main(int argc, char* argv[])
{
SetConsoleOutputCP(1251);
int *mas = new int[size];
//заполняем созданный массив значениями
//от -100 до 100
for(int i=0; i<size; i++)
mas[i] = random(100)-100;
int *mas2 = new int[size];
//заполняем второй массив
for(int i=0; i<size; i++)
mas2[i] = random(100)-100;
//выполняем функцию,
//передаем в нее два указателя,
//она дергает элементы, по адресам двух массивов
//и возвращает указатель на новый массив
int *new_mas = func_1(mas, mas2);
// выводим на экран содержимое всех массивов
cout<<"Массив mas: ";
for(int i=0; i<size; i++) cout<<mas[i]<<"; ";
cout<<"\nМассив mas2: ";
for(int i=0; i<size; i++) cout<<mas2[i]<<"; ";
cout<<"\nНовый массив: ";
//и выводим наш массив, в котором расположились эти оба.
for(int i=0; i<size*2; i++) cout<<new_mas[i]<<"; ";
cout<<endl<<endl;
system("pause");
return 0;
}
//---------------------------------------------------------------------------
int* func_1(int *a, int *b){
byte j = 0;
int *new_mas = new int[size*2]; //новый массив на 20 элем
//помещаем в него элементы обоих массивов
for(int i=0; i<size; i++) new_mas[i] = a[i];
for(int i=10; i<size*2; i++)
{
new_mas[i] = b[j];
j++;
}
return new_mas;
}
Бог сделал людей разными, а генерал Кольт уравнял шансы
studenth вне форума Ответить с цитированием
Старый 04.10.2007, 23:32   #4
Scudetto
 
Регистрация: 22.09.2007
Сообщений: 6
По умолчанию

Спасибо, но почему-то при компиляции возникают 2 ошибки...

D:/Programms/Dev-Cpp/include/c++/3.4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

In function `int main(int, char**)':
13: error: `random' undeclared (first use this function)
13: error: (Each undeclared identifier is reported only once for each function it appears in.)
Scudetto вне форума Ответить с цитированием
Старый 06.10.2007, 13:08   #5
studenth
Форумчанин
 
Регистрация: 10.09.2007
Сообщений: 105
По умолчанию

#include <ctime>
тебе компилятор говорит, что функция random не определена....

да, и первое предупреждение меня смущает,
вы в какой среде пытаетесь пример откомпилировать????
Бог сделал людей разными, а генерал Кольт уравнял шансы
studenth вне форума Ответить с цитированием
Старый 06.10.2007, 23:46   #6
Scudetto
 
Регистрация: 22.09.2007
Сообщений: 6
По умолчанию

Dev-C++ 4.9.9.2. Быть может из-за этого и не работает...
Лучше ли поставить С++ builder 6? Я видел, что он на 2 дисках. Хотя мне надо писать вообще в С, но мне не нравится, потому что он через дос.
Scudetto вне форума Ответить с цитированием
Старый 07.10.2007, 05:26   #7
studenth
Форумчанин
 
Регистрация: 10.09.2007
Сообщений: 105
По умолчанию

Конечно, лучше поставить Builder,
там есть возможность писать и на C, и на C++,
очень удобная и простая среда.

Наверное у вас нет заголовочного файла, в котором определена функция random() (у меня это ctime.h), просто вручную задайте значения массивов, и не подключайте этот заг файл.
Бог сделал людей разными, а генерал Кольт уравнял шансы
studenth вне форума Ответить с цитированием
Старый 21.10.2007, 20:46   #8
Scudetto
 
Регистрация: 22.09.2007
Сообщений: 6
По умолчанию

Вот код, я немогу понять, почему невыполняется сортировка, ведь я её вроде правильно вызываю. Подскажите, пожалуйста, как надо было делать?!

#include <ctime>
#include <iostream.h>
#include <windows.h>
#include <conio.h>
//------Сортировка
void sort(int A[], int n){
int i,found; // Количество сравнений
do { // Повторять просмотр...
found =0;
for (i=0; i<n-1; i++)
if (A[i] > A[i+1]) { // Сравнить соседей
int cc = A[i]; A[i]=A[i+1]; A[i+1]=cc;
found++; // Переставить соседей
}
} while(found !=0); }
int size1 = 15,size2=25,size3=size1+size2,i; //переменная хранит размер массива
int* func_1(int*a, int*b); //функция принимает указатели на два массива и сваливает все в один
int main(int argc, char* argv[])
{
SetConsoleOutputCP(1251);
int *mas = new int[size1];
//заполняем созданный массив значениями
//от -100 до 100
for(int i=0; i<size1; i++)
*(mas+i)=rand()%size1+1;
//mas[i] = rand()%size+1;
int *mas2 = new int[size2];
//заполняем второй массив
for(int i=0; i<size2; i++)
mas2[i] = rand()%size2+1;
//выполняем функцию,
//передаем в нее два указателя,
//она дергает элементы, по адресам двух массивов
//и возвращает указатель на новый массив
int *new_mas = func_1(mas, mas2);
// выводим на экран содержимое всех массивов
cout<<"Massive 1: ";
for(int i=0; i<size1; i++) cout<<mas[i]<<"; ";
cout<<"\nMassive 2: ";
for(int i=0; i<size2; i++) cout<<mas2[i]<<"; ";
cout<<"\nNu Massive: ";
//и выводим наш массив, в котором расположились эти оба.
for(int i=0; i<size3; i++) cout<<new_mas[i]<<"; ";
cout<<endl<<endl;
system("pause");
return 0;
}

int* func_1(int *a, int *b){
byte j = 0;
int *new_mas = new int[size3]; //новый массив на 40 элем
//помещаем в него элементы обоих массивов
for(int i=0; i<size1; i++) new_mas[i] = a[i];
for(int i=10; i<size3; i++)
{
new_mas[i] = b[j];
j++;
for(int i=0; i<40; i++); //new_mas[size3]=a[size1]+b[size2];
int n=sizeof(new_mas)/sizeof(int);
sort(new_mas,n);
}
return new_mas;getch();
}
Scudetto вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дан текстовый массив из 200 букв. Выстроить в алфавитном порядке все строчные буквы Тина Помощь студентам 6 02.07.2008 22:53
из двух заданных массивов В и С одинаковой длины построить новый массив Absent Помощь студентам 4 11.03.2008 21:38
Выбрать из двух массивов совпадение. *Иван* Microsoft Office Excel 7 22.11.2007 21:10
как из двух отсортированных по возрастанию одномерных массивов сформировать третий Тоха Рыжов Общие вопросы C/C++ 1 07.10.2007 01:43
Как сравнить элементы 2 массивов между собой? DragonionS Общие вопросы Delphi 1 01.07.2007 21:49