ожидается `; 'до "копейки"?Отладка C ++ (код завершен) - PullRequest
2 голосов
/ 21 декабря 2010

Может кто-нибудь сказать мне, почему я получаю ошибку на моем последнем cout?

#include <iostream>
#include <cmath>
#include <stdio.h>
#include <cstring>
#include <conio.h>

using namespace std;
inline void keep_window_open() { char ch; cin>>ch; }

int main()
{
 cout << "How many pennies do you have?\n";
 int pennies;
 cin >> pennies;
 double total_pen;
 total_pen = (0.01 * pennies);
           if (pennies >= 1)
           {
                       string penn = " pennies.";
           }else
           {
                       string penn = " penny.";
 } cout << "How many nickles do you have?\n";
 int nickles;
 cin >> nickles;
 double total_nic;
 total_nic = (0.05 * nickles);
           if (nickles >= 1)
           {
                       string five = " nickels.";
           }else
           {
                       string five = " nickel.";
 } cout << "How many dimes do you have?\n";
 int dimes;
 cin >> dimes;
 double total_dim;
 total_dim = (0.10 * dimes);
           if (dimes >= 1)
           {
                     string ten = " dimes.";
           }else
           {
                     string ten = " dime."; 
 } cout << "How many quarters do you have?\n";
 int quarters;
 cin >> quarters;
 double total_qua;
 total_qua = (0.25 * quarters);
           if (quarters >= 1)
           {
                        string twentyfive = " quarters.";
           }else
           {
                        string twentyfive = " quarter.";
 } cout << "How many half-dollars do you have?\n";              
 int half_dollars;
 cin >> half_dollars;
 double total_dol;
 total_dol = (0.50 * half_dollars);
           if (half_dollars >= 1)
           { 
                        string fifty = " half dollars.";
           }else
           {
                        string fifty = " half dollar.";
           }
string saying = "You have ";
cout << saying pennies penn << "\n" << saying nickles five << "\n" << saying dimes ten << "\n" << saying quarters twentyfive << "\n" << saying half_dollars fifty << "\n"; 
keep_window_open()
return 0;
}

Ответы [ 5 ]

5 голосов
/ 21 декабря 2010

Вам не хватает << между переменными.

Попробуйте:

cout << say << пенни << penn << "\ n" << высказывание<< nickles << пять << "\ n" << говорю << десять центов << десять << "\ n" << говорю << четверти << двадцать пять << "\ n" << говорю << half_dollars <<пятьдесят << "\ n"; </p>

Обновление:

Область действия некоторых ваших переменных, таких как penn, означает, что их нельзя увидетьв операторе cout.

Вам необходимо объявить переменные вне операторов if / else.

Также, как упоминалось @Color Bend, вы пропускаете точку с запятой после функции keep_window_open().

5 голосов
/ 21 декабря 2010

Добавить еще <<:

cout << saying << pennies << penn << "\n" 
     << saying << nickles << five << "\n"
     << saying << dimes << ten << "\n"
     << saying << quarters << twentyfive << "\n"
     << saying << half_dollars << fifty << "\n"; 

EDIT : Кроме того, вы объявляете переменные во внутренних блоках - их имена больше не действительны снаружи.Объявите свои строки раньше.

3 голосов
/ 21 декабря 2010

Вам не хватает << между строками и числами.Следует читать:

cout << saying << pennies << penn << ...
2 голосов
/ 21 декабря 2010

Как и отсутствующие <<, ваши строковые переменные penn, five, ten, twentyfive и fifty все находятся вне области действия к тому времени, когда вы доберетесь до этой команды. *

Вы не можете сделать это:

if (quarters >= 1)
{
    string twentyfive = " quarters.";
}
else
{
    string twentyfive = " quarter.";
}

Поскольку строка больше не существует, когда она выходит за рамки этих скобок. Если вы хотите сделать это так, вам нужно сначала объявить переменную вне фигурных скобок.

string twentyfive = " quarter.";
if (quarters >= 1)
{
    twentyfive = " quarters.";
}

Или используйте троичный оператор, чтобы убрать его:

string twentyfive = (quarters > 1 ? " quarters." : " quarter.");
2 голосов
/ 21 декабря 2010

В выражении keep_window_open() те, у которых нет точки с запятой.

...