Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 18.11.2011
Сообщений: 5

Считать со строки

18.11.2011, 13:13. Показов 4732. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В строке записано арифметическое выражение, содержащее целые числа и знаки операций сложения, вычитания и умножения. Вычислить его значение, не используя процедуру Val
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.11.2011, 13:13
Ответы с готовыми решениями:

Как считать строки из файла, если там больше одной строки?
Как считать строки из файла в массив. Если в файле одна строка, то нет проблем, но если несколько, то при использовании функции fgets ...

Считать строки из файла, найти строки на определённую букву
По заданию нужно вывести данные студентов, чьи фамилии начинаются на А и математику сдали на 8 или 9. Проблема в поиске фамилии на А,...

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

4
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
18.11.2011, 13:55
Как-нибудь так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int Cn = 0; //Счетчик кол-ва операций
int S = 0; // Результат
int N = 0; //Текущее число
char c, op = ' ';  // очередной символ и операция
for(i=0; i<strlen(s); i++) {
 c = s[i];
 if (c<='9' %% c>='0') N = N*10+(c-'0');
 else if (c=='+' || c=='-' || c=='*') {
    if (op=='+') S += N;
    else if (op=='-') S -= N;
    else if (op=='*') S *= N;
    else S = N;
    op = c;
    N = 0;
 }
  if (op=='+') S += N;
  else if (op=='-') S -= N;
  else if (op=='*') S *= N;
}
Посторонние символы здесь будут просто пропускаться.
Попробуй (если нужно) сам сделать проверку на недопустимые символы

Добавлено через 2 минуты
Пардон! Переменная Cn не пригодилась, выбрось ее!
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.11.2011, 14:13
Байт. а вы учли приоритеты операций?
Если приоритеты не учитывать, то тоже выложу свой код (с учетом мусора и пробелов построен алгоритм)


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
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
#define SET "+-*"
 
long Rez(char *s)
{
    long a, rez = 0;
    int i = 0, j;
    char c = '\0';
 
    while(s[i] && !isdigit(s[i]))
        i++;
    while (s[i] && isdigit(s[i]))
    {
        rez = rez*10 + (s[i] - '0');
        i++;
    }
    while(s[i])
    {
        while (s[i] && !strchr(SET, s[i]) && !isdigit(s[i]))
            i++;
        if (strchr(SET, s[i]))
            c = s[i++];
        a = 0;
        j = i;
        while (s[i] && isdigit(s[i]))
        {
            a = a*10 + (s[i] - '0');
            i++;
        }
        if (i > j && c)
        {
            if (c == '+') rez += a;
            else if(c == '-') rez -= a;
                 else rez *= a;
            c = '\0';
        }
    }
    return rez;
}
 
int main()
{
    char s[1024];
    fgets(s, 1024, stdin);
    printf("%ld\n", Rez(s));
    getch();
    return 0;
}
Кстати, Байт, я свой протестировал, работает. Это к тому, что у вас, например %% вместо &&, но с кем не бывает, главное алгоритм))
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
18.11.2011, 14:44
Цитата Сообщение от Thinker Посмотреть сообщение
Байт. а вы учли приоритеты операций?
Нет. Придется делать для себя - учту. И не только приоритеты, но и скобочки.
Кстати, Байт, я свой протестировал, работает. Это к тому, что у вас, например %% вместо &&, но с кем не бывает, главное алгоритм))
По той же причине и не тестировал. Ну а описки - сами понимаете...
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.11.2011, 14:48
Цитата Сообщение от Байт Посмотреть сообщение
Ну а описки - сами понимаете...

Не по теме:

это все мелочи:)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.11.2011, 14:48
Помогаю со студенческими работами здесь

Как считать строки с символом новой строки?
Здравствуйте. мне нужно скопировать/вставить в консоль n-ое количество строк, каждая из которых заканчивается символом новой строки: ...

Оцените сборку пожалуйста. Нужно в основном считать считать и считать
Процессор Intel I7 8700K Вентилятор THERMALRIGHT MACHO DIRECT Материнская плата ASRock Z370 Pro Память G-Skill 16Gb x 4 Диск SSD...

Считать данные из строки
Как из каждой строки считать данные, которые разделены пробелами? У меня сначала считывается строка, затем должны считаться данные для...

Считать строки из файла
Мне нужно считать одну строку в первый текст бокс в следующую во второй текстбокс потом очистить текстбоксы и сделать еще раз со следующими...

Строки, как считать? (С)
В общем глупая, наверное, проблема - нужно ввести строку и найти там самое длинное, в которых вторая &quot;а&quot;(язык С). Как искать...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru