Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
1

Исправить ошибку в коде для сравнения строк

08.01.2014, 15:47. Просмотров 937. Ответов 23
Метки нет (Все метки)

что-то не получается вот с этим:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
using namespace std;
int main ()
{
setlocale (LC_ALL,"Rus");
char s[20];
for(int i=0;i<20;i++)
cin>>s;
if (s=='Привет')
cout<<"Привет"<<endl; // тут не знаю,что сделать для задержки если нужно
return 0
}
как исправить? есть ошибка или сам ход построения кода не верен но затея всем надеюсь понятна
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 15:47
Ответы с готовыми решениями:

Описание класса для определения одномерных массивов строк. Исправить ошибку
Программа иногда работает правильно а иногда вылетает с ошибкой Unhandled...

Исправить ошибку в коде с++
Помогите исправить ошибку в коде: CString m_showlink; ...

Исправить ошибку в коде
помогите найти ошибку . студия 2012 #include &lt;iostream&gt; #include &quot;queue.h&quot;...

Исправить ошибку в коде
Вроде веденно всё правильно но выдаёт ошибку: #include &lt;iostream&gt; #include...

Исправить ошибку в коде
задание - в файле записаны фамилия и номер телефона работника. Ввести номер, и...

23
Alex566
242 / 154 / 47
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 15:50 2
Цитата Сообщение от web-magician Посмотреть сообщение
if (s=='Привет')
Строки берутся в кавычки ", а не в одинарные '
К тому же сравнение строк выполняется с помощью функции if(strcmp(s,"Привет")==0)
Цитата Сообщение от web-magician Посмотреть сообщение
for(int i=0;i<20;i++)
cin>>s;
Не совсем ясно зачем вводить 1 слово 20 раз.
1
0x10
2571 / 1751 / 288
Регистрация: 24.11.2012
Сообщений: 4,377
08.01.2014, 15:50 3
Для сравнения строк, представленных как массив символов (char*), используется функция strcmp.
С кириллицей отдельная песня, предлагаю пока забить.
1
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
08.01.2014, 15:56  [ТС] 4
Цитата Сообщение от Alex566 Посмотреть сообщение
Не совсем ясно зачем вводить 1 слово 20 раз.
можно без цикла?И будет ли считывать слово "Привет" ?
а если cin.getline(s,20) или нет разницы?

Добавлено через 1 минуту
Цитата Сообщение от 0x10 Посмотреть сообщение
Для сравнения строк, представленных как массив символов (char*), используется функция strcmp.
а как ее применить? в моем примере
0
Alex566
242 / 154 / 47
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 15:59 5
Цитата Сообщение от web-magician Посмотреть сообщение
можно без цикла?И будет ли считывать слово "Привет" ?
а если cin.getline(s,20) или нет разницы?
Одно слово можно ввести просто потоком. cin>>s; разделением потока является пробел по этому 1 слово введется. +Как уже говорил 0x10 русский текст лучше пока не трогать. Замените лучше на английские слова.
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 15:59 6
Цитата Сообщение от web-magician Посмотреть сообщение
а если cin.getline(s,20) или нет разницы?
В данном случае, нет.
Цитата Сообщение от web-magician Посмотреть сообщение
а как ее применить? в моем примере
2 пост.
0
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
08.01.2014, 16:08  [ТС] 7
короче получается,что заморочка со словами русского языка...
есть предложение написать код программы для поиска данных с диска (то есть с жесткого диска) и чтобы и скала по ключевым словам,как реализовать интересно подскажите пожалуйста?
0
0x10
08.01.2014, 16:11
  #8

Не по теме:

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

0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 16:21 9
Цитата Сообщение от web-magician Посмотреть сообщение
короче получается,что заморочка со словами русского языка...
Насчёт этого вам способ предлагался (в какой-то из тем), и как-бы, вы написали, что поняли:
C++
1
2
3
4
5
6
7
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
В свойствах консоли выбрать шрифт: Lucida Console
1
Alex566
242 / 154 / 47
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 16:26 10
Цитата Сообщение от web-magician Посмотреть сообщение
есть предложение написать код программы для поиска данных с диска (то есть с жесткого диска) и чтобы и скала по ключевым словам,как реализовать интересно подскажите пожалуйста?
Ну ну.. =) Вот вам наводка в помощь найти первые 10 файлов с расширением .doc
Хотя как по мне 0x10 сказал очень даже по теме.
1
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
08.01.2014, 18:00  [ТС] 11
Ошибка 2 error C2664: FindFirstFileW: невозможно преобразовать параметр 1 из "const char [7]" в "LPCWSTR"
Ошибка 1 error C2664: SetCurrentDirectoryW: невозможно преобразовать параметр 1 из "const char [17]" в "LPCWSTR"
3 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"
4 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"

Добавлено через 25 секунд
студия 2012
0
Alex566
242 / 154 / 47
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 18:15 12
Цитата Сообщение от web-magician Посмотреть сообщение
Ошибка 2 error C2664: FindFirstFileW: невозможно преобразовать параметр 1 из "const char [7]" в "LPCWSTR"
Ошибка 1 error C2664: SetCurrentDirectoryW: невозможно преобразовать параметр 1 из "const char [17]" в "LPCWSTR"
3 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"
4 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"
Проект>Свойства>Свойства конфигурации>Общие>Набор символов>Использовать многобайтовую кодировку
1
MrGluck
Модератор
Эксперт CЭксперт С++
8086 / 4939 / 1431
Регистрация: 29.11.2010
Сообщений: 13,395
08.01.2014, 18:20 13
Используйте для сравнения wcscoll и wchar_t*, либо wstring и встроенный оператор ==
1
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
09.01.2014, 00:47  [ТС] 14
что-то не работает? или мешает в начале кода это

SetConsoleCP(1251);
SetConsoleOutputCP(1251);

Добавлено через 4 минуты
да мешали они только вот не работает она на 2 любые клавиши нажимаешь и консоль закрывается

Добавлено через 2 минуты
Цитата Сообщение от MrGluck Посмотреть сообщение
Используйте для сравнения wcscoll и wchar_t*, либо wstring и встроенный оператор ==
я не на столько хорошо знаю этот язык и только учусь ему поэтому не понимаю как...

Добавлено через 36 секунд
Цитата Сообщение от Alex566 Посмотреть сообщение
Проект>Свойства>Свойства конфигурации>Общие>Набор символов>Использовать многобайтовую кодировку
помогло

Добавлено через 5 часов 44 минуты
так почему консоль ничего не ищет и после 2 нажатий на клавиши (любые) закрывается?
0
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,531
09.01.2014, 01:42 15
Цитата Сообщение от web-magician Посмотреть сообщение
есть предложение написать код программы для поиска данных с диска (то есть с жесткого диска) и чтобы и скала по ключевым словам,как реализовать интересно подскажите пожалуйста?
Где должны находиться ключевые слова- в файлах или в их названиях? Секёшь прокол?

Эта херь ищет слова в файлах, рекурсивно. Там в начале в макросе, нужно задать, есть ли у файлов расширение.

C++
1
#define rash
Ну или закомментить его, если ищется по ВСЕМ файлам. Если ищется по файлам с определённым расширение, ниже надо это расширение прописать.

А ещё ниже, в исходнике же, нужно написать искомую строку и полный путь к папке, где и происходит, собственно, рекурсивный поиск. Это у меня настройки такие, для себя писал
1
Вложения
Тип файла: rar как_искать_строку_во_все_файлах_рекурсивно.rar (290.7 Кб, 3 просмотров)
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
09.01.2014, 11:08 16
Цитата Сообщение от web-magician Посмотреть сообщение
что-то не работает? или мешает в начале кода это
SetConsoleCP(1251);
SetConsoleOutputCP(1251); Добавлено через 4 минуты
да мешали они только вот не работает она на 2 любые клавиши нажимаешь и консоль закрывается
Что, где не работает?
1
Миниатюры
Исправить ошибку в коде для сравнения строк   Исправить ошибку в коде для сравнения строк  
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
09.01.2014, 14:59  [ТС] 17
Цитата Сообщение от alsav22 Посмотреть сообщение
Что, где не работает?
тут работает я не это имел ввиду,а поиск файла.И спасибо

Добавлено через 11 минут
Цитата Сообщение от kravam Посмотреть сообщение
Где должны находиться ключевые слова- в файлах или в их названиях? Секёшь прокол?

Эта херь ищет слова в файлах, рекурсивно. Там в начале в макросе, нужно задать, есть ли у файлов расширение.

C++
1
#define rash
Ну или закомментить его, если ищется по ВСЕМ файлам. Если ищется по файлам с определённым расширение, ниже надо это расширение прописать.

А ещё ниже, в исходнике же, нужно написать искомую строку и полный путь к папке, где и происходит, собственно, рекурсивный поиск. Это у меня настройки такие, для себя писал


нельзя сделать это все интуитивно понятным...есть писанный код программы которая работает через консоль прописал туда к примеру название песни или с расширением для более точного поиска или просто без расширения и чтобы программа искала и выводила найденный результат на экран и еще можно чтобы записывала в файл,а в файл в свою очередь сделать перезаписывающим через ios::app и будет оставаться последний искомый файл...при запуске программы можно сделать сразу считывание из файла и вывода на экран чтобы был виден последний искомый файл. если бы я все это смог бы сделать не просил бы помощи и заранее извиняюсь за возможные глупые вопросы и пожелания так как я только новичок в этом деле.

Добавлено через 21 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Что, где не работает?
а он у тебя работает без setlocale (LC_ALL,"Rus"); ?
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
09.01.2014, 15:01 18
Цитата Сообщение от web-magician Посмотреть сообщение
а он у тебя работает без setlocale (LC_ALL,"Rus"); ?
На скринах код виден.
0
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
09.01.2014, 15:05  [ТС] 19
видимо у тебя компилятор другой у меня vs2012 и что означает эта строка (cin>>s).get(); меня учат но с этим я не сталкивался?
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
09.01.2014, 15:16 20
Видимо, у меня 10-я.
Цитата Сообщение от web-magician Посмотреть сообщение
и что означает эта строка (cin>>s).get();
Чтобы остановка в конце кода сработала (cin.get()), извлекается '\n' из потока. Можно в две строки записать:
C++
1
2
cin>>s;
cin.get();
1
09.01.2014, 15:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 15:16

Исправить ошибку в коде
//--------------------------------------------------------------------------- ...

Исправить ошибку в коде
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;math.h&gt; using namespace std;...

Исправить ошибку в коде
где ошибка? #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int...


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

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

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