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

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

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

C++ Указать номер строки, максимально удаленной от первой строки заданной матрицы
Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка содер-жится в ней C++
C++ Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки
C++ Функция перезаписывает символы строки заданным количеством символов другой строки
Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 C++
Упорядочить символы строки B в алфавитном порядке и удалить латинские буквы из строки A C++
Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк C++
C++ Вычислить длину введенной строки и вывести символы строки с четными индексами

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 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     Строки в с++
Ответ Создать тему
Опции темы

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