Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2011, 21:29   #1
vitik
Пользователь
 
Регистрация: 07.01.2011
Сообщений: 33
По умолчанию Два слова

помогите розобраться с прогой на си.
Вводиться 2 слова ,узнать являеться одно слово перестановкой букв другого.
я попробувал на том уровне на котором я понимаю но не пашет



Код:
#include "stdafx.h"
#include<iostream>
#include<conio.h>
#include<string.h>
 
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
 
char* word1,*word2;
 
word1=new char[50];
 
cout<<"Enter word 1\t";
cin>>word1;
cout<<"Enter word 2\t";
cin>>word2;
if (word2==strrev(word1))
cout<<"word2 = inv word1\n";
else 
cout<<"word2 != inv word1\n";
 
 getch();
        return 0;
}

Последний раз редактировалось ACE Valery; 28.04.2011 в 05:36.
vitik вне форума Ответить с цитированием
Старый 28.04.2011, 13:30   #2
Grave
 
Регистрация: 25.04.2008
Сообщений: 4
По умолчанию

Функция strrev возвращает строку в которой порядок символов изменен на обратный,
н-р, Hello world! выдаст !dlrow olleH Таким образом находятся полиандры.

По моему Вам надо просто сравнить количество одинаковых букв одного слова с количеством одинаковых букв другого слова. Н-р, слово (с,л,в - по 1 букве, о - 2 буквы) и волос (с,л,в - по 1 букве, о - 2 буквы)
Grave вне форума Ответить с цитированием
Старый 28.04.2011, 17:53   #3
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от Grave Посмотреть сообщение
Функция strrev возвращает строку в которой порядок символов изменен на обратный,
н-р, Hello world! выдаст !dlrow olleH Таким образом находятся полиандры.
Полиандрия (многомужество) — редкая форма полигамии, при которой женщина состоит в нескольких брачных союзах с разными мужчинами.

Видимо, имелось в виду "палиндромы" -))
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 28.04.2011, 22:30   #4
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Можно просто отсортировать буквы по аски коду,а там дальше просто сравнить строки.
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 29.04.2011, 00:03   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
Полиандрия (многомужество) — редкая форма полигамии, при которой женщина состоит в нескольких брачных союзах с разными мужчинами.

Видимо, имелось в виду "палиндромы" -))
. Чётко подмечено. +1. Конечно палиндромы. Если хотите решать "лобовым" методом, - это перестановки. Если посложнее, "отсечение границ в г'раве" (точнее сказать не могу, с возвратом или нет).
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 29.04.2011, 07:52   #6
Grave
 
Регистрация: 25.04.2008
Сообщений: 4
По умолчанию

Хаха! Шутники
Grave вне форума Ответить с цитированием
Старый 29.04.2011, 15:15   #7
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Если перестановкой, то как-то так:

Код:
#include <iostream>

using namespace std;

int main()
{
    string word1, word2;
    int len, count;
    cout << "Введите первое слово:" << endl;
    cin >> word1;
    cout << "Введите второе слово:" << endl;
    cin >> word2;
    
    
    if ((len = word1.length()) == word2.length())
    {
        for (int i = 0; i < len; i++)
        {
            count = 0;
            for (int j = 0; j < len; j++)
                if (word1[j] == word1[i]) count++;
            for (int j = 0; j < len; j++)
                if (word2[j] == word1[i]) count--;
            if (count != 0) break;
        }
        cout << "Второе слово ";
        if (count != 0) cout << "не ";
        cout << "является перестановкой букв первого!" << endl;
        return 0;
    }
    cout << "В словах разное количество букв" << endl;
}
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как составить слова из букв заданного слова(Паскаль) lirikoff Помощь студентам 1 22.12.2010 10:21
Разбить текст на слова и произвести поиск каждого слова по текстовому массиву Burning_brook Microsoft Office Excel 2 22.05.2010 01:56
СИ. Удалить слова, которые содержат все повторяющиеся буквы первого слова nick23 Помощь студентам 7 01.11.2009 14:47
Даны два слова одинаковой длины. Присвоить переменной К число, равное количеству попарно одинаковых букв. dimon_home Паскаль, Turbo Pascal, PascalABC.NET 1 16.06.2009 08:31
два TMediaPlayer и два AVI-файла zeleniy Компоненты Delphi 0 01.06.2007 14:14