Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Roman1257
0 / 0 / 0
Регистрация: 06.05.2017
Сообщений: 8
1

Преобразовать последовательность по заданному правилу

29.05.2017, 22:15. Просмотров 937. Ответов 1
Метки нет (Все метки)

Прощу вашей помощи при преобразовании из c++ на си
Даны действительные числа a1, ..., a20. Преобразовать эту последовательность по правилу: большее из двух чисел ai и a10+i (i=1,...,10) принять в качестве нового значения ai, а меньшее – в качестве нового значения a10+i.

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
#include <vector>
#include <algorithm>
 
using namespace std;
 
template <typename T>
T getNextRand(){
return rand()%100 -50;
}
 
template <typename T>
void Task(){
vector<T> m_vec;
for (unsigned i = 0; i<20;++i)
m_vec.push_back(getNextRand<T>());
 
const vector<T>::iterator mid = m_vec.begin() + m_vec.size()/2;
for (vector<T>::iterator left = m_vec.begin(); left != mid; ++left){
const vector<T>::iterator right = left+10;
if (*left < *right)
std::iter_swap(left,right);
}
}
 
void main(int argc, _TCHAR* argv[]){
Task<double>();
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2017, 22:15
Ответы с готовыми решениями:

Сформировать массив по заданному правилу
плиз

Произвести умножение чисел по заданному правилу
C++ дано натуральное число n , действительный числа a1,...an . Вычислить a1*a1, a1*a2,...

Изменить текст в файле по заданному правилу
при условии, что файл file.txt лежит в одной директории с exe файлом текст в файле :&quot;в науке...

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

Получить последовательность по правилу
Даны натуральное число n, действительные числа x(1),.....x(n). Получить (1+r)/(1+s), где r - сумма...

1
anapshy
250 / 232 / 196
Регистрация: 14.11.2016
Сообщений: 873
Завершенные тесты: 3
30.05.2017, 07:57 2
Лучший ответ Сообщение было отмечено Roman1257 как решение

Решение

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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define     SIZE_ARR    20
int getNextRand(void);
void printArray(int *arr, int size);
void Task(void);
int main(void){
    srand(time(0));
    Task();
    return 1;
}
 
int getNextRand(void)
{
    return rand()%100 -50;
}
 
void printArray(int *arr, int size)
{
    int i;
    for (i = 0; i < size; i++)
        printf("%3d ", arr[i]);
    printf("\n");
}
 
void Task(void)
{
    int i, left, right, mid, m_vec[SIZE_ARR] = { 0 };
    for (i = 0; i < SIZE_ARR; ++i)
        m_vec[i] = getNextRand();
    //printArray(m_vec, SIZE_ARR);
    mid = SIZE_ARR/2;
    for (left = 0; left != mid; ++left){
        right = left+10;
        if (m_vec[left] < m_vec[right])
            m_vec[left] += m_vec[right];
            m_vec[right] = m_vec[left] - m_vec[right];
            m_vec[left] -= m_vec[right];
    }
    //printArray(m_vec, SIZE_ARR);
}
Добавлено через 8 минут
Вот с double:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define     SIZE_ARR    20
double getNextRand(void);
void printArray(double *arr, int size);
void Task(void);
int main(void){
    srand(time(0));
    Task();
    return 1;
}
 
double getNextRand(void)
{
    return rand()%100 -50;
}
 
void printArray(double *arr, int size)
{
    int i;
    for (i = 0; i < size; i++)
        printf("%3.1lf ", arr[i]);
    printf("\n");
}
 
void Task(void)
{
    int i, left, right, mid;
    double m_vec[SIZE_ARR] = { 0 };
    for (i = 0; i < SIZE_ARR; ++i)
        m_vec[i] = getNextRand();
    //printArray(m_vec, SIZE_ARR);
    mid = SIZE_ARR/2;
    for (left = 0; left != mid; ++left){
        right = left+10;
        if (m_vec[left] < m_vec[right])
            double tmp = m_vec[left];
            m_vec[left] = m_vec[right];
            m_vec[right] = tmp;
    }
    //printArray(m_vec, SIZE_ARR);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2017, 07:57

Получить последовательность по правилу
Помогите решить пожалуйста!!! Не знаю даже с чего подойти... :help:

Получить последовательность по правилу
Ребят, вот такая задача: даны действ. числа а1,а2,...,аn(n&gt;10). получить последовательность...

Получить последовательность по правилу
Не могу понять задание. Кто сможет, помогите. Если не кодом, хоть объясните само задание. ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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