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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2011, 14:15   #1
sp.caster
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 60
По умолчанию Задача: Хватит ли денег

Музыкальный диск
Входной файл:test.in
Выходной файл:test.out
Ограничение по времени: 0.5 с
Музыкальный диск стоит x руб. n коп. У вас имеется a руб. b коп. Хватит ли вам денег на покупку диска? В случае недостатка, определите, сколько денег нужно добавить.
Входной файл
В первой строке даны целые числа x и n, разделенные пробелом (0 ≤ x ≤ 1000, 0 ≤ n ≤ 99, x и n одновременно не могут быть равны нулю).
Во второй строке даные целые числа a и b, разделенные пробелом (0 ≤ a ≤ 1 000 000, 0 ≤ b ≤ 99).
Выходной файл
В первой строке выведите “yes”, если имеющаяся сумма достаточна для приобретения диска. Если денег не хватит, выведите в первой строке “no”, а во второй строке – целые числа p и q, разделенные пробелом, недостаток соответственно в рублях и копейках (0 ≤ q ≤ 99). Число копеек выведите двумя цифрами, при необходимости добавив ведущий ноль.
Примеры входного и выходного файлов
test.in
3 20
5 00

test.out
yes

test.in
10 20
7 80

test.out
no
2 40


Моя программа:

Код:
#include <iostream>
#include <stdio.h>
using  namespace std;
int main()
{
	double x, a, b, n, y, c;
	int q, t;
	freopen("test.in", "r", stdin);
	freopen("test.out", "w", stdout);
	scanf("%f %f %f %f", &x, &n, &a, &b);
	y=x+n*0.01;
	c=a+b*0.01;
	
	if (y>c) then
	{
		q=x-a;
	t=n-b;
	printf("no \n %f %f", &q, &t);
	if (t<0)
	{
		t = t + 100; 
	printf("no \n %f %f", &q, &t);
	}
	}
	else
		cout<<"yes";
}
q-разность рублей
t-разность копеек

Проблема: не работает. Пишет просто:
no
0.000000 0.000000


Подскажите в чем проблема?

Последний раз редактировалось sp.caster; 04.05.2011 в 14:18.
sp.caster вне форума Ответить с цитированием
Старый 04.05.2011, 16:53   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

printf("no \n %f %f", &q, &t);
значки & убрать
onewho вне форума Ответить с цитированием
Старый 04.05.2011, 18:36   #3
sp.caster
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 60
По умолчанию

К сожалению ничего не изменилось
sp.caster вне форума Ответить с цитированием
Старый 04.05.2011, 18:43   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Во-первых оператор
Код:
 if (y>c) then
пишется без then.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 04.05.2011, 18:47   #5
sp.caster
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 60
По умолчанию

исправил, что странно, у меня эта программа компилилась и с then, а когда попробовал все заново создать и переписать, и это ничем хорошим не закончилось, и я решил опять вернуться к этой программе, скопировал ее с сайта и она не скомпилилась из-за then, необъяснимо, но факт=)

короче говоря, все равно не робит прога
sp.caster вне форума Ответить с цитированием
Старый 04.05.2011, 19:50   #6
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

Код:
#include <fstream>
using namespace std;

int main ()
{
    ifstream in ("test.in",ios::in);
    ofstream out("test.out",ios::out);

    int x,n,a,b;
    in>>x>>n>>a>>b;

    if(x < a || a==x && n <= b ) out<<"yes"<<endl;
    else out<<"no\n"<< (n>b ? x-a : x-a-1 )<<" "<< (n>=b ? n-b : 100-b+n)<<endl;

    in.close();out.close();
}

Последний раз редактировалось Hemul; 04.05.2011 в 19:55.
Hemul вне форума Ответить с цитированием
Старый 04.05.2011, 20:58   #7
sp.caster
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 60
По умолчанию

Hemul, ваш кода сложен для понимания, для меня по-крайне мере, и все же проблему он не решил. Бред какой-то.

Создал все заново, использовал ваш код - все работает. Спасибо. А почему тогда не работал старый проект?

Все разобрался, спасибо за помощь

Последний раз редактировалось sp.caster; 04.05.2011 в 22:00.
sp.caster вне форума Ответить с цитированием
Старый 05.05.2011, 07:09   #8
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

Код:
#include <fstream>//библиотека для работы с файлами
using namespace std;//пространство имен

int main ()
{
    ifstream in ("test.in",ios::in);//открываем входной файл
    ofstream out("test.out",ios::out);//открываем выходной файл

    int x,n,a,b;          //объявляем переменные 
    in>>x>>n>>a>>b;//и считываем их из файла

    //если у нас больше рублей чем стоит диск , или рублей столько же ,и
    //копеек больше или равно ,то соответственно денег нам хватает и в файл мы пишем yes
    if(x < a || a==x && n <= b ) out<<"yes"<<endl;
    //в противном же случае нам денег не хватает ,мы пишем no
    //и определяем сколько же нам не хватает
    //для краткости кода я использовал тернарный оператор ? :
    //который похож на if else , продемострирую на примере :
    // cout<<(n>b ? x-a : x-a-1 )<<endl; тоже самое ,что и
    // if (n > b )
    //      cout<< x - a;<<endl;
    // else 
    //      cout<<x-a-1<<endl;
    else out<<"no\n"<< (n>b ? x-a : x-a-1 )<<" "<< (n>=b ? n-b : 100-b+n)<<endl;

    in.close();out.close();//закрываем файлы
}
Hemul вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на паскале (набрать заданную сумму денег) Старый Gilbert Помощь студентам 4 21.03.2011 15:12
Жадный алгоритм. Задача о размене денег. Multiman Помощь студентам 4 18.10.2010 13:15