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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
R1ck
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 5
#1

Игра в числа [язык C] - C++

12.07.2009, 12:56. Просмотров 1359. Ответов 7
Метки нет (Все метки)

Помогите пожалуйста решить следующую задачу:

Лимит времени 2000/4000/4000/4000 мс. Лимит памяти 65000/65000/65000/65000 Кб.

Вася очень любит играть в числа. Для этой игры нужна колода из N различных целых чисел от 1 до N. Эдик (который тоже очень любит эту игру) только что достал новую колоду. Вася говорит, что в колоде недостаёт ровно двух чисел. Зная N (количество чисел, которое должно быть в колоде) и S (сумму имеющихся чисел), определите, не ошибся ли Вася, и если не ошибся, предложите, каких именно чисел недостаёт.

В первой строке входных данных находятся два целых числа: N (3 ≤ N ≤ 10) и S (от нуля до суммы чисел полной колоды). Если могли пропасть ровно два числа, в первой строке напишите "yes", во второй строке приведите возможный вариант - два числа через пробел. Если Вася ошибся, в единственной строке напишите "no".
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
12.07.2009, 16:34     Игра в числа [язык C] #2
во второй строке приведите возможный вариант - два числа через пробел
а остальные куда девать? или не интересуют?

Добавлено через 14 минут 37 секунд
За оптимальность не ручаюсь можно ещё подумать, тести.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#define S_MAX   55  // Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*Г*Гї ñóììГ* ïðè N=10
 
void main()
{
  int n,s, Smax=0, re, temp, sum;
  int first=1, second=2;
   printf(" Write N: ");scanf("%i",&n);
   printf(" Write S: ");scanf("%i",&s);
 //  printf("\n  N=%i, S=%i", n, s); 
  
  if (n>=3&&n<=10&&s>=0&&s<=S_MAX)    // ïðîâåðêГ* âõîäГ*ûõ Г¤Г*Г*Г*ûõ
  {
    temp=n;
    while(temp>0)
    {
      //printf("\nt:%i",temp);
      Smax+=temp;             // Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*Г*Гї ñóììГ* ïðè Г§Г*Г¤Г*Г*Г*îì  N
      temp--;
    }
//    printf("\nSmax:%i",Smax);
 
    if ((re=Smax-s)>=3)     // âîçìîæГ*Г® ГҐГ±ГІГј ГЇГ*Г°Г* Г·ГЁГ±ГҐГ« 
    { 
      while(second>first)   // ïåðåáîð ГўГ±ГҐГµ ГЇГ*Г°
      {
        second=re-first;
        // òðè öèêëГ* 
        sum=0;
        // ñóììГ* îò 1 äî first
        for(temp=1; temp<first; temp++)
          sum+=temp;
        // ñóììГ* îò first+1 äî second
        for(temp=first+1; temp<second; temp++)
          sum+=temp;
        // ñóììГ* îò second+1 äî N
        for(temp=second+1; temp<=n; temp++)
          sum+=temp;
        
        if (sum==s)
        {
          printf("\n yes \n %i %i", first, second);
          break;                   // Г§Г*êîìåГ*òèðîâГ*ГІГј åñëè Г*ГіГ¦Г*Гі ГўГ±ГҐ âîçìîæГ*ûå ГЇГ*ðû
        }
        first++; 
      } // end while
    } // end else
    
    if (re<3||(second<=first))       // Г*ГҐГІ ГЇГ*ðû Г·ГЁГ±ГҐГ« 
    {
      printf("\ nno");
    }
  } // end  if (n>=3&&n<=10&&s>=0&&s<=S_MAX)    // ïðîâåðêГ* âõîäГ*ûõ Г¤Г*Г*Г*ûõ
  else
  {
    printf("\n!incorrect input data");
  }
 
  printf("\nPress any key");
  getch();
} // end main
R1ck
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 5
12.07.2009, 17:24  [ТС]     Игра в числа [язык C] #3
TanT
Спасибо за отзыв!
прошу прощения, забыл указать компилятор - GCC 4.3.3. Дело в том, что в VS 2008 все работает, но GCC 4.3.3 выводит следующее:

solver.c: In function 'main':
solver.c:7: warning: incompatible implicit declaration of built-in function 'printf'
solver.c:7: warning: incompatible implicit declaration of built-in function 'scanf'
solver.c:50:14: warning: unknown escape sequence: '\040'
solver.c:4: warning: return type of 'main' is not 'int'
/tmp/cc2bV51D.o: In function `main':
solver.c.text+0x119): undefined reference to `getch'
collect2: ld returned 1 exit status

В чем проблема?
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
12.07.2009, 19:39     Игра в числа [язык C] #4
Добавь библиотеки #include <conio.h>
#include <stdio.h> и варнинги исчезнут

Добавлено через 4 минуты 52 секунды
Лимит времени 2000/4000/4000/4000 мс. Лимит памяти 65000/65000/65000/65000 Кб.
а кто ставил такие лимиты? для ваших условий по-моему многовато, хотя не оценивал, честно признаюсь
R1ck
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 5
12.07.2009, 19:40  [ТС]     Игра в числа [язык C] #5
Добавил. Теперь выводит это:

solver.c:1:19: error: conio.h: No such file or directory
solver.c:52:14: warning: unknown escape sequence: '\040'
solver.c: In function 'main':
solver.c:6: warning: return type of 'main' is not 'int'
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
12.07.2009, 19:55     Игра в числа [язык C] #6
хм, а что у вас в место conio в GCC? если знаешь аналог getch (использовал чтобы программа ждала нажатия любой клавиши пока я результатими её работы любуюсь), то можешь без без него и без conio обойтись
остальные ошибки на какие строчки указывают? с моим листингом совпадают? интересно на что ругается конкретно
R1ck
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 5
12.07.2009, 22:59  [ТС]     Игра в числа [язык C] #7
TanT, спасибо большое =) Все работает. Спасибо за помощь!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2009, 11:33     Игра в числа [язык C]
Еще ссылки по теме:

C++ Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми
Даны два числа. Если квадратный корень из второго числа меньше первого числа, то увличить второе число в пять раз с++ C++
написать программу для прверки простого числа. язык программировние С C++
Ввести в программу строку (числа, латиница), считать только числа, записать числа в массив C++
C++ Программа которая складывает 2 числа.Числа вбиты в программу заранее. Не получается. Плохо знаю этот язык

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

Или воспользуйтесь поиском по форуму:
Wolandello
1 / 1 / 0
Регистрация: 06.06.2009
Сообщений: 35
14.07.2009, 11:33     Игра в числа [язык C] #8
потрібно, щоб main мав тип int
Yandex
Объявления
14.07.2009, 11:33     Игра в числа [язык C]
Ответ Создать тему
Опции темы

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