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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gylayko
30 / 29 / 4
Регистрация: 28.09.2011
Сообщений: 448
#1

нужно удалить из строки наибольшее и наименьшее слово - C++

08.04.2012, 14:44. Просмотров 600. Ответов 3
Метки нет (Все метки)

нужно разделить сроку на слова и вывести строку без этих слов. я делаю так: сначала запоминаем каждое слово в эелементе массива и длину этого слова в свой элемент массива
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <conio.h>
#include <string.h>
#incluse <stdlib.h>
void main()
{char st[200]="Babak Kirilo Bodnar Ivan Boxonko Nazar Bik Ivan Gavrilyuk Ivan Gzhegockij Roman Gishka";
 char *slovo;
 slovo=strtok(st," ");
 while (slovo!=NULL)
  {slovo=strtok(NULL," ");
  slovo=a[i]; i++;/*zapominaem slovo v elemente massiva*/
  strlen[slovo]=v[s]; s++;} /*dlina*/
далее пытаюсь найти максимальное слово в цикле
C++
1
2
3
4
5
6
7
i=j;
max=1;
for (s=1;s<j;s++)
 {if (v[s]<v[max])
  {v[s]=v[max];}
 }
}printf("max dlina= %d"[max]);
затем с минимальным
C++
1
2
3
4
5
6
min=1;
for (s=1;s<j;s++)
 {if (v[s]>v[min])
  {v[s]=м[min];}
 }
}printf("min dlina= %d"[min]);
теперь как-то нужно вывести строку без наибольшего и наименьшего слова, думаю, примерно так
C++
1
2
3
4
for (i=1;i<max;i++)
{printf("%d ",a[i]);}
for (i=max;i<j;i++)
{printf("%d ",a[i]);
то есть мы выводим сначала кусок до максимального слова, потом после максимального.
но вот как сделать, чтобы выводло и без максимального и без минимального? и какой тип должен быть у массива а? и все ли я правильно делаю? помогите сделать единый код программы!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2012, 14:44     нужно удалить из строки наибольшее и наименьшее слово
Посмотрите здесь:

C++ Удалить каждое четное слово из строки
Удалить слово из строки C++
Удалить слово из строки C++
C++ Строки. Удалить указанное слово из текста
C++ Массив: Удалить строку, в котором есть слово, имеющее наибольшее количество разных букв.
Как удалить слово из строки C++
Удалить слово из строки C++
C++ Дана матрица NxM, найти наибольшее значение 2 строки и наименьшее 2 столбца
C++ Удалить слово из строки
Удалить слово из строки C++
Удалить определенное слово из строки C++
C++ Удалить каждое четное слово из строки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stanis-morozov
15 / 15 / 1
Регистрация: 18.03.2012
Сообщений: 91
08.04.2012, 15:22     нужно удалить из строки наибольшее и наименьшее слово #2
Выложите, пожалуйста, ведь код, а то я у вас не вижу ни объявления массивов a[] и v[], ни откуда вы берете переменную j и например, вот эта строка
C++
1
i=j;
делает непонятно что, т.к. операции с j у вас в коде не отображены.

Добавлено через 3 минуты
И вообще странный у вас какой-то код, давайте я вам лучше новый напишу?
gylayko
30 / 29 / 4
Регистрация: 28.09.2011
Сообщений: 448
08.04.2012, 15:34  [ТС]     нужно удалить из строки наибольшее и наименьшее слово #3
переменной j я пытаюсь запомнить индекс последнего элемента массива! если по тому же принципу, напишите!
stanis-morozov
15 / 15 / 1
Регистрация: 18.03.2012
Сообщений: 91
08.04.2012, 15:42     нужно удалить из строки наибольшее и наименьшее слово #4
Да, принцип тот же. И последний вопрос: минимальная строка это какая: минимальная в лексикографическом порядке или минимальная по длине? Судя по вашему коду - минимальная по длине, так?

Добавлено через 5 минут
Если минимальная по длине, то код вот такой будет:
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
#include <stdio.h>
#include <string.h>
 
int main()
{
    char st[] = "Babak Kirilo Bodnar Ivan Boxonko Nazar Bik Ivan Gavrilyuk Ivan Gzhegockij Roman Gishka";
    char *sl;
    char words[100][100];
    int len[100];
    int i = 0;
    sl = strtok(st, " ");
    while (sl)
    {
        strcpy(words[i], sl);
        len[i] = strlen(sl);
        i++;
        sl = strtok(NULL, " ");
    }
    int mn = 0, mx = 0;
    for (int j = 0; j < i; j++)
    {
        if (len[j] < len[mn])
        {
            mn = j;
        }
        if (len[j] > len[mx])
        {
            mx = j;
        }
    }
    for (int j = 0; j < i; j++)
    {
        if (j != mn && j != mx)
        {
            printf("%s ", words[j]);
        }
    }
    return 0;
}
Если все-таки в лексикографическом порядке, то скажите - я там чуть-чуть переделаю.
Yandex
Объявления
08.04.2012, 15:42     нужно удалить из строки наибольшее и наименьшее слово
Ответ Создать тему
Опции темы

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