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

Операция сравнения пошла не так, как хотелось бы - C++

Восстановить пароль Регистрация
 
n3L
1 / 1 / 0
Регистрация: 25.10.2012
Сообщений: 13
30.12.2012, 16:32     Операция сравнения пошла не так, как хотелось бы #1
Пользователь вводит значения, сохраняющиеся в класс Product; программа запрашивает слово для поиска и при совпадение только-что введенного слова и введенных в начале работы - выводит имеющуюся информацию.
Все бы хорошо, но ни strcmp, ни strcmp, ни обычное сравнивание не сработали. Хоть бы я использовал одно слово, одну буквы или даже цифру - оно пишет, что совпадений не найдено. Должно быть, проблема в этой 30-ой строке.
Как так? Что я сделал не так?
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
48
49
50
51
52
53
54
55
#include <conio.h>
//#include <string.h>
#include <iostream.h>
class Product {char naimen[20]; float cena; 
public: Product (); char getnaim (); void show();};
char naim[20];
 
Product::Product () {
cout << "\nNaimenovanie: "; cin >> naimen; 
cout << "Cena: "; cin >> cena;
}
 
void Product::show() {
cout << "\nNaimenovanie: " << naimen; 
cout << "\nCena: " << cena;
}
 
char  Product::getnaim() {return naimen[20];}
 
void ponaimen (Product spis[], int n) 
{ 
     int z=0;
     cout << "Vvedite nazvanie tovara dlya poiska: ";
     cin >> naim; 
     system ("cls");
     for (int i=0;i<n;i++)
         {
              char naimbaza[20];
              naimbaza[20]=spis[i].getnaim();
         if (strcasecmp (naimbaza, naim)==0)
         {
                        if (z<1) cout << "Imeushiesya tovary: \n";
                        spis[i].show();
                        z++;
         }
         }
         if (z==0) cout << "Dannyy tovar otsutstvuet. ";
}
 
int main() 
{ Product *spis;
int n;
cout << "Vvedite kolichestvo tovarov (ne ispolzuyte probely pri zapolnenie strok): "; cin >> n;
spis=new Product [n];
system ("cls");
for (int i=0; i<n; i++) {
cout << "\n==================\n";
spis[i].show();
}
cout << "\n==================\n";
system ("pause"); system ("cls"); 
ponaimen(spis,n);
delete [] spis;
system ("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2012, 16:32     Операция сравнения пошла не так, как хотелось бы
Посмотрите здесь:

константные поля и операция присвоения - как быть? C++
C++ Как использовать функцыю в операторе сравнения
Как использовать операторы сравнения C++
C++ Дописать программу так, чтобы в массив вводились как целые числа так и вещественные
Что быстрее, операция присваивания или сравнения? C++
C++ Код не работает так, как хотелось бы
C++ сравнить два целых числа, не используя условного оператора, оператора выбора и так же символов сравнения
Сделать так, чтобы функция возвращала как целые, так и дробные значения C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
30.12.2012, 16:37     Операция сравнения пошла не так, как хотелось бы #2
неправильно строки приравнены.
Сделайте так:
C++
1
strcpy (naimbaza, spis[i].getnaim())
n3L
1 / 1 / 0
Регистрация: 25.10.2012
Сообщений: 13
30.12.2012, 17:34  [ТС]     Операция сравнения пошла не так, как хотелось бы #3
Пишет, что второй аргумент не const char, а сделать его таким у меня не вышло.
Так как не удалось решить эту проблему честным путем, заменил все "символы" на "строки" - так и реализовал выполнение требуемой задачи.
Зато в следующий раз уже буду использовать strcpy.
Yandex
Объявления
30.12.2012, 17:34     Операция сравнения пошла не так, как хотелось бы
Ответ Создать тему
Опции темы

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