|
|
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток!!! Передомной как начинающим осваивать СИ++. Встала такая задача: Найти сумму всех чисел из интервала от 1000 до 9999, которые удовлетворяют условию, что остаток от деления первой цифры на вторую был равен сумме двух последних цифр. У меня неполучается сформулировать последовательность перебора чисел, как сами числа в разрядах обозвать? Подскажите пожалуйста кто может. Буду весьма признателен, за все отзывы заранее СПАСИБО! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 12:18 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
1. Перебирать, проще всего все подряд. 2. Выделять числа можно так: n/1000 n%1000/100 n%100/10 n%10 3. Ну, а дальше, использование формулы. 4. Обозвать можно n1,..n4 или массивом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 12:30 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
#include<stdio.h> #include<conio.h> #include<math.h> main() { int n1,n2,n3,n4,n,sum=0; clrscr(); for (n=1000;n<9999;n++) { n1=n/1000; n2=n%1000/100; n3=n%100/10; n4=n%10; sum=sum+n; if(n2!=0) if((n1/n2)==(n3+n4)) { printf("%d\t%d\t",n,sum); } } getch(); } Работает, но масса чисел не совсем удовлетворяющих условию например 1101, 6706 и т.д. к тому же сумма чисел кое где отрицательные числа ???????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 14:24 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Правильно n2=(n%1000)/100; исправь также в других местах. У операции взятия модуля низкий приоритет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 14:28 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Остаток от деления - % ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 14:28 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Былобы не плохо но, это непомогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 16:34 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
serakuzБылобы не плохо но, это непомогает. С чего так решил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 16:59 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Исправил проверил и все равно каша получилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 17:02 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
serakuzИсправил проверил и все равно каша получилась. Что значит "каша"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 17:22 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Каши не будет, если перевод строки поставить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 17:51 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Большое Спасибо за помощь. Может у меня что то с програмкой не то, получается 1/1 остаток =1, 8/9 остаток =8 и т.д. да и в сумме отрицательные числа почемуто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 18:01 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
serakuzБольшое Спасибо за помощь. Может у меня что то с програмкой не то, получается 1/1 остаток =1, 8/9 остаток =8 и т.д. да и в сумме отрицательные числа почемуто. 8/9=8: А что такое остаток от деления знаешь? И еще раз повторю - остаток от деления берется операцией % ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 18:06 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
#include<stdio.h> #include<conio.h> #include<math.h> main() { int n1,n2,n3,n4,i,sum=0; clrscr(); for (i=1000;i<=9999;i++) { n1=i/1000; n2=(i%1000)/100; n3=(i%100)/10; n4=i%10; sum=(sum+i); if(n2!=0) if((n1%n2)==(n3+n4)) { printf("%d\t%d\n",i,sum); } } getch(); } Все таже байда с числами. В чем же загвоздка??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 18:27 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Ты суммируешь все подряд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 18:33 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Помимо суммы сами числа не соответствуют условию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 19:19 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Большое Всем СПАСИБО! С числами с Вашей помощью разобрался. Не получается правильно сумму этих чисел оформить. Буду признателен за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 21:14 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
УРА!!! УРА!!! Все заработало!!! Всем Огромное СПАСИБО!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 21:49 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
serakuzУРА!!! УРА!!! Все заработало!!! Всем Огромное СПАСИБО!!! Охх студенты! P.S. Если понаблюдать за операцией '%', то можно заметить, что для переменной цикла она просто дает подпоследовательности с меньшим периодом. Для деления '/' - наоборот. Короче.. есть поле для оптимизации. Эххх... я-бы замочил. P.P.S. Проклятая привычка!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2006, 21:57 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуста как с такими задачами бороться: "Введенном слове поменять вторую букву на предпоследнею, а третью на последнею и наоборот." Какими типами переменных и функций следует воспользоваться? Огормное Всем Спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 13:46 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
serakuzПодскажите пожалуста как с такими задачами бороться: "Введенном слове поменять вторую букву на предпоследнею, а третью на последнею и наоборот." Какими типами переменных и функций следует воспользоваться? Огормное Всем Спасибо!!! Например, char * и strlen() будет вполне достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 14:05 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
С чего тут лучше начинать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 18:55 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
ПОМОГИТЕ ПОЖАЛУСТА !!!! Я ведь только учусь. С чего следует начать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 09:04 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
serakuzПОМОГИТЕ ПОЖАЛУСТА !!!! Я ведь только учусь. С чего следует начать? Еще раз повторить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 09:36 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
Вы мне сильно помогли в первый раз теперь я умею решать подобные задачи. В этом же случае я снова у новых ворот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 09:49 |
|
||
|
Только начало
|
|||
|---|---|---|---|
|
#18+
serakuzВы мне сильно помогли в первый раз теперь я умею решать подобные задачи. В этом же случае я снова у новых ворот. Одно из трактований строк - это массив байт, заканчивающийся нулем. Байт в С это char, массив - это указатель на память, где что-то лежит, соответственно char[n] - это массив строк. Если ты туда поместишь строку, не забыв, что она должна оканчиваться нулем, то с помощью функции strlen() ты сможешь определить ее длину. Ну а далее переставляй, то что тебе нужно, доступ к каждому символу массива можно получить с помощью обращения к массиву по индексу a[x]. Сохраняешь нужный символ, где нибудь, ставишь на его место требуемый, а на место, откуда взял требуемый ставишь сохранненый. Есть и другой вариант перестоновки, олимпиады по программированию выпускников школ годов 90-х. Но этот самый простой. Вопросы есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 09:56 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34164060&tid=2029882]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
228ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 541ms |

| 0 / 0 |
