Code-live.ru

Программирование для начинающих

Переменные и типы данных в C++ — урок 2

Из школьного курса математики мы все знаем, что такое переменные. В программировании принципы довольно схожи. Переменная — это «ячейка» оперативной памяти компьютера, в которой может храниться какая-либо информация.

В программировании переменная, как и в математике, может иметь название, состоящее из одной латинской буквы, но также может состоять из нескольких символов, целого слова или нескольких слов.

Типы данных

В языке С++ все переменные имеют определенный тип данных. Например, переменная, имеющая целочисленный тип не может содержать ничего кроме целых чисел, а переменная с плавающей точкой — только дробные числа.

Тип данных присваивается переменной при ее объявлении или инициализации. Ниже приведены основные типы данных языка C++, которые нам понадобятся.

Основные типы данных в C++

  • int — целочисленный тип данных.
  • float — тип данных с плавающей запятой.
  • double — тип данных с плавающей запятой двойной точности.
  • char — символьный тип данных.
  • bool — логический тип данных.

Объявление переменной

Объявление переменной в C++ происходит таким образом: сначала указывается тип данных для этой переменной а затем название этой переменной.

Пример объявления переменных

int a; // объявление переменной a целого типа. 
float b; // объявление переменной b типа данных с плавающей запятой. 
double c = 14.2; // инициализация переменной типа double. 
char d = 's'; // инициализация переменной типа char. 
bool k = true; // инициализация логической переменной k.
  • Заметьте, что в C++ оператор присваивания (=) — не является знаком равенства и не может использоваться для сравнения значений. Оператор равенства записывается как «двойное равно» — ==.

  • Присваивание используется для сохранения определенного значение в переменной. Например, запись вида a = 10 задает переменной a значение числа 10.

Простой калькулятор на C++

Сейчас мы напишем простую программу-калькулятор, которая будет принимать от пользователя два целых числа, а затем определять их сумму:

#include <iostream> 
using namespace std;

int main() 
{ 
    setlocale(0, ""); 
    /*7*/ int a, b; // объявление двух переменных a и b целого типа данных. 
    cout << "Введите первое число: "; 
    cin >> a; // пользователь присваивает переменной a какое-либо значение. 
    cout << "Введите второе число: "; 
    cin >> b; 
    /*12*/  int c = a + b; // новой переменной c присваиваем значение суммы введенных пользователем данных. 
    cout << "Сумма чисел = " << c << endl; // вывод ответа. 
    return 0; 
}

Разбор кода

В 7-й строке кода программы мы объявляем переменные «a» и «b» целого типа int. В следующей строке кода выводится сообщение пользователю, чтобы он ввел с клавиатуры первое число.

В 9-й строке стоит еще незнакомый вам оператор — cin. Этот оператор просит пользователя ввести значение переменной «b» с клавиатуры. Аналогичным образом задается значение переменной «c».

В 12-й строке мы производим инициализацию переменной «c» суммой переменных «a» и «b». Далее находится уже знакомый вам оператор cout, который выводит на экран строку и значение переменной «c».

  • При выводе переменных, они не заключаются в кавычки, в отличие от строк.

Домашнее задание

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

Следующий урок: →.

Рейтинг статьи — 4.8. Проголосовало — 73.

Прочитайте похожие статьи

Обсудите статью на форуме.

После регистрации, реклама на сайте отображаться не будет.

Комментарии: 260 (RSS)

Alessandro
Alessandro

Исправьте в примере строчку:

char d = "s";

Не вводите учеников в заблуждение! :)

Alessandro, спасибо, это опечатка.

#include <iostream>
using namespace std;

int main()
{
    setlocale(0,"");
    int a,b;
    cout << "Введите пример:" << endl;
    if(cin >> a + b)
    {
        int c = a + b;
        cout << "Сума чисел =" << c << endl;
    }
    else if(cin >> a - b)
    {
        int d = a - b;
        cout << "Разница чисел =" << d << endl;
    }
    else if(cin >> a * b)
    {
        int e = a * b;
        cout << "Произведение чисел =" << e << endl;
    }
    else
    {
        int f = a / b;
        cout << "Частное чисел =" << f << endl;
    }
}

бинарный '>>': не найден оператор, принимающий правый операнд типа 'int' (или
приемлемое преобразование отсутствует)

Евгений
Евгений

Подскажите пожалуйста, что не так?

#include <iostream>
using namespace std;

int main()
{
    setlocale(0, "russian");
    double num;
    cout << "Напиши сюда однозначное положительное число , а я отгадаю";
    cin >> num;
    if (num == num) {
        cout<<"Мдааа, твоё число num"<<endl;
    } else {
        cout<<"Я же сказал однозначное,положительное" <endl;
    }
    system("pause");
    return 0;
}
Михаил
Михаил

Запускаю программу на win7, всё работает, НО объясните, пожалуйста, почему
после ввода четырёх чисел программа моментально выдаёт результат и тут же
закрывается? Я поглядеть хочу, не успеваю... :)

Михаил, попробуйте ввести перед return 0; команду: system("pause");

Михаил: Запускаю программу на win7, всё работает, НО объясните,
пожалуйста, почему после ввода четырёх чисел программа моментально выдаёт
результат и тут же закрывается? Я поглядеть хочу, не успеваю... :)

Почему моя программа закрывается сразу же после ее запуска

Сергей
Сергей

А почему у меня русский шрифт не работает? Кракозябры в консоли....

Сергей, вам сюда.

Владимир
Владимир

Подскажите пожалуйста, как создать калькулятор для решения задачи и какие коды
нужно туда вводить?

Георгий
Георгий
#include <iostream>
using namespace std;

int main()
{
    setlocale(0, "");
    double num;

    cout << "Hello";
    cin >> num;

    if (num < 10) { 
        cout << " You wrote < 10" << endl;
    } else { 
        cout << "You wrote > or = 10" << endl;
    }
    system("pause") ;
    return 0;
}

Вот я написал,команда system(«pause») дает возможность посмотреть рез-тат,но
после нажатия любой клавиши у меня закрывается командная строка.Что нужно
вписать,чтобы можно было постоянно вписывать числа и командная строка не
закрывалась??

Георгий, вы можете запускать скомпилированную программу из уже открытой командной строки, тогда вам не придется использовать system("pause"); Откройте консоль, выполните нужную программу, указав путь до нее (или переместитесь в директорию с программой с помощью команды cd.

Если вы имеете ввиду цикличный ввод в процессе выполнения программы, то что-то
вроде

while (num != -1) {
    cin >> num;

    if (num < 10) {
        // ... do something
    } else {
        // ...
    }
}

Советую прочитать урок про циклы.

Подскажите пожалуйста, как создать калькулятор для решения задачи и какие
коды нужно туда вводить?

Какую именно задачу вы хотите решить?

cаня
cаня

а чем с++ от паскаля отличается?

1>.\1211.cpp(13) : error C2065: count: необъявленный идентификатор Что это??

Вопрос почему у меня не работает cout и cin?

  • Error 1 error C2065: 'cout' : undeclared identifier Error 2 error C2143:
    syntax error : missing ';' before ':'
  • Error 3 error C2143: syntax error : missing ';' before ':'

Может какую библиотеку не подключил? Работаю в visual studio 2008

Error 2 error C2143: syntax error : missing ';' before ':' Error 3 error
C2143: syntax error : missing ';' before ':'

это опечатка у меня, но первая ошибка все ровно осталась.

meg сегодня в 19:40

Вопрос почему у меня не работает cout и cin?

  • Error 1 error C2065: 'cout' : undeclared identifier Error 2 error C2143:
  • syntax error : missing ';' before ':' Error 3 error C2143: syntax error :
    missing ';' before ':'

Может какую библиотеку не подключил? Работаю в visual studio 2008

meg сегодня в 19:47

Error 2 error C2143: syntax error : missing ';' before ':' Error 3 error
C2143: syntax error : missing ';' before ':'

это опечатка у меня, но первая ошибка все ровно осталась.

Я все понял это читать просто надо!

Наталья
Наталья

Написала такой калькулятор =) ЗАРАБОТАЛО)))))) Программа-первенец)))) за
основу взяла образец калькуляятора, приведенного тут и разбавила старыми
познаниями паскаля =) ура!!!

#include <iostream>
using namespace std;

int main()
{
    setlocale(0, "");
    int a, b;
    cout << "Введите первое число: ";
    cin >> a;
    cout << "Введите второе число: "; 
    cin >> b;
    char z;
    cout << "Введите знак дествия: ";
    cin >> z;
    if (z == '+') {
        int c = a + b;
        cout << "Сумма чисел = " << c << endl;
    }
    if (z == '-') {
        int c = a - b;
        cout << "Разность чисел = " << c << endl;
    }
    if (z == '*') {
        int c = a * b;
        cout << "Произведение чисел = " << c << endl;
    }
    if (z == '/') {
        int c = a / b;
        cout << "Частное чисел = " << c << endl;
    }
    system("pause");
    return 0;
}
Иван
Иван

как запросить ввод нескольких перееменных подряд? желательно через пробел.
ввожу cin >> a,b он компилирует, но когда начинаю вводить числа работает не
коректно

Иван, cin >> a >> b;

magic_johnson
magic_johnson
int a,b;
char c;
cin >>a>>c>>b;
int d=a+b;
cout <<"="<<d << endl;
system("pause");
return 0;

Подскажите, пожалуйста, есть ли интсрумент, чтобы выводило не

5+5
=10

а «5+5=10»

magic_johnson
magic_johnson

Ну вы поняли. В первом случае две строки. Во втором — всё в одну строчку.

magic_johnson, вам, в любом случае, необходимо передать программе необходимые параметры, после чего нажать клавишу ввода. Хотя, вы можете использовать аргументы коммандной строки.

magic_johnson
magic_johnson

selevit. Понятно. Урок 10? Предпочитаю идти по порядку.

Черный Вальс
Черный Вальс
#include <iostream>
using namespace std;
int main () {
    setlocale(LC_ALL, "Russian");
    float i,n,sum,r,pr,del,q,root;
    cout << "Вас приветствует Calc-Master." << endl;
    cout << "Введите первое число." << endl;
    cin >> i;
    cout << "Введите второе число." << endl;
    cin >> n;
    sum=i+n;
    r=i-n;
    pr=i*n;
    del=i/n;
    cout << "Сумма чисел равна " << sum << endl;
    cout << "Разность чисел равна " << r << endl;
    cout << "Произведение чисел равно " << pr << endl;
    cout << "Чвстное чисел равно " << del << endl;
    system ("pause");
    return 0;
}

Как сделать чтобы при делении было дробное число а не целое,и при делении на ноль выводило «на 0 делить нельзя»?
Заранее спасибо.

Извините за беспокойство,разобрался сам.

Mozgokrab
Mozgokrab

Народ, извините за глупый вопрос, но я хочу создать что-то типо задачек, на пример меня будут спрашивать «сколько будет 1=215», и что бы если я напишу ответ 216 он выдает Правильно, а если введу 201486013 он выдаст Не правильно.
Пожалуйста скажите код, я его разберу, посмотрю что да как, и буду продолжать обучение:3

Mozgokrab
Mozgokrab

Ребята, мой вопрос отменяется, ответ на мой вопрос находитсяв следующем уроке))
Но теперь хочу спросить как запустить эту же программу с другого компьютера (скинуть эту прогу на другой комп и запустить, показать на что я способен)=)

Когда компилируешь автоматически создается екзешник с таким же именем как и твой спп файл,добавь иконку для него и все.

Здравствуйте! можете помочь?! как построить программу которая вычислит расстояние между двумя точками с координатами х1,у1 и х2,у2. заранее спасибо)

Balnur, напишите об этом на форум.

stotios
stotios

А есть ли какой-нибудь оператор возвращающий в начало кода, например, я хочу что бы в «калькуляторе» можно было решать бесконечно, т. е. не перезапускать его после каждого решения

stolios, в языке C существует оператор goto, но его не рекомендуют использовать. То, что вы хотите, можно реализовать с помощью циклов.

stotios
stotios

Спасибо

Стас
Стас

ни один и пример не компилируется.

test6(Calculator).cpp(9): error C3861: 'setlocale': identifier not found
1>test6(Calculator).cpp(11): error C2065: 'cout' : undeclared identifier
1>test6(Calculator).cpp(12): error C2065: 'cin' : undeclared identifier
1>test6(Calculator).cpp(13): error C2065: 'cout' : undeclared identifier
1>test6(Calculator).cpp(14): error C2065: 'cin' : undeclared identifier
1>test6(Calculator).cpp(16): error C2065: 'cout' : undeclared identifier
1>test6(Calculator).cpp(16): error C2065: 'endl' : undeclared identifi

Darkfull
Darkfull

Всем привет, Как сделать чтобы при делении было дробное число а не целое,и при делении на ноль выводило « на 0 делить нельзя » ? Заранее спасибо.

Darkfull,

Как сделать чтобы при делении было дробное число а не целое

Если хотя бы одно из чисел имеет тип float, то результат будет дробным. Если и делитель и знаменатель — целые числа, то и результат будет целым. Чтобы преобразовать число в дробный тип, перед ним можно поставить оператор (float).

Например:

int divider = 9; // делитель
float result = 100 / (float) divider;

Также, если мы работаем с константами, можно привести число к дробному типу таким образом:

float result = 100 / 9.0; // Результат будет дробным

Другой вариант подобной записи:

float result = 100 / 9.; // Дробную часть можно не указывать явно.

и при делении на ноль выводило «на 0 делить нельзя»

Делайте проверку перед выполнением деления. Почитайте урок про ветвление.

int denominator = 20;
int divider = 0;

if (divider == 0) {
    std::cout << "На нуль нельзя делить!" << std::endl;
} else {
    float result = denominator / (float) divider;
    std::cout << result << std::endl;
}
Darkfull
Darkfull

selevit, Спасибо, понял, интересные у вас уроки :D

Darkfull
Darkfull

selevit
Смотрите, я не понял вот что:

Вот я написал калькулятор:

 int main()
{
int i = 0;
float x, y;
char z;
setlocale(LC_ALL, "rus");
cout << "Введите пример" << endl;
while (i < 1)
{
cin >> x >> z >> y;
if ( z == '+' ) 
cout << "Сумма равна: " << x+y << endl;
else if( z == '-' ) 
cout << "Разность равна: " << x-y << endl;
else if( z == '*' )
cout << "Произведение равно: " << x*y << endl;
else
cout << "Частное равно: " << x/y << endl;
}
system ("pause");
return 0;
}

Вот вопрос: Как правильно записать

If ( z == '/'; y == 0)
cout << "На нуль делить нельзя!" << endl;

Тоесть как сделать так чтобы условие выполнялось, только если z == '/' и y == 0;
А если будет так, например
y = 1, а z = /; или
y = 0, a z = +;
то и условие не выполнялось?
заранее спасибо.

Петя
Петя

Darkfull

if (z=='/') {
    if (y == 0)
        cout << "на ноль делишь однако." << endl;
    else 
        cout<<"Ответ:"<<a/b<<endl;
}
Алексей
Алексей
#include "stdafx.h"
#include "conio.h"
#include <iostream>
#include <math.h>
#include <locale.h>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{   
    setlocale(LC_ALL,"Russian");

    float a,b,c,d,f,e,x,y,v,t,ee;
    v=1;
    t=exp(v);
    cout << "Введите Х: " << endl;
    cin >> x;
    if(x == 3)
    {
        cout << " Y = 1" << endl;
    }
    else 
        if(1<=x)
        {   
            if(x<3)
            {
            e = pow(x,3) + 3;
            c = 1/tan(e);
            b = x-3;
            f = pow(b,1);
            a = pow(v,f);
            c = c * a;
            d = sqrt(abs(b));
            c = c/d;
            printf("Y=%f\n",c);
            }
        }
        else //почему эту часть не видит?
        {
            ee = pow(x,2)+2;
            d = 1/tan(ee);
            a = pow(t,2);
            b = log(x+2);
            c = d*a*b;
            y = pow(c,1/3);

            printf("Y=%f\n",y);
        }// до сюда...
        system("pause");

    return 0;
}
Никита
Никита

Что значит строчка setlocale(0,«»);?

Никита, setlocale (0,«»);
— позволяет отображать русский шрифт в консоле нормально.

Никита
Никита

спасибо за ответ

 #include <iostream>
      using namespace std;

 int main()

{   
bool stop = false ;

int i = 0 ;
do

{
 cout << "Stroka :" << i << endl;
 i++;
} 
while(stop == false) ;

 cin.get();
}

1>——— Построение начато: проект: Fir, Конфигурация: Debug Win32 ———
1> Исходный код3.cpp
1>Исходный код3.obj : error LNK2005: _main уже определен в Исходный код2.obj
1>D:\programs\Microsoft Visual C++ 2010 Express — RUS\Fir\Debug\Fir.exe : fatal error LNK1169: обнаружен многократно определенный символ — один или более
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Что не так?

Вот мой пример калькулятора:

#include <iostream>

using namespace std;

void Start ();
void VvodY ();
void Result ();
void Otvet ();

double x, y;
float r;
int v;

void Start ()
{

    cout<<"\nВыберете действие и нажмите ENTER:\n";
    cout<<"1) X+Y\n2) X-Y\n3) X*Y\n4) X/Y\n\n\n";
    cin>>v;

    if ((v<1) || (v>4) )
    {
        cout<<"\n Ошибка. Введите корректное число. (Выберете действие из предложенных вариантов) \n\n";
        Start();
    }

    cout<<"\n Введите Х и нажмите ENTER \n\n";
    cin>>x;
    VvodY();
}

void VvodY ()
{
    cout<<"\n Введите Y и нажмите ENTER \n\n";
    cin>>y;
    Result();
}

void Result ()
{

    if (y==0)
    {
        cout<<"\n Ошибка. Введите корректное число. (Не пытайтесь делить на ноль) \n\n";
        VvodY();
    }
    if (v==1)
    {
        r=x+y;
        Otvet();
    }
    if (v==2)
    {
        r=x-y;
        Otvet();
    }
    if (v==3)
    {
        r=x*y;
        Otvet();
    }
    if (v==4)
    {
        r=x/y;
        Otvet();
    }

}

void Otvet ()
{
    cout<<"\n";
    cout<<" Ответ = "<<r;
    cout<<"\n\n\n\n";
    system("pause");
    Start();
}

int main()

{
    setlocale(0, "Russian");
    cout<<"Название программы: Простой Калькулятор\n";
    cout<<"Версия: 0.4.5\n";
    cout<<"Известный баг: при вводе буквы или символа вместо числа , программа зацикливается.\nАвтор по мере своих сил и способностей обязуеться\n дополнять и исправлять программу.\n\n";
    Start();
    return 0;
}

Кстати, понятия не имею, что такое void :-) Просто где-то увидел в коде и разобрался, как его использовать. Вроде как было в одном из стандартных примеров в Dev-C++ 4.9.9.2

Рассматривать и разбирать исходники вообще полезное занятие :-)

Ingush06
Ingush06

Кстати, понятия не имею, что такое void :-) Просто где-то увидел в коде и разобрался, как его использовать.

тип void означает, что данная функция не возвращает никакое значение.

И кстати, у тебя ошибка в слове «обязуется».

Ingush06
Ingush06

В названии ошибка — после урок 2 следует сразу «урок 4», хотя по идее должно быть «урок 3».

А что многие используют cout and cin, есть же красивее функции printf и scanf :-)

Куда весь код этот вводить?

У кого вылетает сразу после решения вот код.

#include <iostream> 
using namespace std;

int main() 
{ 
    setlocale(0, ""); 
    int a, b; 
    cout << "Введите первое число и нажмите Enter: "; 
    cin >> a;
    cout << "Введите второе число и нажмите Enter: "; 
    cin >> b; 
    int c = a + b;
    cout << "Сумма чисел = " << c << endl;
    system ("pause");
    return 0; 
}

Я добавил 1 строчку и всё.

получилось как-то так

#include <iostream>

using namespace std;

int main()
{
    cout << "простой калькулятор" << endl;
    //int a, b;
    double a, b, c;
    char z;
    cout << "введите пример" << endl;
    cin >> a >> z >> b;
    if (z == '+')
    {
        c = a + b;
        cout << c << endl;
    }
    if (z == '-')
    {
        c = a - b;
        cout << c << endl;
    }
    if (z == '*')
    {
        c = a * b;
        cout << c << endl;
    }
    if (z == '/')
    {
        if(b == 0)
        {
            cout << "НЕТ только не на НОЛЬ!!!!!11" << endl;
        }
        else
        {
            c = a / b;
            cout << c << endl;
        }
    }
    return 0;
}

а как сделать, что бы он повторял этот пример, пока не будет введена буква «q», а на другие символы выводить сообщение?

Почему вместо калькулятора там пишет различные буквы? Ответьте!

#include <iostream>
using namespace std;

int main()
{
setlocale(0, "");
    int a, b;
    cout << "Enter the first number:   ";
    cin >> a;
    cout << "Enter the second number:   ";
    cin >> b;
    char z;
    cout << "Type an action:   ";
    cin >> z;
    if (z == '+') {
          int c = a + b;
          cout << "The sum = " << c << endl;
    }
    if (z == '-') {
          int c = a - b;
          cout << "Difference between the numbers =  " << c << endl;
    }
    if (z == '*') {
          int c = a * b;{
          cout << "Multiplication of numbers =  " << c << endl;
    }
    if (z == '/') {
          int c = a / b;
          cout << "Share numbers =  " << c << endl;
    }
    system ("pause");
    return 0;

}

Скажи пожалуйста, где тут ошибка?

xinNGon
xinNGon
  cout << "Multiplication of numbers =  " << c << endl;
}}

Не хватает фигурной скобки.

Миша
Миша

Ребят а если я хочу возвести переменную в квадрат, то мне нужно ввести одну переменную и умножать саму на себя c = a*a?

tututu.exe
tututu.exe

Ребят а если я хочу возвести переменную в квадрат, то мне нужно ввести одну переменную и умножать саму на себя c = a*a?
#include <iostream>
using namespace std;

int main()
{
setlocale(0, «»);
int a;
cout << «Введите число: »;
cin >> a;
int e = a * a;
cout << «Квадрат числа = » << e << endl;
return 0;
}

У меня получилось вот таким кодом

Hupercube
Hupercube
#include <iostream> 
using namespace std;

int main() 
{ 
    setlocale(LC_ALL, "Russian");
    double a, b, c; 
        cout << "Введите первое число: "; 
        cin >> a; // ввод
        cout << "Введите второе число: "; 
        cin >> b;
            c = a + b; cout << a << "+" << b << "=" << c << endl;
            c = a - b; cout << a << "-" << b << "=" << c << endl;
            c = b - a; cout << b << "-" << a << "=" << c << endl;
            c = a * b; cout << a << "*" << b << "=" << c << endl;
            if (b == 0) { cout << a << "/" << b << "= На 0 делить нельзя" << endl; }
            else        {c = a / b; cout << a << "/" << b << "=" << c << endl;}
            if (a == 0) { cout << b << "/" << a << "= На 0 делить нельзя" << endl; }
            else        {c = b / a; cout << b << "/" << a << "=" << c << endl;}
    system("pause");
    return 0;
Hupercube
Hupercube

Если в программе возводить число чисто в квадрат то можно использовать и 1 переменную.

int main() 
{ 
    setlocale(LC_ALL, "Russian");
    double a; 
    cout << "Введите число: "; 
    cin >> a; 
    a = a * a; 
    cout << "Квадрат числа = " << a << endl;    
    system("pause");
    return 0;

не мог долго скомпилировать,не понимал в чем проблема.
\main.cpp(14) : error C2065: o: необъявленный идентификатор
оказывается в строке return 0; вместо 0 написал букву о
повнимательней надо быть)

Hupercube
Hupercube

На самом деле хороший сайт! В школе обучали на паскале. В вузе (в котором не доучился) учили с++. Перечитав все уроки которые здесь есть вспомнил даже школьный материал. Масивы, сортировки...

По возможности по всем урокам приведу свои примеры. Каждый пример уникален!.

Большая благодарность создателю проекта!

Hupercube
Hupercube

Вопрос по созданию калькулятора!

Когда работаешь с большими числами

К примеру:
1000*1000=1000000 (мы это знаем)

Но результат который выдает нам (нами написанный «Пилотный» калькулятор)

1000*1000=1e+006 (в экспоненциальной форме)

Каким образом можно сделать калькулятор с поддержкой больших чисел?

(По школьной программе мы для чисел создавали 2 массива в которые записывали цифры из чисел. После чего проводили операции. Но этот метод кривой как по мне.)

Hupercube, если результат входит в диапазон выбранного типа данных, то используйте функцию std::setpresition() из заголовочного файла <iomanip>.

#include <iostream>
#include <iomanip>

int main()
{
    unsigned int result = 1000 * 1000 * 1000;

    // Задаем точность вывода чисел в 20 знаков
    std::setprecision(20);

    std::cout << result << std::endl;
    return 0;
}

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

.

Hupercube
Hupercube

selevit, спасибо!

Этот пример я просматривал буквально пол часа назад.

Максимальное выводимое значение (ответ) 4294967295

если в таком калькуляторе написать

4294967295+1 то ответ нам будет 0 ))))

если 4294967295+10 то ответ 9 ))))))

Странная цикличность)))

Hupercube, попробуйте использовать тип long int или unsigned long int. Еще больший размер имеют float и double.

Когда вы выходите из диапазона чисел, который предоставляет тот или иной тип данных, происходит переполнение и результат получается неверным.

selevit, Можно ли попросить пользователя ввести сразу целое выражение с помощью оператора cin?
Например , cin >> a + b

Оператор std::cin воспринимает любой пробельный символ как признак завершения ввода. Чтобы ввести строку с пробелами, используйте std::getline(std::cin, str);. Тем не менее, после ввода выражения вам нужно будет распарсить его самостоятельно и вычислить результат. Само по себе ничего считаться не будет.

Оператор std::cin воспринимает любой пробельный символ как признак завершения ввода. Чтобы ввести строку с пробелами, используйте std::getline(std::cin, str);. Тем не менее, после ввода выражения вам нужно будет распарсить его самостоятельно и вычислить результат. Само по себе ничего считаться не будет.

спасибо я попробую это использовать!

  1. Если вводить текстовое значение то будет ошибка(
  2. После вывода значение cmd окно сразу закрываеться (есть 0.1сек чтобы посмотреть результат)
  3. Как то маловато инфы

Решил поэкспериментировать вот над чем: После того, как пользователь вводит переменную выводить сообщение «Вы ввели переменную a» (аналогично и с b), но запуская программу получается, что все пишется в одну строчку, хотя я каждое сообщение ставлю с новой строчки. Так вот как же сделать каждое сообщение с новой строчки?

Виктор
Виктор

setlocale(0, ""); Что это?

Alexey, используйте оператор endl для переноса строки:

cout << "First string" << endl;
cout << "Second string" << endl;

Виктор, функция setlocale используется для корректного отображения кириллицы в командной строке Windows.

Владлен
Владлен

Очень давно спрашивали о этом, Женя вроде бы ))))

#include <iostream>
using namespace std;
int main()
{
    setlocale(0,"");
    int num;
    cout << "Напиши сюда однозначное положительное число , а я отгадаю"<<endl;
    cin >> num;
    if (num>0&&num<10) 
        cout<<"Мдааа, твоё число "<<num<<endl;
    else 
        cout<<"Я же сказал однозначное,положительное" <<endl;
    system("pause");
}
Владлен
Владлен

Возможно если кому то нужно будет

Вывод ячеек массива через If\else

#include <iostream>
using namespace std;
int main ()
{
setlocale(LC_ALL,"rus");
int mss[4]={6,9,10,56},a=0;
cout<<"Какую часть массива вы хотите вывести"<<endl;
cin>>a;
if(a>0&&a<=4)
{
a=(--a);
cout<<mss[a]<<endl;
}
else 
{
cout<<"не верно заданна функция, попробуйте ещё раз\n"<<endl;
main();
return 0;
}
system("pause");
}
Евгений
Евгений

setlocale(0, ""); не работает! в чем причина подскажите плиз

#include <iostream> 
using namespace std;
int main() 
{ 
    int a, b;  
    setlocale(0, " ");
    cout << "введите число"; 
    cin >> a; 
    cout << "введите число: "; 
    cin >> b; 
    int c = a + b;  
    cout << "результат = " << c << endl;  
    system("pause");
    return 0; 
}
setlocale(0, " ");

Пробел между кавычками не нужен. Какой вы используете компилятор/IDE?

Евгений
Евгений

Использую Dev-C++

Евгений, почитайте вот эту ветку комментариев — там есть несколько хороших решений, применимых и к Dev C++.

привет всем. Большое спасибо за уроки! только потихоньку начинаю вникать. Хотел спросить, может не совсем корректно, как можно перевести программу (тот же калькулятор) чтобы открывать именно как программу, а не опять в C++

В директории вашего проекта находится скомпилированная программа (внутри директории «debug»). Берете эту программу и запускаете.

P.S. Советую прочитать тему форума про запуск скомпилированных программ без установленной IDE

(Если такая проблема на Microsoft Visual C++ 2008 Express Edition
То при построении проекта выставите конфигурацию решения
с Debug на Release

И запустите программу.
После чего в папке с проектом можно наблюдать папку
Release)

Пробовал, неизвестный файл не знаю с чего открыть, может как то иначе не пойму, что установить дополнительно?

GranderGamer
GranderGamer

Евгений,

Подскажите пожалуйста, что не так?

  #include <iostream>
  using namespace std;

int main()
{
      setlocale(0, "russian");
      double num;
      cout << "Напиши сюда однозначное положительное число , а я отгадаю";
      cin >> num;
      if (num == num) {
          cout<<"Мдааа, твоё число num"<<endl;
      } else {
          cout<<"Я же сказал однозначное,положительное" <<endl;
      }
      system("pause");
      return 0;
}

У тебя много ошибок. Можно было сделать так:

#include <iostream>
 using namespace std;

 int main()
 {
       setlocale(0, "russian");
       int num;
       cout << "Пожалуйста, напиши сюда число, а я попробую отгадаю";
       cin >> num;
       cout << "Похоже твое число " << num << endl;
       system("pause");
       return 0;
 }

у меня детский вопрос: как объявить строковую переменную типа а=«слово»? писал string нехочет

Алодем
Алодем

char — символьный тип данных
если тебе надо заключить в переменную слово используй этот тип

Сергей
Сергей

Вводишь любое число и получаешь сумму всех чисел)

#include <iostream>
using namespace std;

int main()
{

    setlocale(0, "");
    int a;
    cout << "Введите число: "; 
    cin >> a;
    int i=0;
    int e=0;
    while (i<a)
    {
        i++;
        e +=i;
    }
    cout << "Сумма чисел от 1 до " << a <<" = " << e << endl;
    return 0;
}
Dimon_d2
Dimon_d2
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
    setlocale(0, "")
    int a, b; // тут ошибка 
    cout << "5 " << endl
    cin >> a

    cout << "4 " << endl;
    cin >> b;
    int c = a + b;
    cout << "sum of words" << c << endl;
    _getch();
    return 0;
}

почему не работает?

Вы не поставили точки с запятой в конце следующих строк:

cout << "5 " << endl
cin >> a
dimon_d2
dimon_d2

Извините но все равно ошибка в ряду int a, b;

dimon_d2
dimon_d2

все спасибо проблема била в том что я не поставил ; после setlocale(0, «»)

Люди подскажите где надо ставить system("pause"); что бы увидеть конечный результат написанного а то cmd сразу пропадает. Заранее спасибо.

В конце функции main(), перед return 0;.

Iskatel
Iskatel

Что-то не пойму, int может объявлять и переменные и програмные сегменты?

#include <iostream>
using namespace std;
int main ()
{
    int x,y,z;//Íàøè ïåðåìåííûå
    x=10;//Çàäàëè çíà÷åíèå
    y=5;
    z=x-y;//Ïëþñóåì 10+5
    cout << "ravno" << z << endl;
    system("pause");//çàäåðæèì ýêðàí âûâîäà
    return 0; 
}

Готовое!

На самом деле делать можно и легче и понятнее вот

#include <iostream> 
using namespace std;

int main() 
{
    int chislo1;
    int chislo2;
    int summa;
    cout << "Vvedite chislo1: "; // Так как я делаю через CodeBlocks то по русски у меня не пишется!
    cin >> chislo1;
    cout << "Vvedite chislo2: ";
    cin >> chislo2;
    summa = chislo1 + chislo2;
    cout << "Summa ravna: " << summa;
}
арсен
арсен
#include <iostream>
using namespace std;
int main()
{
     setlocale(0, "");
     int a, b;
     cout << 5
     cin >> a;
     cout << 4;
     cin >> b;
     int c = a + b;
     cout << "9 = " << c << endl;
     return 0;
}

ошибки ?? в 8 строке с2146
и там же отсутствует точка с запятой я не как догнать не могу

DocStapler
DocStapler

Помогите пожалуйста! Делаю такой калькулятор: открываешь пишут ввести действие. Какое выбрал там своё сообщение. Для всех действий нормально работает, но когда я ввожу знак деления / он просто пишет чтобы продолжить нажмите любую кнопку и всё! Помогите!!!

#include <iostream>
using namespace std;

int main()
{
    setlocale(0, "");
    char d;
    int a,b;
    cout << "Вас приветствует калькулятор Energy Pro X, для того чтобы начать расчёты ¸   введите знак действия которое хотите совершить";
    cout << endl;
    cin >> d;
    if (d == '+') {
        int c = a+b;
        cout << "Вы выбрали сложение , далее вы должны ввести первое слагаемое после чего должно появиться сообщение о успешном принятии слагаемого" << endl;
    } if (d == '-') {
        int c = a-b;
        cout << "Вы выбрали вычитание , введите уменьшаемое после чего появиться сообщение об успешном принятии уменьшаемого " << endl;
    } if (d == '*') {
        int c = a*b;
        cout << "Вы выбрали умножение , введите первый множитель после чего должно появиться сообщение об успешном принятии множителя" << endl;
    } if (d == '/') {
        int c = a/b;
        cout << "Вы выбрали деление, введите делимое после чего должно появиться сообщение об успешном принятии делимого " << endl;
    } else if (d == '+') {
        cin >> a;
        cout << "Слагаемое успешно введено, введите второе слагаемое" << endl;
        cin >> b;
        int c=a+b;
        cout << "Ответ " << c << endl;
    } else if (d == '-') {
        cin >> a;
        cout << "Уменьшаемое успешно введено, введите вычитаемое" << endl;
        cin >> b;
        int c=a-b;
        cout << "Ответ " << c << endl;
    } else if (d == '*') {
        cin >> a;
        cout << "Множитель успешно введён, введите второй множитель" << endl;
        cin >> b;
        int c=a*b;
        cout << "Ответ " << c << endl;
    } else if (d == '/') {
        cin >> a;
        cout << "Делимое успешно введено, введите делитель" << endl;
        cin >> b;
        int c = a / b;
        cout << "Ответ " << c << endl;
    }
    system("pause");
    return 0;
}

арсен, ошибка в 7 строке, нет;

cout << 5;

DocStapler убери else в

cout << "Вы выбрали деление, введите делимое после чего должно появиться сообщение об успешном принятии делимого " << endl;
} else if (d == '+') {

а здесь else правильнее было бы добавить

if (d == '+') {
    int c = a+b;
    cout << "Вы выбрали сложение , далее вы должны ввести первое слагаемое после чего должно появиться сообщение о успешном принятии слагаемого" << endl;
} else if (d == '-') {
    int c = a-b;
    cout << "Вы выбрали вычитание , введите уменьшаемое после чего появиться сообщение об успешном принятии уменьшаемого " << endl;
} else if (d == '*') {
    int c = a*b;
    cout << "Вы выбрали умножение , введите первый множитель после чего должно появиться сообщение об успешном принятии множителя" << endl;
} else if (d == '/') {
    int c = a/b;
evgeny112
evgeny112
#include <iostream>
using namespace std;

int main ()
{  
    setlocate(0, "");
    int a, b;
    cout << "Введите первое число: ";
    cin >> a;
    cout << "Введите второе число: ";
    cin >> b;
    int c = a + b;
    cout << "Сумма чисел = " << c << endl;  
    return 0;
}

g++ ./calc.cpp
./calc.cpp: В функции «int main()»:
./calc.cpp:6:18: ошибка: нет декларации «setlocate» в этой области видимости
Ошибка при компиляции,в чём может быть проблема?

Функция называется setlocale(), а у вас — setlocate().

Илья
Илья

Помогите пожалуйста, я новичек. Я сделал

#include <iostream>
using namespace std;

int main ()
{
    setlocale(0, "");
    int a,b;
    cout <<"Введите первое число: ";
    cin >> a;
    cout <<"Введите второе число: ";
    cin >> b;
    int c = a + b;
    cout <<"Сумма чисел = " << c << end1;
    return 0;
}

и мне пишет, что end1 — необъявленный идентификатор.

и мне пишет, что end1 — необъявленный идентификатор.

Потому что правильно — endl. А у вас в конце оператора стоит единица вместо «L».

Orashka
Orashka

Пишет ошибку в седьмой строке, в чем проблема?

#include <iostream>
using namespace std;

int main()
{
    setlocale(0, "")
    int a, b;
    cout << "Enter first number: ";
    cin >> a;
    cout << "Enter second number: ";
    cin >> b;
    int c = a + b;
    cout << "This is number- " >> c >> endl;
    system("pause");
    return 0;
}

Ты забыл точку с запятой после setlocale(0, "").

#include <iostream>

using namespace std;

int main()
{
   int nam;
   cout << "vvedite odnoznachnoe polozitelnoe chislo, a ya ugadau: " << endl;
   cin >> nam;
if (nam < 10 & nam > 0)

cout << "vi zagadali: " << nam << endl;

else
        cout << "ya ze skasal odnoznachnoe polozitelnoe chislo" << endl;

   return 0;
}
василь
василь

Подскажите, можно ли в програму вставить фотку или картинку? Если можно, то как?

Заранее спасибо!

В консоль нельзя вставить, только в оконное приложение.

BlooDST
BlooDST

Простой калькулятор. Для новичка, думаю, нормально. Вот только не знаю как сделать, чтобы он считал не только целые числа, но и числа с запятой.

#include <iostream>
using namespace std;

int main()
{
    setlocale(0, "");
    int a, b;
    cout << "Введите первое число: ";
    cin >> a;
    cout << "Введите второе число: ";
    cin >> b;
    int z = a + b;
    cout << "Сумма чисел:(+) = " << z << endl;
    int f = a- b;
        *курсив*cout << "Сумма чисел:(-) = " << f << endl;
    int n = a * b;
    cout << "Сумма чисел:(*) = " << n << endl;
    int q = a / b;
    cout << "Сумма чисел:(/) = " << q << endl;
    system("pause");
    return 0;
}

Вот только не знаю как сделать, чтобы он считал не только целые числа, но и числа с запятой.

Вместо int сделай тип данных float у переменных.

Сергей.
Сергей.

Кто знает, урок 2, что такое setlocale(0, ""); и зачем. Пятая строка.

Сергей, это для отображения кириллицы в консоли.

андрей
андрей

что мне делать если пишет [Error] 'z' was not declared in this scope

что мне делать если пишет [Error] 'z' was not declared in this scope

#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;

int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian_Russia.1251");
   cout << "Дано x рассчитать значения функции" << endl;
   float x,y;
   cin >> x;
   y=sqrt*(1/x+pow(5*x,4));
   cout << "Значение выражения: " << y;
   system("pause");
    return 0; 
}

Ребят подскажите плиз что не так?!

sqrt — это фукнция, а вы ее умножаете.

 y=sqrt*(1/x+pow(5*x,4));

Исправьте. Я так понимаю, имелось ввиду это?

y = sqrt(1 / x + pow(5 * x, 4));

Да спасибо большое, сделал)) немного другой вопрос, пример y=(5x^2+2)^-2 и вот пишу прогу:

int main(int argc, char *argv[])
{
    setlocale(0, "");
    float x;
    float y;
    cout << "Введите значение ";
    cin >> x;
    y = pow(5 * x, 2) + 2;
    cout << "Ответ: " << y;

    system("PAUSE");
    return EXIT_SUCCESS;
}

И вот как сделать эту степень -2 ?!?!

СаньОК
СаньОК

system("pause"); Забыли.

В DevCPP результат не задерживается на экране.

А так, спасибо большое)

александр
александр

У меня вопрос. вот я написал калькулятор в dev c++. нажал ф9 для компиляции. оно вроде скомпилировалось, окно вылезло и закрылось.

Вопрос, где мне теперь включить сам калькулятор и как?

александр
александр

я сделал открытие. недостаточно просто нажать ф9 чтобы скомпилировать. нужно нажать ф11 чтобы скомпить и сразу запустить. в дев цпп
селевит спасибо за ответ)

Роман
Роман

Подскажите, как сделать аналог калькулятора, то есть все действия сам выбераешь (*, /, +, -). И как сделать дизайн?

Переписал все в точности, ввожу первое число, второе, а потом программа закрывается. Помогите плиз!

Роман
Роман

Прошу автора вылоложить урок по «Созданию приложений с графическим интерфесом».

Роман
Роман

Jock99, введи перед return 0; эту команду int w; cin >> w; ........ то есть int w; cin >> w; return 0;

TerrY12
TerrY12

Где здесь моя ошибка?

int main()
{
    setlocale(0, "");
    /*7*/ int a, b;
    cout << "количество касс: ";
    cin >> a;
    cout << "количество касс 2: ";
    cin >> b;
    /*12*/  int c = a + b;
    cout << "количество рабочих какcc = " << c << endl;
    return 0;
}
Роман
Роман

TerrY12, убери «/7/» и «/12/».

Boss302
Boss302

Народ, не подскажете, почему у меня не получается скомпилировать? Начинаю компилировать, появляется окно, в котором написано что программа закрывается!

Вася
Вася

Спасибо за сайт и уроки, уже создал свой посмотрите что получилось developer.dn.ua

Даниель
Даниель

А как сделать чтоб в конце программа не закрывалась ? (ответ не успеваю увидеть)

Андрей1996
Андрей1996

скажите пожалуйста что означает

setlocale(0, "");

подскажите как делать: для произвольных значений a и b решите неравенство: (ax+b)/(x-a)<=0.

Грихаша
Грихаша

Даниэль,
в конце кода до return 0; пропиши system(«pause»);

Мой калькулятор для дробей:

#include <iostream>
using namespace std;

int main() 
{ 
setlocale(LC_ALL, "Russian"); 
cout << "Калькулятор дробей" << endl;
int zukl;
    while (zukl)
    {
    cout << " " << endl;
    int a, az, a4, b, c, cz, c4, d;
    cout << "Введите первую дробь: " << endl; 
    cout << "Целая часть: ";
    cin >> az;
    cin >> a4; 
    cin >> b;
    if (az == 0) 
      { a4 = a; 
      }

    else {  // иначе
    a =  (az*b)+a4;
     } 
    cout << "Введите вторую дробь: "<< endl;
    cout << "Целая часть: ";
    cin >> cz; 
    cin >> c4;
    cin >> d;   
    if (cz == 0) 
      { c4 = c; 
      }

    else {  // иначе
    c =  (cz*d)+c4;
     }

    int mnz1 = b*d;                                                 //Добуток знаменників
    int sum2 = (a*(mnz1/b))+(c*(mnz1/d));                           //Сума чисельників
    int sas1 = (a*(mnz1/b))-(c*(mnz1/d));                           //Різниця чисельників
    int mno1 = a*c;                                                 //Дoбуток чисельників

    int dil1 = a*d;                                                 //Ділення
    int dil2 = b*c;

    cout << "Сумма чисел = " << sum2 << "/"<< mnz1 << endl;
    int sumv = sum2/mnz1;
    int smv0 = sum2-(sumv*mnz1);
    cout << "Целая часть = " << sumv <<" " << smv0 << "/"<< mnz1 << endl;
    cout << " " << endl;

    cout << "Рaзниця чисел = " << sas1 << "/"<< mnz1 << endl;
    int rizv = sas1/mnz1;
    int riz0 = sas1-(rizv*mnz1);
    cout << "Целая часть = " << rizv <<" " << riz0 << "/"<< mnz1 << endl;
    cout << " " << endl;

    cout << "Умножение чисел = " << mno1 << "/"<< mnz1 << endl;
    int mnov = mno1/mnz1;
    int mnx0 = mno1-(mnov*mnz1);
    cout << "Целая часть = " << mnov <<" " << mnx0 << "/"<< mnz1 << endl;
    cout << " " << endl;

    cout << "Деление чисел = " << dil1 << "/"<< dil2 << endl;
    int dilv = dil1/dil2;
    int dil0 = dil1-(dilv*dil2);
    cout << "Целая часть = " << dilv <<" " << dil0 << "/"<< dil2 << endl;
    cout << " " << endl;

    int bmv0 = (mnz1/b)*a;
    int bmv1 = (mnz1/d)*c;

    if (bmv0 < bmv1) 
    {  
    cout << "Сравнение:" << a << "/" << b << "<" << c << "/" << d << " " << endl;
    } 
    else 
      if (bmv0 == bmv1) 
      {
       cout << "Сравнение:" << a << "/" << b << "=" << c << "/" << d << " " << endl;
      } 
    else {  // иначе
    cout << "Сравнение:" << a << "/" << b << ">" << c << "/" << d << " " << endl;
    }
    cout << "Сначала??! Да(1), Нет(2)" << endl;
    cin >> zukl;

    if (zukl == 1) 
      { zukl = 1;  }

    else {  // иначе
    zukl = 0;

    }
}
    return 0; 
}

что значит /7/ и /12/ ?

#include <iostream>

using namespace std;
void slogane()
{
    int a,b;
    cout << "Введите первое число"<<endl;
    cin >> a;
    cout << "Введите второе число" << "\n";
    cin>>b;
    int c=a+b;
    cout<<"ответ" << c <<"\n";
}
void vichetane()
{
    int a, b;
    cout << "Введите первое число"<<endl;
    cin >> a;
    cout << "Введите второе число" << "\n";
    cin>>b;
    int c=a-b;
    cout<<"ответ" << c <<"\n";
}
void ymnoshenie()
{
    int a, b;
    cout << "Введите первое число"<<endl;
    cin >> a;
    cout << "Введите второе число" << "\n";
    cin>>b;
    int c=a*b;
    cout<<"ответ" << c <<"\n";
}
void delene()
{
    int a, b;
    cout << "Введите первое число"<<endl;
    cin >> a;
    cout << "Введите второе число" << "\n";
    cin>>b;
    int c=a/b;
    cout<<"ответ" << c <<"\n";
}

int main()
{  
    setlocale (LC_ALL, "Russian");
    cout <<  "1 - сложение 2  -вычетание 3 - умножене - 4  деление ."<<"\n";

    int key;
    cin >> key;
    if (key == 1){
        slogane();
    }
    else if (key == 2){
        vichetane();
    }
    else if (key == 3){
         ymnoshenie();
    }
    else if (key == 4){
        delene();
    }

    else{
    cout << "неверное значение перименой "<<"\n";
    }
system("pause");
return 0;
}
Михаил
Михаил

Здравствуйте, помогите мне, когда я набираю вручную код, то он не компилируется, написано, что есть некая ошибка, я искал её, но не нашёл.Всё перепроверил ну нет ошибок, всё точно также как и в образце.Тогда я попробовал «тупо» скопировать образец и вставил в поле кода, программа успешно запустилась.Не понимаю, образец если скопировать запускается, а если вручную переписать точь в точь, то программа не компилируется, что делать?

Чувак
Чувак
int main() 
{ 
    setlocale(0, ""); 
    /*7*/ int a, b, c, d; // объявление двух переменных a и b целого типа данных. 
    cout << "Введите первое число: "; 
    cin >> a; // пользователь присваивает переменной a какое-либо значение. 
    cout << "Введите второе число: "; 
    cin >> b; 
    cout << "Введите третье число: ";
    cin >> c;
    cout << "Введите четвёртое число: ";
    cin >> d;
    /*12*/  int e = a / b + c * d; // новой переменной c присваиваем значение суммы введенных пользователем данных. 
    cout << "Сумма частного чисел a и b с произведением чисел c и d = " << e << endl; // вывод ответа. 
    return 0; 
}

Попробуйте скомпилируйте, интересно получается =)

Webster
Webster

спасибо за урок)

смотрите прикольно получилось)))

#include<iostream>

using namespace std;

int main()
{
    setlocale( LC_ALL, "Russian" );
        float a,b,s;
        int dp;

        cout << "Привет! Я машина и я возведу число в степень:" << endl;
        cout << "1. Квадрат. " << endl;
        cout << "2. Куб." << endl;

        cout << "Введите число для выбора действия" << endl;

        cin >> dp;

        switch(dp)
        {

        case 1:
                cout << "Число a = " << endl;
        cin >> a;

                s = a * a;
                cout << "\n" << a << " В квадрате "  " = "<< s << endl;
    break;

case 2:
                cout << "Число a = " << endl;
        cin >> a;

                s = a * a * a;
                cout << "\n" << a << " В кубе " " = "<< s << endl;
                break;

        }
       system("pause"); // Только для тех, у кого MS Visual Studio

return 0;
}

У меня вопрос,как у человека который только начал изучать программирование на c++,что означает эта строка в программе?

  setlocale(0, "");

Перечитал коменты,нашёл ответ.

Никита
Никита

Добрый вечер, Если ввести значение первого числа «'0», то выдается вот такая штука:

Введите первое число
'0
Введите второе число
Сумма чисел = 8546662
Введите третье число
Произведение суммы чисел 1 и 2 на 3 число = 1934430704
Введите четвертое число
Результат деления первых трех операций на 4 число = 452

Process returned 0 (0x0) execution time : 3.729 s
Press any key to continue.

Код программы как в примере, только с добавлением умножения и деления.

Кто-нибудь может объяснить почему?

Заранее спасибо

Андрей
Андрей

Почему у меня вместо русского текста какие-то непонятные символы?
работаю в Dev-C++. я пробовал setlocale (LC_ALL, «Russian»);
и setlocale (0, «»);
В чём дело?

написал, и удачно скомпилировал в Dev-C++ 5.4.2
но не запускается
нажимаю на *.exe файл, и ничего не происходит.
ОС WIndows 8.1

Андрей, попробуй не угловые кавычки, а обычные.

Ну вот как-то так получилось. Есть меню с выбором?

  1. Сложение
  2. Вычитание
  3. Умножение
  4. Деление
  5. Выход

Вот, собственно, сам код.

#include <iostream> 
#include <cstdlib>
using namespace std;

int prompt_menu_item()
{
    setlocale(0, ""); 
    int var;
    cout << "Калькулятор by Drake\n\n\nЧто делаем?\n" << endl;
    cout << "1. Сложение\n"
        << "2. Вычитание\n"
        << "3. Умножение\n"
        << "4. Деление\n"
        << "5. Выход\n" << endl;
    cout << ">>> ";
    cin >> var;
    return var;
}

int main(int argc, char* argv[])
{
    int var = prompt_menu_item();

    switch (var) {
        case 1:
            { 
                setlocale(0, ""); 
                int a, b;
                cout << "Введите первое число: "; 
                cin >> a;
                cout << "Введите второе число: "; 
                cin >> b; 
                int c = a + b;
                cout << "Сумма чисел = " << c << endl;
                cout << "\n\nСпасибо за использование!\n\n";
                system ("pause");
                return 0; 
            }
            break;
        case 2:
            { 
                setlocale(0, ""); 
                int a, b;
                cout << "Введите первое число: "; 
                cin >> a;
                cout << "Введите второе число: "; 
                cin >> b; 
                int c = a - b; 
                cout << "Разность чисел = " << c << endl;
                cout << "\n\nСпасибо за использование!\n\n";
                system ("pause");
                return 0; 
            }
            break;
        case 3:
            { 
                setlocale(0, ""); 
                int a, b;
                cout << "Введите первое число: "; 
                cin >> a;
                cout << "Введите второе число: "; 
                cin >> b; 
                /*12*/  int c = a * b;
                cout << "Произведение чисел = " << c << endl;
                cout << "\n\nСпасибо за использование!\n\n";
                system ("pause");
                return 0; 
            }
            break;
        case 4:
            { 
                setlocale(0, ""); 
                int a, b;
                cout << "Введите первое число: "; 
                cin >> a;
                cout << "Введите второе число: "; 
                cin >> b; 
                int c = a / b;
                cout << "Частное чисел = " << c << endl;
                cout << "\n\nСпасибо за использование!\n\n";
                system ("pause");
                return 0; 
            }
            break;
            {
                default:
                    cerr << "Вы выбрали неверный вариант" << endl;
                    exit(EXIT_FAILURE);
            }
            return 0;
    }
}
Череп
Череп

Drake, вот так твоя программа будет выглядеть аккуратнее:

#include <iostream>

using namespace std;

int prompt_menu_item()
{
    int var;
    cout << "Что делаем?\n\n"
        << "1. Сложение\n"
        << "2. Вычитание\n"
        << "3. Умножение\n"
        << "4. Деление\n"
        << "5. Выход\n\n"
        << ">>> ";
    cin >> var;
    return var;
}

int main(int argc, char* argv[])
{
    setlocale(0, "");

    cout << "Калькулятор by Drake(*)\n\n\n" << endl;

    int var = prompt_menu_item();

    int exit_code = EXIT_SUCCESS;

    int a, b, c;
    cout << "Введите первое число: "; 
    cin >> a;
    cout << "Введите второе число: "; 
    cin >> b; 
    switch (var) {
        case 1:
            c = a + b;
            cout << "Сумма чисел = " << c << endl;
            break;
        case 2:
            c = a - b; 
            cout << "Разность чисел = " << c << endl;
            break;
        case 3:
            c = a * b;
            cout << "Произведение чисел = " << c << endl;
            break;
        case 4:
            if (0 == b) {
                cout << "Делить на ноль низзззя!" << endl;
                exit_code = EXIT_FAILURE;
            }
            else {
                c = a / b;
                cout << "Частное чисел = " << c << endl;
            }
            break;
        default:
            cerr << "Вы выбрали неверный вариант" << endl;
            exit_code = EXIT_FAILURE;
    }
    cout << "\n\nСпасибо за использование!\n\n";
    system ("pause");
    return exit_code; 
}

А если ещё для вычислений использовать тип double, то и деление будет работать более ожидаемым для калькулятора образом.

}{0t@Bb)4
}{0t@Bb)4

Оцените пожалуйста код. В не вы вводите ваше любимое число и проводите с ним операцию (+-/*). Как в калькуляторе.

#include <iostream>

using namespace std;

int main()
{
    setlocale(0, "");
    system("color a");
    int a, b;
    cout << "What's\nyour\nfavorite\nnumber?\n\n";
    cin >> a;
    cout <<"\nyour\nfavorite\nnumber:\n\n" << "(" << a << ")\n";
    {
        cout << "Enter any other number  ";
        cin >> b;
        char v;
        cout << "Enter symbol calculation  ";
        cin >> v;
        if (v == '+') {
            int c = a + b;
            cout << "your number  " << c << endl;
        }
        if (v == '-') {
            int c = a - b;
            cout << "your number  " << c << endl;
        }
        if (v == '/') {
            int c = a / b;
            cout << "your number  " << c << endl;
        }
        if (v == '*') {
            int c = a * b;
            cout << "your number  " << c << endl;
        }
    }
    system("pause");
    return 0;
}
Алан
Алан

}{0t@Bb)4, просто посмотри предыдущий пост от Черепа.

112amper
112amper

А вот мой вариант, оцените:

#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
int main() {
    double a,b,c;
    char z;
    cout << "Введите через пробел: \nПервое число, знак, второе число и нажмите Enter\n";
    cin >> a >> z >> b; 
    if (z == '+') {
        c = a + b;
    }
    if (z == '-') {
        c = a - b;
    }
    if (z == '*') {
        c = a * b;
    }
    if (z == '/') {
     if (b == 0)
        {
            cout << "Нуль? Сейчас зависну!!!";
            getch ();
            return 0;
        }
        else
        {
            c = a / b;
        }
    }
    cout << setprecision(20) << a << " " << z << " " << b << " " << "=" << " " << c;
    getch ();
    return 0;
}

Dev-C++ 4.9.9.2
А почему несмотря на setprecision(20) больше 17 знаков не выдаёт?

112amper
112amper

И ещё, почему вот эта

#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
int main() {
     double a,b,z;
     a = 100000000;
     b = 100000000;
      z = a * b;
      cout << setprecision(20) << z;
    getch ();
    return 0;
}

Выдаёт в результат как полагается 10000000000000000,
А эта

#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
int main() {
     double z;
      z = 100000000 * 100000000;
      cout << setprecision(20) << z;
    getch ();
    return 0;
}

выдаёт 1874919424??

Череп
Череп

112amper, в калькуляторе: (1) все-таки вместо if лучше использовать switch; (2) при вводе чисел отдельно обрабатывать пробел не обязательно — оператор >> для чисел достаточно интеллектуален, что бы самостоятельно обработать разделитель, т.е. пробел, табуляцию или Enter; (3) при выводе результата конструкцию

cout << setprecision(20) << a << " " << z << " " << b << " " << "=" << " " << c;

можно написать проще — экономится два вызова функции:

 cout << setprecision(20) << a << " " << z << " " << b << " = " << c;

Про 100000000.
Ты когда компилировал второй вариант, не обратил внимание на предупреждение компилятора (что-то типа «integer overflow»)? Странный результат работы программы — это следствие ))

Вообще, говоря формально, в обоих вариантах программы есть одна и та же ошибка. Числовые литералы в тексте программы трактуются либо как целые числа (тип int), либо, при наличии десятичной точки или при экспоненциальной записи числа, как числа с плавающей точкой двойной точности (тип double). Т.е. литерал 100000000 трактуется как int, при этом получаем целочисленное переполнение, о чём и сообщает компилятор. Выражение

double z = 100000000 * 100000000;

компилятором рассматривается как целое умножить на целое, а потом результат преобразовать к double. Т.е. получаем сразу три переполнения: в обоих операндах и в результате операции.

В первом случае, видимо, интеллектуальный компилятор воспринял 100000000 как число типа double, хотя формально не должен был этого делать.

Результаты таких манипуляций очень сильно зависят от компилятора и от целевой платформы. Поэтому такой код писать не надо. Лучше написать явно:

double z = 100000000.0 * 100000000.0;

и

 double a,b,z;
 a = 100000000.0;
 b = 100000000.0;

тогда у компилятора будет меньше простора для предположений. Числовые литералы здесь явно описаны как тип double.

Вообще, всегда надо помнить, что ЭВМ (ака электронно-вычислительные машины, ака компьютеры) хуже всего предназначены именно для вычислений. При работе с числами (целыми или с плавающей точкой — не важно) всегда надо быть осторожными и помнить о потери точности, переполнении, потери значимости и прочих неприятностях. Причём это всё заложено на уровне железа, а не программы. А программа должна быть написана так, что бы все эти аппаратные проблемы корректно обходить.

Там где разбор кода, в комментарии к 9-й строке, опечатка. Вместо переменной b пишется о с.

Вадим
Вадим

У меня после ввода второго числа когда я нажимаю Enter программа закрывается и ответ не выдает

Nelu, о, точно! Спасибо, поправил :)

Вадим, решение вашей проблемы: http://code-live.ru/post/howto-delay-windows-console/

Ascolon
Ascolon

Скажите, а как чтоб текст выводился не сразу, а через минуту или две?

Используйте функция sleep().

Ascolon
Ascolon

Я сделал простенькую программу в ней нада вводить данные пароль или логи.Как сделать чтобы вводимые данные отсылались на почтовый адрес.

Ascolon
Ascolon

Скажите как сделать чтоб программка проверяла подключение к интернету и если его нету то закрывалась.

Игорь
Игорь
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    setlocale(0, "");
    int a,b;
    cout << "Введите первое число ";
    cin >> a;
    cout << "Введите второе число ";
    cin >> b;
    int c = a + b;
    cout << "Сумма чисел = " << c << endl;
    system("pause");
    return 0;
}

Выдает ошибку 1>LINK : fatal error LNK1561: точка входа должна быть определена
Вроде все норм,в чем проблема?

program_of_hamster
program_of_hamster

Хотел решить следующую задачу: Для заданного натурального числа n найти такое наименьшее число k, что к !>= n. В результате программа просто выдает единицу. Не можете подсказать, в чем проблема?

#include <iostream>

using namespace std;

int main()
{
    int n, k = 1, kfact = 1;
    cout << "n: ";
    cin >> n;
    cout << endl;

    for ( ;n < kfact; k++)
    {
        kfact = kfact * k;
    }
    cout << k;
    return 0;
}
Алан
Алан

program_of_hamster, так лучше:

#include <iostream>

using namespace std;

int main()
{
    int n, k = 1, kfact = 1;
    cout << "n: ";
    cin >> n;
    cout << endl;

    for ( ; n > kfact; k++)
    {
        kfact = kfact * k;
    }
    cout << --k << "! = " << kfact;
    return 0;
}
Алан
Алан

Игорь, зависит от компилятора и соглашений (С или С++). Попробуй функцию определить как int main(int argc, char *argv[]).

program_of_hamster
program_of_hamster

Алан, спасибо, работает нормально, но я не понял в чем же ошибка, особенно непонятна запись --k

Алан
Алан

program_of_hamster, у тебя неправильно было указано условие окончание цикла. Сравни внимательно.

--k — это оператор декремента в префиксной форме. Такие элементарные вещи надо бы знать. В данном случае, для простого вывода на экран можно было написать и k - 1 (при этом значение k не будет изменено), но если предположить, что программа будет дописываться и значение k будет как-то использовано, то лучше уменьшить k на единицу отдельным оператором. Мне было просто лениво писать лишнюю строчку ))

А уменьшать счётчик цикла надо обязательно, поскольку на последней итерации факториал становится точно больше n, а по условию задачи, k! должно быть меньше или равно n.

program_of_hamster
program_of_hamster

А уменьшать счётчик цикла надо обязательно, поскольку на последней итерации факториал становится точно больше n, а по условию задачи, k! должно быть меньше или равно n.

Во-первых, факторал может стать равен n на последней интерации, а во-вторых k! по условию ложно быть больше или равно n, при наименьшем k. Например:
n = 89.
k = 5, т.к. 4! < 89, 5! > 89.

И еще один вопрос: почему --k, a не k--? И если я должен был получать число на 1 больше, почуму всегда выводилась единица?

Алан
Алан

program_of_hamster, «во-первых», у тебя есть два варианта программы: твой первый (неработающий) и откорректированный. Ты сравни их тексты, погоняй под отладчиком и разберись как, что и при каких входных данных работает. Если мой вариант при каких-то входных данных работает неправильно — «подарки в студию» и будем разбираться — я тоже могу ляпнуть ошибку.

Про операцию префиксного и постфиксного декремента (инкремента) вполне доходчиво написано у Шилдта. RTFM!

Жайнагуль
Жайнагуль

подскажите пожалуйста что означает оператор setlocale(0, "");

Катерина
Катерина

Выдает не сумму a и b, а просто значение числа а (притом без подписи «сумма чисел =»). Из-за чего это может быть?

Максим
Максим

Жайнагуль, выводит результат в языке по умолчанию указанным в компиляторе и языке системы,
К примеру: русскоязычная сборка VS
при команде setlocale (0,«»); — будет русский язык и
при команде setlocale ( LC_ALL, «Russian» ); — так же будет русский.

Максим
Максим

Катерина, может просто результат на экране не задерживали?
_getch(); или system («pause») ?
Если нет, то —- А вообще все работает хорошо. В противном случае посоветую переустановить, может файлы студии не скомпилировались нормально

Витя
Витя

Пишет обнаружен многократно определенный символ — один или более.
Что делать?

Народ, помогите пожалуйста!

#include <iostream>
#include <string>

using namespace std;

void check_pass (string password)
{
    string valid_pass = "4815162342";
    if (password == valid_pass) 
    {
        setlocale(0, "");
            int a, b;
        cout << "incoming" << endl;
            system ("pause");
        cout << "vvodim pervoe chislo: ";
        cin >> a;
        cout << "vvodim vtoroe chislo: ";
        cin >> b;
        int c = a = b;
        cout << "kodovoe chislo - "; << c << endl;
        int W; cin W; return 0;
    }
    else {
        cout << "acsess denied!" << endl;
    }
}

int main()
{
    string user_pass;
    cout << "Enter Password: ";
    getline (cin, user_pass);
    check_pass (user_pass);
    return 0;
    system ("pause");
}
Гоша
Гоша

C:\Users\Admin\Documents\g++.exe [Error] +õ÷vü ýývù2.cpp: No such file or directory Что за ошибка?

Алан
Алан

Jock99, а с чем тебе помогать-то? Бредятину написал и запостил — типа разбирайтесь. Ты сначала со своим кодобредом сам разберись, а когда будут конкретные вопросы, звони — посмотрим.

Алан
Алан

Гоша, No such file or directory — немає такого файлу або каталогу. Ферштейн? ))

http://translate.google.ru/ — рекомендую!

Скажите, какой тип данных надо указать для целочисленной переменной, имеющей в своем составе ~100 цифр?

Алан
Алан

ITER, как ты назовёшь свой тип данных, поддерживающий целочисленную арифметику для чисел произвольной длины, такой тип данных и надо указывать )) Ну или нарыть готовую библиотеку ))))

Айдоня
Айдоня

Решите пожалуйста эту задачку. В одномерном массиве, состоящем из n целых элементов, вычислить:

  1. Номер максимального элемента массива;
  2. Произведение элементов массива, расположенных между первым и вторым нулевыми элементами.
  3. Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине — элементы, стоявшие в четных позициях.
idisireall
idisireall
#include <iostream>
#include<math.h>
#include<windows.h>
using namespace std;
char bufRus[256];

char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
      int main(){
        double a, b;
          int i;
        cout<<Rus("          <<Добро пожаловать в программу Умный калькулятор! >>       ")<<endl;
        cout<<endl;
        cout<<Rus("   Введите  первое число  ");cin>> a;
        cout<<Rus("   Введите  второе число  ");cin>> b;
        cout<<endl;
        cout<<endl;
        cout <<Rus("Чтобы сложить эти два числа введите <1>")<<endl;
        cout <<Rus("Чтобы вычисть из одного числа другое введите <2>")<<endl;
        cout <<Rus("Чтобы перемножить два числа введите <3>")<<endl;
        cout <<Rus("Для получения частного двух чисел введите <4>")<<endl;
        cout<<endl;
        cin >> i;
        if (i==1)   {
                double c=a+b;
                cout<<Rus("   Сумма двух чисел равна   ")<<c<<endl;
                }
                else
        if  (i==2)  {
                double c=a-b;
                cout<<Rus("   Разность двух чисел равна   ")<<c<<endl;
                }
                else
        if (i==3)   {
                double c=a*b;
                cout<<Rus("   Произведение двух чисел равно   ")<<c<<endl;
                }
                else
        if (i==4)   {
                double c=a/b;
                cout<<Rus("   Частное двух чисел равно   ")<<c<<endl;
                }
                else
                cout<<Rus("   Некоректный ввод данных")<<endl;
                cout<<endl;
                cout<<endl;
                cout<<Rus("                     Спасибо! Приходите еще!          ")<<endl;
        return 0;

      }

Подскажите, где косяк?

#include <iostrem>
using namespace std;
int main()
{
    setlocale(0, "");
    cout << "Type the first number: ";
    cin >> a;
    cout << "Type the second one: ";
    cin >> b;
    int c = a + b;
    cout << "Amount is: " << c << endl;
    return 0;
}
Череп
Череп
#include <iostream>

Прикольно! Все работает! Спасибо хороший сайт. С простыми доступными обьяснениями. Сделайте у себя не навязчивую рекламу.
Посетителей у вас вероятно много. Буду рекомендовать ваш проект.

ALEX, зарегистрируйтесь, тогда реклама вам не будет показываться.

Олег
Олег

вот в прицепе то что получилось, дабл использовал чтоб калькулятор выдавал непонятную фигню как калькулятор )) вопрос только как сделать чтоб после прописывания условия про 0 в if про / программа останавливалась а не шла дальше так как с данным кодом он выдает мол делить на 0 нельзя но при этом после пишет результат )

#include <iostream>
using namespace std;

int main()
{
    setlocale(LC_ALL, "rus");
    float a, b, c;
    char z;
    cout << "Ведите пример \n";
    cin >> a >> z >> b;

    if (z == '+'){
        c = a + b;
    }
    else if (z == '*'){
        c = a * b;
    }
    else if (z == '-'){
        c = a - b;
    }
    else if (z == '/'){
        c = a / b;
        if (b == 0){
            cout << " На 0 делить незя \n" << endl;

        }

    }
    if (c > 1000000000){
        double c;
    }
    cout << "Результат \n" << c << endl;

    system("pause");
    return 0;
}
Алексей
Алексей

у меня получилось так:

using namespace std;

int main(){

setlocale(0,"russian");

float a,b,otv;
cin>>vib;
switch(vib)
{
case '+':
     cout<<"Введите число -> ";
     cin>>a;
     cout<<"Введите число -> ";
     cin>>b;
     otv=a+b; 
     cout<<"Сумма = "<<otv<<endl;
     break; 
case '-':
     cout<<"Введите число -> ";
     cin>>a;
     cout<<"Введите число -> ";
     cin>>b;
     otv=a-b;
     cout<<"Разница = "<<otv<<endl;
     break;
case'*':
     cout<<"Введите число -> ";
     cin>>a;
     cout<<"Введите число -> ";
     cin>>b;  
     otv=a*b;
     cout<<"Произведение = "<<otv<<endl;
     break;
case'/':
     cout<<"Введите число -> ";
     cin>>a;
     cout<<"Введите число -> ";
     cin>>b;
     if(b!=0){  
     otv=a/b;
     cout<<"ответ = "<<otv<<endl;}
     else 
     cout<<"делить на нуль нельзя"<<endl;
     break;                      
 }

 system("pause");
 return 0;
}

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

#include <iostream>     
int main()
{
    int a;
    int b;
    int c;
    int d;
    int e;
    int f;
    int g;

    int h;
    int k;
    int j;
    int l;
    int m;
    int n;
     cout << "ÂÂåäèòå ïåðâóþ áóêâó èç ñëîâà, äåéñòâèÿ, q-äåëåíèå,w-óìíîæåíèå,r-ñëîæåíèå,t-âû÷èòàíèå : ";
     cin >> a;

       if (à == q) {

            cout << "ÂÂåäèòå ïåðâîå ÷èñëî: ";
            cin >> b;
            cout << "ÂÂåäèòå âòîðîå ÷èñëî: ";
            cin >> c;
            d = b / c;
            cout << "×àñòíîå ÷èñåë = " << c << endl;
                 };

       if (a == w) {

            cout << "ÂÂåäèòå ïåðâîå ÷èñëî: ";
            cin >> e;
            cout << "ÂÂåäèòå âòîðîå ÷èñëî: ";
            cin >> f;
            g = f * e;
            cout << "Ïðîèçâåäåíèå ÷èñåë = " << g << endl;
                };

       if (a == r) {

            cout << "ÂÂåäèòå ïåðâîå ÷èñëî: ";
            cin >> h;
            cout << "ÂÂåäèòå âòîðîå ÷èñëî: ";
            cin >> k;
            j = h + k;
            cout << "Ñóììà ÷èñåë = " << j << endl;
                };

       if (a == t) {
            cout << "ÂÂåäèòå ïåðâîå ÷èñëî: ";
            cin >> l;
            cout << "ÂÂåäèòå âòîðîå ÷èñëî: ";
            cin >> m;
            n = l - m;
            cout << "Ðàçíîñòü ÷èñåë = " << c << endl;
                };

      return 2;
}
иван
иван

что за команда setlocale(0,«») и для чего она служит?

silivit
silivit

FoRbL, ошибка в

if (à == q) {
if (a == q) {

silivit
silivit

что за команда setlocale(0,«»); и для чего она служит?

Этот вопрос задавался неоднократно. setlocale(0,«»); служит для того чтобы например вместо «Введите первое число :» в командной строке не выходили какие-то кракозябы. setlocale(0,«»); служит для задания кириллицы в программе. Вместо setlocale(0,«»); можно использовать setlocale(LC_ALL, «Russian»); , работоспособность программы не изменится.

Михаил
Михаил

Слушайте ребята может кто то поможет мне нужно создать программу для перевода из декартовой системы в полярную

  1. x=r cosφ
  2. y=r sinφ
  3. ρ=√(x^2+y^2)
  4. tg(φ)=y/x
  5. cos(φ)=x/√(x^2+y^2)
  6. sin(φ)=y/√(x^2+y^2)

По этим формулам нужно сделать программы может кто то помоч

Макар
Макар

Михаил, вот программка для тебя:

#include <iostream>
#include <math.h>

using namespace std;

int main() {

    double x, y, r, fi;

    cout << "Type Cartesian coordinate (x, y): ";
    cin >> x >> y;

    r = sqrt(x * x + y * y);
    fi = atan2(y, x);

    cout << "Polar coordinate is (" << r << ", " << fi << ")" << endl;

    return 0;
}
Михаил
Михаил

Макар, большущее спасибо все работает только проблема ещё в том что мне нужно обратно переводить по этой формуле x=r cosφ y=r sinφ

Михаил
Михаил

Уже ненужно благодарю сам сделал)

Никита
Никита
#include <iostream> 
using namespace std;

int i;
int main()
{ 
    for(i = 1; i <= 1000; i++)
    {
    setlocale(0, "");
    float a, b; 
    cout << "» ЦИФРА НОМЕР ОДИН: "; 
    cin >> a; 
    cout << "» ЦИФРА НОМЕР ДВА: "; 
    cin >> b;
    char z;
    cout << "» ЗНАК ДЕЙСТВИЯ: "; 
    cin >> z;

   if (z == '+') { 
    float c = a + b; 
    cout << "» РЕЗУЛЬТАТ СЛОЖЕНИЯ: " << c << endl << endl; 
    } 
    if (z == '*') { 
        float c = a * b; 
        cout << "» РЕЗУЛЬТАТ УМНОЖЕНИЯ: " << c << endl << endl; 
    } 
   if (z == '-') { 
        float c = a - b; 
        cout << "» РЕЗУЛЬТАТ ВЫЧИТАНИЯ: " << c << endl << endl; 
    } 
   if (z == '/') { 
        float c = a / b; 
        cout << "» РЕЗУЛЬТАТ ДЕЛЕНИЯ: " << c << endl << endl; 
   }
    cout << "« CALCULATOR: ПОСЛЕДНИЙ РЕЗУЛЬТАТ ОБНУЛЕН »" << endl << endl;
    }
 system("pause"); 
    return 0; 
}

А вот, что получилось у меня. Данный калькулятор умеет работать с целыми и с плавающей точкой числами.

Кирилл
Кирилл

Не могу понять,почему у меня ответ 2,когда должен быть 5

#include<iostream>
using namespace std;

int main()
{
    int a,b;
    cout<<"2";
    cin>>a;
    cout<<"3";
    cin>>b;
    int c=a+b;
    cout<<"2+3="<<c<<endl;
    return 0;
}
Никита
Никита
int main()
{
int a=2;
int b=3;
int c=a+b;
cout << "2+3=" << c << endl;
return 0;
}

Вот так все работает. Вы не присвоили переменным a и b значения(2 и 3 соответственно)

Кирилл
Кирилл

Никита,спасибо,действительно работает.

Павел
Павел

Помогите найти решение с 5 действием

include <iostream>
include <math.h>
using namespace std;
int main()
{
setlocale(LC_ALL, «Russian»);
int d=0;
cout << «Введите вид действия которое хотите совершить:» << endl << «ID|Действие» << endl << «1|Сложение» << endl << «2|Деление» << endl << «3|Вычитание» << endl << «4|Умножение» << endl << «5|Степень» << endl << «6|Корень» << endl;
cin >> d;
if (d==1) 
{
float a, b;
cout << «Введите первое число: »; 
cin >> a; 
cout << «Введите второе число: »; 
cin >> b; 
float c = a + b; 
cout << «Сумма чисел = » << c << endl;
}
if (d==2) 
{
    float a, b;
cout << "Введите первое число: "; 
cin >> a; 
cout << "Введите второе число: "; 
cin >> b; 
float c = a / b; 
cout << "Сумма чисел = " << c << endl;
}
if (d==3)
{
    float a, b;
cout << "Введите первое число: "; 
cin >> a; 
cout << "Введите второе число: "; 
cin >> b; 
float c = a - b; 
cout << "Сумма чисел = " << c << endl;
}
if (d==4)
{
    float a, b;
cout << "Введите первое число: "; 
cin >> a; 
cout << "Введите второе число: "; 
cin >> b; 
float c = a * b; 
cout << "Сумма чисел = " << c << endl;
}
if (d==5)
{
    float a, b;
cout << "Введите число: "; 
cin >> a;
cout << "Введите второе число: ";
cin >> b;
float c = a ^ b;
cout << "Сумма чисел = " << c << endl;
}
 if (d==6)
{
    float a;
cout << "Введите число: "; 
cin >> a; 
float c = sqrt(a);
cout << "Сумма чисел = " << c << endl;
}
system("pause");
return 0;
}
Макар
Макар

Вообще с такими вопросами лучше на форум. Там скорее ответят.

double a, b;
// ...
double c = pow(a, b);
ЕВГения
ЕВГения

Установила Eclipce, скопировала любой работающий программный код отсюда, но у меня постоянно выводит одну и туже ошибку: Launch failed. Binary not found. из за чего это может быть? и что нужно сделать, чтобы заработало

Александр
Александр

Вы не объяснили зачем нужен setlocale(0, «»);

Также добавьте #include <conio.h> и _getch(); иначе окно сразу закрывается.

AmyO___0
AmyO___0

Помогите найти ошибку:

include <iostream>

using namespace std;
int main()
{
setlocale(0 , «»);
float a;
float b;
int c;
float d;
cout << «Введите первое число:» << endl;
cin >> a;
cout << «Введите второе число:» << endl;
cin >> b;
cout << «Введите знак:» << endl;
cin >> c;
if ( c == «+»){
d = a + b;
}
else if ( c == «-» ){
d = a — b;
}
else if ( c == «*» ){
d = a * b;
}
else { d = a / b;}
cout << «Ответ:» << d << endl;
return 0;
}

Николай
Николай

Вычисление расстояния между двумя точками на оси координат.

 // Программа измеряет расстояние между двумя точками координат

#include <iostream>

using namespace std;

int main()
{
    setlocale (0, "");
    float x1,y1,x2,y2;
    cout << "Ведите координату первой точки X1 - ";
    cin >> x1;
    cout << "Ведите координату первой точки Y1 - ";
    cin >> y1;
    cout << "Ведите координату второй точки X2 - ";
    cin >> x2;
    cout << "Ведите координату второй точки Y2 - ";
    cin >> y2;
    cout << endl;
    float k1 = x1 - x2; // Расстояние между точками по оси X (1-й катет)
    float k2 = y1 - y2; // Расстояние между точками по оси Y (2-й катет)
    float g = sqrt (pow(k1,2)+pow(k2,2)); // Расчет гипотенузы. sqrt - квадратный корень, pow - возведение в степень.
    cout << "Расстояние между точками равно " << g << endl;
    system ("pause");
    return 0;
}
Cranium
Cranium

AmyO___0, замени int c на char c и во всех операторах сравнения используй одинарные кавычки типа: if (c == '+').

Вместо цепочки if ... else ... if ... лучше использовать switch.

Ещё неплохо было бы добавить для деления проверку на равенство b нулю.

Антон
Антон

Почему программа после компеляции и последующей доработки всё равно работает как первоначально написанная программа?

Возможно, у вас в ходе построение произошли ошибки, и запустилась старая версия программы.

Starter
Starter

что значат следующие строки?:

using namespace std;
setlocale(0, "");
endl;
АлександрП
АлександрП

Starter, вы первый урок прочтите
using namespace std; — использование пространство имен std. Без него нужно будет использовать перед каждым оператором std::cout, std::cin, std::endl и т.д.
setlocale(0, «»); — переключение на кириллицу. Иначе будут крякозябры вместо русских букв. На английские буквы не отражается.
endl; — оператор перехода на другую строку, в Си его выполнял printf(«\n»);

Дмитрий
Дмитрий
#include <iostream>
using namespace std;

int main()
{
    setlocale(0, "");
    /*7*/ int a, b; //
    cout << "5";
    cin >> a; //
    cout <<"6";
    cin >> b;
    /*12*/ int c = a + b; //
    cout << " 5+6 = " << c << endl; //
    return 0;
}

У меня в итоге показывает в окне цифру 5,почему так? По идеи должно же 11 показывать,делал все по примеру

АлександрП
АлександрП

Дмитрий, так Вы вводите число и нажимайте Enter, у меня выводит при правильном вводе 11(5+6). Для первого оператора cout «5» и втором cout «6» Вы просто не правильно написали в кавычках, это будет выводить комментарий.
Чтобы не путаться напиши так:

include <iostream>

using namespace std;

int main()
{
setlocale(0, «»);
int a, b;
cout << «Введите первое слагаемое и нажмите Enter = »;
cin >> a;
cout <<«Введите второе слагаемое и нажмите Enter = »;
cin >> b;
int c = a + b;
cout << «Ваше выражение: » << a << « + » << b << « = » << c << endl;
system(«pause»); //чтобы предотвратить закрытие программы.
return 0;
}

Еще вопрос зачем Вам /7/ /12/ и пустые комментарии в коде?

GeForce
GeForce

Вот мой пример сравнивателя чисел ! :

include <iostream>

using namespace std;
int main()
{
setlocale(0, «»);
double num;
double num2;

cout << "Введите число с которым будете сравнивать : " << endl;
cin >> num2;
cout << "Введите число которое будет сравниваться : " << endl;
cin >> num;

if (num < num2)
    cout << num << " " << "меньше чем" << " " << num2 << endl;
if (num > num2)
    cout << num << " " << "больше чем" << " " << num2 << endl;
if (num == num2)
    cout << num << " " << "равняется" << " " << num2 << endl;
system ("PAUSE");
return 0;

}

Alessanro
Alessanro

Выводит: [Error] ld returned 1 exit status

#include <iostream>
#include <conio.h>
using namespace std;

int main(){
setlocale(0,"");
int a,b;
cout<<"Введите первое число:"; 
cin>>a;
cout<<"Введите второе число:"; 
cin>>b;
int c=a+b;
cout<<"Сумма чисел: "<<c<<endl;
getch();
return 0;
 }

GeForce, у тебя есть небольшая ошибка, если её можно так назвать. Смотри, если у тебя num будет меньше num2, то выведется соответствующее сообщение. Но на этом проверка не закончится. Так же будут выполняться следующие операторы сравнения. Что бы этого избежать, нужно пользоваться else.

if (num < num2)
    cout << num << " " << "меньше чем" << " " << num2 << endl;
else if (num > num2)
    cout << num << " " << "больше чем" << " " << num2 << endl;
else 
    cout << num << " " << "равняется" << " " << num2 << endl;
GeForce
GeForce

porshe, Какие ошибки?? У меня всё работает нормально!

GeForce

если её можно так назвать

Да, ошибки компиляции не будет, но тут есть логическая ошибка.

OtcaSindi
OtcaSindi

Здравствуйте, подскажите пожалуйста почему когда при делении получается дробь, то значение этой дроби показывается как 0.

#include <iostream>
using namespace std;
int main()
{
    setlocale(0, "");
    int a, b, c1, c2;
    cout << "Введите 1 число ";
    cin >> a;
    cout << "Введите 2 число ";
    cin >> b;
    c1 = a + b;
    c2 = a * b;
    float c3 = a / b;
    cout << "Сумма чисел равна " << c1 << endl;
    cout << "Произведение чисел равно " << c2 << endl;
    cout << "Разность чисел равна " << c3 << endl;
    system("pause");
}

OtcaSindi, потому что результат операции приводится к наиболее точному или бОльшему типу данных. Здесь же результат операции имеет целый тип, так как он работает с двумя int'ами, а как известно, когда результат операции присваивается целому числу, то дробная часть отбрасывается. Ну и остаётся ноль, который при приведении к числу с плавающей точкой ( float c3 = a/b; ) так же даёт ноль. Исправить это можно так:

float c3 = a / static_cast<float>(b);

Тут b приводится к float, и соответственно a тоже приведётся к типу float, соответственно результат операции тоже будет иметь тип float и дробная часть не потеряется.

Про типы данных и автоматическое приведение типов( да и ещё я коряво объяснил, так что придётся читать :) ) можно посмотреть тут или тут.

Дмитрий
Дмитрий
#include <iostream>

using namespace std;

int main()
{
    setlocale(0,"");
    int a,b;
    cout<< 5
        cin >> a;
    cout<< 6
        cin >> b;
    int c = a + b;
    cout<< a << + >> b >> = >> c >> endl;
    system(pause); //
    return 0;
}

в чем проблема?? опишите подробнее плиз,выводит 5 чего то,даже когда меняю переменные

#include <iostream>
using namespace std;

int main()
{
    setlocale(0, "");
    int a,b;
    cout << "Введите перво число: ";
    cin >> a;
    cout <<"Введите второе число: ";
    cin >> b;
    int c = a+b;
    if (c = a+b < 10) {//Если сумма мньше десяти .
        cout << "Эта сумма меньше 10." << endl;
    }
    else (c = a+b == 10); {
        cout << "Эта сумма равна 10." << endl;
    }
            return 0;
        }

Первое начинание:))

11010010111001011
11010010111001011
#include <iosteam>
using namespace std;

int main()
{
setlocal(0, "");
int a, b;
cout <<"Введите первое число:">>;
cin >>a;
cout <<"Введите второе число:">>
cin >>b;
int c = a + b;
cout <<"Сумма чисел =  " << c << endl;
return 0;
}

Что не так?

11010010111001011
11010010111001011

Пишет что 1 ошибка

Пишет что 1 ошибка

какая ошибка?

АлександрП
АлександрП

Зачем такое длинное двоичное имя?
Внимательно перепишите пример с урока. У Вас тут 3 ошибки.
cout <<«Введите первое число:»>>;
cout <<«Введите второе число:»>>

porshe внизу написано вот так:
project — ошибок 1, предупреждений 0(Project-название проекта)

Александр П
Странно при прошлом входе было написано ошибок 1
В этот раз написано 3, возможно я случайно что-то изменил.

include <iostream>

using namespace std;

int main()
{
setlocal(0, «»);
int a, b;
cout <<«Введите первое число:»>>;
cin >>a;
cout <<«Введите второе число:»>>;
cin >>b;
int c = a + b;
cout <<«Сумма чисел = » << c << endl;
return 0;
}

Всё равно пишет 3 ошибки

Croessmah
Croessmah

Всё равно пишет 3 ошибки

а еще там пишется что это за ошибки и где они найдены!

Crossemah, точно, спасибо. Все получилось

include <iostream>

using namespace std;
int main()
{
setlocale(0,«»);
int a, b, c;
c=2;
cout <<«Enter a: »;
cin << a;
cout <<«Enter b: »;
cin << c;
int d = (a+b)*c;
cout <<«P= » <<endl;
return 0;
}
Может быть я тугодум, но почему здесь 82 ошибки?)))))

cin << c; исправил на cin << b; Но ошибок не уменьшилось

Я изначально забыл ввести int main; писало что 1 ошибка. После того как поставил int main; их стало 82

http://openid-provider.appspot.com/redeev38
http://openid-provider.appspot.com/redeev38

Вы упустили очень важный момент.
Так как стандартом кодировок исходников является UTF-8, то надо приводить к именно этой кодировке свои файлы.

Чтобы корректно отображались русские символы, надо обязательно чтобы было UTF-8 with BOM (c BOM).
Еще в исходниках !!!обязательно!!! надо задавать локаль >
setlocale(LC_ALL,«»);

Создайте файл, поставьте курсор на текстовый редактор кода, File, Advanced Save Options — UTF-8 with signature, Ctrl-S.

https://blogea.bureau14.fr/index.php/2009/04/utf-8-strings-in-visual-c/

Croessmah
Croessmah

cin << c; исправил на cin << b;

может сдвиг в другую сторону, не?

АлександрП
АлександрП

Еще в исходниках !!!обязательно!!! надо задавать локаль >
setlocale(LC_ALL,«»);

Почему обязательно, можно писать латиницей русские слова. Можно знать английский язык и не иметь проблем с крякозябрами.

АлександрП
АлександрП

Странно при прошлом входе было написано ошибок 1
В этот раз написано 3, возможно я случайно что-то изменил.

Внимательно, переписывайте образец с урока, потом можете его модифицировать, разные формулы добавлять, когда поймете для чего нужен тот или иной оператор, выражение и т.д. Я там нашел 3 ошибки: 2 лишних «>>» и без закрывающей «;».

АлександрП
АлександрП
#include <iostream>

using namespace std;
int main()
{
setlocale(0,«»);
int a, b, c;
c = 2;
cout << "Enter a: ";
cin >> a;
cout << "Enter b: ";
cin >> b;
int d = (a + b) * c;
cout << "Периметр прямоугольника P= " << d <<endl;
system("pause"); //для VS или getch(); смотря какой у Вас   
                 //компилятор, чтобы увидеть результат
return 0;
}

Могу я поинтересоваться, что значит setlocale

АлександрП
АлександрП

Виктор, функция setlocale используется для корректного отображения кириллицы в командной строке Windows.

setlocale — функция отображения строк, часто используется для отображения кириллицы в командной строке, пока это все что нужно Вам знать.
Тут в комментариях к уроку много раз спрашивается о ней, много раз ответ дается, достаточно воспользоваться поиском браузера или поисковиками google, яндексом и т.д.

АлександрП
АлександрП

Вот Вам ссылка на урок setlocale

novichok
novichok

А когда я пишу #include <iostream> и заканчиваю все остальное, прога пишет «No such file or directory». Почему?

novichok
novichok

А когда я пишу #include <iostream> прогаи пишет вот такой ответ «No such file or directory» и ниче не работает. Почему?

Croessmah
Croessmah

novichok

  • минимальный код
  • какой компилятор

Скажите пожалуйста, что такое «setlocale(0, »«);» — за что отвечает и как работает?

АлександрП
АлександрП

Пару комментариев вверх, написано, даже ссылка на урок приведен.

Спасибо АлександрП, пропустил.

Кристина
Кристина
#include <iostream> // Директива #include используется для подключения других файлов в код. Строка #include <iostream>, будет заменена содержимым файла «iostream.h», который находится в стандартной библиотеке языка и отвечает за ввод и вывод данных на экран.
using namespace std; // используется пространство имен std

int main()
{
    setlocale(0, "");

    int a, b, c; // объявление  переменных целого типа данных. 
    char z; // символьный тип данных.

    cout << "Введите первое число: ";
    cin >> a; // пользователь присваивает переменной a какое-либо значение.

    cout << "Введите второе число: ";
    cin >> b;

    cout << "Введите знак операции:";
    cin >> z;

    if (z == "+") {
        int c = a + b; // новой переменной c присваиваем значение суммы введенных пользователем данных. 
        cout << "Сумма чисел = " << c << endl; // вывод ответа. 
    }

    if (z == "-") {
        int c = a - b; // новой переменной присваивается значение разности введенных данных.
        cout << "Разность чисел = " << с << endl; //вывод ответа.
    }

    if (z == "*") {
        int c = a * b;
        cout << "Произведение чисел =" << c << endl;
    }

    if (z == "/") {
        int c = a / b;
        cout << "Частное чисел =" << c << endl;
    }

    system("pause"); // пауза, что бы программа моментално не закрывалась после ответа.
    return 0;
}

выдает ошибку Ошибка 1 error C2446: ==: нет преобразования «const char *» в «int» \psf\home\documents\visual studio 2013\projects\проект3\проект3\калькулятор.cpp 21 1 Проект3

гдн ошибка?

Макар
Макар

Если у тебя z типа char, то в if-ах тебе надо сравнивать с символом, а не с const char *. Т.е. надо писать так:

if (z == '+') {
Кристина
Кристина

а разве у меня не так написано? О_О

Кристина
Кристина

просто как дурочка сижу и не понимаю. я не те символы использовала?
объясните пожалуйста, что бы в будущем ошибок не было. заранее спасибо.

АлександрП
АлександрП

Кристина, Вам Макар уже объяснил, что нужно поменять. Двойные кавычки на одинарные(') в операторах if. Вместо if(z == «+»), надо писать if(z == '+'), так же для других операций. У Вас еще нашел ошибку, «с» русская вместо английской была, пожалуйста внимательней. Можете второй раз в телах if уже не инициализировать переменную «c», типом int, так как она уже вначале кода есть, int a, b, c;

if (z == '+') {
    c = a + b;  
    cout << "Сумма чисел = " << c << endl; 
}

if (z == '-') {
    c = a - b; 
    cout << "Разность чисел = " << c << endl; //"c" русская была.
}

if (z == '*') {
    c = a * b;
    cout << "Произведение чисел =" << c << endl;
}

if (z == '/') {
    c = a / b;
    cout << "Частное чисел =" << c << endl;
}
Кристина
Кристина

блин, курица слепая. спасибо

Макар
Макар

На самом деле переменная c здесь вообще не нужна. Можно писать так:

if (z == '+') {
    cout << "Сумма чисел = " << a + b << endl; 
}

А лучше в данном случае пользоваться не if-ами, а switch-ом. Посмотри выше — там есть.

АлександрП
АлександрП

anykey, Кристина, не за что! Кристина, предвидя вопрос о делении(и о десятичных дробях), используйте вещественный тип float вместо целого int.

Макар
Макар

Угу... и проверку деления на 0 не забудь.

Кристина, на будущее: задавайте такие вопросы на форуме.

Скажите пожалуйста как сделать чтобы в вещественном числе только 2 числа после запятой выводилось на экран?

Croessmah
Croessmah

Скажите пожалуйста как сделать чтобы в вещественном числе только 2 числа после запятой выводилось на экран?

std::cout << std::fixed << std::setprecision ( 2 ) << number ;

Pingback

Здесь приводится код программы сложения двух чисел. Каким образом можно реализовать ввод новых числовых значений после получения результата арифметического действия, вместо завершения работы программы? А выход из программы «повесить», например, на кнопку Esc.

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

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