Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Kopmec
0 / 0 / 0
Регистрация: 13.08.2011
Сообщений: 31
#1

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

14.08.2011, 19:15. Просмотров 1589. Ответов 30
Метки нет (Все метки)

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 в командную строку нечего не происходит.
http://www.cyberforum.ru/cpp-beginners/thread928026.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 19:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Обьясните пожалуйста (C++):

Обьясните пожалуйста
struct Test { void test(); }; int main() { Test *ptr =...

обьясните пожалуйста код
#include&lt;cstdio&gt; #include&lt;cstdlib&gt; #include&lt;iostream&gt; #include&lt;string.h&gt;...

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

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

Обьясните пожалуйста небольшой кусок кода
Добрый день. Написал программу списка, но не совсем понимаю работу одного...

30
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;
}
1
rooot
4 / 2 / 2
Регистрация: 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;
}
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();
1
rooot
4 / 2 / 2
Регистрация: 20.04.2011
Сообщений: 9
14.08.2011, 19:47 #5
А при вводе числа все работает, просто компилятор после выполнения кода закрывает программу, вот для этого и необходим getche() или можно другими способами.
1
Kastaneda
Jesus loves me
Эксперт С++
4759 / 2962 / 340
Регистрация: 12.12.2009
Сообщений: 7,520
Записей в блоге: 2
Завершенные тесты: 1
14.08.2011, 19:53 #6
Нет под рукой компилятора, чтобы проверить свое предположение, может быть проблема в следующем:
На месте строки:
C++
1
" Ввод данных галлонов: ";
будет подставлен указатель на эту строку, т.е. какое-то 4-х байтовое число, как оно скомпилируется я не знаю (был бы компилятор, я бы проверил) и когда дело доходит до исполнения ассемблерного кода эти 4 байта могут быть восприняты как инструкция процессора, которая и приводит к зависанию программы (например может быть jmp куда-нибудь, где продолжается выполнение кода, но результата этой работы просто не видно).
В написанном не уверен, но кто его знает
1
Сыроежка
Заблокирован
14.08.2011, 19:55 #7
Цитата Сообщение от Kastaneda Посмотреть сообщение
Нет под рукой компилятора, чтобы проверить свое предположение, может быть проблема в следующем:
На месте строки:
C++
1
" Ввод данных галлонов: ";
будет подставлен указатель на эту строку, т.е. какое-то 4-х байтовое число, как оно скомпилируется я не знаю (был бы компилятор, я бы проверил) и когда дело доходит до исполнения ассемблерного кода эти 4 байта могут быть восприняты как инструкция процессора, которая и приводит к зависанию программы (например может быть jmp куда-нибудь, где продолжается выполнение кода, но результата этой работы просто не видно).
В написанном не уверен, но кто его знает
Не фантазируйте! Будет просто предупреждение на этапе компиляции, что это выражение ничего не делает. Только и всего.
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 20:11 #8
Цитата Сообщение от Сыроежка Посмотреть сообщение
Будет просто предупреждение на этапе компиляции, что это выражение ничего не делает.
Ну это зависит от компилятора. У меня gcc 4.4.1 TDM-2 mingw молчит как рыба
0
Kopmec
0 / 0 / 0
Регистрация: 13.08.2011
Сообщений: 31
14.08.2011, 20:12  [ТС] #9
Цитата Сообщение от Сыроежка Посмотреть сообщение
У вас в строке

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

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

C++
1
2
cin >> gallons;
cout << "Ввод данных от пользователя" ;
1
Kopmec
0 / 0 / 0
Регистрация: 13.08.2011
Сообщений: 31
14.08.2011, 20:18  [ТС] #11
Короче я так понял что программа работает только при вводе числа 1 она закрываеться уже с полученым результатом 3.7854 но если так можно ли както замедлить закрывание командной строки чтобы она закрывалась хотябы через секунды 2 чтобы точно убедиться в правильно работе и вычесления
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 20:19 #12
Kopmec, есть такая вещь, как поиск и ПРИКРЕПЛЁННЫЕ ТЕМЫ. Вы их смотрели? Например: http://www.cyberforum.ru/cpp-beginners/thread10807.html
1
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 и нажимаю на интер но я неуспеваю просмотреть полученый результат
0
talis
793 / 545 / 61
Регистрация: 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;
}
Держите, и удачи вам.

Не по теме:

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

1
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
0
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;
1
talis
793 / 545 / 61
Регистрация: 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;
}
1
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 -а здесь слово "Литров" можно ли зделать чтоб сразу писало на нормальном языке
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 20:53 #19
вообще, setlocale(); но у меня она так и не заработала. в идеале - сохраняйте исходный файл в DOS-866 и компилируйте в родной досовой кодировке. Или перед запуском своей программы выполняйте программу chcp 1251:

Bash
1
2
chcp 1251
test.exe
1
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");
1
14.08.2011, 21:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2011, 21:01
Привет! Вот еще темы с решениями:

Обьясните пожалуйста , что значат эти строки)
1)#include &lt;vcl.h&gt; #pragma hdrstop USEFORM(&quot;cursach.cpp&quot;, Form1); WINAPI...

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

Обьясните пожалуйста, что делает эта программа?
#include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream.h&gt; #define size...

Обьясните пожалуйста что делает эта программа
#include &lt;iostream&gt; using namespace std; int main (void) { unsigned...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru