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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2011, 19:53   #1
Виктор Казанцев
 
Регистрация: 25.12.2011
Сообщений: 4
По умолчанию подправить код по теме строки

Код:
#include <iostream>
#include <string.h>
#include "Rus.h"
using namespace std;
/*задача №1.	Напишите  функцию common(общее),которая получает две строки  str1 и str2
и возвращает строку, содержащую символы, присутствующие  (по крайней мере однократно) в обоих строках.
Например, применение этой функции к строкам "указатель" и "закон" должно дать   каз" 
(или те же символы в каком-то ином   порядке).*/    


int common(char *s1, char *s2);
      
int common(char *s1, char *s2)
{

int i=0,j=0;
int	n=strlen(s1), m=strlen(s2);
for (i=0;i<n;i++){
for (j=0;j<m;j++)
if (s1[i]==s2[j])
return s2[j];
}
return 0;//не могу сделать чтобы выводило несколько повторяющихся букв
}


int main()
{
char s1[81];
char s2[81];
char k;
cout<<Rus("введите 1 строку")<<endl;
cin.getline(s1, 80,'\n');
cout<<Rus("1 строка- ")<<s1<<endl;
cout<<Rus("введите 2 строку")<<endl;
cin.getline(s2, 80,'\n');
cout<<Rus("2 строка- ")<<s2<<endl;
k=common(s1, s2);
cout<<Rus("вышло ")<<k<<endl;
return 0;
}

Последний раз редактировалось ACE Valery; 26.12.2011 в 23:42.
Виктор Казанцев вне форума Ответить с цитированием
Старый 26.12.2011, 07:15   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
присутствующие (по крайней мере однократно) в обоих строках
Виктор, уточните задание. Вот пример:

Входные данные.
- сторока1: abcccdd
- сторока2: klccdd

Что будет результатом?
- либо: ccdd
- либо: cd

P.S. У вас функция возвращает символ, а должна строку.
8Observer8 вне форума Ответить с цитированием
Старый 26.12.2011, 10:06   #3
Виктор Казанцев
 
Регистрация: 25.12.2011
Сообщений: 4
По умолчанию

Входные данные.
- сторока1: abcccdd
- сторока2: klccdd

результатом будет
ccdd
Помогите вывести строку
Виктор Казанцев вне форума Ответить с цитированием
Старый 26.12.2011, 10:10   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Если второй результат, то предлагаю следующий алгоритм. Правда не знаю правильный ли он. Но другие мысли пока не лезут в голову.

Алгоритм:
Делаем пока количество символов в первой строке не ноль.
Берём символ первой строки.
Проверяем есть ли этот символ в данной строке (в первой).
Если да, то к следующему символу в данной строке (и проверяем сначала первой строки, пропуская выбранный символ)
Иначе, проверяем во второй. Если встречается однократно, во второй, и не встречается в третьей, то сохраняем в третьей.

А заготовка такая:
Код:
#include <iostream>
#include <string.h>
//#include <Rus.h>
using namespace std;

/*
задача №1. Напишите функцию common(общее),которая получает две строки str1 и str2
и возвращает строку, содержащую символы, присутствующие (по крайней мере однократно) в обоих строках.
Например, применение этой функции к строкам "указатель" и "закон" должно дать каз"
(или те же символы в каком-то ином порядке).
*/

void common(char *s1, char *s2, char *s3);

const int STRSIZE = 81;

int main() {
    char s1[STRSIZE];
    char s2[STRSIZE];
    char s3[STRSIZE];

    setlocale(LC_ALL, "Russian");

    cout << "введите 1 строку" << endl;
    cin.getline(s1, 80,'\n');
    cout << "1 строка- " << s1 << endl;

    cout << "введите 2 строку" << endl;
    cin.getline(s2, 80,'\n');
    cout << "2 строка- " << s2 << endl;

    common(s1, s2, s3);
    cout << "вышло " << s3 <<endl;

    return 0;
}

void common(char *s1, char *s2, char *s3) {
    int i = 0, j = 0, k = 0, b = 0;
    int n = strlen(s1), m = strlen(s2);

    for (i = 0; i < n; i++){
        for (j = 0; j < m; j++) {
//            if (s1[i] == s2[j]) {
//                s3[k++] = s2[j];
//                break;
            }
        }
    }
    s3[k] = '\0';
}
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно подправить код zeppelin58 Общие вопросы C/C++ 1 28.05.2010 12:11
Подправить код werser Помощь студентам 4 14.03.2010 23:26
Подправить рабочий код. michaelk Общие вопросы C/C++ 0 06.12.2009 11:33
подправить код ELF astserg01 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 09.04.2009 06:49