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

просьба объяснить - C++

Восстановить пароль Регистрация
 
freshik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 4
18.02.2013, 15:06     просьба объяснить #1
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
#include <cstdlib>
#include <iostream>
#include <fstream>
 
using namespace std;
int main()
{
long a, b;  char s[256], c;  int i;
  cout << "File name? "; cin >> s;
  ifstream f;  f.open(s);
  while (!f.eof())
   {    f.getline(s, 256);
    i=0; a=0;
    while (s[i]>='0'&&s[i]<='9')
     {
          a=a*10+s[i]-'0';
           i++;
     }
    c=s[i++];    b=0;
    while (s[i]>='0'&&s[i]<='9')
     {
          b=b*10+s[i]-'0';
           i++;
     }
    switch (c){
    case '+': a+=b; break;
    case '-': a-=b; break;
    case '/': a/=b; break;
    case '*': a*=b; break;}
    cout << s << " = " << a << endl;   }
    f.close();
    system("PAUSE");
    return EXIT_SUCCESS;
}
есть такая программка, но мне невсе в ней понятно . может ктонить обьяснить ?
итак вопрос первый '0' что ето ?
вопрос второй а вот ето : a=a*10+s[i]-'0'; что делает и для чего ?
извиняйте за глупые вопросы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2013, 15:06     просьба объяснить
Посмотрите здесь:

C++ Просьба к администрации
Убедительная просьба помочь... C++
C++ Глупая просьба...
Просьба с компиляцией C++
Просьба C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
18.02.2013, 15:12     просьба объяснить #2
Цитата Сообщение от freshik Посмотреть сообщение
итак вопрос первый '0' что ето ?
это символ нуля
freshik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 4
18.02.2013, 15:13  [ТС]     просьба объяснить #3
а для чего ковычки ?
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
18.02.2013, 15:18     просьба объяснить #4
Цитата Сообщение от freshik Посмотреть сообщение
вопрос второй а вот ето : a=a*10+s[i]-'0'; что делает и для чего ?
вроде как читает число со строки
C++
1
a*10
чтобы сдвинуть его влево,
C++
1
а s[i] - '0'
чтобы начйти цифру. Например, что будет
C++
1
'5'-'0'
?

Добавлено через 2 минуты
Цитата Сообщение от freshik Посмотреть сообщение
а для чего ковычки ?
чтобы показать что это символ
freshik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 4
18.02.2013, 15:25  [ТС]     просьба объяснить #5
а сдвигает в лево где ?? в массиве ??и зачем сдвигает ??
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
18.02.2013, 15:34     просьба объяснить #6
видимо я плохо объяснил, вот у тебя есть 2 символа представь s[0] = '5' и s[1] = '4', так записано число 54 в строковом виде, ты берешь первый символ '5' и его надо сдвинуть левее) чтобы получилось 50 , т.е делаешь операцию 5 * 10, а потом прибавляешь второй символ 4 получаешь 54, а если бы бы еще 3ий символ предположим s[3] = '2' тогда тебе надо опять домножить на 10 и прибавить 3ий символ
freshik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 4
18.02.2013, 15:38  [ТС]     просьба объяснить #7
тепер понятно все...
спасибо обьяснил ...
бу дальше думать ...
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
18.02.2013, 15:53     просьба объяснить #8
Цитата Сообщение от freshik Посмотреть сообщение
a=a*10+s[i]-'0';
вообщето это преобразования из символа (например '5') в цифру (5) первое будет занимать 1 байт, второе, в зависимости от типа в которое преобразуем, в данном случае это long => 4 байта
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2013, 15:58     просьба объяснить
Еще ссылки по теме:

C++ Просьба оценить код
C++ Просьба исправить ошибки
Просьба откомпилировать файл C++

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

Или воспользуйтесь поиском по форуму:
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
18.02.2013, 15:58     просьба объяснить #9
гениально
Yandex
Объявления
18.02.2013, 15:58     просьба объяснить
Ответ Создать тему
Опции темы

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