Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 3
1

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

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

Author24 — интернет-сервис помощи студентам
Даны натуральное число n, действительные числа x(1),.....x(n). Получить (1+r)/(1+s), где r - сумма всех тех членов последовательности x(1),.....x(n), которые не превосходят 1, а s - сумма членов, больших 1.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2010, 12:14
Ответы с готовыми решениями:

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

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

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

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

10
899 / 793 / 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
57 / 57 / 5
Регистрация: 31.10.2010
Сообщений: 103
01.11.2010, 12:46 3
Если я правильно понял задачу, то программа будет такая...

PS. Неправильно понял все таки
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 3
01.11.2010, 13:56  [ТС] 4
Не совсем понял несколько строчек у Милана: 8,18,20,24. Если есть возможность, то объясните смысл и как можно заменить их на более простую конструкцию???
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
01.11.2010, 14:34 5
8 - инициализация генератора псевдо-случайных положытельных чисел.
18 - заполняем масив случайними числами.
20 - если i-тый елемент масива больше 1 додаём эти элементы и записываем суму в переменную s,иначе записываем суму елементов которые менше 1, в переменную r.
24 - освобождаем память.
0
0 / 0 / 0
Регистрация: 01.11.2010
Сообщений: 3
01.11.2010, 16:31  [ТС] 6
8 -
18 -
20 -
24
А можно ли эти строчки заменить самыми простыми конструкциями???
0
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
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
01.11.2010, 18:52 8
Цитата Сообщение от KpeHDeJIb Посмотреть сообщение
(x[i] > 1.0f)[s] += x[i];
было дело - ломали голову, где бы эту фишку применить можно было...
1
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.11.2010, 19:50 9
easybudda, KpeHDeJIb, а не объясните, что это значит? Никогда не видел...
0
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
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.11.2010, 20:50 11
Чисто логически я так и подумал (ибо массив s состоит из двух элементов, а результат сравнения может быть либо да (1), либо нет (0)), но, тем не менее, мозг не принял равенства array[i] = i[array], потому засомневался))) Спасибо за объяснение!
0
01.11.2010, 20:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2010, 20:50
Помогаю со студенческими работами здесь

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

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

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

Сформировать новую последовательность по заданному правилу
В файле input находится такая последовательность 2 4 3 2 88 65 99 87 98 97 96, он должен вывести 3...

Получить последовательность по правилу
дана матрица А разностью m*n. получить новую последовательность, где каждый элемент получается как...

Получить последовательность по правилу
Получить последовательность dk, dk-1, ..., d0 десятичных цифр числа 100!-2^100, , т. е. такую...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru