Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Символьные строки


Автор: Bondleha 15.4.2009, 19:37
Помогите реализовать задачку на Borland C++ 5.02. нужно оч. 

1)Разработать функцию для перевода целочисленного числа, введенного в виде символьной строки в формат целой переменной. 

Автор: zim22 16.4.2009, 07:19
Код
#include <cstdlib>
#include <iostream>

int convert_to_int(const char* str) { return atoi(str); }

int main()
{
  char buf[256];
  std::cin >> buf;
  int res = convert_to_int(buf);
  std::cout << res;

    return 0;
}



вот ещё вариант:
Код
#include <sstream>
#include <iostream>
#include <string>

int convert_to_int(const std::string &str)
{
  std::istringstream is(str);
  int result;
  is >> result;
  return result;
}

int main()
{
  std::string str;
  std::cin >> str;
  std::cout << convert_to_int(str);

    return 0;
}




Автор: Anikmar 16.4.2009, 08:53
Первый веселее. А зачем оборачивать atoi в convert_to_int?

Автор: zim22 16.4.2009, 09:12
Цитата(Anikmar @  16.4.2009,  08:53 Найти цитируемый пост)
 А зачем оборачивать atoi в convert_to_int?

Цитата(Bondleha @  15.4.2009,  19:37 Найти цитируемый пост)
разработать функцию


Автор: Anikmar 16.4.2009, 09:26
Цитата(zim22 @  16.4.2009,  09:12 Найти цитируемый пост)
Цитата(Bondleha @  15.4.2009,  19:37 )
разработать функцию

Мда...  smile 
Так main вроде как тоже функция  smile 


Автор: zim22 16.4.2009, 09:33
Цитата(Anikmar @  16.4.2009,  09:26 Найти цитируемый пост)
Так main вроде как тоже функция

так она как-бы уже разработана до нас smile

Автор: Bondleha 16.4.2009, 12:35
Чет не работает(((

Автор: zim22 16.4.2009, 12:45
Цитата(Bondleha @  16.4.2009,  12:35 Найти цитируемый пост)
Чет не работает(((

Даа, неработает чё-то ((( А чё оно не работает чё-то?

Автор: Bondleha 16.4.2009, 13:14
std не определено. И библиотеку <stream> тоже

Автор: zim22 16.4.2009, 13:18
Код

#include <stdlib.h>
#include <stdio.h>

int convert_to_int(const char* str) { return atoi(str); }

int main()
{
  char buf[256];
  scanf("%s", buf);
  int res = convert_to_int(buf);
  printf("%d", res);

    return 0;
}

Автор: Bondleha 16.4.2009, 13:23
Принцип действия проги!! Вввожу строку вылетает????????????

Автор: zim22 16.4.2009, 13:50
Цитата(Bondleha @  16.4.2009,  13:23 Найти цитируемый пост)
Вввожу строку вылетает?

нет. не вылетает. 
принцип прост: ввести 1234 и нажать Enter

Автор: Bondleha 16.4.2009, 14:13
Вылетает(((( Ты ее у себя пробовал?

Добавлено через 27 секунд
Уже пробовал и getch

Автор: Acer 16.4.2009, 16:35
Цитата(zim22 @ 16.4.2009,  06:19)
Код
#include <cstdlib>
#include <iostream>

int convert_to_int(const char* str) { return atoi(str); }

int main()
{
  char buf[256];
  std::cin >> buf;
  int res = convert_to_int(buf);
  std::cout << res;

    return 0;
}

в этом случае более подходит scanf() и printf(), я так думаю  smile 

Автор: taiven 16.4.2009, 16:37
Код

#include <string.h>
//...
int StringToInt(const char *str)
{
    int res = 0, k = 1, last = strlen(str) - 1;
    for(int i = last; i > 0; i--, k*=10)
         res += ((str[i] - '0')*k);

    return (str[0] == '-') ? res = ~res+1 : res += ((str[0] - '0')*k);
}

Автор: zim22 16.4.2009, 16:46
Цитата(Acer @  16.4.2009,  16:35 Найти цитируемый пост)
в этом случае более подходит scanf() и printf(), 

согласен. прога больше сишная, чем с++.
хотя я и вариант со scanf http://forum.vingrad.ru/index.php?showtopic=255687&view=findpost&p=1844192 

Автор: Bondleha 17.4.2009, 15:12
я так понял в последнем примере это прототип StringToInt описывается. А как главная функция бедет выглядить???

Автор: taiven 17.4.2009, 15:48
Код

#include <iostream>
#include <cstring>

using namespace std;

int StringToInt(const char *str)
{
    int res = 0, k = 1, last = strlen(str) - 1;
    for(int i = last; i > 0; i--, k*=10)
         res += ((str[i] - '0')*k);

    return (str[0] == '-') ? res = ~res+1 : res += ((str[0] - '0')*k);
}

int main(void)
{
    const char *s = "-348759";
    int i = StringToInt(s);
    cout << i << endl;
    return 0;
}

Автор: Bondleha 17.4.2009, 19:17
Всем спасибо!!!! Вы реальные прогеры  smile 

Автор: Bondleha 19.4.2009, 19:14
почему не работает???

Автор: taiven 19.4.2009, 19:38
что именно?

Автор: Bondleha 19.4.2009, 19:53
когда компилирую прога тупо вылетает!!! Ошибок нет но тупо вылетает даже getch не помогает

Автор: Bondleha 19.4.2009, 20:17
Прост во вторник сдавать хочу быстрее с этими строками разобраться

Автор: taiven 19.4.2009, 20:27
system("pause") вместо getch() попробуй, или запусти прогу из командной строки.

Автор: Bondleha 19.4.2009, 20:34
а у тебя запускается??ф?

Добавлено через 57 секунд
меня еще вот эта строка настараживает  using namespace std она же вроде для классов7???

Автор: taiven 19.4.2009, 20:37
чем компилируешь?

Автор: Bondleha 19.4.2009, 20:38
с system("pause") тоже не запускается мелькнул черный экран и все(((

Добавлено через 52 секунды
Я на Borlande c++5.02

Добавлено через 1 минуту и 15 секунд
Я на Borlande c++5.02

Автор: Bondleha 19.4.2009, 21:01
Так что посоветуешь????

Автор: taiven 19.4.2009, 21:11
Если компилируется(без ошибок я имею в виду), то я уже сказал 
Цитата

запусти прогу из командной строки

Автор: Anikmar 19.4.2009, 21:12
Цитата(Bondleha @  19.4.2009,  21:01 Найти цитируемый пост)
Так что посоветуешь???? 

Притормозить программу перед выходом.
Если ничего вышеперечисленного не помогло попробуйте scanf какой-нибудь сделать. А вообще - покажите ваш код, что у вас получилось?

Автор: Bondleha 19.4.2009, 21:17
Код писал taiven  выше!!!

Автор: Anikmar 19.4.2009, 21:22
Код

int main(void)
{
    const char *s = "-348759";
    int i = StringToInt(s);
    cout << i << endl;

// Добавьте сюда:
    cin >> i;

    return 0;
}


Автор: Bondleha 19.4.2009, 21:30
Все ребят все заработало спасибо вам огромное!!! Помогите еще с одной темой она ниже "Обработка символьных строк массивов"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)