Tooprogram.ru

Компьютерный справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Atoi си реализация

Напишите свой собственный atoi ()

Функция atoi () в C принимает строку (которая представляет целое число) в качестве аргумента и возвращает ее значение типа int. Таким образом, в основном функция используется для преобразования строкового аргумента в целое число.

Синтаксис:

Параметры: функция принимает один параметр strn, который ссылается на строковый аргумент, который необходимо преобразовать в его целочисленный эквивалент.

Возвращаемое значение: Если strn является допустимым вводом, то функция возвращает эквивалентное целое число для переданного строкового номера. Если действительного преобразования не происходит, функция возвращает ноль.

Пример:

#include
#include
#include

char strn1[] = «12546» ;

val = atoi (strn1);

printf ( «String value = %sn» , strn1);

printf ( «Integer value = %dn» , val);

char strn2[] = «GeeksforGeeks» ;

val = atoi (strn2);

printf ( «String value = %sn» , strn2);

printf ( «Integer value = %dn» , val);

Выход:

Теперь давайте разберемся, как можно создать собственную функцию atoi (), поддерживаемую различными условиями:

    Ниже приводится простая реализация преобразования без учета какого-либо особого случая. Мы инициализируем результат как 0. Мы начинаем с первого символа и обновляем результат для каждого символа. С

// Программа для реализации atoi () в C
#include

// Простая функция atoi ()

int myAtoi( char * str)

int res = 0; // Инициализировать результат

// перебираем все символы входной строки и

for ( int i = 0; str[i] != ‘’ ; ++i)

res = res * 10 + str[i] — ‘0’ ;

// Программа драйвера для проверки вышеуказанной функции

char str[] = «89789» ;

int val = myAtoi(str);

printf ( «%d » , val);

// Простая C ++ программа для реализации atoi
#include

using namespace std;

// Простая функция atoi ()

int myAtoi( char * str)

int res = 0; // Инициализировать результат

// перебираем все символы входной строки и

for ( int i = 0; str[i] != ‘’ ; ++i)

res = res * 10 + str[i] — ‘0’ ;

char str[] = «89789» ;

int val = myAtoi(str);

// Это код, предоставленный rathbhupendra

Читать еще:  Ошибка невозможно открыть этот установочный пакет

# Python программа для реализации atoi

# Простая функция atoi ()

# Перебирать все символы входной строки и

for i in xrange ( len (string)):

res = res * 10 + ( ord (string[i]) — ord ( ‘0’ ))

# Этот код предоставлен BHAVYA JAIN

// Простая программа на C # для реализации
// из Атои

// Простая функция atoi ()

static int myAtoi( string str)

int res = 0; // Инициализировать результат

// Перебираем все символы

// вводим строку и обновляем результат

for ( int i = 0; i

res = res * 10 + str[i] — ‘0’ ;

// Программа драйвера для проверки вышеуказанной функции

public static void Main()

string str = «89789» ;

int val = myAtoi(str);

// Этот код предоставлен Sam007.

Выход:

В приведенной ниже реализации обработаны отрицательные числа.
C ++

// C ++ программа для реализации atoi
#include

using namespace std;

// Простая функция atoi ()

int myAtoi( char * str)

int res = 0; // Инициализировать результат

int sign = 1; // Инициализировать знак как положительный

int i = 0; // Инициализируем индекс первой цифры

// Если число отрицательное, то обновляем знак

i++; // Также обновляем индекс первой цифры

// Перебираем все цифры и обновляем результат

for (; str[i] != ‘’ ; ++i)

res = res * 10 + str[i] — ‘0’ ;

// Возвращаем результат со знаком

return sign * res;

int val = myAtoi(str);

// Это код, предоставленный rathbhupendra

// AC программа для реализации атои
#include

// Простая функция atoi ()

int myAtoi( char * str)

int res = 0; // Инициализировать результат

int sign = 1; // Инициализировать знак как положительный

int i = 0; // Инициализируем индекс первой цифры

// Если число отрицательное, то обновляем знак

i++; // Также обновляем индекс первой цифры

// Перебираем все цифры и обновляем результат

for (; str[i] != ‘’ ; ++i)

res = res * 10 + str[i] — ‘0’ ;

// Возвращаем результат со знаком

Читать еще:  Обучение си с нуля

return sign * res;

// Программа драйвера для проверки вышеуказанной функции

int val = myAtoi(str);

printf ( «%d » , val);

# Python программа для реализации atoi

# Простая функция atoi ()

# инициализировать знак как положительный

# если число отрицательное, обновите знак

# Перебирать все символы входной строки и обновлять результат

for j in xrange (i, len (string)):

res = res * 10 + ( ord (string[j]) — ord ( ‘0’ ))

return sign * res

# Этот код предоставлен BHAVYA JAIN

// C # программа для реализации atoi

// Простая функция atoi ()

static int myAtoi( string str)

// Инициализировать знак как положительный

// Инициализируем индекс первой цифры

// Если число отрицательное, то

// Также обновляем индекс первого

// перебирать все цифры

// и обновляем результат

res = res * 10 + str[i] — ‘0’ ;

// Возвращаем результат со знаком

return sign * res;

// Программа драйвера для проверки вышеуказанной функции

public static void Main()

string str = «-123» ;

int val = myAtoi(str);

// Этот код предоставлен Sam007.

Выход:

Эта реализация обрабатывает различные типы ошибок . Что если str равен NULL или str содержит нечисловые символы. Следующая реализация обрабатывает ошибки .
C ++

// Простая C ++ программа для реализации atoi

// Утилита для проверки, является ли x числовым

bool isNumericChar( char x)

// Простая функция atoi (). Если данная строка содержит
// любой недопустимый символ, тогда эта функция возвращает 0

int myAtoi( char * str)

int res = 0; // Инициализировать результат

int sign = 1; // Инициализировать знак как положительный

int i = 0; // Инициализируем индекс первой цифры

// Если число отрицательное, то обновляем знак

i++; // Также обновляем индекс первой цифры

// Перебираем все цифры входной строки и обновляем результат

for (; str[i] != ‘’ ; ++i) <

if (isNumericChar(str[i]) == false )

return 0; // Вы можете добавить несколько строк, чтобы написать сообщение об ошибке

Читать еще:  Warface ошибка out of memory

res = res * 10 + str[i] — ‘0’ ;

// Возвращаем результат со знаком

return sign * res;

// Программа драйвера для проверки вышеуказанной функции

int val = myAtoi(str);

printf ( «%d » , val);

# Python программа для реализации atoi

# Полезная функция для проверки, является ли x числовым

if (x > = ‘0’ and x = ‘9’ ):

# Простая функция atoi (). Если данная строка содержит
# любой недопустимый символ, тогда эта функция возвращает 0

if len (string) = = 0 :

# инициализировать знак как положительный

# если число отрицательное, обновите знак

# Перебирать все символы входной строки и обновлять результат

for j in xrange (i, len (string)):

# Вы можете добавить несколько строк для записи сообщения об ошибке в поток ошибок

if isNumericChar(string[j] = = False ):

res = res * 10 + ( ord (string[j]) — ord ( ‘0’ ))

return sign * res

# Этот код предоставлен BHAVYA JAIN

Сложность времени: O (n) где n — количество символов во входной строке.

Нам нужно обработать только четыре случая:

  • Отбрасывает все ведущие пробелы
  • знак числа
  • переполнение
  • Неверный Ввод

Ниже приведен пробный запуск вышеуказанного подхода:

Ниже приведена реализация вышеуказанного подхода:

// Простая C ++ программа для реализации atoi
#include

using namespace std;

int myAtoi( const char * str)

int sign = 1, base = 0, i = 0;

// если пробелы, то игнорировать.

sign = 1 — 2 * (str[i++] == ‘-‘ );

// проверка правильности ввода

while (str[i] >= ‘0’ && str[i] ‘9’ ) <

// обработка теста переполнения

if (base > INT_MAX / 10 || (base == INT_MAX / 10 && str[i] — ‘0’ > 7)) <

base = 10 * base + (str[i++] — ‘0’ );

return base * sign;

int val = myAtoi(str);

printf ( «%d » , val);

>
// Этот код предоставлен Йогеш Шукла.

Выход :

Сложность времени O (n), где n — длина строки.

Упражнение
Напишите свой выигранный atof (), который принимает строку (которая представляет значение с плавающей запятой) в качестве аргумента и возвращает его значение как double.

Ссылка на основную публикацию
Adblock
detector