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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2014, 17:29   #1
rickman
Пользователь
 
Регистрация: 14.02.2014
Сообщений: 10
По умолчанию 2 задачи в Code Blocks(язык C)

Добрый день,на протяжении третьего дня не могу решить задачи...буду очень благодарна за помощь

Задача:
Улитка ползёт по вертикальному шесту высотой h метров, поднимаясь за день на a метров, а за ночь спускаясь на b метров. На какой день улитка доползёт до вершины шеста?

Программа получает на вход натуральные числа h, a, b и должна вывести одно натуральное число. Гарантируется, что a>b.

При решении этой задачи нельзя пользоваться условной инструкцией if и циклами.

Пример:
Ввод:
10
3
2
Вывод: 8

Задача:
Дано четырехзначное число. Определите, является ли его десятичная запись симметричной. Если число симметричное, то выведите 1, иначе выведите любое другое целое число. Число может иметь меньше четырех знаков, тогда нужно считать, что его десятичная запись дополняется слева незначащими нулями.

При решении этой задачи нельзя пользоваться условной инструкцией if и циклами

Пример:
1)Ввод:
2002
1)Вывод:
1
2)Ввод:
2008
2)Вывод:
37
rickman вне форума Ответить с цитированием
Старый 15.02.2014, 17:59   #2
009
Пользователь
 
Регистрация: 09.02.2014
Сообщений: 33
По умолчанию

1-ая:
Код:
#include <stdio.h>
int main()
  {
  int h,a,b,t;
  scanf("%d%d%d",&h,&a,&b);  
  t=(h-a)/(a-b)+((h-a)%(a-b)? 1:0); 
  t+= h<=a? 0:1;
  printf("%d\n", t); 
  return 0;
  }
009 вне форума Ответить с цитированием
Старый 15.02.2014, 18:47   #3
rickman
Пользователь
 
Регистрация: 14.02.2014
Сообщений: 10
По умолчанию

Спасибо)) Репутацию позже добавлю(еще нельзя)

А вторую можете помочь?
P.S улитка подходит не ко всем значениям,пишет,что 1 из 20 тестов не прошел,а значит,задачу не засчитывают...

Последний раз редактировалось Stilet; 15.02.2014 в 22:39.
rickman вне форума Ответить с цитированием
Старый 15.02.2014, 19:32   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Код:
t=(h-b)/(a-b)+((h-b)%(a-b)? 1:0);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.02.2014, 19:37   #5
009
Пользователь
 
Регистрация: 09.02.2014
Сообщений: 33
По умолчанию

вот так еще попробуйте:
Код:
#include <stdio.h>
int main()
  {
  int h,a,b,t;
  scanf("%d%d%d",&h,&a,&b);  
  t=(h-a)/(a-b)+((h-a)%(a-b)? 1:0); 
  t= h<=a? 0:t;
  printf("%d\n", t+1); 
  return 0;
  }
Цитата:
Код:
t=(h-b)/(a-b)+((h-b)%(a-b)? 1:0);
не пройдет для теста: 1 2 1

Последний раз редактировалось Stilet; 15.02.2014 в 22:40.
009 вне форума Ответить с цитированием
Старый 15.02.2014, 19:46   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Цитата:
Сообщение от 009 Посмотреть сообщение
не пройдет для теста: 1 2 1
С этим не спорю, только как Вы получали эту формулу?
Я так:
na - (n - 1)b >= h
n(a - b) + b >= h
n >= (h - b) / (a - b)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.02.2014, 19:52   #7
009
Пользователь
 
Регистрация: 09.02.2014
Сообщений: 33
По умолчанию

2-ая:
Код:
#include <stdio.h>
int main()
  {
  int n, t=1;
  scanf("%d",&n);  
  t= (n/1000==n%10 && (n/100)%10==(n/10)%10)? 1:37;
  printf("%d\n", t); 
  return 0;
  }
Цитата:
С этим не спорю, только как Вы получали эту формулу?
Я так:
na - (n - 1)b >= h
n(a - b) + b >= h
n >= (h - b) / (a - b)
я по другому.
Достигнув высоту h-a или большую, улитка достигнет на следующий день высоту h.
Поэтому сначала считаем когда улитка достигнет высоту h-a: (h-a)/(a-b).
Затем если есть остаток от деления (h-a) на (a-b), то добавляем еще один день (это значит что высота h-a еще не достигнута), поэтому: +((h-a)%(a-b)? 1:0).
Здесь единственное исключение: t= h<=a? 0:t; (когда h<=a).
Выводим на экран t+1 (для достижения h из положения h-a или немного большего значения чем h-a)

Последний раз редактировалось Stilet; 15.02.2014 в 22:42.
009 вне форума Ответить с цитированием
Старый 15.02.2014, 20:35   #8
rickman
Пользователь
 
Регистрация: 14.02.2014
Сообщений: 10
По умолчанию

Все две задачи прошли,спасибо)))
rickman вне форума Ответить с цитированием
Старый 15.02.2014, 20:39   #9
009
Пользователь
 
Регистрация: 09.02.2014
Сообщений: 33
По умолчанию

не за что )
009 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача в Code Blocks(язык C) - число секунд перевести в часы:минуты:секунды rickman Помощь студентам 2 14.02.2014 18:54
code::blocks в Linuks SAMOUCHKA Qt и кроссплатформенное программирование С/С++ 1 01.10.2012 19:44
настройка code blocks Armina Общие вопросы C/C++ 4 23.03.2012 14:16
Code Blocks [Ap][uTekToP] Общие вопросы C/C++ 6 23.09.2009 20:58
CODE::BLOCKS vvviperrr Софт 0 18.12.2008 19:19