![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
first_day |
![]() ![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Подскажите, пожалуйста, как можно найти сумму цифр числа n(сколько цифр не известно).
И, если можно, объясните как записываются циклы, как описывается строковый тип, как перевести из целочисленного в строковый и обратно. Нужно решить задачу, а я С++ только начал изучать, и вот возникла проблема... -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Для решения поставленной задачи нет необходимости в использовании строковых типов. Все, что тебе нужно -
... |
first_day |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
... В С++ цикл с 0? А что означает (X/=10) и (sum+=)? А лучше объясни, пожалуйста, 2-ю и 3-ю строчки... Сообщение отредактировано: first_day - 16.11.2007 22:23 -------------------- Я бы изменил мир, да Бог не дает исходников.
|
first_day |
![]()
Сообщение
#4
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Тьфу блин, понял... только не понял зачем тут целочисленное деление?
-------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата не понял зачем тут целочисленное деление? Затем, чтобы "отбросить" последнюю на данный момент цифру числа. Число целое, поэтому чтоб не было проблем надо делить его нацело на 10... |
first_day |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
А как обознаать, что цикл закончен?
просто вот здесь все выдает правильно: sum2=0; for(i=0; i<=n; i=i+2) sum2=sum2+i; А вот здесь фигню какую-то: for(sum1=0; n; n/=10) sum1+=n%10; sum2=0; for(i=0; i<=n; i=i+2) sum2=sum2+i; -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Что именно тебе выдает и что ты хочешь получить? Получишь ты в sum1 сумму цифр числа, а в sum2 будет 0, потому как на момент захода во второй цикл n уже равно 0...
|
first_day |
![]()
Сообщение
#8
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Понял...
for(sum1=0; n; n/=10) Вот здесь условие окончание цикла стоит просто n, что это означает? P.S. Извиняюсь. что атк мучаю вопросами ![]() -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Цитата условие окончание цикла стоит просто n, что это означает? В С/С++ цикл for продолжается до тех пор, пока условие окончания истинно. Истинно - это значит "не равно 0", потому что 0 - это false... Вот и получается, что цикл продолжается, пока n <> 0... |
first_day |
![]()
Сообщение
#10
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
int sum1,sum2,n,i,vr; Я пытаюсь сделать вот что: 1) Нахожу сумму цифр(sum1) заданного числа(n). 2) Проверяю числа от 1 до заданного числа(i), и если встречается такое число, на которое заданное делится без остатка нахожу сумму его цифр. (sum2) 3) Сравниваю заданное число и найденное число(i) по криериям: 1. Если сумма цифр занного числа больше суммы цифр найденного, то вывожу заданное. 2. Если меньше - вывожу найденное. 3. Если суммы цифр чисел равны, а заданное меньше найденного, вывожу заданное. 4. иначе вывожу найденное. Мне всегда выдает -1073741676. Чего я тут намутил? ![]() -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Цитата Мне всегда выдает -1073741676. ![]() #include <iostream.h>Но это все неважно, потому что при первой же итерации второго цикла (когда i = 0) ты делаешь: if (n%i==0) // <--- На что делишь ??? |
first_day |
![]()
Сообщение
#12
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
#include <iostream> На 0 ![]() Значит цикл нужно начинать с 1? теперь у меня зацикливание... +вот это сравнение мне, наверно, тоже надо делать в цикле, т.к. мне нужно выбрать число в цикле не первое, которое подойдет, а из всех от 1 до n по этим условиям... Сообщение отредактировано: first_day - 17.11.2007 14:17 -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Тебе вот это надо, что-ли:
#include <iostream>? Проблема у тебя была в том, что во внутреннем цикле переменная i тоже изменялась, надо завести еще одну, временную переменную... |
first_day |
![]()
Сообщение
#14
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
#include <iostream> Я предыдущий код написалне верно... Мне нужно, чтобы оно вывело наилучший делитель числа. Т.е. если ввожу 144, то мне выводит 9. Т.е. оно проверят все чсила от 1 до 144, находит сумму каждого числа и сравнивает ее с суммой числа 144(сумма 9), если сумма больше то сохраняет эту сумму в переменную delit и проверяет дальше, если меньше - просто проверяет дальше, если сумма равна, то сравнивает эти два числа и выбирает наименьшее, и опять же просматривает дальше, пока не просмотрит все числа. -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Ты задание нормально русским языком напиши... Надоело уже играть в "испорченные телефоны". Что значит, "наилучший делитель", например, чем он ЛУЧШЕ чем 2 или 12?
Сообщение отредактировано: volvo - 17.11.2007 15:12 |
first_day |
![]()
Сообщение
#16
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Извиняюсь...
Вот, смотри: Нужно найти наилучший делитель. Будем считать, что число a лучше числа b, если сумма цифр a больше суммы цифр b, а при равенстве суммы их цифр, если число a меньше числа b. А почему 9 не делитель 144? 144/9=16 ==> Делимое/делитель=частное разве не так? -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#17
|
Гость ![]() |
Тогда в твоем примере лучшим делителем должно быть 48: сумма цифр у него больше, чем у девятки...
|
first_day |
![]()
Сообщение
#18
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Ну да, правильно... ошибся я.
Но беда в том, что получившаяся программа выводит только то, что вводится... -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#19
|
Гость ![]() |
А вот эта:
#include <iostream> ? |
first_day |
![]()
Сообщение
#20
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
volvo, спасибо тебе ОГРОМНОЕ!
Буду разбираться. Вот ты объявлял некоторые переменные в ходе работы программы... Без разницы же когда их объявлять, главное до первого использования? и вот еще такой вопрос, чтобы новую тему не создавать: Как можно вот это: for i:=length(s) downto 1 do s:=s+s[i]; записать на С++ и как в С++ переводить из вещественного в строковый и обратно? Сообщение отредактировано: first_day - 17.11.2007 20:46 -------------------- Я бы изменил мир, да Бог не дает исходников.
|
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 1:47 |