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

Строки - C++

Войти
Регистрация
Восстановить пароль
 
Aplo
0 / 0 / 0
Регистрация: 05.02.2010
Сообщений: 3
05.02.2010, 19:50     Строки #1
Может кто-нибудь объяснить каждую строчку в этой программе ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include "iostream.h"
#include "string.h"
#include "math.h"
void main()
{char a[];
int i,d;
cout<<"Input digital string: ";
cin>>a;
for(i=0;*a++!="\0";i++)
{swich(a[i])
{case "1": d+=1*pow(10,strlen(a)-i);break;
case "2": d+=2*pow(10,strlen(a)-i); break;
case "3": d+=3*pow(10,strlen(a)-i); break;
case "4": d+=4*pow(10,strlen(a)-i); break;
case "5": d+=5*pow(10,strlen(a)-i); break;
case "6": d+=6*pow(10,strlen(a)-i); break;
case "7": d+=7*pow(10,strlen(a)-i); break;
case "8": d+=8*pow(10,strlen(a)-i); break;
case "9": d+=9*pow(10,strlen(a)-i); break;
default:d+=0;};};
cout<<"Resalt: "<<d;}
Заранее спасибо!)

Добавлено через 1 час 45 минут
Люди, помогите плиз! оч надо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gemor
161 / 22 / 3
Регистрация: 05.02.2010
Сообщений: 207
05.02.2010, 20:17     Строки #2
include - это включение в компилируемый файл заголовочных файлов (там функции нужные описаны)

void main - собственно отсюда начинается выполнение программы

char a[] - массив символов (букв)

int i - переменная типа integer, хранит целые числа

cout<< выводит на экран строку

cin - присваивает переменной значение, к-рое ввел пользователь

for - цикл

switch - выбираем то, за чем будем следить
case "6" - если элемент имеет значение 6, то выполняется код, описанный здесь
default: другое значение, не описанное в case
Aplo
0 / 0 / 0
Регистрация: 05.02.2010
Сообщений: 3
05.02.2010, 20:57  [ТС]     Строки #3
Тогда такой вопрос, cin>>a; какое значение присваивает тут ? чето не могу разобраться ...=\
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
05.02.2010, 21:06     Строки #4
Aplo, char a[255]; std::cin >> a; хоть так сделай.. но не char a[] - это н скомпилируется.
Gemor
161 / 22 / 3
Регистрация: 05.02.2010
Сообщений: 207
05.02.2010, 21:25     Строки #5
в данном тобой коде ошибки

например,
int a;
cin>>a;

как это будет выглядеть:
выполнение программы остановится до тех пор, пока пользователь не введет с клавиатуры какое-либо значение и не нажмет enter
переменная a будет равна тому значению, к-рое ввел юзверь

Gemor, еще одно такое выражение и эта возможность у тебя появится автоматически. M128K145
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
05.02.2010, 21:57     Строки #6
Цитата Сообщение от Gemor Посмотреть сообщение
бл...ть!!! да открой ты учебник, уже невозможно не ругаться!
погугли на "пошла ты со своим утюгом". там про тебя
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9384 / 5434 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
05.02.2010, 22:56     Строки #7
Цитата Сообщение от Gemor Посмотреть сообщение
в данном тобой коде ошибки
Ага, и много... Например:
Цитата Сообщение от Aplo Посмотреть сообщение
char a[];
Массив элементов типа char неизвестного размера. То есть просто компилиться не будет.

Цитата Сообщение от Aplo Посмотреть сообщение
cin>>a;
фактически а - указатель на первый в последовательности элементов типа char неизвестного размера. Что пользователю ввести предлагается?

Цитата Сообщение от Aplo Посмотреть сообщение
for(i=0;*a++!="\0";i++)
Если бы даже умудрились ввести некоторую последовательность байтов, при такой организации цикла первый элемент пролетел бы мимо потому, что после проверки *a++!="\0"; а уже указывал бы на следующий элемент массива. Мало того, значение а просто менять нельзя.

Цитата Сообщение от Aplo Посмотреть сообщение
{swich(a[i])
{case "1": d+=1*pow(10,strlen(a)-i);break;
case "2": d+=2*pow(10,strlen(a)-i); break;
...
это вообще что?! во-первых d неинициализированная переменная, к какому значению прибавляется это странное выражение? а во-вторых при условии, что всё-таки удалось бы изменять в цикле значение а, на что будет a[i] указывать? незачёт, короче...

Добавлено через 23 секунды
Цитата Сообщение от novi4ok Посмотреть сообщение
погугли на "пошла ты со своим утюгом". там про тебя

Не по теме:

плакал...

Aplo
0 / 0 / 0
Регистрация: 05.02.2010
Сообщений: 3
06.02.2010, 08:42  [ТС]     Строки #8
Ну вот само задание:
Задание 6. Составить функцию, переводящую десятичное целое число, представленное в символьном виде, в соответствующую величину целого типа.
Если в моем коде столько ошибок, то как тогда правильно ?
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
06.02.2010, 11:08     Строки #9
Aplo,
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
#include <boost/lexical_cast.hpp>
 
int main()
{
    std::string str = "100";
    int number = boost::lexical_cast <int> (str);
    std::cout << number << std::endl;
 
    return 0;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9384 / 5434 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
06.02.2010, 12:56     Строки #10
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
 
int main(void){
    char *str = "100500";
    
    printf("%d\n", atoi(str));
    
    exit(0);
}
Добавлено через 58 минут
Aplo, если суть в том, чтобы собственный велосипед сделать, то вот:
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
#include <stdio.h>
#include <ctype.h>
 
int my_atoi(const char *s){
    int d, sign = 1;
    
    if ( !s )
        return 0;
    
    while ( isspace(*s) )
        ++s;
    if ( *s == '-' ){
        sign = -1;
        ++s;
    }
    else if ( *s == '+' )
        ++s;
        
    for ( d = 0; isdigit(*s); ++s )
        d = d * 10 + *s - '0';
    
    return d * sign;
}
 
int main(void){
    char buf[128] = { 0 };
    int num;
    
    while ( 1 ){
        printf("String: ");
        scanf("%127s", buf);
        if ( ( num = my_atoi(buf) ) == 0 )
            break;
        printf("%d\n", num);
    }
    
    return 0;
}
Yandex
Объявления
06.02.2010, 12:56     Строки
Ответ Создать тему
Опции темы

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