Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Manifik
8 / 8 / 1
Регистрация: 13.05.2009
Сообщений: 31
#1

Массивы - C++

13.05.2009, 07:17. Просмотров 625. Ответов 7
Метки нет (Все метки)

Вариант 7. В одномерном массиве, состоящем из n вещественных элементов,
вычислить:

1) номер максимального элемента массива;

2)произведение элементов массива, расположенных между первым и вторым
нулевыми элементами.

Преобразовать массив таким образом, чтобы в первой половине
располагались элементы, состоящие в нечетных позициях, а во второй половине -
элементы, состоящие в четных позициях.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2009, 07:17     Массивы
Посмотрите здесь:

Даны массивы а и b. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=bi, bi= -ai - Pascal
Даны массивы а и b, состоящие из n-элементов каждый. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=bi, bi=...

Упорядочить массивы по по убыванию, потом соединить массивы в один упорядоченный массив - C (СИ)
Начала писать, запуталась Даны два одномерных массива состоящие из 10 целых чисел. Упорядочить массивы по по убыванию, потом соединить...

Даны массивы A(8), F(8),Q(8). Сформировать массивы С(8), каждый элемент которого вычисляется по формуле - Pascal ABC
uses crt; type mas=array of integer; var A,F,Q,C:mas; i,s:integer; begin clrscr; writeln('Массив первый:'); for i:=1...

Табулирование функции и поиск данных. Одномерные массивы. Двумерные массивы - C#
Вычислить сумму первых четырех отрицательных элементов. В соответствии с п. 5.16 правил "Запрещено создавать темы с множеством...

Массивы. Циклические алгоритмы (Заполнить массивы случайными числами, лежащими в интервале 0 до 100) - C++
Доброго дня, уважаемые форумчане, помогите пожалуйста решить задание. Заполнить массивы случайными числами, лежащими в интервале 0 до...

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц) - C++
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой многоугольник местонахождением соответствующего элемента aij (см....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
13.05.2009, 08:43     Массивы #2
1.
Код
int max_index(double * arr,int n) {
     int k=0;
     for(i=1;i<n;i++) 
          if(arr[i]>arr[k]) k=i;
    return k;
};
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
13.05.2009, 08:51     Массивы #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <locale>
#include <algorithm>
#include <numeric>
#include <iterator>
#include <iostream>
#include <stdexcept>
 
// номер максимального элемента массива
template <typename T, const size_t N>
typename std::iterator_traits<T>::difference_type
max_index(const T (&arr)[N])
{
    return std::distance(arr, std::max_element(arr, arr+N));
}
 
/* произведение элементов массива, расположенных между первым и вторым
нулевыми элементами 
*/
template <typename T, const size_t N>
long mul(const T (&arr)[N])
{
    if (std::count(arr, arr+N, T(0)) < 2)
        throw std::runtime_error("Маловато нулей, насяльника!");
    const int* first = std::find(arr, arr+N, 0);
    const int* second = std::find(first+1, arr+N, 0);
    return std::accumulate(first+1, second, T(1), std::multiplies<T>());
}
 
template <typename T>
struct position : public std::unary_function<T, bool>
{
    position() : pos_(0) {}
    bool operator()(const T&) { return pos_ ++ & 1; }
    typename std::iterator_traits<T>::distance_type pos_;
};
 
/* Преобразовать массив таким образом, чтобы в первой половине
располагались элементы, состоящие в нечетных позициях, а во второй половине - элементы, состоящие в четных позициях.
*/
template <typename T, const size_t N>
T (&reorder(T (&arr)[N]))[N]
{
    std::stable_partition(arr, arr+N, position<T>());
    return arr;
}
 
template <typename T, const size_t N,
    typename _E, typename _Tr,
    template <typename, typename> class OS>
static OS<_E, _Tr>& operator << (OS<_E, _Tr>& os, const T (&arr)[N])
{
    const _E sep[] = { _E(' '), 0 };
    std::copy(arr, arr+N, std::ostream_iterator<T>(os, sep));
    return os;
}
 
int main()
{
    int arr[] = { 1, 0, 3, -1, 8, -6, 0, 2, 5};
 
    setlocale (LC_ALL, ".1251");
 
    std::cout << "Исходный массив: " << arr << std::endl;
    std::cout << "Номер максимального элемента: " << max_index(arr) << std::endl;
    std::cout << "Произведение элементов: " << mul(arr) << std::endl;
    std::cout << "Преобразованный массив: " << reorder(arr) << std::endl;
 
    return 0;
}
Вывод:
Исходный массив: 1 0 3 -1 8 -6 0 2 5
Номер максимального элемента: 4
Произведение элементов: 144
Преобразованный массив: 0 -1 -6 2 1 3 8 0 5
Manifik
8 / 8 / 1
Регистрация: 13.05.2009
Сообщений: 31
13.05.2009, 09:29  [ТС]     Массивы #4
ого, как сложно все, ладно разберусь =) хотелось бы конечно через printf, scanf, а не cout и cin >> <<
просто такую заумную не примут, да и из библиотек мы проходили только <stdio.h> <iostream.h> <conio.h> <math.h> <stdlib.h> <dos.h> ((


И всё же очень благодарно, спасибо огромное =)
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
13.05.2009, 09:42     Массивы #5
Вот... брутально, но коротко.

Код C++1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include <iostream> using namespace std; int main() { const int N=8; //размер массива float A[N]={1.1f,1.2f,0.0f,1.3f,1.4f,0.0f,2.7f,1.5f}; //собственно он сам /*---(1)---*/ int ID_MAX=0; //номер максимального по значению элемента. for (int I=1; I<N; I++){if(A[i]>A[ID_MAX]){ID_MAX=I;};}; //курим массив cout<<"ID_MAX = "<<ID_MAX<<endl; //выдыхаем /*---(2)---*/ int ID1=0; //номера первого нуля for(int I=ID1; I<N; I++){if(A[i]==0.0f){ID1=I; break;};} //ищем первый ноль int ID2=ID1+1; //номера второго нуля for(int I=ID2; I<N; I++){if(A[i]==0.0f){ID2=I; break;};} //ищем второй ноль float Factum=1; //произведение... for(int I=ID1+1; I<ID2; I++){Factum*=A[i];}; //Мйасо! cout<<"Factum = "<<Factum<<endl; //едим /*---(3)---*/ float B[N]; //новый "собственно он сам" int C=0; //ам... число! for(int I=0; I<N; I=I+2){B[c]=A[i]; C++;}; //курим в сторонке... слева for(int I=1; I<N; I=I+2){B[c]=A[i]; C++;}; //теперь справа cout<<B[0]; for(int I=1; I<N; I++){cout<<", "<<B[i];}; //тушим окурок. cin.get(); //нажми ENTER }
Добавлено через 3 минуты 30 секунд
Rififi
А с шаблонами и правда короче
Manifik
8 / 8 / 1
Регистрация: 13.05.2009
Сообщений: 31
13.05.2009, 09:47  [ТС]     Массивы #6
я не курю =)
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
13.05.2009, 09:54     Массивы #7
я не курю =)
тогда накати
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2009, 10:08     Массивы
Еще ссылки по теме:

Файлы. Компоненты - массивы чисел. Переформировать файл, где сначала идут массивы с положительными макс. элементами - Turbo Pascal
Здравствуйте!! я пишу такую задачу: нужно написать две программы, одна из них создает файл, где компоненты - массивы вещ. чисел; ...

Многомерные массивы, как перебирать внутренние массивы - C++
Здравствуйте. Такой учебный код и плохо понимаю как перебираются внутренние массивы, может кто пояснит подоходчивее. Именно внутренний...

Попадание точки. Массивы чисел. Массивы записей. - C++
Всем привет. По языкам задали три контрольные на си. Я сам си не знаю, даже не представляю, поэтому очень нужна ваша помощь. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
13.05.2009, 10:08     Массивы #8
я тоже ...
пускай ком курит...
Yandex
Объявления
13.05.2009, 10:08     Массивы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru