Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2010, 06:03   #1
HenryL
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 24
Восклицание C++ структуа, ошибка в передаче параметров функциям

Итак, есть программа
PHP код:
#include <stdio.h>
#include <string>
#include "stdafx.h"
#include "fstream"
#include "conio.h"
#include "math.h"
#include "iostream" 

using namespace std;

class 
aeroflot
{public:
    
    
int inumb;
    
char type[100];
    
char dest[100];
    
void enter(aeroflot *reys)
    {    
int ikol;
    
kol=2;
        
cout << "Введите данные: " << endl;
        
cout << "" <<endl;
        for (
i=0i<koli++)// цикл для ввода данных о рейсе
            
{
                for (
int o=0o<kolo++)
                    {
                        {
                            
cout << i+<<"-й маршрут." << endl;
                            
cout << "Пункт назначения (не более 10 симв.): ";
                            
cin >> reys[i].dest;
                            
cout << "Номер рейса: ";
                            
cin >> reys[i].numb;
                            
cout << "Тип самолета (не более 10 симв.): ";
                            
cin >> reys[i].type;
                        }
                        
cout << "" <<endl;
                        break;
                    }
                        
            }
        for (
0i++) 
    {
        
cout << reys[i].dest <<"   " << reys[i].numb << "   " << reys[i].type << endl
    }

    }

    
void sortname(aeroflot *reysaeroflot *destaeroflot *typeaeroflot numb)//struct_data - тип данных структуры,  n - количество элементов структуры
{
    
int j,k;
 
aeroflot p;
 for(
j=0j<2j++)
  {
   for(
k=0k<2k++)
    {
     if(
strcmp(reys[j].dest,reys[k].dest)<0)
          {
       
p=reys[j];
       
reys[j]=reys[k];
       
reys[k]=p;
      }
    }
  }

cout << "Маршруты по нункту назначения: " << endl;
cout << " " << endl;
for (
0i++) 
    {
        
cout << reys[i].dest <<"   " << reys[i].numb << "   " << reys[i].type << endl
    }


    }

 
void search(aeroflot *reysaeroflot *destaeroflot *typeaeroflot numbint kol)
 {
     while (
true)

    
char inp [10];
    
cout << endl << "Ввведите пункт назначения: ";  
    
cin >> inp
    
cout << endl;
    
bool f false;// флаг (найдено ли хотя бы одно)
    
for (i=0i<koli++)
    {    
        if (
strcmp (reys[i].destinp)==0)//сравнение введенной строки с массивом пунктов назначения
            
{
                
cout << "Найдено!" << endl;
                
cout << "Номер рейса: " <<' '<< reys[i].numb<<' '<< "Тип самолета: " <<' '<< reys[i].type << ' '<<endl
                
true
            }
    }
        if (!
fcout << "Нет такого пункта назначения!"

 }
 }
    
};

int _tmain(aeroflot *destaeroflot *typeaeroflot numbint kol )
{
    
setlocale(0,"Rus");
    
//
    
aeroflot reys[2];
reys[2].enter(reys);
reys[2].sortname(reysdesttypenumb);
reys[2].search(reysdesttypenumbkol);

    
_getch();

Во первых, там ошибка есть, с выходом за пределы в reys (ее видно, если убрать метод search() с вечным циклом while, который не дает завершится проге и выдать ошибку). Во вторых, собсно функция search не хочет ничего искать! Совсем сбился уже с толку сегодня с этой прогой, помогите!!!
HenryL вне форума Ответить с цитированием
Старый 29.11.2010, 06:08   #2
HenryL
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 24
По умолчанию

в топике ошибка, не структура, а класс!
HenryL вне форума Ответить с цитированием
Старый 29.11.2010, 08:51   #3
X-Zef
 
Аватар для X-Zef
 
Регистрация: 29.11.2010
Сообщений: 7
По умолчанию

В search() нет точки выхода break. Но если поставит break то прога завершится. На мой взгляд неправильная организация проги. Проверь search в по шаговом режиме, посмотри что находится в reys[i].dest и в inp. А в целом код кривой. В классе создали подставляемую функцию и слишком много указателей на класс в параметрах функций.
X-Zef вне форума Ответить с цитированием
Старый 29.11.2010, 08:53   #4
X-Zef
 
Аватар для X-Zef
 
Регистрация: 29.11.2010
Сообщений: 7
По умолчанию

Лучше переписать прогу.
X-Zef вне форума Ответить с цитированием
Старый 29.11.2010, 14:05   #5
HenryL
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 24
По умолчанию

Цитата:
Сообщение от X-Zef Посмотреть сообщение
Лучше переписать прогу.
это все, на что я способен =)
что именно лучше переделать?
HenryL вне форума Ответить с цитированием
Старый 29.11.2010, 16:15   #6
HenryL
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 24
По умолчанию

Цитата:
Сообщение от X-Zef Посмотреть сообщение
В классе создали подставляемую функцию и слишком много указателей на класс в параметрах функций.
Переделал, действительно передавал не понятно для чего кучу параметров
PHP код:
#include <stdio.h>
#include <string>
#include "stdafx.h"
#include "fstream"
#include "conio.h"
#include "math.h"
#include "iostream" 

using namespace std;

class 
aeroflot
{public:
    
    
int inumb;
    
char inp [10];
    
char type[100];
    
char dest[100];
    
void enter(aeroflot *reys)
    {    
int ikol;
    
kol=2;
        
cout << "Введите данные: " << endl;
        
cout << "" <<endl;
        for (
i=0i<koli++)// цикл для ввода данных о рейсе
            
{
                for (
int o=0o<kolo++)
                    {
                        {
                            
cout << i+<<"-й маршрут." << endl;
                            
cout << "Пункт назначения (не более 10 симв.): ";
                            
cin >> reys[i].dest;
                            
cout << "Номер рейса: ";
                            
cin >> reys[i].numb;
                            
cout << "Тип самолета (не более 10 симв.): ";
                            
cin >> reys[i].type;
                        }
                        
cout << "" <<endl;
                        break;
                    }
                        
            }
        for (
0i++) 
    {
        
cout << reys[i].dest <<"   " << reys[i].numb << "   " << reys[i].type << endl
    }

    }

    
void sortname(aeroflot *reys)//struct_data - тип данных структуры,  n - количество элементов структуры
{
    
int j,k;
 
aeroflot p;
 for(
j=0j<2j++)
  {
   for(
k=0k<2k++)
    {
     if(
strcmp(reys[j].dest,reys[k].dest)<0)
          {
       
p=reys[j];
       
reys[j]=reys[k];
       
reys[k]=p;
      }
    }
  }

cout << "Маршруты по нункту назначения: " << endl;
cout << " " << endl;
for (
0i++) 
    {
        
cout << reys[i].dest <<"   " << reys[i].numb << "   " << reys[i].type << endl
    }
    }
    
void search(aeroflot *reys)
    {
 while (
true)
int kol 2;

    
cout << endl << "Ввведите пункт назначения: ";  
    
cin >> inp
    
cout << endl;
    
bool f false;// флаг (найдено ли хотя бы одно)
    
for ( int i=0i<koli++)
    {    
        if (
strcmp (reys[i].destinp)==0)//сравнение введенной строки с массивом пунктов назначения
            
{
                
cout << "Найдено!" << endl;
                
cout << "Номер рейса: " <<' '<< reys[i].numb<<' '<< "Тип самолета: " <<' '<< reys[i].type << ' '<<endl
                
true
                break;
            }
    }
        if (!
fcout << "Нет такого пункта назначения!"
        break;

 }



    }
    
};

int _tmain()
{
    
setlocale(0,"Rus");
    
//
    
aeroflot reys[2];
reys[2].enter(reys);
reys[2].sortname(reys);
reys[2].search(reys);

    
_getch();

С выходом за пределы массива не могу разобраться, будто бы все правильно...
HenryL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при передаче массива в DLL и считывание результатов. Kolan Общие вопросы Delphi 3 21.11.2010 18:04
Ошибка пр передаче данных из Access в Excel pla Microsoft Office Access 4 17.11.2010 10:31
ошибка при передаче ссылки на массив в визуал 2008 LOST94 Общие вопросы C/C++ 7 29.06.2010 22:23
ошибка в tFIBDataSet при использовании параметров. Lokos БД в Delphi 30 25.05.2010 10:32