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

Программа завершает работу после вывода данных - C++

Восстановить пароль Регистрация
 
//Александр
 Аватар для //Александр
6 / 6 / 0
Регистрация: 15.04.2010
Сообщений: 151
27.09.2010, 02:21     Программа завершает работу после вывода данных #1
запускаю программу ввожу значения а когда программа их должна вывисти вылазит табличка windows завершает выполнение программы. проблема или в main() на выводе значения или в poisk
подскажите где я накосячил. програ компилится нормально. я выложил только часть кода остальное я уверен правельно.....
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int poisk(AEROFLOT *aeroflot,char *n,int &k,int *a)
{  int i,j;
 
 
 
         for (i=k; i<7; i++)
         {
        if(!strcmp(aeroflot[i].type, n))
        {
        k++;
        a[k]=i;
         
        }
        
        }
         if (k==0)
         return (-1);
         else 
             return *a;
                
}
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
int main()    
    
{ int k=0;
    setlocale(LC_ALL, "rus");
    AEROFLOT  f;
    int i;
    char n[10];
    //-----------------ввод-------------------------
        for (i=0;i<7;i++)
        {
        cout << "введите название пункта назначения \n";
        cin  >> f.name;
        cout << "введите номер рейса \n";
        cin  >> f.number;                                                
        cout << "введите тип самолета \n";
        cin  >> f.type;
            add(f);
            count++;
         }
    //----------------------------------------------
  cout << "введите тип нужного Вам самолета\n";
  cin  >> n;
    //---------------------------------------------
sort_name (aeroflot);//сортируем
    //---------------------------------------------
    
 
 
int a[10];
 
if (poisk(aeroflot,n,k,a)==-1)
        cout << "Самолетов такого типа нет..."; 
    
    else
     for(i=0;i<=k;i++)
     {
           cout << endl;
            cout << "название пункта назначения - " << aeroflot[ a[i] ].name << endl;
            cout << "номер рейса - " << aeroflot[a[i] ].number << endl;
            
 
     }
    
    getch();
    }
Добавлено через 13 минут
если нужно могу выкинуть весь код

Добавлено через 15 минут
или подскажите как правильно передать массив в main()
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2010, 02:21     Программа завершает работу после вывода данных
Посмотрите здесь:

C++ Программа завершает свою работу и закрытаеться
Программа, во время выполнения, после ввода, прекращает работу C++
[Символьная строка] После ввода количества символов в символьной строке, программа прекращает работу C++
Консоль Dev быстро завершает работу C++
После ввода данных программа закрывается, не показав ответ (Dev C++) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Reiji Cross
 Аватар для Reiji Cross
26 / 26 / 1
Регистрация: 14.05.2010
Сообщений: 57
27.09.2010, 04:30     Программа завершает работу после вывода данных #2
Я так понимаю массив aeroflot объявлен глобально, а значит в эти функции в качестве аргумента массив передавать не нужно
C++
1
2
int poisk(AEROFLOT *aeroflot,char *n,int &k,int *a)
poisk(aeroflot,n,k,a)
Добавлено через 11 минут
Функция поиск будет выглядеть примерно так
C++
1
2
3
4
5
6
7
8
9
void Poisk(char *n){
int f = 0;
    for(int i = 0; i < 7; i++){
        if(!strcmp(aeroflot[i].type, n)) {cout << aeroflot[i].name << " " << aeroflot[i].number << endl;
            f++;
        }
if(!f) cout << "Нет совпадений!" << endl;
    }
}
//Александр
 Аватар для //Александр
6 / 6 / 0
Регистрация: 15.04.2010
Сообщений: 151
27.09.2010, 04:54  [ТС]     Программа завершает работу после вывода данных #3
Reiji Cross, Функция поиска Приведеная Вами работает правильно , но мне нужно сделать весь ввод и вывод в main(), поэтому я должен при выполнении условия
C++
1
if(!strcmp(aeroflot[i].type, n))
передавать значения. проблема в том что когда совпадение только 1 я могу его передать как обычную переменную. как передать если будет несколько совпадений??
Nwq
33 / 33 / 2
Регистрация: 24.09.2010
Сообщений: 140
27.09.2010, 13:26     Программа завершает работу после вывода данных #4
Строки 30-43 замени на
C++
1
2
3
4
5
6
7
8
9
10
11
12
    int types = 0;
    for (i = 0; i < 7; i++)
    {
        if (0 == strcmp(aeroflot[i].type, n))
        {
            cout << "название пункта назначения - " << aeroflot[i].name << endl;
            cout << "номер рейса - " << aeroflot[i].number << endl;
            types++;
        }
    }
    if (types == 0)
        cout << "Самолетов такого типа нет...";
Добавлено через 6 минут
Только сейчас увидел, Reiji Cross написал уже тоже самое.
//Александр
 Аватар для //Александр
6 / 6 / 0
Регистрация: 15.04.2010
Сообщений: 151
27.09.2010, 14:50  [ТС]     Программа завершает работу после вывода данных #5
вы меня не правильно поняли доллжна быть отдельная функция которая проверяет условие
if (0 == strcmp(aeroflot[i].type, n)) когда условие выолняется она должна в main передавать индекс элемента который совпал я не знаю как сделать чтобы при при совпадении нескольких элементов передавались оба индекса....
Nwq
33 / 33 / 2
Регистрация: 24.09.2010
Сообщений: 140
27.09.2010, 21:26     Программа завершает работу после вывода данных #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я думал главное конечный результат. Если отдельную то можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int poisk(char* n, int* a)
{
    int i, types = 0;
    for (i = 0; i < 7; i++)
    {
        if (0 == strcmp(aeroflot[i].type, n))
        {
            *a++ = i;
            types++;
        }
    }
    return types;
}
 
int k, a[7];
if (0 == (k = poisk(n, a)))
    cout << "Самолетов такого типа нет...";
else
    for (i = 0; i < k; i++)
    {
        cout << "название пункта назначения - " << aeroflot[a[i]].name << endl;
        cout << "номер рейса - " << aeroflot[a[i]].number << endl;
    }
Yandex
Объявления
27.09.2010, 21:26     Программа завершает работу после вывода данных
Ответ Создать тему
Опции темы

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