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

Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите с экзаменационной работой http://www.cyberforum.ru/cpp-beginners/thread15454.html
Доброго времени суток...)) Пишу экзаменационную работу на Visual C++, работаю в среде Visual Studio 2008. Задание: Создать программу для учета больных в ПОЛИКЛИНИКЕ. О больных необходимо хранить: a. ФИО больного b. Возраст c. Диагноз
C++ С чего стоит начать? В этом деле новичек, самый что ни на есть... Хотелось бы знать с чего стоит начинать, много времени провожу с компьютером, но хочется попробовать себя в программирование..:good: Всем спасибо заранее.. И одно сильно не пинайте:( http://www.cyberforum.ru/cpp-beginners/thread15447.html
Системы счисления C++
Помогите решить задачу. Перевод из 12 системы счисления в десятичную
C++ Найти длину периода и сам период бесконечной степенной дроби по основанию Р
время поджимает, завтра сдавать. препод ни фига не объясняет!!! есть решение, осталось написать прогу на C++. Задача №1 Имеется N банок с целочисленными объемами V1, ..., Vn литров, пустой сосуд и кран с водой. Можно ли с помощью этих банок налить в сосуд ровно V литров воды. Решение: С помощью двух банок мы можем без особых ухищрений саккумулировать в сосуде количество литров, равное их...
C++ Откуда можно бесплатно скачать C++? http://www.cyberforum.ru/cpp-beginners/thread15416.html
Откуда можно бесплатно скачать C++ (без вирусов естественно) ПЛЗ!
C++ Как правильно обращаться к функциям Всем Привет! Решил заняться с++, но попал в ступор. вообще я занимаюсь программированием на AS2(flash), язык по синтаксису схож с с++, но кое что не совпадает. Например: Если в ActionScript2 создавать и обращаться к функции таким образом: function Myfunct(a,b) //создаём функцию Myfunct с входящими в неё переменными а и b { // тело функции подробнее

Показать сообщение отдельно
УЫЕУЕ
2 / 2 / 0
Регистрация: 04.11.2008
Сообщений: 37
10.11.2008, 02:39
Как-то так, хоть и коряво немного получилось:

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <stdio>
#include <ctype>
#include <conio>
 
void main(void)
{
    char buffer[100];       // массив (буфер) для вводимой строки
 
    gets(buffer);            // вводим строку и нажимаем enter
 
    int i(0);
    int i_min[2];          // небольшой массив, нулевой элемент которого
                           // указывает на начальный символ слова в строке buffer,
                           // а первый элемент равен количеству букв/символов в слове
 
    int i_max[2];          // аналогично как и в предыдущем
 
    int temp;              // временная переменная, просто будет держать позицию первого символа в новом слове
 
 
    while (ispunct(buffer[i]) || buffer[i] == ' ') i++;    // поиск первой буквы слова
    i_min[0] = i_max[0] = i;                               //запоминаем первую букву слова
    while (!ispunct(buffer[i]) || !buffer[i] == ' ') i++;  // поиск конца слова
    i_min[1] = i_max[1] = i;                               //запоминаем конец слова
    // весь предыдущий кусок принимает первое слово одновременно и за самое
    // маленькое и за самое большое слово.
 
 
 
    while (buffer[i]!= NULL){ //buffer[i]!=NULL  - условие того, что конец строки не достигнут
         while ((ispunct(buffer[i]) || buffer[i] == ' ') && buffer[i]!= NULL) i++;
         temp = i;
         while ((!ispunct(buffer[i]) || !buffer[i] == ' ') && buffer[i]!= NULL) i++;
 
         //если нет конца файла:
         if  (buffer[i]!= NULL){
 
             // если длина максимального слова i_max[1]-i_max[0] меньше,
             // чем длина текущего слова i - temp, то запоминаем новое слово
             if ((i_max[1] - i_max[0]) < (i - temp)){
                 i_max[0] = temp;
                 i_max[1] = i;
             }
 
             if ((i_min[1] - i_min[0]) >= (i - temp)){
                 i_min[0] = temp;
                 i_min[1] = i;
             }
          }
          // если конец файла достигнут:
          else if (!ispunct(buffer[i-1]) || !buffer[i-1] == ' '){
              if ((i_max[1] - i_max[0]) < (i - temp)){
                 i_max[0] = temp;
                 i_max[1] = i;
             }
 
             if ((i_min[1] - i_min[0]) >= (i - temp)){
                 i_min[0] = temp;
                 i_min[1] = i;
             }
          }
 
    }
    printf(" Max = ");
    //выводим максимальное слово на экран посимвольно
    for (i=i_max[0]; i<i_max[1]; i++) printf("%c", buffer[i]);
    printf("\n");
    printf(" Min = ");
    //выводим минимальное слово на экран посимвольно
    for (i=i_min[0]; i<i_min[1]; i++) printf("%c", buffer[i]);
 
    getch();
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru