Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Си строки 
V
    Опции темы
Bartman2D
Дата 10.10.2010, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.10.2010

Репутация: нет
Всего: нет



Помогите пожалуйста написать программу. Суть программы заключается в том, что: "Даны два предложения. Для каждого слова первого предложения определить, входит ли оно во второе предложение." Уже несколько дней делаю ничего не выходит.
Код
char str1[100], str2[100];
    char str[20];
    for(int i=0;i<20;i++)
    {
        str[i]=0;
    }
    printf("Введите первую строку на английском языке: \n");
    gets(str1);
    printf("Введите вторую строку на английском языке: \n");
    gets(str2);
    int len1=strlen(str1), len2=strlen(str2);
    for(int i=0;i<len1;i++)
    {
        for(int j=0;j<len2;j++)
            if(str1[i]==str2[j])
                for(int k=0;k<20;k++)
                {
                    if(str[k]==0)
                    {
                        str[k]=str1[i];
                        k=20;
                        j=len2;
                    }
                }
                if(str1[i]==' ')
                    printf("В обоих предложениях содержатся слова:\n ");
                    printf("%s ", str);
    }
    system("pause");


что-то такое нарисовалось, дальше додумать не могу. Может быть предложите альтернативный вариант решения?

Это сообщение отредактировал(а) Bartman2D - 10.10.2010, 14:16
PM MAIL   Вверх
Crafty
Дата 10.10.2010, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 3.11.2008

Репутация: 12
Всего: 14



Код

#include <iostream>
#include <string>
#include <sstream>
#include <vector>

using std::vector;  using std::string;
using std::cout;    using std::endl;
int main()
{
  string str1("Hello world this is I");
  string str2("am u here world is");
  std::istringstream stream(str1);
  string word;
  vector<string> words;
  while (stream >> word)
    words.push_back(word);  //заполняем вектор словами из первой сторки
    
  vector<string>::const_iterator beg = words.begin();
  while (beg != words.end())
  {
    if (str2.find(*beg) != string::npos)  // Ищем слово во второй строке
      cout << "Word (" << *beg << ") is found" << endl;
    else
      cout << "Word (" << *beg << ") is not found" << endl;
    ++beg;
  }
  return 0;
}


Добавлено через 38 секунд
Спрашивайте если что-то непонятно.
PM MAIL   Вверх
Bartman2D
Дата 10.10.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.10.2010

Репутация: нет
Всего: нет



УУУУУ Для меня это темный лес что вы написали, я только новичек. мы программируем, на с++, а там вроде из с элементов много. ну и практически все операторы я не знаю) да и библиотеки такие впервые вижу, синтаксис для меня другой. я ничего не понял и этот код на данный момент изучения мне не возможно объяснить. но спасибо, что откликнулись.
мне надо это реализовать  с помощью библиотек 
#include <stdio.h>
#include <math.h>
#include <string.h>
Мы только операторы этих библиотек прошли ну и ещё нескольких.

Это сообщение отредактировал(а) Bartman2D - 10.10.2010, 15:28
PM MAIL   Вверх
vnf
Дата 10.10.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 9.2.2008

Репутация: нет
Всего: 1



Bartman2D,  ваш код написан на чистом С, код Crafty  - чистый С++ с STL. Вам как надо?
PM MAIL   Вверх
Bartman2D
Дата 10.10.2010, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.10.2010

Репутация: нет
Всего: нет



Цитата(vnf @ 10.10.2010,  15:29)
Bartman2D,  ваш код написан на чистом С, код Crafty  - чистый С++ с STL. Вам как надо?

О_о я нуб. нам сказали, что изучаем чистый С++. Вот и пишу в таком стиле, как учат. Что за библиотека  <vector> я не знаю. 
using std::vector;  using std::string;
using std::cout;    using std::endl; и вот такие конструкции я впервые вижу, мы их никогда не использовали.

PM MAIL   Вверх
Crafty
Дата 10.10.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 3.11.2008

Репутация: 12
Всего: 14



Вот на С
Код

#include <stdio.h>
#include <string.h>

int main()
{
  char str1[] = "Hello world this is I";
  char str2[] = "am u here world is";
 
  char *pch = strtok (str1," ,.-");
  while (pch != NULL)
  {
    if (strstr(str2, pch))
      printf("Word (%s) is found\n", pch);
    else
      printf("Word (%s) is not found\n", pch);
    pch = strtok (NULL, " ,.-");
  }

  return 0;
}


Это сообщение отредактировал(а) Crafty - 10.10.2010, 15:47
PM MAIL   Вверх
Bartman2D
Дата 10.10.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.10.2010

Репутация: нет
Всего: нет



Это попонятней. Спасибо, но есть вопрос.
strstr
strtok - что это за функции?
но и как вижу в вашем примере строки уже даны( это конесно легко), но мне нужно, чтобы строки вводил пользователь.

Это сообщение отредактировал(а) Bartman2D - 10.10.2010, 16:32
PM MAIL   Вверх
Crafty
Дата 10.10.2010, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 3.11.2008

Репутация: 12
Всего: 14



strstr(const char * str1, const char * str2) - возвращает указатель на первое вхождение подстроки str2 в строке str1. Подробнее тут.
strtok - использую для разделения строки на отдельные слова. Подробнее тут.


Цитата(Bartman2D @  10.10.2010,  17:31 Найти цитируемый пост)
но и как вижу в вашем примере строки уже даны( это конесно легко), но мне нужно, чтобы строки вводил пользователь.

А в чём проблема сделать ввод пользователем? 
PM MAIL   Вверх
Bartman2D
Дата 10.10.2010, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.10.2010

Репутация: нет
Всего: нет



Цитата(Crafty @ 10.10.2010,  16:42)
strstr(const char * str1, const char * str2) - возвращает указатель на первое вхождение подстроки str2 в строке str1. Подробнее тут.
strtok - использую для разделения строки на отдельные слова. Подробнее тут.


Цитата(Bartman2D @  10.10.2010,  17:31 Найти цитируемый пост)
но и как вижу в вашем примере строки уже даны( это конесно легко), но мне нужно, чтобы строки вводил пользователь.

А в чём проблема сделать ввод пользователем?

спасибо, полезные функции. )
PM MAIL   Вверх
bsa
Дата 10.10.2010, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Bartman2D, своему преподу ты скажи, что тебя с твоим "С++" тебя на форуме послали. И сказали что это "С".
А С++ это совершенно другой язык!

Добавлено через 28 секунд

M
bsa
Изменил название темы

PM   Вверх
fuckingniger
Дата 11.10.2010, 04:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



не думаю что им можно использовать готовые функции)

надо самому написать их)

Добавлено через 7 минут и 53 секунды
если не додуматься самому то вводишь в гугле
алгоритм поиска слова в тексте 
PM MAIL   Вверх
Logree
Дата 11.10.2010, 05:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



Они изучаю язык Си ну или как там говорит его преподаватель "чистый C++", данные функции часть стандартной библиотеки языка(входят в него), а значит являются объектом изучения => использовать данные функции -  нужно. А построение "таких" алгоритмов проходят на паскале.


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
bsa
Дата 11.10.2010, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Logree @  11.10.2010,  06:35 Найти цитируемый пост)
данные функции часть стандартной библиотеки языка(входят в него), а значит являются объектом изучения => использовать данные функции -  нужно.

Нужно, но только на курсе языка Си. Уже миллион раз был холивар на тему С++ против Си... ЭТО РАЗНЫЕ ЯЗЫКИ И ВМЕСТЕ ИХ УЧИТЬ НЕЛЬЗЯ!!! Если ты не знаешь ни одного из них, а выучить хочешь оба, то сначала нужно выучить С++, а потом уже доучить Си. Наоборот выйдет дольше и корявее.

Это сообщение отредактировал(а) bsa - 11.10.2010, 09:50
PM   Вверх
djamshud
Дата 11.10.2010, 10:46 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



>сначала нужно выучить С++, а потом уже доучить Си. Наоборот выйдет дольше и корявее.

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

Bartman2D, если от вас требуется понять алгоритмот А до Я, почитайте про strtok и strstr и напишите свои аналоги.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
bsa
Дата 11.10.2010, 12:35 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



djamshud, имхо, программировать нужно учиться на языке типа паскаля (или бейсика), чтобы ничего не отвлекало. Программу написать на С++ проще, чем на С. Но выучить второй проще. Зато С++ очень сложно учить после С, так как постоянно пытаешься использовать приемы из С, что сильно усложняет процесс обучения.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0888 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.