Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
2 / 2 / 0
Регистрация: 08.10.2014
Сообщений: 64
1

Преобразовать строку цифр в число типа int

18.03.2016, 15:56. Просмотров 3314. Ответов 3
Метки нет (Все метки)


Здравствуйте! Помогите поправить код функции, не работает при работе с ведущим знаком '-'.
Описание задачи внутри..
Заранее спс)
P.S:Стандартными функциями пользоваться нельзя..
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
33
34
35
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
/**
1.2. Написать функцию int stonum( char *str ), преобразующую строку цифр str
     (возможен ведущий знак ‘+’ или ‘-‘) в число типа int.
     **/
int stonum(char *str);
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char *str=(char*)malloc(10*sizeof(char));
    printf("Введите строку цифр: ");
    gets(str);
    printf("Число полученное в результате обработки: ");
    printf("%d ",stonum(str));
    return 0;
}
int stonum(char *str)
{
    int n=0,k=1;
    while (*str)
    {
        if (*str=='-')
            k=-1;
        if (*str=='+')
            k=1;
            else
            n=10*n+*str-'0';
            str++;
    }
        n*=k;
        return n;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2016, 15:56
Ответы с готовыми решениями:

Как преобразовать число типа int в строку типа string без методов-конвертов на C#?
В общем, все что выше написано. Пишу в Visual Studio на C#. Преобразовать без конвертирования,...

Преобразовать строку содержащую шестнадцатеричное число в десятичное число типа INT
TCHAR string = &quot;A7D&quot;; ... INT value = 2685; Как преобразовать?

Число типа int преобразовать в массив int[] по одной цифре в каждый индекс
В интернете никак не могу. Помогите пожалуйста.

Программа на С, которая вводит число типа int с клавиатуры, преобразует ее в строку (str), выводит на дисплей число и строку.
Задача направленная на усвоение следующих понятий: прототип функции; заголовок функции; тело...

3
Модератор
Эксперт Python
28355 / 15255 / 3009
Регистрация: 12.02.2012
Сообщений: 24,982
Записей в блоге: 4
18.03.2016, 19:42 2
Лучший ответ Сообщение было отмечено wlad1234 как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
int stonum(char *str)
{
    int n=0,k=1;
    while (*str)
    {
        if (*str=='-') k=-1;
        if (*str=='+') k=1;
        if ((*str >= '0') && (*str <= '9')) n=10*n+*str-'0';
        str++;
    }
    n*=k;
    return n;
}
1
Эксперт C
25428 / 15822 / 3385
Регистрация: 24.12.2010
Сообщений: 34,598
18.03.2016, 23:57 3
Catstail, Имхо, строки вида "1+12-234+45" обработает неадекватно. Не говоря уже о том, что если в строке будет посторонний символ....
Впрочем, я вижу, что ваш код базируется на "разработках" ТС
Кстати, и его код не так уж плох. Только перед if в строке 27 надо else поставить.
И если бы ТС не сочел за труд грамотно структурировать код, он бы и сам свою ошибку увидел
0
Модератор
Эксперт Python
28355 / 15255 / 3009
Регистрация: 12.02.2012
Сообщений: 24,982
Записей в блоге: 4
19.03.2016, 10:33 4
Цитата Сообщение от Байт Посмотреть сообщение
строки вида "1+12-234+45" обработает неадекватно
- конечно. Я полагал, что такие строки не подаются на вход. Вообще, мое мнение, что формулировка задачи должна быть "разумной". Если учим перевод из строковой формы в int, то на нем и нужно акцентировать внимание. А вот если изучаем вопросы надежности и корректности кода - тогда, конечно...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2016, 10:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

8-и значное число типа int преобразовать в строчку char\string
Подскажите, есть ли какая-нибудь функция, которая загоняет число в строчку. Например есть 8-и...

Преобразовать число int в строку прописью char
Например, вводим 40, 3 должно выдать sorok rubley tridcat kopeek. Пересмотрел много задач с...

Перевести массив цифр в число типа int или float
Всем здрасти , а не подскажет ли кто часом, можно ли массив с цифрой в каждом злементе (a=1, a=3,...

Как преобразовать строку цифр в число?
Как преобразовать строку цифр в число?


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

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

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