Форум программистов, компьютерный форум CyberForum.ru

Обьясните пожалуйста - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Kopmec
 Аватар для Kopmec
0 / 0 / 0
Регистрация: 13.08.2011
Сообщений: 31
14.08.2011, 19:15     Обьясните пожалуйста #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*Эта программа преобразует галлоноы в литрыс помощью 
чисел с плавающей точкой.*/
 
#include <iostream>
using namespace std;
int  main()
{
     double gallons,liters;
     cout<<"Введите количество галлонов:";
     cin >> gallons; " Ввод данных галлонов: ";
     liters= gallons * 3.7854; //Преобразование в литры.
     cout <<"Литров:"<<liters;
     return 0;
}
Скомпируйте и выполните эту программу.На приглашение указать количество галонов
введите число 1. В качестве результата программа должна отобразить 3.7854 литра.
Помачите разобраться если при выполнении этой программы появляеться командная строка
вот с такой писаниной -┬тхфшЄх ъюышўхёЄтю урыыюэют:
При вводе числа 1 в командную строку нечего не происходит.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 19:15     Обьясните пожалуйста
Посмотрите здесь:

C++ Я новичок, обьясните пожалуйста ошибки
C++ Пожалуйста обьясните мне битовые поля.
обьясните пожалуйста код C++
C++ Обьясните пожалуйста
C++ обьясните пожалуйста!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jafrey kerns
5 / 5 / 0
Регистрация: 12.08.2011
Сообщений: 24
14.08.2011, 19:40     Обьясните пожалуйста #2
Скомпилировал в MS VS 2010Express. Все работает, только идет в одну строку и проблемы русской кодировкой. После подсказок форума, ябы сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*Эта программа преобразует галлоноы в литрыс помощью 
чисел с плавающей точкой.*/
 
#include <iostream>
#include <locale>
 
using namespace std;
int  main()
{
     setlocale(LC_ALL,"Rus");
 
     double gallons,liters;
     cout<<"Введите количество галлонов: \n";
     cin >> gallons; // Ввод данных галлонов
     liters= gallons * 3.7854; //Преобразование в литры.
     cout <<"Литров: "<<liters<<"\n";
     return 0;
}
rooot
 Аватар для rooot
4 / 2 / 1
Регистрация: 20.04.2011
Сообщений: 9
14.08.2011, 19:41     Обьясните пожалуйста #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <conio.h>
using namespace std;
 
int  main()
{
     setlocale(LC_ALL, "Russian");
     double gallons,liters;
     cout<<"Введите количество галлонов:";
     cin >> gallons; " Ввод данных галлонов: ";
     liters= gallons * 3.7854; //Преобразование в литры.
     cout <<"Литров:"<<liters;
     getche()
     return 0;
}
Сыроежка
Заблокирован
14.08.2011, 19:45     Обьясните пожалуйста #4
Цитата Сообщение от Kopmec Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*Эта программа преобразует галлоноы в литрыс помощью 
чисел с плавающей точкой.*/
 
#include <iostream>
using namespace std;
int  main()
{
     double gallons,liters;
     cout<<"Введите количество галлонов:";
     cin >> gallons; " Ввод данных галлонов: ";
     liters= gallons * 3.7854; //Преобразование в литры.
     cout <<"Литров:"<<liters;
     return 0;
}
Скомпируйте и выполните эту программу.На приглашение указать количество галонов
введите число 1. В качестве результата программа должна отобразить 3.7854 литра.
Помачите разобраться если при выполнении этой программы появляеться командная строка
вот с такой писаниной -┬тхфшЄх ъюышўхёЄтю урыыюэют:
При вводе числа 1 в командную строку нечего не происходит.
У вас в строке

C++
1
cin >> gallons; " Ввод данных галлонов: ";
имеется ничего не делающее выражение " Ввод данных галлонов: "; Вообще-то, компилятор обычно об этом сообщает в предупреждениях. Я не знаю, зачем вы написали этот строковый литерал в качестве отдельного предложения.

Что касается того, что программа ничего не делает, так вам надо в конце программы поставить задержку, иначе она быстро завершает свою работу. Например, можете перед return написать cin.get();
rooot
 Аватар для rooot
4 / 2 / 1
Регистрация: 20.04.2011
Сообщений: 9
14.08.2011, 19:47     Обьясните пожалуйста #5
А при вводе числа все работает, просто компилятор после выполнения кода закрывает программу, вот для этого и необходим getche() или можно другими способами.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
14.08.2011, 19:53     Обьясните пожалуйста #6
Нет под рукой компилятора, чтобы проверить свое предположение, может быть проблема в следующем:
На месте строки:
C++
1
" Ввод данных галлонов: ";
будет подставлен указатель на эту строку, т.е. какое-то 4-х байтовое число, как оно скомпилируется я не знаю (был бы компилятор, я бы проверил) и когда дело доходит до исполнения ассемблерного кода эти 4 байта могут быть восприняты как инструкция процессора, которая и приводит к зависанию программы (например может быть jmp куда-нибудь, где продолжается выполнение кода, но результата этой работы просто не видно).
В написанном не уверен, но кто его знает
Сыроежка
Заблокирован
14.08.2011, 19:55     Обьясните пожалуйста #7
Цитата Сообщение от Kastaneda Посмотреть сообщение
Нет под рукой компилятора, чтобы проверить свое предположение, может быть проблема в следующем:
На месте строки:
C++
1
" Ввод данных галлонов: ";
будет подставлен указатель на эту строку, т.е. какое-то 4-х байтовое число, как оно скомпилируется я не знаю (был бы компилятор, я бы проверил) и когда дело доходит до исполнения ассемблерного кода эти 4 байта могут быть восприняты как инструкция процессора, которая и приводит к зависанию программы (например может быть jmp куда-нибудь, где продолжается выполнение кода, но результата этой работы просто не видно).
В написанном не уверен, но кто его знает
Не фантазируйте! Будет просто предупреждение на этапе компиляции, что это выражение ничего не делает. Только и всего.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 20:11     Обьясните пожалуйста #8
Цитата Сообщение от Сыроежка Посмотреть сообщение
Будет просто предупреждение на этапе компиляции, что это выражение ничего не делает.
Ну это зависит от компилятора. У меня gcc 4.4.1 TDM-2 mingw молчит как рыба
Kopmec
 Аватар для Kopmec
0 / 0 / 0
Регистрация: 13.08.2011
Сообщений: 31
14.08.2011, 20:12  [ТС]     Обьясните пожалуйста #9
Цитата Сообщение от Сыроежка Посмотреть сообщение
У вас в строке

C++
1
cin >> gallons; " Ввод данных галлонов: ";
имеется ничего не делающее выражение " Ввод данных галлонов: "; Вообще-то, компилятор обычно об этом сообщает в предупреждениях. Я не знаю, зачем вы написали этот строковый литерал в качестве отдельного предложения.

Что касается того, что программа ничего не делает, так вам надо в конце программы поставить задержку, иначе она быстро завершает свою работу. Например, можете перед return написать cin.get();
Сори я просто ошибся в написании там пишеться "Ввод данных от пользователя"
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 20:15     Обьясните пожалуйста #10
Kopmec, да имелось ввиду что между cin >> gallons и "Ввод данных от пользователя" стоит точка с запятой, которая терминирует инструкцию ввода галлонов, и "Ввод данных от пользователя" рассматривается как самостоятельная бессмысленная инструкция должно было, наверное, быть так:

C++
1
2
cin >> gallons;
cout << "Ввод данных от пользователя" ;
Kopmec
 Аватар для Kopmec
0 / 0 / 0
Регистрация: 13.08.2011
Сообщений: 31
14.08.2011, 20:18  [ТС]     Обьясните пожалуйста #11
Короче я так понял что программа работает только при вводе числа 1 она закрываеться уже с полученым результатом 3.7854 но если так можно ли както замедлить закрывание командной строки чтобы она закрывалась хотябы через секунды 2 чтобы точно убедиться в правильно работе и вычесления
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 20:19     Обьясните пожалуйста #12
Kopmec, есть такая вещь, как поиск и ПРИКРЕПЛЁННЫЕ ТЕМЫ. Вы их смотрели? Например: http://www.cyberforum.ru/cpp-beginners/thread10807.html
Kopmec
 Аватар для Kopmec
0 / 0 / 0
Регистрация: 13.08.2011
Сообщений: 31
14.08.2011, 20:23  [ТС]     Обьясните пожалуйста #13
Цитата Сообщение от talis Посмотреть сообщение
Kopmec, есть такая вещь, как поиск и ПРИКРЕПЛЁННЫЕ ТЕМЫ. Вы их смотрели? Например: http://www.cyberforum.ru/cpp-beginners/thread10807.html
да я читал по этой ссылки я про другое при выполнении открываеться командная строка ввожу 1 и нажимаю на интер но я неуспеваю просмотреть полученый результат
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 20:27     Обьясните пожалуйста #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdlib.h> // system()
#include <conio.h>  // getch()
#include <stdio.h>  // getchar()
 
int main()
{
    /* ваш код тут */
 
 
    system( "pause > nul" );
 
    //или
    getch();
 
    //или
    getchar();
 
    return 0;
}
Держите, и удачи вам.

Не по теме:

То ли я устаю, то ли люди вокруг меняются...

Kopmec
 Аватар для Kopmec
0 / 0 / 0
Регистрация: 13.08.2011
Сообщений: 31
14.08.2011, 20:31  [ТС]     Обьясните пожалуйста #15
Я хочу узнать можно ли сделать чтоб при вводе 1 у меня не закрылась командная строка а показывала полученый результат

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int  main()
{
     double gallons,liters;
     cout<<
     cin >> gallons; // Ввод данных от пользователя.
     liters= gallons * 3.7854; 
     cout <<"Литров:"<<liters;
     cin.get();
     return 0;
}
что нужно чтоб затормозить полученый результат после считывания а не при вводе числа1
jafrey kerns
5 / 5 / 0
Регистрация: 12.08.2011
Сообщений: 24
14.08.2011, 20:40     Обьясните пожалуйста #16
Если что-то вводится с клавиатуры, одного cin.get() недостаточно.
C++
1
2
3
cin.get();
cin.get():
return 0;
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 20:44     Обьясните пожалуйста #17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int  main()
{
     double gallons, liters;
     cout << "Enter gallons:\n>";
     cin >> gallons; // Ввод данных от пользователя.
     liters = gallons * 3.7854; 
     cout << "Liters: " << liters;
 
     getch();
 
     return 0;
}
Kopmec
 Аватар для Kopmec
0 / 0 / 0
Регистрация: 13.08.2011
Сообщений: 31
14.08.2011, 20:51  [ТС]     Обьясните пожалуйста #18
Цитата Сообщение от talis Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdlib.h> // system()
#include <conio.h>  // getch()
#include <stdio.h>  // getchar()
 
int main()
{
    /* ваш код тут */
 
 
    system( "pause > nul" );
 
    //или
    getch();
 
    //или
    getchar();
 
    return 0;
}
Держите, и удачи вам.

Не по теме:

То ли я устаю, то ли люди вокруг меняются...

во спасибо об этом я и говорил
┬тхфшЄх ъюышўхёЄтю урыыюэют:1
╦шЄЁют:3.7854

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h> // system()
#include <stdio.h>  // getchar()
#include <iostream>
 
using namespace std;
int  main()
{
     double gallons,liters;
     cout<<"Ââåäèòå êîëè÷åñòâî ГЈГ*ëëîГ*îâ:";
     cin >> gallons; " Ââîä Г¤Г*Г*Г*ûõ îò ïîëüçîâГ*òåëÿ: ";
     liters= gallons * 3.7854; //ÏðåîáðГ*çîâГ*Г*ГЁГҐ Гў ëèòðû.
     cout <<"Ëèòðîâ:"<<liters;
     system( "pause > nul" );
     getchar ();
     return 0;
}
огромное спасибо если ещё не надоел есть вопросик можно ли перевести вот эти ероглимы
┬тхфшЄх ъюышўхёЄтю урыыюэют:1 -здесь как я понял написано-"Введите количество галонов"
╦шЄЁют:3.7854 -а здесь слово "Литров" можно ли зделать чтоб сразу писало на нормальном языке
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 20:53     Обьясните пожалуйста #19
вообще, setlocale(); но у меня она так и не заработала. в идеале - сохраняйте исходный файл в DOS-866 и компилируйте в родной досовой кодировке. Или перед запуском своей программы выполняйте программу chcp 1251:

Bash
1
2
chcp 1251
test.exe
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2011, 21:01     Обьясните пожалуйста
Еще ссылки по теме:

Народ, обьясните пожалуйста человеческим языком задание C++
C++ Обьясните пожалуйста небольшой кусок кода

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
jafrey kerns
5 / 5 / 0
Регистрация: 12.08.2011
Сообщений: 24
14.08.2011, 21:01     Обьясните пожалуйста #20
Для вывода нормального русского текста подключите библиотеку

#include <locale>


а в функции main добавте

setlocale(LC_ALL,"Rus");

Добавлено через 1 минуту
Пример:

C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <locale>
#include <cmath>
#include <conio.h> // для getch()
 
int main ()
{
    setlocale(LC_ALL,"Rus");
Yandex
Объявления
14.08.2011, 21:01     Обьясните пожалуйста
Ответ Создать тему
Опции темы

Текущее время: 23:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru