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

atoi() - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
07.08.2010, 12:27     atoi() #1
программа элементарная - надо считать строку "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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2010, 12:27     atoi()
Посмотрите здесь:

C++ Atoi, atof.
C++ atof и atoi
atoi C++
C++ Аналог atoi в С++
C++ функция atoi
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
07.08.2010, 12:39     atoi() #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();
а это еще что такое?
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
07.08.2010, 12:41  [ТС]     atoi() #3
fasked, входная строка ОБЯЗАТЕЛЬНО должна иметь вид x=...+...

Добавлено через 36 секунд
Цитата Сообщение от fasked Посмотреть сообщение
а это еще что такое?
считываю строку, а что?
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
07.08.2010, 12:49     atoi() #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();
}
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
07.08.2010, 12:52  [ТС]     atoi() #5
Хохол, надо с помощю cin и atoi.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
07.08.2010, 12:55     atoi() #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;
}
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
07.08.2010, 12:58  [ТС]     atoi() #7
fasked, а где у меня ошибка?
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
07.08.2010, 13:04     atoi() #8
Цитата Сообщение от nikkka Посмотреть сообщение
а где у меня ошибка?
да в принципе работает (но вот std::cin.get().get() - выглядит пугающе)
в твоей программе надо вводить данные примерно так
x=123y=321
без пробела.
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
07.08.2010, 13:06  [ТС]     atoi() #9
fasked, какие ещё данные????? вход строчка: x=int1+int2!!!!
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
07.08.2010, 13:08     atoi() #10
строку j+=2 после первого цикла, сделай там обычный инкремент, тогда будет работать, как ты задумывал, то есть следующая строка отработает правильно
x=123+321
Добавлено через 52 секунды

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2010, 13:11     atoi()
Еще ссылки по теме:

C++ функции atoi и itoa
Результат atoi C++
C++ atoi не работает!

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

Или воспользуйтесь поиском по форуму:
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
07.08.2010, 13:11  [ТС]     atoi() #11
Цитата Сообщение от fasked Посмотреть сообщение
а у нас что, конкурс калькуляторов открылся?
мне для инетрпретатора надо... СПАСИБО ОГРОМНОЕ!!!!!....
Yandex
Объявления
07.08.2010, 13:11     atoi()
Ответ Создать тему
Опции темы

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