Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отзывать/положить деньги - простой код, но мне нужно помощь

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Я новичок. Это задача моего учителя...
Valeriya12
Отправлено: 08 Февраля, 2014 - 19:20:51
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Привет! Извините за мой хромающий русский. ;)

Всё здесь должно быть просто.

Задача такая: человек выбирает если хочет отзывать/положить деньги, нажимав клавишу "w" чтоб отзывать деньги из банка или "d" чтоб положить деньги в банк...и потом выбирает сколько, и всё. Но, не получается. Недовольство, огорчение

Нажимав "d" или "w" получаю "Use of undefined constant" в моем Command Prompt (там я запускаю программу)... как же? Это значит, что нужно как-то определять "w" или "d" заранее, что ли? Не понимаю как это работает.

А вот мой код:


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $balance=1000;
  4. echo "Welcome to your bank. Your balance is " . $balance . " Which action would you like to take? (w=withdraw, d=deposit) \n" ;
  5. $user=fgets(STDIN);
  6.  
  7.         if ($user==w)
  8.         {
  9.         echo "How much would you like to withdraw? \n";
  10.         (int)$sum=fgets(STDIN);
  11.         $balance = $balance-$sum;
  12.         echo "Money successfully withdrawn. Your balance now stands at" . $balance . "";
  13.         }
  14.        
  15. else if ($user==d)
  16. {
  17. echo "How much would you like to deposit? \n";
  18. $sum=fgets(STDIN);
  19. $balance = $balance+$sum;
  20. echo "Money successfully deposited. Your balance now stands at" . $balance . "" ;
  21. }
  22. ?>
 
 Top
Мелкий Супермодератор
Отправлено: 08 Февраля, 2014 - 20:05:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




PHP:
скопировать код в буфер обмена
  1. d //это константа
  2. "d" //это строка


-----
PostgreSQL DBA
 
 Top
Valeriya12
Отправлено: 08 Февраля, 2014 - 21:07:59
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Знаете что? Я уже это попробовала. Все еще не работает. Если делаю так, то программа заканчивается нажимав "w" или "d" и не показывается сколько денег осталось у потребителя.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $balance=1000;
  3. echo "Welcome to your bank. Your balance is " . $balance . " Which action would you like to take? (w=withdraw, d=deposit) \n" ;
  4. $user=fgets(STDIN);
  5.  
  6.         if ($user=="w")
  7.         {
  8.         echo "How much would you like to withdraw? \n";
  9.         (int)$sum=fgets(STDIN);
  10.         $balance = $balance-$sum;
  11.         echo "Money successfully withdrawn. Your balance now stands at" . $balance . "";
  12.         }
  13.        
  14. else if ($user=="d")
  15. {
  16. echo "How much would you like to deposit? \n";
  17. $sum=fgets(STDIN);
  18. $balance = $balance+$sum;
  19. echo "Money successfully deposited. Your balance now stands at" . $balance . "" ;
  20. }
  21. ?>
 
 Top
Мелкий Супермодератор
Отправлено: 08 Февраля, 2014 - 21:24:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ну так вот, вопрос совершенно изменился.
Логично высказать гипотезу, что программа завершается, т.к. условия не выполняются, а else у вас нет. Резонно предположить, что в $user попадает что-то ещё. Символ конца строки, как рабочая версия. Сделайте var_dump($user);, будет видно что-нибудь.


-----
PostgreSQL DBA
 
 Top
Valeriya12
Отправлено: 08 Февраля, 2014 - 22:44:28
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Мы еще не выучили о функции var_dump. Предполагаю мы должны совершить эту программу без её. Я добавила последний "else"...но теперь нажимав "w" или "d" получаю только то, что написала в "else"... то есть, всегда получаю сообщение ->
Цитата:
You can only use enter 'w' or 'd'


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $balance=1000;
  3. echo "Welcome to your bank. Your balance is " . $balance . " Which action would you like to take? (w=withdraw, d=deposit) \n" ;
  4. $user=fgets(STDIN);
  5.  
  6.         if ($user=="w")
  7.         {
  8.         echo "How much would you like to withdraw? \n";
  9.         (int)$sum=fgets(STDIN);
  10.         $balance = $balance-$sum;
  11.         echo "Money successfully withdrawn. Your balance now stands at" . $balance . "";
  12.         }
  13.        
  14. else if ($user=="d")
  15. {
  16. echo "How much would you like to deposit? \n";
  17. $sum=fgets(STDIN);
  18. $balance = $balance+$sum;
  19. echo "Money successfully deposited. Your balance now stands at" . $balance . "" ;
  20. }
  21.         else
  22.         {
  23.         echo "You can only use enter 'w' or 'd'";
  24.     }
  25. ?>
 
 Top
Мелкий Супермодератор
Отправлено: 09 Февраля, 2014 - 09:04:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Если в той книженции не описано, как надо отлаживать программы - возьмите другую.
Мануал по PHP - это php.net. По другим языкам, библиотекам и технологиям - свои.

О вашем коде всё, что можно было, уже было сказано:
Мелкий пишет:
в $user попадает что-то ещё. Символ конца строки, как рабочая версия.

Я проверил свою гипотезу и оказалось, что она верна. Решением может быть, например, rtrim.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 10 Февраля, 2014 - 09:57:28
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Сообщения с взаимными упрёками удалены. Призываю всех к конструктивизму в общении. По личным вопросам - прошу использовать ЛС. Заранее благодарен.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB