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

Определить в предложении слова максимальной и минимальной длины и поменять их местами. C - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ разобрать двумерный массив по функциям http://www.cyberforum.ru/cpp-beginners/thread670725.html
Помогите разобрать двумерный массив по функциям #include "stdafx.h" #include <iostream>//библиотека #include <ctime>//для времени using namespace std; #include <conio.h>// для getch #include <clocale>// руссификатор int _tmain(int argc, _TCHAR* argv)
C++ Программа ввода иформации о маршрутном такси Написать программу ввода информации о маршрутном такси(номер,стоимость,вид транспорта), где стоимость может быть как целочисленным значением, так и вещественным. Написать программу удаления информации о маршрутном такси с указанным номером. У меня есть обрывок программы, но при вводе значения для удаления информации взять брать первое значение, оно не удаляется... #include "stdafx.h" #include... http://www.cyberforum.ru/cpp-beginners/thread670721.html
Передача ф-ции как параметра другой ф-ции C++
struct pupil{ char surname; int school; int answer; int num; } tmp, a; int usl(int i, pupil a) { }
C++ Возникла problem по классам
#include "Sales_item.h" #include <iostream> using namespace std; int main() { Sales_item book; cin >> book;
C++ Как правильно написать функцию? http://www.cyberforum.ru/cpp-beginners/thread670698.html
Необходимо написать функцию кот вычисляет интервал времени: void DigitalTime::interval_since(const DigitalTime& a_previous_time, int& hours_in_interval, int&minutes_in_interval) const которая считает интервал времени между 2 значениями типа DigitalTime. Одно из значений DigitalTime - объект кот call the member function interval_since и другое значение типа DigitalTime - дано как первый...
C++ Пять способов ввода и вывода данных Помогите пожалуйста с решение задачи. Написать программу, реализующую 5 способов ввода данных (типа символ) и 5 способов вывода символа на экран. Мои наработки, работающие не совсем корректно: #include "stdafx.h" #include <iostream> #include <conio.h> using namespace System; подробнее

Показать сообщение отдельно
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
14.10.2012, 18:40     Определить в предложении слова максимальной и минимальной длины и поменять их местами. C
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
 
void expand(char* str, int pos, int count)
{
    while (--count >= 0)
        for (int i = strlen(str)-1; i >= pos; i--)
            str[i+1] = str[i];
}
 
void shrink(char* str, int pos, int count)
{
    while (--count >= 0)
        for (int i = pos; str[i] != '\0'; i++)
            str[i] = str[i+1];
}
 
int main()
{
    static char str[256] = "pirate linux compuworks newest tux c++";
 
    printf("%s\n",str);
 
    int max_len = 0, max_pos = 0;
    int min_len = 256, min_pos = 0;
    for (int i = 0; str[i] != '\0'; i++)
        if (isspace(str[i]) || i == strlen(str)-1)
        {
            int k = i-1;
            while (!isspace(str[k]) && k >= 0) k--;
            if (i - k > max_len) { max_len = i - k - 1; max_pos = k + 1; }
            else if (i - k < min_len) { min_len = i - k - 1; min_pos = k + 1; }
        }
 
    char src[256] = "\0", dest[256] = "\0";
 
    int n1 = min_pos; int p1 = 0;
    int n2 = max_pos; int p2 = 0;
    while (!isspace(str[n1])) src[p1++] = str[n1++];
    while (!isspace(str[n2])) dest[p2++] = str[n2++];
        
    if (max_pos < min_pos)
    {
        min_pos-=max_len-min_len;
 
        shrink(str, max_pos, max_len - min_len); 
        expand(str, min_pos, max_len - min_len);
    }
 
    else {
            shrink(str, max_pos, max_len - min_len);
            expand(str, min_pos, max_len - min_len); 
            
            max_pos+=max_len-min_len;
    }
 
    memcpy((void*)&str[max_pos], (void*)src, strlen(src));
    memcpy((void*)&str[min_pos], (void*)dest, strlen(dest));
 
    printf("%s\n",str);
 
    _getch();
 
    return 0;
}
http://liveworkspace.org/code/3c1a60...48ad95e497b429
 
Текущее время: 20:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru