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

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

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

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

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

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

Не получается посимвольный ввод
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2011, 13:05     Задача по строкам
Посмотрите здесь:

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
04.12.2011, 13:28     Задача по строкам #2
Ну есть функция atof
если вернула ноль, то значит нельзя
kkk008009kkk
46 / 46 / 1
Регистрация: 24.03.2011
Сообщений: 315
04.12.2011, 19:09     Задача по строкам #3
go, У него посимвольный ввод не получается
go
Эксперт C++
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);
лучше так.
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);
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
05.12.2011, 17:20     Задача по строкам #6
Цитата Сообщение от go Посмотреть сообщение
лучше так.
к чему тут strdup?
Day
1154 / 959 / 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"
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.12.2011, 17:22     Задача по строкам #8
TheSeg, а где у меня string??? Я на Си написал

Добавлено через 43 секунды
Цитата Сообщение от Nameless One Посмотреть сообщение
к чему тут strdup?
Для ввода неограниченного кол-ва строк.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
05.12.2011, 17:27     Задача по строкам #9
Цитата Сообщение от go Посмотреть сообщение
Для ввода неограниченного кол-ва строк.
не понял, просвети
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
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
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, и когда вся последовательность введена, то если флаг дошел до конца, то число является правильной записью.
Или это бред сумасшедшего? )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2011, 18:35     Задача по строкам
Еще ссылки по теме:

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

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

Вопросы по строкам - C++
Доброго времени суток. У меня несколько вопросов для понимания строк. 1) char a = {'a','b','c'}; cout &lt;&lt; a; ...

подскажите по строкам в С++ - C++
задание вот такое: Даны две строки, состоящие из слов, разделѐнных одним или несколькими пробелами. Из слов этих строк сформировать новую...

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


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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
06.12.2011, 18:35     Задача по строкам #12
Смотри в сторону конечных автоматов.
А вообще, код, который я привел, позволяет корректно разобрать и экспоненциальную запись (что не удивительно, т.к. для этого используется стандартная функция)
Yandex
Объявления
06.12.2011, 18:35     Задача по строкам
Ответ Создать тему
Опции темы

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