Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TheSeg
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 31
#1

Задача по строкам - C++

04.12.2011, 13:05. Просмотров 925. Ответов 11
Метки нет (Все метки)

Дана последовательность символов. Определить, является ли она правильной записью вещественного числа (тип string запрещен для использования).

Не получается посимвольный ввод
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2011, 13:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача по строкам (C++):

Задача по строкам - C++
Вводиться строка, необходимо вывести на экран все слова нечетной длинны, в которых не содержится повторяющихся букв пример, вводим...

Задача по строкам в С - C++
Такое дело.Вот задача на С: Найти самое длинное общее слово для всех предложений текста. (Предложения отделяются точками, между словами 1...

Задача по строкам - C++
Дано предложение. Удалить из него слова, состоящие не менее чем из четырех букв, хотя бы одна из которых латинская буква ‘w’ ...

Задача по строкам - C++
Вообщем нужно написать программу по этим заданиях: 1) Для заданного массива из 5 лент напечатать ленту, в которой встречается больше...

Задача по строкам!!! - C++
Ребят, передо мной поставлена вот такая задача: Даны две строки, содержащие не более 100 символов. Строки состоят из слов, разделенных...

Задача по строкам!String - C++
Помогите пожалуйста с задачей по строкам.. String Вводится предложение строка,вывести все слова с тремя буквами i,разделитель между...

11
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
04.12.2011, 13:28 #2
Ну есть функция atof
если вернула ноль, то значит нельзя
0
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
04.12.2011, 19:09 #3
go, У него посимвольный ввод не получается
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
04.12.2011, 19:16 #4
Цитата Сообщение от TheSeg Посмотреть сообщение
Не получается посимвольный ввод
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <string.h>
 
...
 
char s[1024];
char * str;
 
fgets (s,1024,stdin);
 
str = strdup (s);
лучше так.
1
TheSeg
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 31
05.12.2011, 17:11  [ТС] #5
тип string запрещен для использования.

мб так?
C++
1
2
3
char str[80];
    printf("Enter string: ");
    gets(str);
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
05.12.2011, 17:20 #6
Цитата Сообщение от go Посмотреть сообщение
лучше так.
к чему тут strdup?
0
Day
1159 / 964 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
05.12.2011, 17:21 #7
Цитата Сообщение от go Посмотреть сообщение
Ну есть функция atof
если вернула ноль, то значит нельзя
Это не совсем так. Например, 123.abc
и обратно, 0.000 - atof вернет 0, а число правильное
C
1
2
3
4
5
6
7
8
9
for(k=0; *s!='\0'* s++) {
  if (*s=='.') {
    if (k>0) break;
    k++;
  }
  if (*s<'0' || *s>'9') break;
}
if (*s!='\0') cout<<"NO";
else           cout<<"Yes"
1
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.12.2011, 17:22 #8
TheSeg, а где у меня string??? Я на Си написал

Добавлено через 43 секунды
Цитата Сообщение от Nameless One Посмотреть сообщение
к чему тут strdup?
Для ввода неограниченного кол-ва строк.
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
05.12.2011, 17:27 #9
Цитата Сообщение от go Посмотреть сообщение
Для ввода неограниченного кол-ва строк.
не понял, просвети
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
05.12.2011, 17:37 #10
Вот через sscanf:
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
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
 
#define BUF_SIZE 256
 
int             /* 0 при удачном завершении */
parse_double(const char* buf,   /* строка для разбора */
         double* store_ptr) /* указатель для результата */
{
    char dummy;
    int result, ret_val;
 
    ret_val = sscanf(buf, "%lf %c", store_ptr, &dummy);
 
    switch(ret_val)
    {
    case 0:
    result = 1;
    break;
 
    case 1:
    result = 0;
    break;
 
    case 2:
    result = 2;
    break;
    }
 
    return result;
}
 
int main(void)
{
    char buf[BUF_SIZE];
    double real;
    int ret_val;
    
    if(fgets(buf, BUF_SIZE, stdin) == NULL)
    {
    perror("fgets");
    exit(1);
    }
 
    if((ret_val = parse_double(buf, &real)) == 0)
    puts("The given line is the correct string representation of a real number");
    else
    {
    puts("The given line is invalid");
 
    switch(ret_val)
    {
    case 1:
        puts("No parse");
        break;
 
    case 2:
        puts("Extra input");
        break;
    }
    }
    
    exit(0);
}
Еще вариант — через strtod
1
TheSeg
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 31
06.12.2011, 18:24  [ТС] #11
Помогите пожалуйста доделать задачу
Я реализовал посимвольный ввод, но пришел в тупик, т.к вещественное число может быть задано нескольккими способами, например 12.5 или -1.2E-2 и т.п.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cstring>
#include <conio.h>
 
int main ()
{ 
    cout << "vvedite posledovatelnost: " << endl;
    char c=getche();
    
 
    while (c != 13)
    {
        c=getche();
    }
                
    getch(); 
    return 0;
}
Добавлено через 3 минуты
Есть идея например ввести флаг который достигая определенного этапа будет менять значение, например изначально был 0, затем если первый символ + или -, то стал 1, если первый символ - цифра, то стал 2, если флаг равняется 2, то если встретится точка будет 3 и т.д. В противных случае ставим флаг -1, и когда вся последовательность введена, то если флаг дошел до конца, то число является правильной записью.
Или это бред сумасшедшего? )
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
06.12.2011, 18:35 #12
Смотри в сторону конечных автоматов.
А вообще, код, который я привел, позволяет корректно разобрать и экспоненциальную запись (что не удивительно, т.к. для этого используется стандартная функция)
0
06.12.2011, 18:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2011, 18:35
Привет! Вот еще темы с ответами:

Задача по строкам и пунктуации на C++ - C++
Я только изучаю C++, учусь по видеоурокам и учебникам, но почему то по строкам очень мало написано... Срочно нужна ваша помощь, на завтра,...

Задача по строкам (в несколько пунктов) - C++
Дана строка текста, в которой слова разделены пробелами и запятыми. Необходимо: а) определить количество слов длиной 3 символа;...

по строкам - C++
Пусть задан текст, заканчивающий точкой. Текст состоит из слов, разделенных пробелами. Слово последов. Русских cлов(как строчных, так и...

Программка по строкам - C++
Начал изучать с++ ... возник вопрос по строкам: к примеру, в предложении переставить символы с заду на перед? Вообщем, хелп, товарищи!)


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

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

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