Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
#1

atoi() - C++

07.08.2010, 12:27. Просмотров 2219. Ответов 10
Метки нет (Все метки)

программа элементарная - надо считать строку "x=int1+int2" где int1 и int2 не известные зарание значения int; надо вывести int1+int2; не могу заставить работать!!!...

Добавлено через 14 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    char c1[20];
    char c2[20];
    int j=0;
    char s[50];
    cin.get(s,50).get();
    for(j=2;isdigit(s[j]);j++)
        c1[j-2]=s[j];
    j+=2;
    for(int k=j;isdigit(s[k]);k++)
        {c2[k-j]=s[k]; c2[k-j+1]='\0';}
    cout<<atoi(c1)+atoi(c2);
    getch();
    return 0;
}

http://www.cyberforum.ru/cpp-beginners/thread262619.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2010, 12:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос atoi() (C++):

atoi не работает!
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; using namespace...

Результат atoi
привет необходимо написать функцию, позволяющую проверить является ли...

функция atoi
Функции атои по идее должна превращать строку в число, но почему то я не могу...

Аналог atoi в С++
Вопрос возможно глупый, но если кто просветит меня буду очень благодарен)) как...

замена atoi
Всем привет. Я всегда, когда надо, перевожу из string в int с помощью функции...

10
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
07.08.2010, 12:39 #2
Цитата Сообщение от nikkka Посмотреть сообщение
программа элементарная - надо считать строку "x=int1+int2" где int1 и int2 не известные зарание значения int; надо вывести int1+int2; не могу заставить работать!!!...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h>
#include <stdio.h>
 
int main(void)
{
  char num1[80], num2[80];
 
  printf("n1: ");
  gets(num1);
  printf("n2: ");
  gets(num2);
  printf("sum: %d\n", atoi(num1) + atoi(num2));
 
  system("pause");
  return 0;
}
если, ты хочешь действовать именно через atoi, то учти, что она преобразует только первую часть строки, то есть до первого недопустимого символа. и только из 10 системы счисления.
еще, если вся строка состоит из допустимых символов, но слишком большая (ну явно никак не влезет в long), то результат работы функции не определен

Добавлено через 2 минуты
Цитата Сообщение от nikkka Посмотреть сообщение
cin.get(s,50).get();
а это еще что такое?
1
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
07.08.2010, 12:41  [ТС] #3
fasked, входная строка ОБЯЗАТЕЛЬНО должна иметь вид x=...+...

Добавлено через 36 секунд
Цитата Сообщение от fasked Посмотреть сообщение
а это еще что такое?
считываю строку, а что?
0
Хохол
Эксперт С++
475 / 443 / 34
Регистрация: 20.11.2009
Сообщений: 1,292
07.08.2010, 12:49 #4
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <conio.h>
 
int main()
{
    char s[100];
    int a, b;
    scanf("%[^=]=%d+%d",s,&a,&b);
    printf("%d",a+b);
    getch();
}
0
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
07.08.2010, 12:52  [ТС] #5
Хохол, надо с помощю cin и atoi.
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
07.08.2010, 12:55 #6
Цитата Сообщение от nikkka Посмотреть сообщение
надо с помощю cin и atoi.
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
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
 
int main(void)
{
   char buf[80], num1[80] = { 0 }, num2[80] = { 0 };
 
   std::fill_n(buf, 80, 0);
 
   std::cout << "n1: ";
   std::cin.getline(buf, 80); // вот такого чтения будет достаточно :)
 
   for(int i = 0, j = 0; i < 80; ++i)
      if(isdigit(buf[i]))
         num1[j++] = buf[i];
 
   std::fill_n(buf, 80, 0);  // обнулить буфер
 
   std::cout << "n2: ";
   std::cin.getline(buf, 80);
 
   for(int i = 0, j = 0; i < 80; ++i)
      if(isdigit(buf[i]))
         num2[j++] = buf[i];
 
 
   std::cout << atoi(num1) + atoi(num2) << std::endl;
 
   system("pause");
   return 0;
}
0
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
07.08.2010, 12:58  [ТС] #7
fasked, а где у меня ошибка?
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
07.08.2010, 13:04 #8
Цитата Сообщение от nikkka Посмотреть сообщение
а где у меня ошибка?
да в принципе работает (но вот std::cin.get().get() - выглядит пугающе)
в твоей программе надо вводить данные примерно так
x=123y=321
без пробела.
0
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
07.08.2010, 13:06  [ТС] #9
fasked, какие ещё данные????? вход строчка: x=int1+int2!!!!
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
07.08.2010, 13:08 #10
строку j+=2 после первого цикла, сделай там обычный инкремент, тогда будет работать, как ты задумывал, то есть следующая строка отработает правильно
x=123+321
Добавлено через 52 секунды

Не по теме:

а у нас что, конкурс калькуляторов открылся?

0
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
07.08.2010, 13:11  [ТС] #11
Цитата Сообщение от fasked Посмотреть сообщение
а у нас что, конкурс калькуляторов открылся?
мне для инетрпретатора надо... СПАСИБО ОГРОМНОЕ!!!!!....
0
07.08.2010, 13:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2010, 13:11
Привет! Вот еще темы с решениями:

Atoi, atof.
Подскажите пожалуйста, как с помощью функций atoi, atof, проверить, является ли...

atof и atoi
Помогите пожалуйста, разобратся что такое atof, atoi, как работает, что делает?

Atoi для чайника
Условие задания под спойлером. Данные берутся из input.txt, записываются в...

Как работает atoi
Почему bi==22 ??? #include&lt;iostream&gt; #include&lt;cstring&gt; #include &lt;stdio.h&gt; ...


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

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

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