Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с файлами / 17 сообщений из 17, страница 1 из 1
25.04.2013, 20:33
    #38240662
Rasrow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
У меня возникли проблемы в Dev-C++, при написании программы. Сама проблема заключается в том, что программа игнорирует if, и открывает файл. За раннее спасибо.
Сам код:

Код: plaintext
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.
#include <cstdlib>
#include <iostream>
#include <string>
#include <cstring>
#include <fstream>

using namespace std;
class A
{
      public:
      int a,d;
      A(){} // Konstruktor
      ~A(){} // Dekonstruktor
void menu()
{
    cout << endl;
    cout << "Dobro pozhalovat' v menu biblioteki."<<endl;
    cout << "Dlya prosmotra spiska literatury vvedite: 1"<<endl;
    cout << "Dlya perehoda v menu dlya opracii s knigami vvedite: 2"<<endl;
    cout << "Dlya vyhoda iz prilozheniya vvedite: 0"<<endl;
    cin>>a;
}
void spisok()//pokazivaet knigi
     {   
    string s1,s2;
    fstream myfile;
    myfile.open ("spisok.txt");
     if (myfile.is_open())
     {
    while ( myfile.good() )
     {
      getline (myfile,s1);
      cout << s1 << endl;

     }
     myfile.close();
     
     }
    else cout << "Unable to open file";
     }  
void menu2()
{
    cout<<endl;        
    cout<<"Menu vozvrata i vzyatiya knigi"<<endl;
    cout<<"Dlya vozvrata knigi: 1"<<endl;
    cout<<"Dlya vzyatiya knigi: 2"<<endl;
    cout<<"Dlya vyhoda v glavnoe menu: 3"<<endl;
    cin>>d;    
}
};

int main()
{
int a;
int b=1;
int c=2;
A *p=new A; 
p->menu();
delete p; 
if (a=1)
{
p->spisok();
delete p;
}

    system("PAUSE");
    return EXIT_SUCCESS;
}
...
Рейтинг: 0 / 0
25.04.2013, 20:40
    #38240670
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Rasrowпрограмма игнорирует if
Который?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.04.2013, 20:44
    #38240678
Rasrow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
if (a=1)
{
p->spisok();
delete p;
...
Рейтинг: 0 / 0
25.04.2013, 21:03
    #38240693
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Rasrow,

брехня. Программа прекрасно заходит в if и там, как и положено порядочной программе, вылетает
по сегфолту.
...
Рейтинг: 0 / 0
25.04.2013, 21:15
    #38240698
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Rasrowif (a=1)
Результат присваивания переменной значения всегда равен самому значению. А раз это
значение отлично от нуля, то условие всегда выполняется. Ну а дальше, как уже и сказали
должно следовать громкое падение при попытке обращения к уже освобождённой памяти.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.04.2013, 21:15
    #38240699
Rasrow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Проблема в том, что он показывает список, даже если у меня а=0. Почему именно я не знаю.
...
Рейтинг: 0 / 0
25.04.2013, 21:16
    #38240700
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Rasrowдаже если у меня а=0
С чего бы а быть нолём, если ты ему присваиваешь единицу?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.04.2013, 21:21
    #38240708
Rasrow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Тут другая версия программы, но и тут вылетает то что не надо
Код: plaintext
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.
#include <cstdlib>
#include <iostream>
#include <string>
#include <cstring>
#include <fstream>

using namespace std;
class A
{
      public:
      A(){} // Konstruktor
      ~A(){} // Dekonstruktor
void spisok()//pokazivaet knigi
     {   
    string s1,s2;
    fstream myfile;
    myfile.open ("spisok.txt");
     if (myfile.is_open())
     {
    while ( myfile.good() )
     {
      getline (myfile,s1);
      cout << s1 << endl;

     }
     myfile.close();
     
     }
    else cout << "Unable to open file";
     }  
};

int main()
{
int a;
int i=0;
A *p=new A;
while (0<a<3)
{   int b=1;
    int c=2;
    cout << endl;
    cout << "Dobro pozhalovat' v menu biblioteki."<<endl;
    cout << "Dlya prosmotra spiska literatury vvedite: 1"<<endl;
    cout << "Dlya perehoda v menu dlya opracii s knigami vvedite: 2"<<endl;
    cout << "Dlya vyhoda iz prilozheniya vvedite: 0"<<endl;
    cin>>a;
    if (a=c)
    {for(int k=3,d;k!=d;)
    {
    cout<<endl;        
    cout<<"Menu vozvrata i vzyatiya knigi"<<endl;
    cout<<"Dlya vozvrata knigi: 1"<<endl;
    cout<<"Dlya vzyatiya knigi: 2"<<endl;
    cout<<"Dlya vyhoda v glavnoe menu: 3"<<endl;
    cin>>d;
    
    }
    }
    if (a=b)
    {
    p->spisok();
    delete p; 
    }        
}

    return 0;
}
...
Рейтинг: 0 / 0
25.04.2013, 21:24
    #38240713
Rasrow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Dimitry SibiryakovRasrowдаже если у меня а=0
С чего бы а быть нолём, если ты ему присваиваешь единицу?..

Может быть я и ошибаюсь, но разве я if (a=1) это не значит то, что будет эта функция запускаться только тогда, когда a=1, а не при других значениях?
...
Рейтинг: 0 / 0
25.04.2013, 22:05
    #38240734
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Rasrowразве я if (a=1) это не значит
Нет.

Запомни, деточка: один знак равенства это присваивание . Сравнение это два
знака равенства.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.04.2013, 22:08
    #38240735
Rasrow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Dimitry SibiryakovRasrowразве я if (a=1) это не значит
Нет.

Запомни, деточка: один знак равенства это присваивание . Сравнение это два
знака равенства.


Спасибо папочка! На век запомню.
...
Рейтинг: 0 / 0
26.04.2013, 09:01
    #38240932
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Вот это самые ржаки:
Код: plaintext
1.
while (0<a<3)
...
Рейтинг: 0 / 0
26.04.2013, 11:56
    #38241214
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Anatoly MoskovskyВот это самые ржаки:
Код: plaintext
1.
while (0<a<3)



Да, это тоже тождественно true всегда.
...
Рейтинг: 0 / 0
26.04.2013, 11:58
    #38241219
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Кроме того там ещё эта переменная a не инициирована.
...
Рейтинг: 0 / 0
26.04.2013, 13:03
    #38241368
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
MasterZivКроме того там ещё эта переменная a не инициирована.

Ну так тем if-ом она как раз и инициализируется. А то, что это приводит к варнингу, так
что же их читает...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.04.2013, 12:06
    #38242946
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Dimitry SibiryakovMasterZivКроме того там ещё эта переменная a не инициирована.

Ну так тем if-ом она как раз и инициализируется. А то, что это приводит к варнингу, так
что же их читает...

Имелся в виду второй вариант, с while (0<a<3).
...
Рейтинг: 0 / 0
30.04.2013, 19:36
    #38245732
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами
Mozok,

Да, второй. Т.е. последний.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с файлами / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]