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

Дополнить каждое слово предложения пробелами (по длине максимального слова) - C++

Восстановить пароль Регистрация
 
ridd[73rus]
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 17
22.10.2010, 13:31     Дополнить каждое слово предложения пробелами (по длине максимального слова) #1
Вот задачка. "Дополнить каждое слово предложения пробелами так, чтобы его длина была
равна длине самого длинного слова. Распечатать получившееся предложение".
Прошу решить её , желательно с подробным описанием функций . И чтобы каждое действие выполнялось отдельной функцией . язык - СИ.
прошу помощи лиш потому, что Си не изучал , в основном делфи изучал. А тут преподу принципиально стало. Заранее благодарен за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2010, 13:31     Дополнить каждое слово предложения пробелами (по длине максимального слова)
Посмотрите здесь:

Дополнить каждое слова пробелами(по количеству максимального) C++
C++ дополнить пробелами каждое слово так, чтобы его длинна приравнялась длинне самого длинного слова в строке
Вводится строка каждое слово которой отделяется от других слов одним или несколькими пробелами. C++
Дано два предложения (Распечатать слова из первого предложения, который начинаются на первую букву последнего слова второго предложения) C++
Дана строка, слова в которой разделены пробелами. Оставьте в ней только те слова, которые начинаются на ту же букву, что и первое слово. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
22.10.2010, 17:31     Дополнить каждое слово предложения пробелами (по длине максимального слова) #2
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
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
void main()
{
    char str[256]; // это строка
    char cstr[256]; // это копия строки для проведения операций, чтобы исходная строка не изменялась
    char spaces[20] = {"          "}; // массив пробелов
    gets(str); // ввод строки с клавиатуры
    strcpy(cstr,str); // создаем копию(копируем из str в cstr)
    char * pch; // указатель на символы
    int max_len = 0 ; // длина максимального слова
    int length; // длина отдельно взятого слова
    int dif; // разница в длине
pch = strtok(cstr," "); // указатель указывает на первое слово строки(то что до первого пробела)
while(pch != NULL)
{   
length = strlen(pch); // длина слова
if(max_len < length) max_len = length; // выводим максимальную длину слова
pch = strtok(NULL," "); // переходим к следующему слову
}
 
strcpy(cstr,""); // теперь cstr пустая строка
pch = strtok(str," "); // берем первое слово из str
 
while(pch != NULL)
{
length = strlen(pch); // измеряем его длину
dif = max_len - length; // сравниваем с максимальной
strcat(cstr,pch); // присоединяем его к cstr
strncat(cstr,spaces,dif); // присоединяем к cstr из spaces кол-во пробелов(dif)
pch = strtok(NULL," "); // и так далее до конца строки
}
puts(cstr); // выводим то что у нас получилось
_getch();
}
ridd[73rus]
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 17
22.10.2010, 20:49  [ТС]     Дополнить каждое слово предложения пробелами (по длине максимального слова) #3
Благодарю за помощь !
ridd[73rus]
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 17
27.10.2010, 10:57  [ТС]     Дополнить каждое слово предложения пробелами (по длине максимального слова) #4
нужно внести изменения в прогу , она должна соответствовать требованиям : "Использование
глобальных переменных запрещено. Все исходные данные функция должна по-
лучать в виде параметров. Каждая функция должна выполнять строго опреде-
ленное действие."
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
27.10.2010, 15:19     Дополнить каждое слово предложения пробелами (по длине максимального слова) #5
нужно внести изменения в прогу , она должна соответствовать требованиям : "Использование
глобальных переменных запрещено. Все исходные данные функция должна по-
лучать в виде параметров. Каждая функция должна выполнять строго опреде-
ленное действие."
Вот что я могу предложить..... Создаем в main() массив cstr[256] для хранения результата. Создаем
функцию AddSpaces() которая и делает то ,что нам надо. И передаем ей в качестве параметров обе
строки-массивы (str и cstr) вызывая её из main()

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
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
void AddSpaces(char str[256], char cstr[256]); // прототип
 
void main()
{
        char str[256]; // это строка 
        char cstr[256];
        AddSpaces(str,cstr);
puts(cstr);// выводим то что у нас получилось
_getch();
}
 
void AddSpaces(char str[256], char cstr[256])
{
        char spaces[20] = {"          "}; // массив пробелов
        gets(str); // ввод строки с клавиатуры
        strcpy(cstr,str); // создаем копию(копируем из str в cstr)
        char * pch; // указатель на символы
        int max_len = 0 ; // длина максимального слова
        int length; // длина отдельно взятого слова
        int dif; // разница в длине
pch = strtok(cstr," "); // указатель указывает на первое слово строки(то что до первого пробела)
while(pch != NULL)
{       
length = strlen(pch); // длина слова
if(max_len < length) max_len = length; // выводим максимальную длину слова
pch = strtok(NULL," "); // переходим к следующему слову
}
 
strcpy(cstr,""); // теперь cstr пустая строка
pch = strtok(str," "); // берем первое слово из str
 
while(pch != NULL)
{
length = strlen(pch); // измеряем его длину
dif = max_len - length; // сравниваем с максимальной
strcat(cstr,pch); // присоединяем его к cstr
strncat(cstr,spaces,dif); // присоединяем к cstr из spaces кол-во пробелов(dif)
pch = strtok(NULL," "); // и так далее до конца строки
}
}
ridd[73rus]
0 / 0 / 0
Регистрация: 22.10.2010
Сообщений: 17
10.11.2010, 22:18  [ТС]     Дополнить каждое слово предложения пробелами (по длине максимального слова) #6
требуется некоторое изменение , все теже требования , но реализовать каждое действие отдельной функцией . Заранее благодарен за помощь
Yandex
Объявления
10.11.2010, 22:18     Дополнить каждое слово предложения пробелами (по длине максимального слова)
Ответ Создать тему
Опции темы

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