Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 29.05.2009
Сообщений: 37
1

Если первое и последнее его слова имеют одинаковую длину, поменять их местами

10.06.2009, 17:31. Просмотров 1051. Ответов 5
Метки нет (Все метки)

Дано предложение. Если первое и последнее его слова имеют одинаковую длину, поменять их местами. В противном случае оставить текст без изменения.

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.h>
#include <conio.h>
#include "string.h"
void main()
{
int i,n;
char a[100][20];
char buf[1][20];
cout<<"ckolko bi vi xoteli vvesti slov"<<endl;
cin>>n;
cout<<"vvedite text, sostoyachiy iz "<<n<<" slov"<<endl;
for(i=1;i<n+1;i++)
  {cin>>a[i];}
if (sizeof(a[1])==sizeof(a[n]))
 {buf[1]=a[1];
 a[1]=a[n];
 a[n]=buf[1];}
cout<<"vivod texta"<<endl;
for(i=1;i<6;i++)
  {cout<<a[i]<<" "; }
getch();
}
Добавлено через 47 секунд
в программе есть ошибка, только не знаю как исправить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2009, 17:31
Ответы с готовыми решениями:

Поменять местами в строке первое и последнее слова
Помогите пожалуйста: Поменять местами в строке первое и последнее слова. Считать, что слова...

Поменять местами первое и последнее слова в строке
Поменять местами в строке первое и последнее слова . Считать , что слова отделены друг от друга...

В строках поменять местами первое и последнее слова
Ребята, помогите пожалуйста с задачами... язык С++ 1.Ввести 2 строки. В результате выполнения...

Поменять местами первое и последнее слово, найти слова-палиндромы
Объектно-ориентированное программирование. Разработать программу. В заданном тексте (слова...

5
692 / 383 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
10.06.2009, 17:51 2
Вместо sizeof надо strlen.
0
0 / 0 / 0
Регистрация: 29.05.2009
Сообщений: 37
10.06.2009, 17:53  [ТС] 3
нет, все равно выдает ошибку!
0
576 / 570 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
10.06.2009, 18:02 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
#include <iostream.h>
#include <string.h>
#include <conio.h>
 
int main()
{
    int i, n;
    char a[100][20];
    char buf[1][20];
    cout << "ckolko bi vi xoteli vvesti slov" << endl;
    cin >> n;
    cout << "vvedite text, sostoyachiy iz " << n << " slov" << endl;
    for(i = 0; i < n; i++)
        cin >> a[i];
    if (strlen(a[0]) == strlen(a[n-1])) {
        strcpy(buf[0], a[0]);
        strcpy(a[0], a[n-1]);
        strcpy(a[n-1], buf[0]);
    }
    cout<<"vivod texta"<<endl;
    for(i=0; i < n; i++)
        cout << a[i] << " ";
    getch();
    return 0;
}
1
0 / 0 / 0
Регистрация: 29.05.2009
Сообщений: 37
10.06.2009, 18:06  [ТС] 5
Большое спасибо!!!
0
Заказ софта
342 / 187 / 21
Регистрация: 26.05.2009
Сообщений: 863
11.06.2009, 04:03 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот самое нормальное решение. Нормальная прога ведь не станет запрашивать ввести количество слов, которые ты хочешь ввести (ведь правда ?):

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 <stdio.h>
#include <string.h>
#include <ctype.h>
 
int str_minmax(char text[])
{
    int nsp = 0, ns = 0, dsn;
    for(int s = 0; s < strlen(text); s++) {
        if(isspace(text[s])) { nsp++; }
    }
 
    if(nsp < 2) { 
        fprintf(stderr, "Error! Minimal count words is two.\n"); 
        return -1; 
    }
 
    const char delimiters[] = " \t\n~`@#$%^&*()_-+={[]}|\\'\";:/?.>,<" ;
    char *one, two[1000] = " ", *three, *word;
 
    word = strtok(text, delimiters);
        for(int shs = 0; (shs < nsp)&&(word != 0); shs++) { dsn = shs;
            if(shs == 0) { one = strdup(word); }
            else if(shs == nsp-1) { three = strdup(word); shs++; }
            else if((shs > 0)&&(shs < nsp)&&(shs == dsn)) {
                strcat(two, strdup(word)); strcat(two, " "); 
            }
            word = strtok(NULL, delimiters);
        }
 
        if(strlen(one) == strlen(three)) { 
            strcat(two, one); strcat(three, two); 
            printf("Completed: %s\n", three);
        }
        else { fputs("The first and last words do not match!\n", stdout); }
 
        return 0;
}
 
int main(int argc, char * argv [])
{
    char line[1024] = " ";
    fputs("Write string: ", stdout);
    fgets(line, sizeof(line), stdin);
    str_minmax(line);
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2009, 04:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Дано предложение. Поменять местами его первое и последнее слово.
Дано предложение. Поменять местами его первое и последнее слово.

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

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

Поменять местами первое и последнее слово в предложении
Собственно, задачка вроде легкая, но у меня нету никаких идей. С клавиатуры вводится символьная...


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

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

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