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

Напечатать все слова, отличные от последнего слова - C++

Восстановить пароль Регистрация
 
лизи
 Аватар для лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
25.02.2012, 12:25     Напечатать все слова, отличные от последнего слова #1
Болела пропустила лекции на эту тему
помогите разобраться
напишите код и объясните почему именно так и где что значит
все должно быть чисто на си)

Дана строка, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу:
задание 1)Удалить из слова первую букву
задание 2)Удалить из слова все последующие вхождения первой буквы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2012, 12:25     Напечатать все слова, отличные от последнего слова
Посмотрите здесь:

C++ Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по заданному правилу
C++ Напечатать все слова отличные от последнего и удовлетворяющие следующему свойству:
Дана последовательность слов.Напечатать все слова, отличные от слова «по» C++
Напечатать все слова, отличные от последнего слова. C++
C++ Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв. Напечатать все слова, отличные от последнего слова
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
26.02.2012, 11:39     Напечатать все слова, отличные от последнего слова #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
#include <stdio.h>
#include <string.h>
 
int main()
{
    char s[] = "gfdgf  DcdvvD nbvrfnfg khjkjhf  dcdvv  chg cc dcdvv.", *p = NULL, *del = " .", *arr[30] = {NULL},
    size, j, *a = NULL, *b = NULL;
    for(p = strtok(s, del), size = 0; p; p = strtok(NULL, del), ++size)
    {
        for(a = p, b = p, j = *p; *b = *a; ++a)
        {
            if(*b != j) ++b;
        }
        arr[size] = p;
    }
    for(j = 0; j < size; ++j)
    {
        if(strcmp(arr[j], arr[size - 1]))
        {
            puts(arr[j]);
        }
    }
    return 0;
}
лизи
 Аватар для лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
26.02.2012, 12:34  [ТС]     Напечатать все слова, отличные от последнего слова #3
Цитата Сообщение от igorrr37 Посмотреть сообщение
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
#include <stdio.h>
#include <string.h>
 
int main()
{
    char s[] = "gfdgf  DcdvvD nbvrfnfg khjkjhf  dcdvv  chg cc dcdvv.", *p = NULL, *del = " .", *arr[30] = {NULL},
    size, j, *a = NULL, *b = NULL;
    for(p = strtok(s, del), size = 0; p; p = strtok(NULL, del), ++size)
    {
        for(a = p, b = p, j = *p; *b = *a; ++a)
        {
            if(*b != j) ++b;
        }
        arr[size] = p;
    }
    for(j = 0; j < size; ++j)
    {
        if(strcmp(arr[j], arr[size - 1]))
        {
            puts(arr[j]);
        }
    }
    return 0;
}


а вы не могли бы объяснить мне какие команды что выполняют?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
26.02.2012, 12:57     Напечатать все слова, отличные от последнего слова #4
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
#include <stdio.h>// puts
#include <string.h>// strtok, strcmp
 
int main()
{
    char s[] = "gfdgf  DcdvvD nbvrfnfg khjkjhf  dcdvv  chg cc dcdvv.", //исходная строка слов и разделителей
    *del = " .", // разделители слов(пробел и точка)
    *arr[30] = {NULL}, // контейнер для хранения слов(обнуляем его содержимое)
    size, j, *a = NULL, *p = NULL, *b = NULL;// нужные в дальнейшем переменные
    for(p = strtok(s, del), size = 0; p; p = strtok(NULL, del), ++size) // разбиваем строку на слова и подсчитываем их количество в size
    {
        for(a = p, b = p, j = *p; *b = *a; ++a)// каждое слово очищаем от первой и равных ей букв
        {
            if(*b != j) ++b;
        }
        arr[size] = p; // и кладём слово в контейнер
    }
    for(j = 0; j < size; ++j)// для каждого слова в контейнере
    {
        if(strcmp(arr[j], arr[size - 1]))// если оно не равно последнему
        {
            puts(arr[j]);// выводим его на экран
        }
    }
    return 0;
}
http://www.cplusplus.com/reference/c...string/strcmp/
http://www.cplusplus.com/reference/c...string/strtok/
лизи
 Аватар для лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
26.02.2012, 13:05  [ТС]     Напечатать все слова, отличные от последнего слова #5
Цитата Сообщение от igorrr37 Посмотреть сообщение
C
1
2
    {
        for(a = p, b = p, j = *p; *b = *a; ++a)// каждое слово очищаем от первой и равных ей букв
а как прописать чтобы он очищал слово только от первой буквы? но потом не очищал от равных ей букв?
и еше впорос как прописать так чтобы слова вводились с клавиатуры?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
26.02.2012, 13:14     Напечатать все слова, отличные от последнего слова #6
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
#include <stdio.h>// puts, gets
#include <string.h>// strtok, strcmp
 
int main()
{
    char s[256], //исходная строка слов и разделителей
    *del = " .", // разделители слов(пробел и точка)
    *arr[30] = {NULL}, // контейнер для хранения слов(обнуляем его содержимое)
    size, j, *p = NULL;// нужные в дальнейшем переменные
    puts("Input string");
    gets(s);// ввод строки с консоли
    for(p = strtok(s, del), size = 0; p; p = strtok(NULL, del), ++size) // разбиваем строку на слова и подсчитываем их количество в size
    {
        arr[size] = p + 1; //каждое слово очищаем от первой буквы и кладём в контейнер
    }
    for(j = 0; j < size; ++j)// для каждого слова в контейнере
    {
        if(strcmp(arr[j], arr[size - 1]))// если оно не равно последнему
        {
            puts(arr[j]);// выводим его на экран
        }
    }
    return 0;
}
лизи
 Аватар для лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
26.02.2012, 14:35  [ТС]     Напечатать все слова, отличные от последнего слова #7
мм спасибо)
лизи
 Аватар для лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
18.03.2012, 15:40  [ТС]     Напечатать все слова, отличные от последнего слова #8
igorrr37,

а если надо найти в целочисленная квадратная матрица размера nxn, где 5≤n≤25 наибольшее из значений элементов столбца, который обладает наименьшей суммой модулей элементов.
и причем программа должа быть разбита на несколько функцийъ
Функцию формирования исходного массива,Функцию вывода исходного массива и одну или более функций, реализующих вычислительную часть алгоритма.
Все функции должны содержать список параметров, причем массив (матрица) должен передаваться как параметр функции.А основная программа должна содержать только операторы вызова подпрограмм.
как это написать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2012, 20:17     Напечатать все слова, отличные от последнего слова
Еще ссылки по теме:

Задан текст, напечатать слова этого текста отличные от последнего слова C++
ООП. Напечатать слова, отличные от последнего слова, предварительно преобразовав каждое из них по правилу C++
С++ Задан текст напечатать слова отличные от последнего слова Visual Studio C++

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

Или воспользуйтесь поиском по форуму:
лизи
 Аватар для лизи
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 104
23.03.2012, 20:17  [ТС]     Напечатать все слова, отличные от последнего слова #9
больше не нужно
справилась сама)
Yandex
Объявления
23.03.2012, 20:17     Напечатать все слова, отличные от последнего слова
Ответ Создать тему
Опции темы

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