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

Почему не работает функция? - C++

Восстановить пароль Регистрация
 
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
14.08.2012, 19:48     Почему не работает функция? #1
Почему не работает функция? Пишет ошибку: результатом выполнения фрагмента не является 0 аргумеетов


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int provPas() {
    string login_1, login_2, password_1, password_2, pasFile;
    cout<<"Введите ваш логин: ";
    cin>>login_1;
    pasFile="C:\\FullFun+\\PandL\\"+login_1+".txt";
    ifstream log(pasFile.c_str());
    log>>login_2;
    log>>password_2;
    if (log.is_open()==false) {log.close(); cout<<"Такого пользователя не найденно!"<<endl; return 0; getche();}
    else if ((log.is_open()) && (login_2==login_1)) {
    log.close(); 
    cout<<"Пользователь успешно найден!";
    cout<<"________________________________________________________________________________"<<endl;
    cout<<"\nВведите ваш пароль: ";
    cin>>password_1;
    if (password_1==password_2) {cout<<"Вы успешно авторизовались!";  return 1; getche();}
    }
    else {log.close(); cout<<"Такого пользователя не найденно!"<<endl; return 0; getche();}
}//
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.08.2012, 20:28     Почему не работает функция? #2
неплохо было бы полностью ошибку увидеть. и строку.
может быть вместо getche() нужно getch();

и еще. отучите себя писать
if (...) { ... } - это плохо читается и плохо дебажится. тем более, когда больше одного выражения в строке

такой вариант без этих недостатков:
if (...)
{
...
}
Aloir
 Аватар для Aloir
216 / 216 / 13
Регистрация: 17.12.2010
Сообщений: 688
14.08.2012, 20:52     Почему не работает функция? #3
Цитата Сообщение от DU Посмотреть сообщение
неплохо было бы полностью ошибку увидеть. и строку.
может быть вместо getche() нужно getch();

и еще. отучите себя писать
if (...) { ... } - это плохо читается и плохо дебажится. тем более, когда больше одного выражения в строке

такой вариант без этих недостатков:
if (...)
{
...
}
угу, так легче видеть скобки, открытые и закрытые.

а ошибка потому что у есть случай когда функция не вернет ничего

пысы: и после return в функции нет смысла что-то писать, функция туда не дойдет.

Добавлено через 11 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if ((log.is_open()) && (login_2==login_1))
        {
            log.close(); 
            cout<<"Пользователь успешно найден!";
            cout<<"________________________________________________________________________________"<<endl;
            cout<<"\nВведите ваш пароль: ";
            cin>>password_1;
            if (password_1==password_2)
            {
                cout<<"Вы успешно авторизовались!"; 
                return 1; 
                getche();
            }
        }
если зайдет в этот if но пароли не совпадут, тогда фунция нечего не возвращает
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
14.08.2012, 21:25  [ТС]     Почему не работает функция? #4
Цитата Сообщение от DU Посмотреть сообщение
неплохо было бы полностью ошибку увидеть. и строку.
может быть вместо getche() нужно getch();

и еще. отучите себя писать
if (...) { ... } - это плохо читается и плохо дебажится. тем более, когда больше одного выражения в строке

такой вариант без этих недостатков:
if (...)
{
...
}
А что такое дебажится?
_or_75
-1 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 244
14.08.2012, 21:28     Почему не работает функция? #5
Почему не работает функция?

потому что она не работает.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.08.2012, 22:18     Почему не работает функция? #6
А что такое дебажится?
От слова Debug - устранение багов, поиск ошибок, отладка. Если несколько инструкций в одной строке, то при построчном выполнении программы за один шаг выполняется сразу несколько инструкций и если ошибка в них, то несколько затруднительно искать что там случилось. Куда проще, когда каждая инструкция на своей строке.
Советую выделить время как можно раньше и ознакомится, как можно отлаживать программы в вашей IDE.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.08.2012, 22:36     Почему не работает функция? #7
Цитата Сообщение от Aloir Посмотреть сообщение
если зайдет в этот if но пароли не совпадут, тогда фунция нечего не возвращает
Там дальше else с return.

Добавлено через 9 минут
Egor138, по моему, у вас путаница со скобками после else в 10 строке.
zss
Модератор
Эксперт С++
 Аватар для zss
5945 / 5550 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
14.08.2012, 22:47     Почему не работает функция? #8
Да все очевидно. Поскольку return стоит раньше, чем getche(),
то окно сразу закрывается и происходит выход из программы с соответствующим выражением,
означающим, что функция main закончилась и возвратила в качестве
результата 0.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2012, 00:04     Почему не работает функция?
Еще ссылки по теме:

почему не работает функция? C++
C++ Почему функция введена, но не работает?
Почему функция atanh работает неправильно? C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.08.2012, 00:04     Почему не работает функция? #9
Рабочий код.
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
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
#include <windows.h>
using namespace std;
 
int provPas() 
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    string login_1, login_2, password_1, password_2, pasFile;
    cout << "Введите ваш логин: ";
    cin >> login_1;
    pasFile = "C:\\FullFun+\\PandL\\" + login_1 + ".txt";
    ifstream log(pasFile.c_str());
    log >> login_2;
    log >> password_2;
    
    if (log.is_open() == false) 
    {
        log.close(); 
        cout << "Такого пользователя не найденно!" << endl; 
        return 0;
    }
    
    if (login_2 == login_1) 
    {
        log.close(); 
        cout << "Пользователь успешно найден!";
        cout << "________________________________________________________________________________"<<endl;
        cout << "\nВведите ваш пароль: ";
        cin >> password_1;
        
         if (password_1 == password_2) 
        {
            cout << "Вы успешно авторизовались!";  
            return 1;
        }
        
        log.close(); 
        cout << "Такого пользователя не найденно!" << endl; 
        return 0;
     }
     
     return 0;
}
 
 
int main()
{
    provPas();
 
    system("pause");
    return 0;
}
Yandex
Объявления
15.08.2012, 00:04     Почему не работает функция?
Ответ Создать тему
Опции темы

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