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

Получить последовательность по правилу

01.11.2010, 12:14. Просмотров 862. Ответов 10
Метки нет (Все метки)

Даны натуральное число n, действительные числа x(1),.....x(n). Получить (1+r)/(1+s), где r - сумма всех тех членов последовательности x(1),.....x(n), которые не превосходят 1, а s - сумма членов, больших 1.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2010, 12:14
Ответы с готовыми решениями:

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

Получить последовательность по правилу
Даны действительные числа A,A,A,...,A. Получить A+A,A+A,...,A + A. Мои наработки: #include...

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

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

Получить последовательность по правилу
Цель лабораторной работы: получить навыки использования указателей при работе с одномерными и...

10
MILAN
889 / 783 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
01.11.2010, 12:43 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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 <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
 
int main()
{    
     srand((unsigned)time(NULL));
     int n,r=0,s=0;
     int *arr;
     float rez;
     printf("Enter n: ");
     scanf("%d",&n);
     arr = (int*)malloc(n*sizeof(int));
     printf("\nNumbers: ");
     for(int i=0; i<n; i++)
      {
           arr[i]=rand()%9-2;
           printf("%d  ",arr[i]);
           (arr[i]>1) ? s+=arr[i] : r+=arr[i];
      }
     rez=(float)(1+r)/(1+s);
     printf("Result: %.4f",rez);
     free(arr);
   getch();
   return 0;
}
1
KpeHDeJIb
57 / 57 / 5
Регистрация: 31.10.2010
Сообщений: 103
01.11.2010, 12:46 3
Если я правильно понял задачу, то программа будет такая...

PS. Неправильно понял все таки
0
ALEX MART
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 3
01.11.2010, 13:56  [ТС] 4
Не совсем понял несколько строчек у Милана: 8,18,20,24. Если есть возможность, то объясните смысл и как можно заменить их на более простую конструкцию???
0
asics
Freelance
Эксперт С++
2861 / 1796 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
01.11.2010, 14:34 5
8 - инициализация генератора псевдо-случайных положытельных чисел.
18 - заполняем масив случайними числами.
20 - если i-тый елемент масива больше 1 додаём эти элементы и записываем суму в переменную s,иначе записываем суму елементов которые менше 1, в переменную r.
24 - освобождаем память.
0
ALEX MART
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 3
01.11.2010, 16:31  [ТС] 6
8 -
18 -
20 -
24
А можно ли эти строчки заменить самыми простыми конструкциями???
0
KpeHDeJIb
57 / 57 / 5
Регистрация: 31.10.2010
Сообщений: 103
01.11.2010, 18:24 7
Ну раз уж тема изжила себя, немного черной магии

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main()
{
    const unsigned n = 6;
    float s[2] = {1.0f, 1.0f}, x[n] = {-2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f};
 
    for (unsigned i = 0; i < n; ++i)
        (x[i] > 1.0f)[s] += x[i];
 
    printf("Result = %f\n", s[0] / s[1]);
 
    return 0;
}
2
easybudda
Модератор
Эксперт CЭксперт С++
10259 / 6147 / 1547
Регистрация: 25.07.2009
Сообщений: 11,702
01.11.2010, 18:52 8
Цитата Сообщение от KpeHDeJIb Посмотреть сообщение
(x[i] > 1.0f)[s] += x[i];
было дело - ломали голову, где бы эту фишку применить можно было...
1
silent_1991
Эксперт С++
5013 / 3073 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
01.11.2010, 19:50 9
easybudda, KpeHDeJIb, а не объясните, что это значит? Никогда не видел...
0
KpeHDeJIb
57 / 57 / 5
Регистрация: 31.10.2010
Сообщений: 103
01.11.2010, 20:48 10
Цитата Сообщение от silent_1991 Посмотреть сообщение
easybudda, KpeHDeJIb, а не объясните, что это значит? Никогда не видел...
Объясню, от чего не объяснить-то

Дело в том, что в С/С++ array[i] == i[array], потому что array[i] раскрывается в *(array + i), а от перемены мест слагаемых сумма как известно не меняется.

Получается что это все равно что написать: s[x[i] > 1.0f] += x[i]; В данном случае условие ">" дает булевый результат, который преобразуется в целочисленное значение и принимает значения либо 0 либо 1. Таким образом получаем индекс 0 либо 1, в зависимости от условия.
1
silent_1991
Эксперт С++
5013 / 3073 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
01.11.2010, 20:50 11
Чисто логически я так и подумал (ибо массив s состоит из двух элементов, а результат сравнения может быть либо да (1), либо нет (0)), но, тем не менее, мозг не принял равенства array[i] = i[array], потому засомневался))) Спасибо за объяснение!
0
01.11.2010, 20:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2010, 20:50

Если последовательность упорядочена по неубыванию, то оставить ее без изменения, иначе получить последовательность an, an-1, ... , a1
Здравствуйте! Помогите пожалуйста переделать программу под язык Си с Паскаля! Дана...

Преобразовать последовательность по заданному правилу
Прощу вашей помощи при преобразовании из c++ на си Даны действительные числа a1, ..., a20....

Получить матрицу по правилу
Дана квадратичная матрица B порядка m.Получить матрицу (C+B)^3 , где С единичная матрица порядка m....


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

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

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