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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2013, 14:52   #1
logas83
Пользователь
 
Регистрация: 07.09.2013
Сообщений: 19
По умолчанию Прошу помочь с задачкой на Си

Вот сама задача.
Ввести длину отрезка с указанием шкалы измерения (c – сантиметры, i – дюймы), напечатать результат в обеих шкалах: например,
при вводе «2i» напечатать «2i = 5.08cm»
при вводе «5.08c» напечатать «5.08cm = 2i»
Без использования операторов ветвления (IF).

После запуска ввожу число, см или i, выдает результат и программа вылетает "Debug error". Подскажите пожалуйста, где ошибка.

Вот сам код:
Код:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main()
{
        int x;
	char s;
	
	system("chcp 1251 > null");

	printf("Введите длину отрезка в см (например 2с) или в дюймах (2i): ");		
	scanf("%d%s",&x,&s);
		s == 'c' 
		?	printf("%xcm будет = %.2fi \n", x,x * 0.394)
		: s == 'i'
		?	printf("%xi будет = %.2fcm \n", x,x * 25.4)
		: printf("Ошибка ввода \n");
return 0;
}

Последний раз редактировалось Stilet; 09.10.2013 в 15:27.
logas83 вне форума Ответить с цитированием
Старый 09.10.2013, 15:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
s == 'c'
Это сравнение а не присваивание. пиши один символ =
Кстати printf писать в операторе условий ИМХО не по феншую )
Может и сработает, но я бы так не делал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2013, 15:59   #3
logas83
Пользователь
 
Регистрация: 07.09.2013
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это сравнение а не присваивание. пиши один символ =
Кстати printf писать в операторе условий ИМХО не по феншую )
Может и сработает, но я бы так не делал.

А разве сравнение пишется с одним знаком равно? Если одинарное равно ставить, пишет "error C2106: =: левый операнд должен быть левосторонним значением".
logas83 вне форума Ответить с цитированием
Старый 09.10.2013, 16:22   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кажется я понял в чем твоя проблема. Ты не до конца понимаешь связку ()?:
Если не ошибаюсь то должно быть так судя из твоей логики:
Код:
printf(%s"
 (s==c)?sprintf("%xcm будет = %.2fi \n", x,x * 0.394):(
  (s == 'i')?sprintf("%xi будет = %.2fcm \n", x,x * 25.4):sprintf("Ошибка ввода \n")
 )
);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2013, 16:35   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,341
По умолчанию

logas83, попробуйте исправить в своем коде строку scanf("%d%s",&x,&s); на scanf("%d%c",&x,&s);.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 09.10.2013, 16:59   #6
logas83
Пользователь
 
Регистрация: 07.09.2013
Сообщений: 19
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
logas83, попробуйте исправить в своем коде строку scanf("%d%s",&x,&s); на scanf("%d%c",&x,&s);.
Спасибо большое! Это помогло.
logas83 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритмы. Не прошу решить. Прошу помочь! pascaluser Паскаль, Turbo Pascal, PascalABC.NET 2 12.10.2012 08:45
Си(не с++)просьба помочь с задачкой МихаилК Общие вопросы C/C++ 1 10.04.2012 20:49
Просьба помочь с задачкой:) ssnnqq Паскаль, Turbo Pascal, PascalABC.NET 2 31.03.2012 21:29
Можете помочь с задачкой? Fitness Паскаль, Turbo Pascal, PascalABC.NET 2 26.12.2007 17:46