Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2018, 10:34   #1
bylbyl9tor
Пользователь
 
Регистрация: 07.10.2018
Сообщений: 28
Хорошо считает внутри себя числа например при вводе числа 1234 он посчитает 4+3+2+1, как сделать так, чтобы он внутри себя считал 1+2+3+4

цикл
Код:
while (i < i_max) 
	{
		sum += n % 10;
		n /= 10;
		i++;
	}
считает внутри себя числа например при вводе числа 1234 он посчитает 4+3+2+1,
как сделать так, чтобы он внутри себя считал 1+2+3+4

_____
Код программы нужно выделять (форматировать) тегами [CODE][/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 26.10.2018 в 10:41.
bylbyl9tor вне форума Ответить с цитированием
Старый 26.10.2018, 10:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от bylbyl9tor Посмотреть сообщение
считает внутри себя числа например при вводе числа 1234 он посчитает 4+3+2+1,
как сделать так, чтобы он внутри себя считал 1+2+3+4
зачем?! от этого результат в sum будет другой?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.10.2018, 10:43   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В этом цикле i не нужно, достаточно while (n > 0). А зачем от старших разрядов считать?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.10.2018, 11:09   #4
bylbyl9tor
Пользователь
 
Регистрация: 07.10.2018
Сообщений: 28
По умолчанию вот

Прога
Код:
#include <iostream>
#include <cmath>
using namespace std;
int main() 
{
	long n;
	int i(0), i_max, sum(0);

	cin >> n;

	i_max = ceil(0.5*(int(log10(n) + 1)));

	while (i < i_max) 
	{
		sum += n % 10;
		n /= 10;
		i++;
	}

	cout << sum;
	system("pause");
	return 0;
}
Пожалуйста, оформляйте Ваш код согласно правилам.
задание
3. Дано натуральное число N (N > 9). Определить сумму цифр в первой половине числа (старшие разряды). Пример. N = 12 345 678. Сумма составляет 1 + 2 + 3 + 4 = 10.

Последний раз редактировалось Вадим Мошев; 26.10.2018 в 20:51.
bylbyl9tor вне форума Ответить с цитированием
Старый 26.10.2018, 11:21   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Может есть смысл отпарсить только старшую половину и просто использовать готовый код?

Последний раз редактировалось p51x; 26.10.2018 в 11:28.
p51x вне форума Ответить с цитированием
Старый 26.10.2018, 11:23   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

сумму цифр в первой половине числа (старшие разряды).
Код:
while (i < i_max)
{
if i >= ... // это старшие (нужные для суммирования) разряды
  sum += n % 10;
...
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 26.10.2018, 11:31   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы так написал:
Код:
int main(void) {
	long n, tmp;
	int i, countdigit, sum;

	cin >> n;
	countdigit=0;
	tmp=n;
	while (tmp > 0) {
		tmp /= 10;
		countdigit++;
	}
	
	sum=0;
	i=countdigit;
	while (n > 0) {
		if(i<=(countdigit/2)){
			sum += n % 10;
		}
		n /= 10;
		i--;
	}
	cout << "summa ="<< sum<< endl;
	return 0;
}

https://ideone.com/pzKIuK
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.10.2018, 15:14   #8
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

вам надо сортировку по возрастанию, чтоб внутри складывал? да есть тут у нас один любитель русской сортировки.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 26.10.2018, 20:37   #9
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

А если число рассматривать как строку?

Получили строку.
Сложили первую половину цифр строки.

Это как на С++ будет смотреться?
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 27.10.2018, 06:43   #10
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

геморройно будет: переводить числа в символы, чтоб потом разделить строку, чтобы потом перевести обратно символы в числа, чтобы сложить первую половину и вторую половину строки...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так, чтобы программа завершалась при вводе символа. Sinli Общие вопросы C/C++ 4 10.09.2018 16:18
Как сделать так, чтобы процесс повторялся до остатка последнего элемента массива и вывел все результаты. Программный код внутри Lime789456 Помощь студентам 1 07.12.2017 08:19
Как сделать чтобы Dataset без SQL считал себя не read-only ? delphicoding БД в Delphi 12 23.03.2012 22:22
Как сделать так чтобы прога скопировала саму себя(Delphi) netiv Помощь студентам 2 10.12.2011 13:10
Как сделать так чтобы моя программа при включении отображалась в панели задач, как например часы Window ? asked86 Win Api 1 15.12.2008 08:42