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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Оксана 1234
4 / 4 / 0
Регистрация: 10.04.2013
Сообщений: 172
#1

Ф-ия month всегда возвращает true, хотя так не должно быть - C++

24.10.2013, 02:17. Просмотров 361. Ответов 6
Метки нет (Все метки)

Ф-ия month всегда возвращает true, хотя так не должно быть. В этой ф-ии я должна либо ввести полностью месяц, либо три первых буквы. Эсли все правильно возвращаться 1, эсли нет 0. Друзья, помогите скорей, пожалуйста!

main

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
#include "flower.h"
#include <fstream>
#include <sstream>
#include <string>
#include <algorithm>
#include <iostream>
#include <iterator>
#include <cctype>
FILE*uf;
 
using namespace std;
 
void main()
{//konstryctoru
    flower kvit_1(void), kvit_2("rosa","red",2);flower kvit_3(kvit_2);
    //demonstrasia vvody i vuvody na ekran
    flower kvit_9;
 kvit_9.vvid();
 kvit_9.show();
 //demonstrasia vvody z faily i vuvody na ekran
 
flower kvit_10;
ifstream uf("out.txt");
 
kvit_10.read_file(uf);
kvit_10.show();
cout<<endl;
 
//demonstrasia vvody  i zapusy v fail
flower kvit_5;
kvit_5.vvid();
kvit_5.write_in_file();
 
//perevantashenia
char* r=new char[];
cout<<"Vvedit misiats "; cin>>r;
cout<<kvit_2.month(5)<<endl;
cout<<kvit_2.month(r)<<endl;
//cout<<kvit_2.month()<<endl;
//posulannia i adresu
flower*kvit_4;
kvit_4=&kvit_2;
cout<<kvit_4->get_color();
cout<<endl;
kvit_4=new flower(kvit_2);
cout<<kvit_4->get_color();cout<<endl;
delete kvit_4;
 
cout<<endl;
system("pause");
}
Описание ф-ий типа flower
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <algorithm>
#include <iterator>
#include <iostream>
#include <cctype>
#include "flower.h"
FILE*f;
 
using namespace std;
 const int size = 12; 
  const char* a[size]={"january", "february", "mart", "april", "may", "june", "july", "ougest", "september", "october", "november", "december"};
 
int flower::count = 0;
 
 
 
bool flower::month(int n)
{   if((n<=0)&&(n>=12)) return false;
    string(name_month)=a[n-1];
    return true;
}
/*
int flower::GetCount()
{
    return count;
}*/
 
bool flower::month(char* s)
{
    for(int i=0; i<12;i++)
    {   if(!stricmp (s,a[i]))
    {numb_month=i+1;
    return true;}
    
    } 
    int j=0;
        for(int k=0; k<12;j=0,k++ )
    {for(int i=0; i<3;i++)
    {if ((a[k])[i]==s[i])
    {j++;
        if(j==3) return true;}}}
        
    return false;
}
 
char* flower::month()
{
    return name_month;
}
 
void flower::set_color(char*s)
{
    color=s;
}
 
char* flower::get_color()
{
    return color;
}
 
void flower::set_number(int s)
{
    number=s;
}
 
int flower::get_number()
{
    return number;
}
 
flower::flower()
{cout<<"Konstryktor\n";
name=0;
color=0;
number=0;
count ++;
}
 
void flower::read_file(ifstream &f)
{
    name=new char[12];
    color=new char[12];
     f >> this->name >>this-> number >>this-> color;   
    }
 
    void flower::write_in_file()
{
 ofstream f("Text.txt", ios::out | ios::app);
  f<<name<<' '; 
    f<<number<<' '<<color; 
    f.close();
}
 
void flower::vvid()
{
    char*s=new char[12];
    char*b=new char[12];
    int a;
    cout<<"Nazva kvitku "; cin>>s; cout<<"K-st pelustok "; cin>>a;
    cout<<"Color "; cin>>b;
    this->name=s;
    this->set_number(a);
    this->set_color(b);
};
 
void flower::show()
{
    cout<<"Nazva kvitku "<<name<<endl; cout<<"K-st pelustok "<<number<<endl;
    cout<<"Color "<<color<<endl;
};
 
 
 
flower::flower(flower &m)
{
    cout<<"Konstructor kopiyvannia\n";
    name=new char[strlen(m.name)+1];
    color=new char[strlen(m.color)+1];
    number=m.number;
    strcpy(name, m.name );
    strcpy(color,m.color);
    count ++;
}
 
flower::flower(char*ptr,char*l, int d)
{cout<<"Konstryktor z parrametramu\n";
int len=strlen(ptr);
int dow=strlen(l);
name=(char*) malloc(len+1);
color=(char*) malloc(dow+1);
number=d;
strcpy(name,ptr);
strcpy(color,l);    
count ++;
}
 
flower::~flower()
{cout<<"Robota destructora";
    count --;
}
Заголовочный файл flower
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
#ifndef flower_h_
#define flower_h_
 
 
#include<iostream>
#include <string>
using namespace std;
 
 
class flower
{
private:
    int number;
    static int count;
    
protected:
    char *color;
public:
    char *name;
    char *name_month;
    int numb_month;
static int GetCount;
    flower();
    flower(char*,char*, int);
    flower(flower &);
    ~flower();
 
    
 
    void set_color(char*);
    char*get_color();
    void set_number(int);
    int get_number();
    bool month(int );
    bool month(char*);
    char* month ();
    void show ();
    void vvid();
    void read_file(ifstream&);
    void write_in_file();
    
    static int get_count()
{
    return count;
};
    
};
 
#endif
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2013, 02:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ф-ия month всегда возвращает true, хотя так не должно быть (C++):

В результате вычислений программа выдает нули(хотя так не должно быть) - C++
Программа должна посчитать некоторые две величины по формулам, которые проверены аналитически, конечно. Но в результате вычислений одна из...

Syntax error хотя вроде быть не должно - C++
Ругается на пропущенную ';' хотя она стоит. Output: 1&gt;c:\android\project\proj.win32\gamescene.h(22): error C2146: syntax error :...

Уничтожается переменная по выходу из функции. так не должно быть - C++
Все доброго времени суток! В процессе отладки программки возник один вопрос... Есть функция: void bignum_fromhex(bignum_digit_t* num,...

Разработать функцию, которая возвращает True, если полученные значения могут быть сторонами треугольника, False – в противном случае - C++
Разработайте функцию, которая получает три вещественных параметра, возвращает в качестве своего результата булевское значение True, если...

in_avail() всегда возвращает 0. - C++
#include &lt;c++/4.4/iostream&gt; #include &lt;c++/4.4/streambuf&gt; int main() { int i,k; i=k=0; std::cout&lt;&lt;&quot;Enter two...

GetPrivateProfileInt всегда возвращает ноль - C++
Хотел считывать значение из INI-файла, но столкнулся с такой проблемой: #include &lt;Windows.h&gt; #include &lt;iostream&gt; #include...

6
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.10.2013, 02:18 #2
if((n<=0)&&(n>=12))
n не может быть одновременно меньше нуля и больше 12. нужно || а не &&
0
MrGluck
Модератор
Эксперт CЭксперт С++
7423 / 4538 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
24.10.2013, 02:19 #3
Цитата Сообщение от Оксана 1234 Посмотреть сообщение
if((n<=0)&&(n>=12))
если n меньше нуля и больше 12, такого быть не может.

Код нечитабелен, больше отступов и пробелов, одна строка - одна инструкция
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2013, 02:19 #4
C++
1
2
3
4
5
bool flower::month(int n)
{   if((n<=0) || (n>12)) return false;
    string(name_month)=a[n-1];
    return true;
}
0
Оксана 1234
4 / 4 / 0
Регистрация: 10.04.2013
Сообщений: 172
24.10.2013, 02:21  [ТС] #5
Эту оплошность я исправлю, а вот другую ф-ию month где в параметрах есть char* не знаю как исправить. Ребята, помогте
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.10.2013, 02:29 #6
написано так, что хз что вы там имели в виду.
в старой функции кстати вас ждет сюрприз. отгадайте, что делает:
string(name_month)=a[n-1];

не используйте char* для строк. используйте std::string. не надо выделять память, не надо сравнивать через ж...
все просто и понятно:
C++
1
2
3
4
5
6
std::string str1 = "123";
std::string str2 = "abc";
if (str1 != str2)
{
 ...
}
0
Оксана 1234
4 / 4 / 0
Регистрация: 10.04.2013
Сообщений: 172
24.10.2013, 02:47  [ТС] #7
Это означает, что мне вдруг захотелось ввести не sеptember, а sеp и программа должна принять это как истину, потому я должна сравнивать по-буквам месяцы, я не осень хорошо понимаю как это делать. Именно поэтому я использовала char, потому что не понимаю как по-другому можна сравнить часть слова с введенымы буквами

Добавлено через 11 минут
Меня интересует вот ета ф-ия
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool flower::month(char* s)
{
    for(int i=0; i<12;i++)
    {   if(!stricmp (s,a[i]))
    {numb_month=i+1;
    return true;}
    
    } 
int j=0;
        for(int k=0; k<12;j=0,k++ )
    {for(int i=0; i<3;i++)
    {if ((a[k])[i]==s[i])
    {j++;
        if(j==3) return true;}}}
        
    return false;
}
0
24.10.2013, 02:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 02:47
Привет! Вот еще темы с ответами:

Почему функция всегда возвращает 0? - C++
bool trie_tree::consonants_check(char letter) { return tolower(letter) == ('w' || 'r' || 't' || 'p' || 's' || 'd' || 'f' || 'g' || 'h'...

Бинарный поиск всегда возвращает (-1) - C++
Всегда возвращает -1 #include &lt;iostream&gt; int binary(int* m, int n, int e) { int r = 0, l = n-1, h;

непонятно ...подпрограмма возвращает true - C++
Подпрограмма возвращает true, если все элементы массива отличны от нуля, и подсчитывает, сколько в нём отрицательных элементов. Применив её...

Тип bool возвращает 1,а не true - C++
Задание: Даны числа A, B, C (число A не равно 0). Рассмотрев дискриминант D = B2 − 4·A·C, вернуть значение true, если квадратное...


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

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

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