С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
freshik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 4
#1

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

18.02.2013, 15:06. Просмотров 304. Ответов 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
#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'; что делает и для чего ?
извиняйте за глупые вопросы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2013, 15:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос просьба объяснить (C++):

Просьба объяснить работу std::thread в двух коротких примерах кода - C++
Доброго времени суток! Я использую std::thread чтобы поднять два разных потока. В первом случае всё работает хорошо. Во втором нет. ...

Просьба - C++
Помогите, пожалуйста, в создании приложения. Уровень знания языков программирования ближе к 0. Суть приложения такова: при запуске...

Глупая просьба... - C++
Нужна блок-схема приведенного ниже кода. Кто сделает - подгоню семизнак! #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #define...

Просьба с компиляцией - C++
Сегодня что то случилось с компиляторами на 2 разных запускал толку... Ошыбка: error: stray '\179' in program Просьба запустить код...

Просьба к администрации - C++
Я видел есть тема о основных сортировках.это хорошая очень нужная тема.многим я уверен она помогла. Но вот прошу сделать такую же тему...

Просьба исправить ошибки - C++
Условие задачи: З клавіатури ввести довге беззнакове ціле число. Сформувати масив з усіх дільників цього числа, що є простими числами (1...

8
aLarman
643 / 564 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
18.02.2013, 15:12 #2
Цитата Сообщение от freshik Посмотреть сообщение
итак вопрос первый '0' что ето ?
это символ нуля
0
freshik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 4
18.02.2013, 15:13  [ТС] #3
а для чего ковычки ?
0
aLarman
643 / 564 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
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 Посмотреть сообщение
а для чего ковычки ?
чтобы показать что это символ
0
freshik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 4
18.02.2013, 15:25  [ТС] #5
а сдвигает в лево где ?? в массиве ??и зачем сдвигает ??
0
aLarman
643 / 564 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
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ий символ
1
freshik
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 4
18.02.2013, 15:38  [ТС] #7
тепер понятно все...
спасибо обьяснил ...
бу дальше думать ...
0
MrGrig
177 / 160 / 2
Регистрация: 08.10.2012
Сообщений: 422
18.02.2013, 15:53 #8
Цитата Сообщение от freshik Посмотреть сообщение
a=a*10+s[i]-'0';
вообщето это преобразования из символа (например '5') в цифру (5) первое будет занимать 1 байт, второе, в зависимости от типа в которое преобразуем, в данном случае это long => 4 байта
0
aLarman
643 / 564 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
18.02.2013, 15:58 #9
гениально
0
18.02.2013, 15:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2013, 15:58
Привет! Вот еще темы с ответами:

Просьба откомпилировать файл - C++
Добрый день господа. Ребята хочу обратиться за помощью. Компельните файл, очень надо не особо разбираюсь. ...

Просьба оценить код - C++
Данный код реализует массивы, размеры которых можно легко изменять, а так же которые можно легко склеивать. Прошу оценить его и...

Убедительная просьба помочь... - C++
Ув. программисты, помогите нубу в Borland C, пожалуйста!.. Есть 2 задания, не могу никак написать... Уже облазил весь форум почти......

Просьба помочь реализовать класс. - C++
Картка персони містить прізвище й дату народження. Реалізувати клас ListPerson для роботи з картотекою персоналій. Клас повинен містити...


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

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

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