Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 759

/ вопрос открыт /

Приветствую уважаемые эксперты!Помогите пожалуйста с задачкой на языке СИ - ошибок не выдаёт,компилируется.Фактически выполняет всё до 58 строки,где ввод заканчивается,а потом вылетает.Почему??
Заранее спасибо

Приложение:
  1. #include <stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12. do
  13. {
  14.  
  15. scanf("%d",&stone_num);
  16. if(stone_num<=1)
  17. {
  18. printf("Incorrect!");
  19. }
  20. }
  21.  
  22. do
  23. {
  24.  
  25. scanf("%lf",&crit_mass);
  26. if( crit_mass<0 )
  27. {
  28. printf("Incorrect!");
  29. }
  30. }
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37. for ( i=0; i<stone_num; ++i )
  38. {
  39. do
  40. {
  41. printf("Input weight of %d stone: ",i+1);
  42. scanf("%lf",&input);
  43. if(input<=0)
  44. {
  45. printf("Incorrect!Please input weight again\n");
  46. }
  47. else
  48. {
  49. weight[i]=input;
  50. }
  51. }
  52.  
  53. }
  54. for( i=0; i<stone_num; i++ )
  55. {
  56.  
  57. }
  58.  
  59. {
  60. for( i=0; i<stone_num-1-j; ++i )
  61. {
  62. if(weight[i]>weight[i+1])
  63. {
  64. double temp=weight[i];
  65. weight[i]=weight[i+1];
  66. weight[i+1]=temp;
  67. }
  68. }
  69. }
  70. j=0;
  71.  
  72. for( second_heap<first_heap; second_heap+weight[i-j]; j++ )
  73. {
  74. weight[i-1-j]=weight[i];
  75. second_heap+weight[i];
  76. }
  77. j=0;
  78. for( first_heap<second_heap; first_heap+weight[i-j]; j++ )
  79. {
  80. weight[i-j]=weight[i];
  81. first_heap+weight[i];
  82. }
  83. if( first_heap>second_heap )
  84. {
  85. if( first_heap-second_heap<=crit_mass )
  86. {
  87. printf("analysis is possible:\n");
  88. printf("weight of first heap more than weight of second heap no more than a critical mass.");
  89. }
  90. if( first_heap-second_heap>crit_mass )
  91. {
  92. printf("analysis isn`t possible:\n");
  93. printf("weight of first heap more than weight of second heap more than a critical mass.");
  94. }
  95. }
  96. if( second_heap>first_heap )
  97. {
  98. if( second_heap-first_heap<=crit_mass )
  99. {
  100. printf("analysis is possible:\n");
  101. printf("weight of second heap more than weight of first heap no more than a critical mass.");
  102. }
  103. if( second_heap-first_heap>crit_mass )
  104. {
  105. printf("analysis isn`t possible:\n");
  106. printf("weight of second heap more than weight of first heap more than a critical mass.");
  107. }
  108. }
  109. getchar();
  110. getchar();
  111. getchar();
  112. return 0;
  113. }
  114.  


Эдик Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Эдик (статус: Посетитель)
Вопрос отправлен: 16 ноября 2011, 22:33
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 18 ноября 2011, 21:56; участников в обсуждении: 2.
Аксион

Аксион (статус: 4-ый класс), 17 ноября 2011, 00:25 [#1]:

А можно подробнее, что должны делать конструкции следующего вида:
     j=0;
     for( first_heap<second_heap; first_heap+weight[i-j]; j++ )
     {
            weight[i-j]=weight[i];
            first_heap+weight[i];
     }
Эдик

Эдик (статус: Посетитель), 17 ноября 2011, 00:59 [#2]:

если одна "куча" меньше другой,то наибольший камень кладётся в неё,иначе в другую.Что-то совсем голова не работает я где-то неоднократно протупил
Аксион

Аксион (статус: 4-ый класс), 17 ноября 2011, 01:42 [#3]:

Ну собственно да, данные куски кода делают совершенно не то, что надо. Цикл задан не верно, сам вдумайся в то, что написано. Там на глаз видно выход за границы массива. А что должна делать строчка first_heap+weight[i], вообще ума не приложу
Эдик

Эдик (статус: Посетитель), 17 ноября 2011, 16:21 [#4]:

фактически я хочу задать количество камней,критическую массу,а потом считать количество масс столько,сколько камней.Затем статический массив сортируется.Большее число прибавляется в первую кучу,затем новое большее число(второе по величине на самом деле) прибавляется в меньшую вторую кучу и т.д.
Эдик

Эдик (статус: Посетитель), 17 ноября 2011, 16:22 [#5]:

самое печальное что пока я не начал вводить алгоритм сортировки у меня вводы и проверки + считывание массива работало,а после этого я уже всё перепутал
Эдик

Эдик (статус: Посетитель), 18 ноября 2011, 16:03 [#6]:

Ну собственно да, данные куски кода делают совершенно не то, что надо. Цикл задан не верно, сам вдумайся в то, что написано. Там на глаз видно выход за границы массива. А что должна делать строчка first_heap+weight[i], вообще ума не приложу.
Обращение к последнему числу массива?
Эдик

Эдик (статус: Посетитель), 18 ноября 2011, 21:56 [#7]:

просто действительно непонятно - вводишь простую конструкцию,которая должна просить переввести значения перемнных если пользователь ввёл их меньше 2 например.
Одна переменная задаётся через int,другая через double.Для обоих задаю одинаковый алгоритм простейший.С одной переменной работает,с другой криво.Перезапускаешь - не работает с обеими.Ещё раз перезапускаешь - работает,начинаешь делать дальше не изменяя начало.Запускаешь - не работает самое начало(

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:33
Выполнено за 0.04 сек.