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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
stepa3800
2 / 2 / 0
Регистрация: 10.12.2013
Сообщений: 41
#1

Разобрать работу приведенного кода - C++

18.01.2014, 18:35. Просмотров 422. Ответов 8
Метки нет (Все метки)

помогите написать что делают строки в программе
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <string>
#include <cmath>
 
using namespace std;
 
int main(){
  string num1; // число в двоичной системе
  double num1_dec=0;
  string num2; //число в восьмеричной системе
  double num2_dec=0;
  int i=0;
  cout << "vvedi chislo (2): ";
  cin >> num1;
  cout << "vvedi chislo(8): ";
  cin >> num2;
 
  i=0;
  int pow1=0;
  while (num1[i])
  {
    if (num1[i]=='.') {
      i++;
      continue;
    }
    if (pow1>0 || (i>0 && num1[i-1]=='.'))
    {
      pow1++;
    }
    num1_dec*=2;
    num1_dec+=num1[i]-'0';
    i++;
  }
  num1_dec = num1_dec / pow(2,pow1);
 
 
  i=0;
  int pow2=0;
  while (num2[i])
  {
    if (num2[i]=='.')
    {
      i++;
      continue;
    }
    if (pow2>0 || (i>0 && num2[i-1]=='.'))
    {
      pow2++;
    }
    num2_dec*=8;
    num2_dec+=num2[i]-'0';
    i++;
  }
 
  num2_dec = num2_dec / pow(8,pow2);
 
 
  cout<<num1<<" (2) * "<<num2<<" (8) = "<< (num1_dec*num2_dec) << " (10)"<<endl;
  return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2014, 18:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разобрать работу приведенного кода (C++):

Разобрать блок приведенного кода - C++
Есть код: Game::Game() : mWindow(sf::VideoMode(640, 480), &quot;SFML Application&quot;, sf::Style::Close) , mTexture() , mPlayer() ,...

Разобрать логику работы приведенного кода - C++
Здравствуйте, уважаемые! #include &lt;iostream&gt; using namespace std; long brackets_balance (char * str) { long count; for...

Написать алгоритм приведенного кода - C++
Может ли кто-нибудь помочь мне с алгоритмом этого кода?, пожалуйста. #include &lt;iostream&gt; using namespace std; int main() {...

For each с массивом символов - выяснить причину неработоспособности приведенного кода - C++
Компилятор ругается на примерно такой код: void foo(char cArray) { for each (char c in cArray) {...} }

Что будет выведено на экран в результате выполнения приведенного фрагмента кода? - C++
Что будет выведено на экран в результате выполнения приведенного фрагмента кода? int n = 1; while (n&lt;=10) { if (n%2) ...

Первые шаги по базовому курсу Шилдта - ошибка синтаксиса приведенного кода - C++
Здравствуйте! Изучаю С++ с нуля по учебнику Базовый курс С++ Шилдт. Каждую программу из примеров компилирую на Visual Studio 2013, до сих...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
18.01.2014, 23:21 #2
Цитата Сообщение от stepa3800 Посмотреть сообщение
помогите написать что делают строки в программе
В строках хранятся у тебя числа в первой - в двоичной системе, а во второй - в восьмеричной системе. Циклы каждую из строк преобразуют в число при этом уже в десятичной системе. А на печать выводится их произведение в десятичной системе координат.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
19.01.2014, 02:35 #3
Скажи, а разве гарантируется, что строки std::string завершаются нулевым символом?
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
19.01.2014, 10:36 #4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а разве гарантируется, что строки std::string завершаются нулевым символом?
ISO/IEC 14882 21.4.5/2:
C++
1
2
const_reference operator[](size_type pos) const;
reference operator[](size_type pos);
Returns: *(begin() + pos) if pos < size(), otherwise a reference to an object of type T with value charT(); the referenced value shall not be modified.
Т.е. если обратится по индексу, равному размеру, то получим ссылку на элемент, созданный конструктором по умолчанию. В данном случае char(), т.е. нулевой символ.
0
stepa3800
2 / 2 / 0
Регистрация: 10.12.2013
Сообщений: 41
19.01.2014, 10:42  [ТС] #5
можете помочь оформить эту лабу на подобие этого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>//ввод вывод в консоль
#include <string>//класс string
#include <conio.h>//работа с консолью в старых компиляторах
#include <fstream> // fstream - чтение/запись из/в файл
 
using namespace std;
 
int main(){
  fstream file;//создаем объект fstream
  string chars;//создаем объект string
  file.open("input1.txt", fstream::in);//открываем файл input1.txt для чтения
  file>>chars;//считываем файл в chars
  int i=0;//индекс символа в chars
  char w;//новый символ
   while(chars[i]) //пока не достигнут конец строки chars
    {
        w=2*(chars[i++]-8-8)*2; // производим арифметические операции с кодом символа и переходим к следующему символу (постинкремент i++)
        cout<<w<<endl; // выводим что получилось в консоль
  }
getch();//для того чтобы консоль не закрылась
  file.close();//закрываем файл
 
return 0;
}
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
19.01.2014, 11:05 #6
Цитата Сообщение от stepa3800 Посмотреть сообщение
можете помочь оформить эту лабу на подобие этого
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <string>
#include <cmath>
 
using namespace std;
 
int main(){
  string num1; // число в двоичной системе в виде строки
  double num1_dec=0; // двоичное число преобразованное в десятичное
  string num2; //число в восьмеричной системе в виде строки
  double num2_dec=0; // восьмеричное число преобразованное в десятичное
  int i=0; // переменная для прохода по строке
  cout << "vvedi chislo (2): ";
  cin >> num1; 
  cout << "vvedi chislo(8): ";
  cin >> num2;
 
  i=0;
  int pow1=0;
  while (num1[i]) // Попадаем в цикл, пока не встретим нулевой символ
  {
    if (num1[i]=='.') { // Если встретили точку, то переходим к следующей итерации
      i++; 
      continue;
    }
    if (pow1>0 || (i>0 && num1[i-1]=='.'))
    {
      pow1++; // Считаем кол-во разрядов после точки
    }
    num1_dec*=2; // увеличиваем вес прочитанных чисел (на основании системы счисления)
    num1_dec+=num1[i]-'0'; // получаем число из символа и прибавляем его к результату 
    i++;
  }
  num1_dec = num1_dec / pow(2,pow1); // получаем вещественное число с учетом знаков после точки
 
 
  i=0;
  int pow2=0;
  while (num2[i])
  {
    if (num2[i]=='.')
    {
      i++;
      continue;
    }
    if (pow2>0 || (i>0 && num2[i-1]=='.'))
    {
      pow2++;
    }
    num2_dec*=8;
    num2_dec+=num2[i]-'0';
    i++;
  }
 
  num2_dec = num2_dec / pow(8,pow2);
 
  // Умножение двоичного числа на восьмиричное и вывод результата в десятичном виде
  cout<<num1<<" (2) * "<<num2<<" (8) = "<< (num1_dec*num2_dec) << " (10)"<<endl;
 
  return 0;
}

Для восьмиричной части всё аналогично.
1
stepa3800
2 / 2 / 0
Регистрация: 10.12.2013
Сообщений: 41
19.01.2014, 11:08  [ТС] #7
Tulosba, Большое спасибо.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
19.01.2014, 13:56 #8
Tulosba, если уж придираться к твоей цитате стандарта, то можно сделать вывод, что ноль будет возвращаться вообще при обращении по любому индексу, не меньшему size.
Так?
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
19.01.2014, 14:59 #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Так?
Не так. Цитата в данном случае не претендует на полноту.
21.4.5/1 Requires: pos <= size().
Скачай уже себе копию стандарта наконец
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2014, 14:59
Привет! Вот еще темы с ответами:

Разобрать код, демонстрирующий работу с указателями - C++
Здравствуйте. Помогите пожалуйста разобраться с работой указателей. #include &lt;iostream&gt; using namespace std; int main() { ...

Разобрать строку кода - C++
как детально разобраться с этой строчкой кода : cout&lt;&lt;((A&gt;&gt;i)&amp;1);

Разобрать строку кода - C++
Часть программы, если что // Game engine struct Piece { struct { unsigned short s; } shape; int x : 8, y : 8, color :...

Помогить разобрать строчку кода! - C++
Есть такая строка: CSatelliteContainer&amp; container = CSatelliteContainer::GetInstance();. Что делает данная строка? В ней...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.01.2014, 14:59
Ответ Создать тему
Опции темы

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