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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.87
datileo
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 7
#1

Посчитать сумму целых чисел в заданном диапазоне - C++

30.04.2012, 05:18. Просмотров 6344. Ответов 16
Метки нет (Все метки)

Решала задачу на ********, а при отправке выдает: Wrong answer, в чем проблема?? у меня лично все работает Oo

Требуется посчитать сумму целых чисел от 1 до N. (Занести в input файл значение N, и вывести в output файл, результат)

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
 
using namespace std;
 
int main()
{
    int N;
    double sum;
    ifstream x("input.txt");
    x>>N;
    sum=(1 + N)/2*N;
    ofstream y("output.txt");
    y<<sum;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2012, 05:18     Посчитать сумму целых чисел в заданном диапазоне
Посмотрите здесь:
Найти сумму целых чисел в заданном диапазоне C++
C++ Функция находящая сумму целых чисел в заданном диапазоне
C++ Найти сумму всех целых чисел в заданном диапазоне
C++ Посчитать сумму целых чисел в заданном интервале
C++ Написать программу, которая находит сумму всех целых нечетных чисел в заданном диапазоне
C++ Сформировать массив случайных целых чисел в заданном диапазоне
C++ Найти среднее арифметическое всех целых чисел в заданном диапазоне (цикл for)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.04.2012, 13:05     Посчитать сумму целых чисел в заданном диапазоне #2
datileo, у тебя тут целочисленное деление происходит, из-за этого неверно
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
30.04.2012, 13:19     Посчитать сумму целых чисел в заданном диапазоне #3
Причём само по себе целочисленное деление здесь вполне допустимо, но делить надо чётное.
Например:
C++
1
(1 + N)*N/2;
Но тут есть опасность переполнения при умножении, даже если конечный результат помещается в переменную.
Можно проверять N на чётность, если чётно то так
C++
1
N/2*(1 + N);
Иначе как в исходном варианте.
Ну, а чтобы не заморачиваться, можно действительно использовать деление с плавающей точкой.
C++
1
N/2.0*(1 + N);
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
30.04.2012, 13:38     Посчитать сумму целых чисел в заданном диапазоне #4
datileo, там n может быть как положительным так и отрицательным
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream> 
#include <cmath>
using namespace std;
 
int main(void)
{
    freopen("input.txt","r", stdin);
    freopen("output.txt", "w", stdout);
    int n, s;
    cin >> n;   
    s = (1 + n) * (abs(n / 2.) + (n < 1));
    cout << s;
    return 0;
}
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.04.2012, 13:40     Посчитать сумму целых чисел в заданном диапазоне #5
softmob,
написано "целых чисел от 1 до N."
значит не может быть отрицательным
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
30.04.2012, 13:42     Посчитать сумму целых чисел в заданном диапазоне #6
sandye51, "В единственной строке входного файла INPUT.TXT записано единственное целое число N, не превышающее по абсолютной величине 10^4."
http://********/?main=task&id_task=2
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
30.04.2012, 13:48     Посчитать сумму целых чисел в заданном диапазоне #7
вот как правильно сумму считать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
template <unsigned N>
struct sum {
   static const unsigned value = N + sum<N-1>::value;
};
 
template <>
struct sum<1> {
   static const unsigned value = 1;
};
 
int main() {
   const unsigned N = 10;
   std::cout << sum<N>::value << std::endl;
}
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.04.2012, 14:01     Посчитать сумму целых чисел в заданном диапазоне #8
alex_x_x, ага, особенно когда число в файле задано
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
30.04.2012, 14:17     Посчитать сумму целых чисел в заданном диапазоне #9
sandye51, в ++ к сожалению да, но на лиспе вполне можно было и в рантайме сгенерировать
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
30.04.2012, 14:58     Посчитать сумму целых чисел в заданном диапазоне #10
Блин, такая шикарная идея в голову пришла, и не прокатило.
C++
1
2
3
4
5
6
7
8
9
#include <fstream>
 
main()
{
    int n =
    #include "input.txt"
    ;
    std:: ofstream("output.txt") << (1 + abs(n)) * n / 2  + (n < 1);
}
Это было бы на 100 символов(ну и еще без проблем можно ужать до 99).
Но нет, Compilation Error. Видимо, в момент компилирования input.txt еще нету.
Придется удовольствоваться своими 102 символами.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
30.04.2012, 15:00     Посчитать сумму целых чисел в заданном диапазоне #11
diagon, какой грязный хак, чтение из файла во время компиляции
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
30.04.2012, 15:02     Посчитать сумму целых чисел в заданном диапазоне #12
Цитата Сообщение от diagon Посмотреть сообщение
Но нет, WA1. Видимо, в момент компилирования input.txt еще нету. А с другой стороны, тогда Compilation Error был бы. Странно это...
Ничего странного. Компилируется программа 1 раз, а запускается много раз с разными input.txt
diagon
30.04.2012, 15:04
  #13

Не по теме:

Цитата Сообщение от grizlik78 Посмотреть сообщение
Ничего странного. Компилируется программа 1 раз, а запускается много раз с разными input.txt
Нет, это я ошибся, Compilation Error был( Уже поправился
Но идея была шикарная...

alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
30.04.2012, 15:11     Посчитать сумму целых чисел в заданном диапазоне #14
Цитата Сообщение от diagon Посмотреть сообщение
#include <fstream>
main()
{
int n =
#include "input.txt"
;
std:: ofstream("output.txt") << (1 + abs(n)) * n / 2 + (n < 1);
}

diagon, предлагаю объединенный вариант DD

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
 
template <unsigned N>
struct sum {
  static const unsigned value = N + sum<N-1>::value;
};
 
template <>
struct sum<1> {
  static const unsigned value = 1;
};
 
int main() {
  const unsigned N = 
    #include "input.txt"
  ;
  std:: ofstream("output.txt")  << sum<N>::value;
}
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
30.04.2012, 15:18     Посчитать сумму целых чисел в заданном диапазоне #15
alex_x_x, и встроить это в какой-нибудь LibreOffice Calc.
"Вы хотите посчитать новую сумму? Подождите часиков 5, я сейчас скомпилирую..."
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
30.04.2012, 15:20     Посчитать сумму целых чисел в заданном диапазоне #16
grizlik78, ну придумали же MPL, а по его меркам это даже не hello world
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2016, 13:14     Посчитать сумму целых чисел в заданном диапазоне
Еще ссылки по теме:
C++ Найти сумму всех натуральных чисел в заданном диапазоне
C++ Написать функцию, которая возвращает сумму чисел в заданном диапазоне
C++ Найти сумму натуральных чисел в заданном диапазоне (с использованием цикла for)
C++ Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне
Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне C++

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

Или воспользуйтесь поиском по форуму:
korobok
0 / 0 / 0
Регистрация: 08.01.2016
Сообщений: 3
12.01.2016, 13:14     Посчитать сумму целых чисел в заданном диапазоне #17
А можно объяснить значение формулы ? А именно почему там после двойки точка и что означает это - (n < 1). Я понимаю что n больше 1, но как это суммируется ? То есть если н больше единицы, то прибавить ?
Yandex
Объявления
12.01.2016, 13:14     Посчитать сумму целых чисел в заданном диапазоне
Ответ Создать тему
Опции темы

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