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

Подправьте решение - C++

Восстановить пароль Регистрация
 
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
26.11.2010, 19:34     Подправьте решение #1
Скажите пожалуйста почему программа работает не правильно
вот задача:

Вам дана непустая строка, состоящая из строчных латинских букв, цифр и пробелов. Длина строки не превышает 250 символов. Словом для данной строки называется наибольшая по включению подстрока, не содержащая пробелов. Ваша задача - удалить из строки все лишние пробелы так, чтобы два последовательных слова разделял ровно один пробельный символ. Лидирующих и концевых пробелов в строке быть не должно. Гарантируется, что в строке имеется хотя бы один непробельный символ.


Входные данные
Входных данные - это единственная строка.


Выходные данные
Выведите отредактированную строку без лишних пробелов.


Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include "iostream"
 
int _tmain(int argc, _TCHAR* argv[])
{
    char str[250];
    std::cout << "Vvedi_strocu\n";
    std::cin >> str;
    for(int a=1;a<strlen(str);a++)
        if(str[a]==' ' & str[a+1]==' ')
        {
            for(int b=a;a<strlen(str);a++)
                str[a]=str[a+1];
        }
        std::cout << str;
        char w;
        std::cin >> w;
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2010, 19:34     Подправьте решение
Посмотрите здесь:

Подправьте немного... C++
Подправьте мой код) C++
Подправьте рандом в двумерном массиве (матрице) C++
C++ Массивы! Подправьте прогу!
C++ Подправьте прогу( сортировка массивов)
Подправьте код C++
C++ Подправьте код кому не сложно
Нашла на форуме код программы, а он не работает. Подправьте его, пожалуйста C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
26.11.2010, 21:43     Подправьте решение #2
1. cin считывает строку до пробела, поэтому воспользуйтесь ф-цией getline(), для вашего случая:
C++
1
cin.getline(str,249);]
2.if(str[a]==' ' & str[a+1]==' ') - оператор & - это оператор, который работает с битами, вам нужно &&. т.е. вот так:
C++
1
if(str[a]==' ' && str[a+1]==' ')
Добавлено через 2 минуты
да, еще цикл не правильный, вот так надо:
C++
1
2
for(int b=a;b<strlen(str);b++)
                                str[b]=str[b+1];
Yandex
Объявления
26.11.2010, 21:43     Подправьте решение
Ответ Создать тему
Опции темы

Текущее время: 04:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru