Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
vukih
0 / 0 / 1
Регистрация: 09.06.2013
Сообщений: 2
1

Реализовать функцию распознающею первое целое число в строке

12.06.2013, 12:09. Просмотров 954. Ответов 1
Метки нет (Все метки)

Дан заголовок функции и описание входных выходных параметров. Их изменять нельзя. Необходимо реализовать эту функцию.

Собственно сама функция.
Реализовать и использовать функцию, которая распознает первое целое число в строке:

int findInteger( const char str[81], char **end);

Входные данные:
str - исходная строка
Выходные данные:
end – указатель на символ, следующий за целым числом; если целое число не обнаружено, то возвращается NULL
возвращаемое значение - распознанное целое число.
Числом является непрерывная последовательность цифр от разделителя до разделителя. Разделителем является любой символ не относящийся к буквам или цифрам.

Собственно довольно плохо умею работать с указателями и строками, поэтому вконец запутался. Прилагаю сюда же свой косячный недокод. На мой взгляд условия и циклы представляются правильными, тоесть число он найдет, а вот как его правильно вывести ума не приложу. Буду благодарен за помощь.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 12:09
Ответы с готовыми решениями:

Составить функцию, которая, получив целое число определяет, уменьшается ли оно в целое число раз
задание такое Составить функцию, которая, получив целое число определяет,...

Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число
Помогите написать программу, использующую функцию, которая принимает 32 битное...

Создайте функцию, которая принимает в качестве аргумента целое число и возвращает число Люка с таким номером
1. Создайте функцию, которая принимает в качестве аргумента целое число и...

Прибавить к строке целое число
Обычная лотерея.Хочу реализовать что-то вроде истории,где описывалось...

Передать в функцию целое число. Функция заменяет его на ближайшее простое число, которое больше или меньше исходного. Вернуться в main( ) и распечатат
Передать в функцию целое число. Функция заменяет его на ближайшее простое...

1
vukih
0 / 0 / 1
Регистрация: 09.06.2013
Сообщений: 2
12.06.2013, 12:15 2
Лучший ответ Сообщение было отмечено как решение

Решение

код
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// lab8.cpp: определяет точку входа для консольного приложения.
//int findInteger( const char str[81], char **end);
 
//Входные данные:
//str - исходная строка
//Выходные данные:
//end – указатель на символ, следующий за целым числом; если целое число не обнаружено, то возвращается NULL
//возвращаемое значение - распознанное целое число
 
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "tchar.h"
#include "ctype.h"
#include "stdlib.h"
//#include "testing.h"
 
int findInteger(const char str[81], char **end)
{
    int i, razdel, j, c;
    char chislo[81], *endc;
 
    if ((isdigit(str[0]))||((isspace(str[0]))||(ispunct(str[0])))) //задаем начальное значение флага разделителя
        {
            razdel=1;
        }
        else
        {
                razdel=0;
        }
 
    for(i=0; i<81; i++)
    {
        
        if ((razdel)&&(isdigit(str[i]))) // если после разделителя стоит цифра
            {
                
                for (j=i; j<81; j++) // проверяем последующие символы
                {
                    if (isalpha(str[j])) // если буква заканчиваем цикл
                    {
                        j=81;
                        endc=0;
                    }
                    else
                    {
                        if (((!(isalnum(str[j]))))||((j==(80))&&(isdigit(str[j])))) // если разделитель или строка закончилась числом 
                        {
                            
                            for (i; i<j; i++) //цикл выписывания числа от начального до конечного разделителя
                            {
                                chislo[i]=str[i];
                                endc=*str[j];
                                j=81;
                            }
 
                            if ((j==(80))&&(isdigit(str[j]))) // если строка закончилась числом
                            {
                                chislo[j]=str[j];
                                endc=0;
                                j=81;
                            }
                        }
            
                    }
                }
        }
 
    }
    c=atoi(chislo); // преобразуем полученную строку в число
    return (c);         // выводим
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    return(0);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2013, 12:15

Напишите функцию, получающую целое число
14. Напишите функцию, получающую целое число N (&gt; 0). Если оно является...

Проверить, есть ли в строке из символов целое число
Как проверить, есть ли в строке из символов целое число?

Реализовать бинарное дерево, каждому ребру которого соответствует целое число
Привет, студентка, прошу помощи в реализации задачи, потратила кучу времени,...


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

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

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