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

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

Войти
Регистрация
Восстановить пароль
 
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
#1

Чтение строки - C++

04.09.2012, 02:14. Просмотров 474. Ответов 4
Метки нет (Все метки)

Требуется написать функцию, которая читает строка размеров не более 40 символов. Строка представляет собой десятичное число. Ввод должен происходить по аналогии с cin >> str, но с некоторыми изменениями.

Вопрос 1: Как и где лучше хранить знак числа в самой строке или нет? Я в классе определил поле типа bool, которое указывает на положительность или отрицательность числа.

Вопрос2:Как привести функцию к более компактному виду? Хотелось бы посмотреть ваши варианты реализации данной функции.

Вот моя:

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
void HugeInteger::inputHugeInteger(void){
    int i, count = 0;         //count - счётчик прочитанных чисел
    char ch;         
 
    while(isspace(ch = getchar()));
    
    if(!isdigit(ch)){
        if(ch == '-') sgn = false;
        else if (ch == '+') sgn = true;
        else if(ch == '\n') return;
        else{
            ungetc(ch, stdin);
            return;
        }
    }
    
     //num объявлен как char num[sizeArray + 1], sizeArray = 40;
     for(i = sizeArray - 1; i >= 0; i--, count++){
        ch = (char)getchar();
        if(!isdigit(ch)) break;
        num[i] = ch;
    }
    
        if((ch = getchar()) != '\n') ungetc(ch, stdin);
      
  //как вы заметили числа записываются с конца к началу, что соотв.обратному порядку
        //поэтому после,того как прочитана строка, подстрока (или вся строка) разворачивается
       //в конструкторе всем элементам присваиваются значения '0'
 
    if(count) RevStr(num + strlen(num) - count);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2012, 02:14     Чтение строки
Посмотрите здесь:

Чтение строки - C++
Помогите пожалуйста! Пытаюсь считать 30-ю строку из файла, но вместо русских символов каракули... Вроде с wchar'ом работаю... ... FILE...

чтение строки - C++
а не не ниче))

Чтение строки - C++
Здравствуйте! На С/С++ уже давно писал и не могу вспомнить как прочатить текст с клавиатуры в консоли в переменную типа string, т.к. cin>>...

Чтение строки - C++
Можно ли прочитать строку например " string x="cout<<\"123\"<<endl;"; " и перевести сразу в код и что бы выдало ответ "123" а не...

Чтение строки - C++
Как сделать чтобы по русски выводилось str=-O // linesin.cpp // ввод нескольких строк #include <iostream> using namespace std; ...

Чтение строки - C++
В процессе написания программы столкнулся с не большей проблемой, и никак не могу решить. Подскажите что-то. Есть строка, которая...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cmath
Модератор
2432 / 1651 / 133
Регистрация: 11.08.2012
Сообщений: 3,286
Завершенные тесты: 5
04.09.2012, 06:32     Чтение строки #2
Мои вопросики:
1) а вы, часом, не пишите ли программу, которая реализует арифметические операции между "длинными" числами (>10 знаков в записи числа)?
2) Ваше приложение оконное или консольное?
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
04.09.2012, 09:25  [ТС]     Чтение строки #3
консольное
cmath
Модератор
2432 / 1651 / 133
Регистрация: 11.08.2012
Сообщений: 3,286
Завершенные тесты: 5
04.09.2012, 09:40     Чтение строки #4
Цитата Сообщение от bgm313 Посмотреть сообщение
консольное
А про мой первый вопрос?
В вашем случае нет разницы, где вы храните знак. И в случае, когда знак вводится вместе с числом, и отдельно вам придется обрабатывать данные (а то нарветесь на какой нибудь error при исполнении).
Лучше все вынести в одну строку и в одну функцию, занимающуюся обработкой строки
А про это:
Цитата Сообщение от bgm313 Посмотреть сообщение
//как вы заметили числа записываются с конца к началу, что соотв.обратному порядку
//поэтому после,того как прочитана строка, подстрока (или вся строка) разворачивается
//в конструкторе всем элементам присваиваются значения '0'
Вы калькулятор пишите?
Если так, то знак лучше хранить как (int) -1 и 1 дабы упростить код и вычисления. также приведу примерчик из своей программы (только моя функция проверяет, является ли строка беззнаковым рац. числом):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool isNumeral(char *str)
{
    int i = 0;
    bool poi = false;
 
    if(str[0]=='.')return false;
 
    while( str[i] != '\0')
    {
        if(str[i] == '.' && poi)return false;
        if(!(isdigit(str[i]) || str[i] == '.'))
        {
            return false;
        }
 
        if(str[i] == '.' && !poi)poi = true;
        i++;
    }
 
    return true;
}
если будете использовать, то ее надо несколько переделать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2012, 12:45     Чтение строки
Еще ссылки по теме:

Чтение строки из файла - C++
помогите пожалуйста. как прочесть всю строку из файла?

Чтение строки из файла - C++
как считать строку(-и) из файла без стринга? по заданию у меня выводит кол-во слов с одинаковыми первой и последними буквами(символами) ...

Чтение из файла и строки - C++
Всем привет, у меня есть проблема со строками и чтением из файла. Предположим в файле 6 строк: What? A Who? B Why? C Нужно...

Строки, чтение из файла - C++
Пытаюсь написать программу по заданию Попытка не пытка, но мыслей нет


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

Или воспользуйтесь поиском по форуму:
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
04.09.2012, 12:45  [ТС]     Чтение строки #5
Цитата Сообщение от Hydrogen Посмотреть сообщение
1) а вы, часом, не пишите ли программу, которая реализует арифметические операции между "длинными" числами (>10 знаков в записи числа)?
По названию класса, я думаю всё и так понятною
Yandex
Объявления
04.09.2012, 12:45     Чтение строки
Ответ Создать тему
Опции темы

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