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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Аллейя
0 / 0 / 0
Регистрация: 05.03.2009
Сообщений: 5
#1

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

19.03.2009, 18:19. Просмотров 1646. Ответов 4
Метки нет (Все метки)

ввести массив из 5 строк с клавиатуры,поменять местами первое и второе слово в каждой строке. помогите решить плиз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2009, 18:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос поменять местами первое и второе слово в каждой строке (C++):

Ввести предложение. Поменять первое и второе слово местами - C++
Условие:Ввести предложение.Поменять первое и второе слово местами.Вывести результат на экран. как написать текст программы??

Поменять местами первое и последнее слово в строке - C++
Мне нужна помощь. Помогите сделать это задание Создать файл, в который записываются исходные данные. Поменять местами первое и последнее...

Поменять местами в строке первое и последнее слово - C++
Ребят,помогите пожалуйста,с решением задачки,если не трудно...Собственно,задачка: Словом текста считается любая последовательность...

Поменять местами первое и последнее слово в строке - C++
задача: поменять местами первое и последнее слово в строке. проблема некорректно определяется конец первого слова. код: /*В...

В каждой строке текстового файла поменять местами первое и последнее слова - C++
В каждой строке текстового файла поменять местами первое и последнее слова. Очень нужна ваша помощь!!! Вот есть пример того, что...

Поменять слова в строке: первое со вторым, второе с третьим, третье с четвертым - C++
Сейчас программа выдает по такому принципу: Поменять слова в сообщении по принципу: первое с n/2+1 словом, второе с n/2+2 словом, i-тое с...

4
SZ
2 / 2 / 0
Регистрация: 16.11.2008
Сообщений: 44
19.03.2009, 22:41 #2
Массив строк - массив символьных указателей на них. Значит, сначала надо объявить массив символьных указателей. Потом повводить строки. Затем, уже как-нить в цикле над этими строками работать. Файл string.h - там можно найти функции на строки.
0
Gravity
563 / 557 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
20.03.2009, 21:07 #3
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
86
87
88
89
90
91
92
93
94
95
96
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#define MAXWORDS 500 //максимальное количество слов
#define MAXLINE 100 //максимальная длина строки
#define MAXBUF 5000
 
int ibuf = 0, nwords = 0;
char buf[MAXBUF], *bufp = buf;
 
/* считывает строку */
int getline(char *s, int lim)
{
    int c;
    char *ps = s;
    
    for(; lim-1>0 && (c=getchar())!=EOF && c!='\n'; lim--)
       *s++ = c;
    if(c == '\n')
       *s++ = c;
    *s = '\0';
    return s - ps;
}
 
/* меняет местами первое и второе слово каждой строки */
void swap(char *wordsptr[], int i)
{
     char *tmp;
     tmp = wordsptr[i];
     wordsptr[i] = wordsptr[i+1];
     wordsptr[i+1] = tmp;
}
 
/* заносит слова из строки в буфер и расставляет указатели на них */
int getwords(char *s, char *wordsptr[])
{
     static int i = 0;
     int len, nw_ret = 0;
     char *pw, *pwe;
     
     pw = pwe = NULL;
     for(; *s; s++) {
        /* читаем слова из строки */
        if( isspace(*s) )
           continue;
        if( isalpha(*s) && !isalpha(*(s-1)) )
           pw = s;
        if( isalpha(*s) && !isalpha(*(s+1)) )
           pwe = s;
        if(pw && pwe) {
           if(MAXBUF - ibuf >= pw - pwe + 1) {
              while(pw <= pwe)
                 buf[ibuf++] = *pw++;
              buf[ibuf++] = ' ';
              buf[ibuf++] = '\0';
              pw = pwe = NULL;
           } else {
              printf("Error: too many symbols in buffer!\n");
              return -1;
           }
        } 
        /* расставляем указатели на слова */
        for(; i < ibuf && nwords < MAXWORDS; i++) {
           wordsptr[nwords++] = bufp;
           nw_ret++;
           for(len = 1; buf[i] != '\0'; i++, len++)
              ;
           bufp += len;
        }
     }
     wordsptr[nwords++] = "\n";
     nw_ret++;
     return nw_ret;
}     
 
void writewords(char *wordsptr[], int nwords)
{
     while(nwords-- > 0)
        printf("%s", *wordsptr++);
}
     
int main()
{
    int nw;
    char *wordsptr[MAXWORDS], line[MAXLINE];
    
    printf("Enter strings:\n");
    while(getline(line, MAXLINE) > 0)
       if( (nw = getwords(line, wordsptr)) > 2)
          swap(wordsptr, nwords - nw);
    printf("\nResult:\n");
    writewords(wordsptr, nwords);
    
    getch();
    return 0;
}
Считывание строк заканчивается после ввода символа EOF - на клавиатуре это обычно <F6>.
0
Аллейя
0 / 0 / 0
Регистрация: 05.03.2009
Сообщений: 5
23.03.2009, 19:23  [ТС] #4
эм.....нупка ждет еще желающих помочь....ничего непонятно и ничего не работает(массив получается бесконечный)
0
Аллейя
0 / 0 / 0
Регистрация: 05.03.2009
Сообщений: 5
26.03.2009, 17:06  [ТС] #5
ну помогите,то что тут выложили работает не так,выдает какието буквы,вообще не то что надо.а разобраться сама я не могу тк ничего не понимаю
0
26.03.2009, 17:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2009, 17:06
Привет! Вот еще темы с ответами:

Символьная строка. Поменять местами второе слово с передпоследним - C++
Помогите решить. С клавиатуры ввести предложение. Поменять местами второе слово з передпоследним. Напечатать результат изменений.

В каждой строке удалить второе слово - C++
Ребята, нужна помощь. Нужно иметь N-ое кол-во строк и вводить это кол-во с клавиатуры, но не больше 20. Дальше вводим каждую строку, позже...

Поменять местами первое и последнее слово - C++
Помогите решить задачу, используя строки. В заданном тексте (слова разделены пробелами) поменять местами первое и последнее слово.

Поменять местами первое и последние слово. - C++
Поменять местами первое и последние слово. помогите пожалуйста.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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