![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 22.09.2007
Сообщений: 6
|
![]()
Здравствуйте!!!
![]() Помогите, пожалуйста, составить программу, которая создаёт одномерный массив, элементы которого собраны в возрастающем порядке из двух начальных массивов: a1<=a2<=...<=a15; b1<=b2<=...<=b25. Но программу надо составить из одной главной и двух внешних функций. Каждая функция должна обрабатывать один и тот же массив, но первая должна реализоваться с помощью переменных, а вторая с помощью указателей. А что значит ошибка ...ISO C++ forbids declaration of `i' with no type ? ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#2 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
![]()
Значит, что тип у переменной должен быть определён.
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 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; }
Бог сделал людей разными, а генерал Кольт уравнял шансы
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 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.) |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 10.09.2007
Сообщений: 105
|
![]()
#include <ctime>
тебе компилятор говорит, что функция random не определена.... да, и первое предупреждение меня смущает, вы в какой среде пытаетесь пример откомпилировать????
Бог сделал людей разными, а генерал Кольт уравнял шансы
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 22.09.2007
Сообщений: 6
|
![]()
Dev-C++ 4.9.9.2. Быть может из-за этого и не работает...
Лучше ли поставить С++ builder 6? Я видел, что он на 2 дисках. Хотя мне надо писать вообще в С, но мне не нравится, потому что он через дос. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 10.09.2007
Сообщений: 105
|
![]()
Конечно, лучше поставить Builder,
там есть возможность писать и на C, и на C++, очень удобная и простая среда. Наверное у вас нет заголовочного файла, в котором определена функция random() (у меня это ctime.h), просто вручную задайте значения массивов, и не подключайте этот заг файл.
Бог сделал людей разными, а генерал Кольт уравнял шансы
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 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(); } |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
дан текстовый массив из 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 |