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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
#1

Строки в с++ - C++

15.12.2011, 21:20. Просмотров 1278. Ответов 1
Метки нет (Все метки)

В текстовом файле записаны строки длиной не более 255 символов, слова в которых разделены хотя бы одним пробелом или знаками препинания. В каждой строке поменять местами слова максимальной и минимальной длины. Если максимальных и/или минимальных слов несколько, то брать последнее. Результат записать в новый текстовый файл.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 21:20     Строки в с++
Посмотрите здесь:

Дан безразмерный массив.Вставить количество символов каждой строки вначало этой же строки. C++
C++ как сделать из строки массив из символов этой строки
C++ Вывести строки файла, после строки добавляя, сколько раз в ней встретилось слово
Строки. Вывести на печать то слово этой строки, которое по алфавиту предшествует всем другим C++
C++ Если строки одинаковы, объединить две строки, исключив из второй первые десять символов
Как сделать так, что бы длинна строки сама менялась при вводе строки? C++
C++ Разместить текст первой строки по центру второй строки
C++ Переместить вниз строки массива, в которых сумма элементов строки меньше ноля
C++ Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы больше суммы (i-1)-й строки
C++ Определить, верно ли утверждение: сумма элементов каждой i-ой строки матрицы больше суммы (i-1)-ой строки
C++ Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы меньше суммы (i-1)-й строки
C++ Получение переменных из строки, изменение строки, запись в файл

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
913 / 738 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
16.12.2011, 09:05     Строки в с++ #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
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
74
75
76
77
78
79
80
81
82
83
84
85
#include <fstream>
#include <vector>
#include <cctype>
using namespace std;
 
struct varchar {
   char  cs[64];
   char  ws[64];
};
void    split(const char* s, vector<varchar>* vec);
char*  join(char* s, vector<varchar>* vec);
void    word_swap(vector<varchar>* vec);
 
int main(void) {
   ifstream fin("D:\\in.txt");
   if(! fin)
       return 1;
   vector<varchar> vec;
   char line[256] = {'\0'};
 
   ofstream fout("D:\\out.txt");
   if(! fout) {
        fin.close();
        return 1;
   }
   while(fin.getline(line, sizeof(line)-1, '\n')) {
        split(line, &vec);
        word_swap(&vec);
        join(line, &vec);
        fout << line << endl;
        vec.clear();
  }
  fout.flush();
  fout.close();
  fin.close();
  return 0;
}
 
// разбивка
void split(const char* s, vector<varchar>* vec) {
   varchar var;
   char* p;
   while(*s) {
        for(p = var.cs; ! isalpha(*s) && *s; *p++ = *s++);
        *p = '\0';
        for(p = var.ws;   isalpha(*s) && *s; *p++ = *s++);
        *p = '\0';
        vec->push_back(var);
    }
}
 
// соединение элементов в строку
char*  join(char* s, vector<varchar>* vec) {
   char *t = s;
   const char* p;
   for(vector<varchar>::const_iterator i = vec->begin(); i != vec->end(); *i++) {
           for(p = i->cs; *p; *s++ = *p++);
           for(p = i->ws; *p; *s++ = *p++);
   }
   *s = '\0';
    return t;
}
 
// обмен слов
void  word_swap(vector<varchar>* vec) {
   vector<varchar>::iterator ia, ib;
   size_t  num  = strlen((*vec)[0].ws);
   size_t  imax = num, imin = num;
   char buf[64];
   ia = ib = vec->begin();
   for(vector<varchar>::iterator i = vec->begin(); i != vec->end(); *i++) {
        if((num = strlen(i->ws)) == 0u)
              continue;
        if(num < imin) {
              imin = num;
              ia = i;
        } else if(num >= imax) {
              imax = num;
              ib = i;
        }
   }
   strcpy(buf, ia->ws);
   strcpy(ia->ws, ib->ws);
   strcpy(ib->ws, buf);
}
Под кириллицу не подбивал.
Yandex
Объявления
16.12.2011, 09:05     Строки в с++
Ответ Создать тему
Опции темы

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