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

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

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

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

30.04.2012, 05:18. Просмотров 6566. Ответов 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2012, 05:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Посчитать сумму целых чисел в заданном диапазоне (C++):

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

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

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

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

Написать программу, которая находит сумму всех целых нечетных чисел в заданном диапазоне - C++
Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном пользователе. #include &lt;iostream&gt; using...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.04.2012, 13:05 #2
datileo, у тебя тут целочисленное деление происходит, из-за этого неверно
0
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
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
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;
}
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.04.2012, 13:40 #5
softmob,
написано "целых чисел от 1 до N."
значит не может быть отрицательным
0
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
0
alex_x_x
бжни
2447 / 1652 / 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;
}
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.04.2012, 14:01 #8
alex_x_x, ага, особенно когда число в файле задано
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
30.04.2012, 14:17 #9
sandye51, в ++ к сожалению да, но на лиспе вполне можно было и в рантайме сгенерировать
0
diagon
Higher
1929 / 1195 / 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 символами.
1
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
30.04.2012, 15:00 #11
diagon, какой грязный хак, чтение из файла во время компиляции
0
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
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
alex_x_x
бжни
2447 / 1652 / 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;
}
1
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
30.04.2012, 15:18 #15
alex_x_x, и встроить это в какой-нибудь LibreOffice Calc.
"Вы хотите посчитать новую сумму? Подождите часиков 5, я сейчас скомпилирую..."
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2012, 15:18
Привет! Вот еще темы с ответами:

Найти среднее арифметическое всех целых чисел в заданном диапазоне (цикл for) - C++
Ребятки, помогите пожалуйста решить эти задачи, как можно проще, через цикл for и через разветвление if (без std , printf и всего такого...

Найти сумму всех натуральных чисел в заданном диапазоне - C++
Доброе всем, время суток. Есть задачка на одном известном сайте. Нужно из одного файла взять целое число и посчитать сумму от единицы до...

Найти сумму натуральных чисел в заданном диапазоне (с использованием цикла for) - C++
Найти сумму четных натуральных чисел от 6 до 20 Найти сумму натуральных чисел от 5 до 20

Написать функцию, которая возвращает сумму чисел в заданном диапазоне - C++
Кто знает как решить задачу на С++, при помощи рекурсии? Написать функцию, которая возвращает сумму чисел в заданном диапазоне. ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.04.2012, 15:18
Ответ Создать тему
Опции темы

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