Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 1
Регистрация: 31.05.2013
Сообщений: 28
1

Проверка условия: являются ли оба символа пробелами

24.06.2013, 23:27. Показов 1448. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть программа на С++

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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
 
using namespace std;
 
// Проверка условия: являются ли оба символа пробелами
bool BothAreSpaces(char c1, char c2)
{
return c1 == ' ' && c2 == ' ';
}
 
int main()
{
string s;
// Читаем строку
getline(cin, s);
// Ищем первый непробел
string::size_type pos1 = s.find_first_not_of(' ');
// Ищем последний непробел
string::size_type pos2 = s.find_last_not_of(' ') + 1;
string s1;
// Копируем часть s от pos1 до pos2 в s1, удаляя последовательно идущие символы, удовлетворяющие условию
unique_copy(s.begin() + pos1, s.begin() + pos2, back_inserter(s1), BothAreSpaces);
// Выводим результат
cout « s1 « endl;
}
Переведите,пожалуйста,ее просто на Си
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2013, 23:27
Ответы с готовыми решениями:

Определить являются ли оба эти символа латинскими буквами
Всем программистам Hello_World! Помогите написать программу С клавиатуры вводятся 2 символа....

Определить являются ли оба эти символа латинскими буквами
С клавиатуры вводятся 2 символа. Определить являются ли оба эти символа латинскими буквами. Ответ...

Заданы два целых числа. Определить являются ли они оба четными или оба нечетными или какое из них четное, а какое нечетное.
помогите пожалуйста составить программу и блок-схему в Pascal. Заданы два целых числа. Определить...

Внутри проверки условия не производится ещё одна проверка условия
Как задумывалось - при нажатии на джойстик просто должны были остановится движки, но если при...

10
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
25.06.2013, 00:35 2
без проверок
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<string.h>
 
int main()
{
    char s[1024], *c1, *c2, dst[1024], *dst_p;
    fgets(s, 1024, stdin);
    c1 = s; c2 = s + strlen(s);
    while(*c1++ != ' ');
    while(*c2-- != ' ');
    --c1; dst_p = dst;
    while(c1++ != c2)
        if((*c1 != ' ') || (*(c1-1) != ' '))
            *dst_p++ = *c1;
    *dst_p = '\0';
    printf("%s\n", dst);
}
0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
25.06.2013, 02:48 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <stdio.h>
 
#define GUESS_MAX_LINE_LENGTH 1024
 
int main(void)
{
    char line[GUESS_MAX_LINE_LENGTH], ch;
    int index, state = 0;
 
    for (index = 0; (ch = getchar()) && ch != '\n' && ch != EOF; )
    {
        if (!state && ch == ' ')
        {
            state = 1;
            line[index++] = ch;
        }
        else if (ch != ' ')
        {
            if (state)
            {
                state = 0;
            }
            line[index++] = ch;
        }
    }
    line[index] = '\0';
    printf("%s\n", line);
}
Добавлено через 12 минут
Цитата Сообщение от Vourhey Посмотреть сообщение
без проверок
происходит "затерание" и результат неверный.

Добавлено через 1 час 38 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<string.h>
 
int main()
{
    char s[1024], *c1, *c2, dst[1024], *dst_p;
    fgets(s, 1024, stdin);
    c1 = s; c2 = s + strlen(s);
    while(*c1++ == ' ');
    while(*c2-- == ' ');
    --c1; dst_p = dst;
    while(c1++ != c2)
    {
        if((*c1 != ' ') || (*(c1-1) != ' '))
            *dst_p++ = *(c1-1);
    }
 
    *dst_p = '\0';
    printf("%s\n", dst);
}
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
25.06.2013, 10:02 4
Цитата Сообщение от xtorne21st Посмотреть сообщение
затерание
Во-первых, слова "затЕрание" нет. Как, собственно, и самого "затирания". Во-вторых, программа, которую я написал, выполняет не то, что программ ТС, потому что я не внимательно прочитал ее код, учитывая, что ТС еще поленилась написать задание, ибо заданий "скопируйте строку между пробелами тут полно.". Правильнее было указать на это, раз уж взялся рассматривать чужой код. Ей нужен аналог trim. Все то же самое, только другие условия.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<string.h>
 
int main()
{
    char s[1024], *c1, *c2, dst[1024], *dst_p;
    c1 = s+2;
    fgets(c1, 1022, stdin);
    c2 = c1 + strlen(c1) - 2;
    while(*c1++ == ' ');
    while(*c2-- == ' ');
    c1-=2; ++c2; dst_p = dst;
    while(c1++ != c2)
        if((*c1 != ' ') || (*(c1-1) != ' '))
            *dst_p++ = *c1;
    *dst_p = '\0';
    printf("%s\n", dst);
}
@xtorne21st, твой код работает неправильно. Он не убирает лишний пробел в начале строки. И не убирает лишний пробел в конце строки.
2
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
25.06.2013, 15:15 5
@Vourhey, да я ж без претензий, к тому же вы сами написали что код ваш не проверен. Я лишь хотел обратить внимание, что результат работы программы неверный и даже попытался его исправить, но так как была ночь, немного накосячил. В целом, результат моей работы я расцениваю как удовлетворительный, потому что своими действиями побудил вас должным образом ответить на пост
1
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 9
27.06.2013, 11:07 6
А можно ли при написании кода на Си, сделать вставку на С++ (как ассемблерную)? Проблема в том, что код на Си уже достаточно большой (переписывать не вариант),и нужная вставка на С++ тоже громоздкая и написана не мной (разбираться долго и сложно)
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
27.06.2013, 11:28 7
Цитата Сообщение от Napster7c6 Посмотреть сообщение
А можно ли при написании кода на Си, сделать вставку на С++ (как ассемблерную)?
Нет, это разные по уровням языки. Сначала был С, а потом на его основе был сделан С++. Можно этот код на С++ оформить в форме dll и потом грузить из нее.
0
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 9
27.06.2013, 11:41 8
а как оформить в dll? собственно на С++ несколько нужных файлов
Или что можно почитать на эту тему?
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
27.06.2013, 11:56 9
Создание DLL
Dynamic-Link Library: Теория + Практика для RAD Studio
0
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 9
27.06.2013, 13:04 10
как я поняла, dll - это динамическая библиотека, она линкуется во время выполнения, и делает это операционная система. А тут программа пишется под железо, для МК. Можно сделать статическую библиотеку как-нибудь?
0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
27.06.2013, 16:07 11
@Napster7c6, может также линковаться во время компиляции
0
27.06.2013, 16:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2013, 16:07
Помогаю со студенческими работами здесь

Почему при выполнении данного кода выполняются оба условия?
Здравствуйте!!! подскажите знающие люди почему при выполнении данного кода выполняются оба условия....

Заданы два числа. Являются ли они оба чётными?
Заданы два числа. Являются ли они оба чётными?помогите с паскалём, пожааалуйста((

Как отобразить кнопку только тогда, когда оба условия выполнены
Доброе время суток! как правильно написать что бы только тогда когда userd1 = userd2 и sts1 =...

Чтение строки из файла от символа и между пробелами
Добрый день форумчане! Нужна помощь в чтении текста с файла. Текст с файла: 00R005~2388 2187...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru