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

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

Восстановить пароль Регистрация
 
Diamand
0 / 0 / 0
Регистрация: 29.05.2009
Сообщений: 37
10.06.2009, 17:31     Если первое и последнее его слова имеют одинаковую длину, поменять их местами #1
Дано предложение. Если первое и последнее его слова имеют одинаковую длину, поменять их местами. В противном случае оставить текст без изменения.

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 секунд
в программе есть ошибка, только не знаю как исправить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2009, 17:31     Если первое и последнее его слова имеют одинаковую длину, поменять их местами
Посмотрите здесь:

C++ В строках поменять местами первое и последнее слова
Поменять местами в массиве последнее простое число и первое совершенное C++
C++ Дано предложение. Поменять местами его первое и последнее слово.
C++ Поменять местами в строке первое и последнее слова
C++ Поменять местами первое и последнее слово в строке
Поменять местами первое и последнее слово в предложении C++
C++ В каждой строке текстового файла поменять местами первое и последнее слова
C++ Поменять местами первое и последнее слово, найти слова-палиндромы
Поменять местами в строке первое и последнее слово C++
Поменять местами первое и последнее слово в предложении C++
Поменять местами первое и последнее слова в строке C++
C++ Поменять местами первое и последнее слово в строке

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FunDuck
688 / 379 / 4
Регистрация: 22.01.2009
Сообщений: 1,135
10.06.2009, 17:51     Если первое и последнее его слова имеют одинаковую длину, поменять их местами #2
Вместо sizeof надо strlen.
Diamand
0 / 0 / 0
Регистрация: 29.05.2009
Сообщений: 37
10.06.2009, 17:53  [ТС]     Если первое и последнее его слова имеют одинаковую длину, поменять их местами #3
нет, все равно выдает ошибку!
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 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;
}
Diamand
0 / 0 / 0
Регистрация: 29.05.2009
Сообщений: 37
10.06.2009, 18:06  [ТС]     Если первое и последнее его слова имеют одинаковую длину, поменять их местами #5
Большое спасибо!!!
Search..
Заказ софта
 Аватар для Search..
339 / 184 / 10
Регистрация: 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;
}
Yandex
Объявления
11.06.2009, 04:03     Если первое и последнее его слова имеют одинаковую длину, поменять их местами
Ответ Создать тему
Опции темы

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