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

Использование формулы арифметической прогрессии

10.12.2010, 22:21. Просмотров 998. Ответов 9
Метки нет (Все метки)

Поиском пользовалась, нашла много топиков на тему арифметической прогресси, но ничего конкретного по моему вопросу.
Воспользовавшись формулой арифметической прогрессии ( "Sn = (a1+an)*n/2") , я попробовала посчитать сумму первых N чисел не превышающих числа "a", которое было вписано в файл с именем "input".
Далее результат я вывела в файл с именем output .
Формула отлично работает для чётных чисел, тоесть которые без труда делятся на 2 . Но если числом является например 3, то программа уже выдаёт неверные результаты.
Формула выше немного странная, и это так, но она работает чаще, чем допустим эта: http://www.math.ru/dic/16
Сумма первых n членов арифметической прогрессии равна полусумме первого и n-го ее членов, умноженной на число членов n, т.е..
Тоесть s = ((1 + 2) / 2) * 2
Опять та же проблема - считает только если сумма в скобках чётная и делится нацело на два.
Применение типов в плавающей запятой нисколько не помогло. Что я понимаю не так?
Вот текст моей программки:
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int a,s,i;
 
int main() {
    freopen("input","r",stdin);
    freopen("output","w",stdout);
    scanf("%d", &a);
        s = ((1 + a) / 2) * a;
    printf("%d", s);
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2010, 22:21
Ответы с готовыми решениями:

Дан первый член и разность арифметической прогрессии, найти член прогрессии с номером n
Дан первый член и разность арифметической прогрессии найти член прогрессии с номером n используя...

Разность арифметической прогрессии
Здравствуйте уважаемые форумчане. Начал учиться программированию на языке &quot;cи&quot;, и хотелось бы не...

Вычислить N первых членов арифметической прогрессии
можно подробно пожалуйста, очень хотелось бы понять действия

Рекурсия для n-го члена арифметической прогрессии
Нужно написать программу с помощью рекурсии, но я, прочитав кучу информации, так и не понял, как...

Найти сумму членов арифметической прогрессии
найти членов арифметической прогрессии a,a+b,..., a+(n+1)d.Помогите с задачей я набрасал кодов,но...

9
Monkey_2
35 / 35 / 9
Регистрация: 11.02.2009
Сообщений: 84
10.12.2010, 22:34 2
Цитата Сообщение от s.kristina Посмотреть сообщение
int a,s,i;


Цитата Сообщение от s.kristina Посмотреть сообщение
s = ((1 + a) / 2) * a;
к целочислиному типу присвоить дробное число, поминять тип на float
0
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10297 / 6179 / 1555
Регистрация: 25.07.2009
Сообщений: 11,762
10.12.2010, 23:10 3
Цитата Сообщение от s.kristina Посмотреть сообщение
Опять та же проблема - считает только если сумма в скобках чётная и делится нацело на два.
Не хотелось бы Вас расстраивать, но математика - это точно не ваше!
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main(void){
    int last;
    
    while ( printf("Last number: ") && scanf("%d", &last) == 1 && last > 0 )
        printf("Sum: %d\n", (1 + last) * last / 2);
    
    return 0;
}
Использование формулы арифметической прогрессии
0
s.kristina
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 6
10.12.2010, 23:31  [ТС] 4
Большое спасибо за ответ.
Результаты выводит верные. Но почему-то сайт: не хочет принимать программу. Пишет что неверный ответ.
Вот текст моей новой программы:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int a, i;
float s;
 
int main() {
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    scanf("%d", &a);
        s = (1 + a) * a / 2;
    i = s;
    printf("%d", i);
    return 0;
}
0
10.12.2010, 23:31
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10297 / 6179 / 1555
Регистрация: 25.07.2009
Сообщений: 11,762
10.12.2010, 23:59 5
Цитата Сообщение от s.kristina Посмотреть сообщение
Но почему-то сайт: не хочет принимать программу
Возьмите машинку счётную и сами пересчитайте - всё в моей програмке правильно. Честно говоря, в такой программе ошибок наделать - это ещё ухитриться надо!

Добавлено через 5 минут
Цитата Сообщение от s.kristina Посмотреть сообщение
float s;
Вот это зачем вообще?! Говорю же - математику учите! Если х - чётное число, х + 1 будет нечётным, и наоборот, при нечётном х число х + 1 будет чётным. В любом случае нечётное число умножается на чётное. А при умножении чётного или нечётного числа на чётное всегда(!!!) получается чётное число, то есть по определению делящееся на два. Это, если не ошибаюсь, классе в третьем проходят. Да ладно, хоть списали бы правильно...
0
valeriikozlov
Эксперт С++
4691 / 2517 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
11.12.2010, 00:53 6
Результаты выводит верные. Но почему-то сайт: не хочет принимать программу.
s.kristina, А Вас не смущает что в задании написано:
В единственной строке входного файла INPUT.TXT записано единственное целое число N, не превышающее по абсолютной величине 104.
Ведь подрузамевается что N может быть и отрицательным числом.
0
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10297 / 6179 / 1555
Регистрация: 25.07.2009
Сообщений: 11,762
11.12.2010, 01:19 7
valeriikozlov, на самом деле непонятно, зачем это написано. Собственно значение числа - оно же порядковый номер последнего элемента последовательности. В противном случае нужно ещё и уравнение какое-нибудь. Ну или ухитриться создать последовательность из минус ста четырёх элементов. Прям виртуальная антиматерия какая-то...
0
valeriikozlov
Эксперт С++
4691 / 2517 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
11.12.2010, 08:06 8
easybudda, нормальное задание:
Требуется посчитать сумму целых чисел от 1 до N.
Входные данные
В единственной строке входного файла INPUT.TXT записано единственное целое число N, не превышающее по абсолютной величине 10^4.
Т.е. если N=4, то сумма будет такой: 1+2+3+4
А если N=-4, то сумма будет такой: 1+0+(-1)+(-2)+(-3)+(-4)
0
s.kristina
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 6
11.12.2010, 09:51  [ТС] 9
Система упорно не хочет принимать никаких моих решений.
Вот одно из последних, которое выдаёт только верные результаты.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int a, i, s;
 
int main() {
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    scanf("%d", &a);
        if (a > 0)
            s = ((a-(a-1)) + a) * a / 2;
        else if (a < 0) {
            a = -a;
            s = ((a-(a-1)) + a) * a / 2;
            s = -s;
                }
    printf("%d", s);
    return 0;
}
ЧТО НЕ ТАК?! Я не правильно считаю сумму отрицательных чисел арифметической прогрессии?
0
valeriikozlov
Эксперт С++
4691 / 2517 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
11.12.2010, 10:56 10
Цитата Сообщение от s.kristina Посмотреть сообщение
ЧТО НЕ ТАК?! Я не правильно считаю сумму отрицательных чисел арифметической прогрессии?
Сумму отрицательных чисел Вы считаете правильно, но не учитываете что к этой сумме нужно прибавить еще положительную 1.
Цитата Сообщение от valeriikozlov Посмотреть сообщение
А если N=-4, то сумма будет такой: 1+0+(-1)+(-2)+(-3)+(-4)
А у Вас что выдает при N==-4 ?
0
11.12.2010, 10:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2010, 10:56

Сумма первых членов арифметической прогрессии ( Рекурсия )
Геометрической* Даны первый член и знаменатель геометрической прогрессии. Написать рекурсивную ф-ю...

Вывести первые 10 членов арифметической прогрессии Аi=Аi-1 + B на экран
Задача 1: Вывести первые 10 членов арифметической прогрессии Аi=Аi-1 + B на экран. Пользователь...

Реализовать алгоритм, вычисляющий N первых членов арифметической прогрессии
Реализовать алгоритм,вычисляющий N первых членов арифметической прогрессии. Вычисления прекращаются...


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

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

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