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

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

Войти
Регистрация
Восстановить пароль
 
psevdomak
1 / 1 / 0
Регистрация: 11.07.2014
Сообщений: 27
#1

Поменять местами слова, "равноудаленные" от концов строки - C++

11.07.2014, 13:54. Просмотров 375. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста с задачкой.

Задача:

Поменять местами слова, "равноудаленные" от концов строки, найти первое цифровое слово и возвести его значение в квадрат. Ввод строки и вывод слов написал, но не могу придумать как дальше делать.

Последнее слово не выводится , т.к нету пробела ( если его принудительно не вводить) как сделать что бы в конце строки всегда был пробел?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <cstring> 
int main(){
    char str[255];
    char slovo[100][100];
    int k=0,j=0,i;
 
 
    printf ("Vvedite stroku:" ); gets(str);
 
 
    for (i=0; str[i]!='\0'; i++){
    if( str[i]!= ' ') { slovo [k][j] = str[i] ; j++;}
    else {
        printf ("\nslovo[%d]:%s",k,slovo[k]);
        
        k++;j=0;}
    }
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2014, 13:54     Поменять местами слова, "равноудаленные" от концов строки
Посмотрите здесь:

Файловый ввод/вывод: в строке поменять местами слова, разделенные союзом "и" C++
C++ Поменять местами слова строки
Выдать строки, в которых есть слова с тремя буквами "у" C++
Все слова, не содержащие "bc" и заканчивающиеся на "ad" заменить на "!" C++
C++ Строки. Поменять местами слова
C++ Однонаправленный список типа "Очередь". Поменять элементы местами
C++ Строки. В тексте поменять местами каждые два соседних слова
Определить длину каждого слова строки, и если она четная, то вставить в середину слова "aa", иначе "а" C++
Из слова "яблоко" путем склеек и вырезок его букв получить слова "блок" и "око" C++
Из слова вертикаль путем "вырезок" и "склеек" его букв получить слова тир и ветка C++
Поменять знак " $ " на " * " к первому вхождению символа " ? " C++
C++ Класс "Строка" содержащий метод, который меняет местами первый и последний символы строки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4456 / 3794 / 1282
Регистрация: 14.04.2014
Сообщений: 14,901
11.07.2014, 20:09     Поменять местами слова, "равноудаленные" от концов строки #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
#include "stdafx.h"
#include <iostream>
#include <cstring>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    char str[255], slovo[100][100], *s;
    int scount = 0, n;
 
    printf("Vvedite stroku: "); gets(str);
 
    s = strtok(str, " ");
    while(s != NULL && scount <= 100)
    {
        strcpy(slovo[scount++], s);
        s = strtok(NULL, " ");
    }
 
    for(int i = 0; i < scount / 2; i++)
    {
        swap(slovo[i], slovo[scount - i - 1]);
    }
 
    for(int i = 0; i < scount; i++) printf("%s ", slovo[i]);
    printf("\n");
    for(int i = 0; i < scount; i++)
        if(sscanf(slovo[i], "%d", &n) == 1)
        {
            printf("Pervoe chislo: %d", n);
            break;
        }
    printf("\n");
 
    system("pause");
    return 0;
}
psevdomak
1 / 1 / 0
Регистрация: 11.07.2014
Сообщений: 27
12.07.2014, 06:00  [ТС]     Поменять местами слова, "равноудаленные" от концов строки #3
Спасибо большое! А как сделать что бы он не считал число со словом, например 5d, а считал просто число 123?
nmcf
4456 / 3794 / 1282
Регистрация: 14.04.2014
Сообщений: 14,901
12.07.2014, 11:36     Поменять местами слова, "равноудаленные" от концов строки #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Да, недоработка получилась с этими древними функциями.
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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <cstring>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    char str[255], slovo[100][100], *s;
    int scount = 0;
    long n;
    bool found = false;
 
    printf("Vvedite stroku: "); gets(str);
 
    s = strtok(str, " ");
    while(s != NULL && scount <= 100)
    {
        strcpy(slovo[scount++], s);
        s = strtok(NULL, " ");
    }
 
    for(int i = 0; i < scount / 2; i++)
    {
        swap(slovo[i], slovo[scount - i - 1]);
    }
 
    for(int i = 0; i < scount; i++) printf("%s ", slovo[i]);
    printf("\n");
    for(int i = 0; i < scount; i++)
    {
        s = slovo[i];
        n = strtol(slovo[i], &s, 10);
        if(s[0] == '\0')
        {
            printf("Pervoe chislo: %ld", n);
            found = true;
            break;
        }
    }
    if(!found) printf("Chisel net.");
    printf("\n");
 
    system("pause");
    return 0;
}
psevdomak
1 / 1 / 0
Регистрация: 11.07.2014
Сообщений: 27
12.07.2014, 16:12  [ТС]     Поменять местами слова, "равноудаленные" от концов строки #5
Спасибо!
Yandex
Объявления
12.07.2014, 16:12     Поменять местами слова, "равноудаленные" от концов строки
Ответ Создать тему
Опции темы

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