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

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

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

Author24 — интернет-сервис помощи студентам
Решала задачу на acmp.ru, а при отправке выдает: 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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2012, 05:18
Ответы с готовыми решениями:

Найти сумму целых чисел в заданном диапазоне
Ввести два целых числа N1 и N2. Если N1 &gt;N2, найти сумму целых чисел в диапазоне N1 ... N2. Если N2...

Найти сумму всех целых чисел в заданном диапазоне
Даны два целых числа А и В (А &lt;В). Найти сумму всех целых чисел А до B включительно

Функция находящая сумму целых чисел в заданном диапазоне
Помогите пожалуйста дописать, вот условие: Описать функцию SumRange(A, B) целого типа, находящую...

Посчитать сумму целых чисел в заданном интервале
Помогите решить: Требуется посчитать сумму целых чисел от 1 до N включительно, где N по модулю...

16
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
30.04.2012, 13:05 2
datileo, у тебя тут целочисленное деление происходит, из-за этого неверно
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
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);
0
1255 / 705 / 359
Регистрация: 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;
}
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
30.04.2012, 13:40 5
softmob,
написано "целых чисел от 1 до N."
значит не может быть отрицательным
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
30.04.2012, 13:42 6
sandye51, "В единственной строке входного файла INPUT.TXT записано единственное целое число N, не превышающее по абсолютной величине 10^4."
http://acmp.ru/?main=task&id_task=2
0
бжни
2473 / 1684 / 135
Регистрация: 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;
}
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
30.04.2012, 14:01 8
alex_x_x, ага, особенно когда число в файле задано
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
30.04.2012, 14:17 9
sandye51, в ++ к сожалению да, но на лиспе вполне можно было и в рантайме сгенерировать
0
Higher
1953 / 1219 / 120
Регистрация: 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 символами.
1
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
30.04.2012, 15:00 11
diagon, какой грязный хак, чтение из файла во время компиляции
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
30.04.2012, 15:02 12
Цитата Сообщение от diagon Посмотреть сообщение
Но нет, WA1. Видимо, в момент компилирования input.txt еще нету. А с другой стороны, тогда Compilation Error был бы. Странно это...
Ничего странного. Компилируется программа 1 раз, а запускается много раз с разными input.txt
0
diagon
30.04.2012, 15:04
  #13

Не по теме:

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

0
бжни
2473 / 1684 / 135
Регистрация: 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;
}
1
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
30.04.2012, 15:18 15
alex_x_x, и встроить это в какой-нибудь LibreOffice Calc.
"Вы хотите посчитать новую сумму? Подождите часиков 5, я сейчас скомпилирую..."
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
30.04.2012, 15:20 16
grizlik78, ну придумали же MPL, а по его меркам это даже не hello world
0
0 / 0 / 0
Регистрация: 08.01.2016
Сообщений: 3
12.01.2016, 13:14 17
А можно объяснить значение формулы ? А именно почему там после двойки точка и что означает это - (n < 1). Я понимаю что n больше 1, но как это суммируется ? То есть если н больше единицы, то прибавить ?
0
12.01.2016, 13:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2016, 13:14
Помогаю со студенческими работами здесь

Написать программу, которая находит сумму всех целых нечетных чисел в заданном диапазоне
Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном...

В заданном диапазоне целых чисел подсчитать количество чисел, у которых есть две одинаковые цифры
file:///D:/Downloads/homework%206.pdf помогите ПЖ.Срочно.

Сформировать массив случайных целых чисел в заданном диапазоне
Такая вот задачка не получается решить(написать) её. (хочу понять-разобраться что и как) ...

Напечатать квадраты всех целых чисел в заданном диапазоне
Напечатать квадраты всех целых чисел от 0 до 𝑁, используя только операции сложения и вычитания, не...


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

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