Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


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

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


Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2009, 17:53   #1
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,497
По умолчанию Классы, помогите разобраться

Доброго времени суток!!! Вот мой очередной "Глупый" вопрос!!! Так и должно наверно быть я же "новичок"!! Так что если что, не судите строго!!!
вот код моей программы (только не весь):
Код:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <iomanip.h>
#include <fstream.h>
#include <string.h>
#include <ctype.h>
#define EVER ; ;

void menu();
void New_Baze_i_dop();
void Sort_i_vivod();
int MyProverka1();

class Books
{
       char itsName[20];
       char itsAvtor[12];
       int itsKol_str;
       int itsYear;
    public:
        Books (char* Name, char* Avtor, int kol_vo, int year);
        Books () {}
        ~Books() {}
        void inName();
        void inAvtor();
        void inKol_str();
        void inYear();
        void outName() {cout << itsName;}
        void outAvtor() {cout << itsAvtor;}
        void outKol_str() {cout << itsKol_str;}
        void outYear() {cout << itsYear;}
        char* returnName() {return itsName;}
};


int main ()
{
    menu();
    return 0;
}


void Sort_i_vivod ()
{
     char* FileName;
     Books book, Massiv[100],Temp, *pMassiv = &Massiv[0];
     int Flag = 0;
     int i = 0, kol_books = 0, n, k;
     cout << "Enter to file's name " << endl;
     cout.flush();
     cin >> FileName;
     ifstream reading_file(FileName, ios::beg);
     if (reading_file.good())
     {
	 while (!reading_file.eof())
	 {
	     reading_file.read ((char*) &book, sizeof (book));
	     *pMassiv = book;
	     i++;
	     pMassiv++;
	 }
	 reading_file.close();
     }
     else exit(0);
     kol_books = i-1;
     n = kol_books;
     do
     {
	 Flag = 0;
	 for (i = 0; i < kol_books - 1; i++)
	 {
	     if (strlen(Massiv[i].returnName) > strlen(Massiv[i+1].returnName))
	     {
		 for (k = 0; k < Massiv[i].strlenName; k++)
		 {
		     if (Massiv[i].returnName[k] > Massiv[i+1].returnName[k])
		     {
			 Temp = Massiv[i];
			 Massiv[i] = Massiv[i + 1];
			 Massiv[i + 1] = Temp;
			 Flag = 1;
			 break;
		     }
		 }
	     }
	     else  for (k = 0; k < strlen(Massiv[i+1].returnName); k++)
		   {
		       if (Massiv[i].returnName[k] > Massiv[i+1].returnName[k])
		       {
			   Temp = Massiv[i];
			   Massiv[i] = Massiv[i + 1];
			   Massiv[i + 1] = Temp;
			   Flag = 1;
			   break;
		       }
		   }
	 }
	 kol_books--;
     } while (Flag);
     cout << "*********************************************************" << endl;
     cout << "* Name books\t" ;
     cout << "| Autor books\t" ;
     cout << "| kol-vo str\t" ;
     cout << "| Year  *" << endl;
     cout << "*_______________________________________________________*" << endl;
     for (i = 0; i < n; i++)
     {
	 cout << "*" ;
         Massiv[i].outName;
         cout << "\t\t" ;
	 cout << "|" ;
         Massiv[i].outAvtor;
         cout << "\t\t" ;
	 cout << "|" ;
         Massiv[i].outKol_str;
         cout << "\t\t" ;
	 cout << "|" ;
         Massiv[i].outYear;
         cout << "\t*" << endl;
	 cout << "*_______________________________________________________*" << endl;
     }
     getch();
}

Books::Books (char* Name, char* Avtor, int kol_vo, int year)
{
    strcpy(itsName,Name);
    strcpy(itsAvtor,Avtor);
    itsKol_str = kol_vo;
    itsYear = year;
}



void Books::inName ()
{
    cout << "Vvedite nazvanie knigi" << endl;
    cin >> itsName;
}

void Books::inAvtor ()
{
    cout << "Vvedite im'a avtora" << endl;
    cout.flush();
    cin >> itsAvtor;
}

void Books::inKol_str ()
{
    char* str;
    cout << "Vvedite Kol-vo stranic" << endl;
    cin >> str;
    itsKol_str = atoi(str);
}

void Books::inYear ()
{
    char* str;
    cout << "Vvedite god izdani'a" << endl;
    cin >> str;
    itsYear = atoi(str);
}
собственно !!! вопрос как можно передать в функцию void Sort_i_vivod () член itsName для обработок!!! или подскажите как просто исправить мою программу так как функция void Sort_i_vivod () не работает!!! И почему мой метод не работает????
Заранее всех благодарю!!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 20.03.2009, 18:19   #2
Strogg
Пользователь
 
Аватар для Strogg
 
Регистрация: 19.03.2009
Сообщений: 13
По умолчанию

Код:
#include "stdafx.h"
#include <iostream>
#include <stdio.h> 
using namespace std;

int main(int argc, char* argv[])
{
     char* FileName;
     cin >> FileName;
     printf("%s\n", FileName);
     cout << FileName;
     return 0;
}
Это тоже выдаёт ошибки времени выполнения.
Используй std со строками string, либо старые добрые gets, scanf cо строками char*.

Последний раз редактировалось rpy3uH; 20.03.2009 в 20:24.
Strogg вне форума Ответить с цитированием
Старый 20.03.2009, 18:21   #3
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,497
По умолчанию

Да дело не в видимости !!!! дело в функции void Sort_i_vivod ()!!! И тем более что ошибка у меня не времени выполнения, а компиляции!!!!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 20.03.2009, 18:25   #4
Strogg
Пользователь
 
Аватар для Strogg
 
Регистрация: 19.03.2009
Сообщений: 13
По умолчанию

Сообщения компилятора приведи...
Strogg вне форума Ответить с цитированием
Старый 20.03.2009, 18:29   #5
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,497
По умолчанию

я ща не дома !! ну что -то вроде того, что strlen(Massiv[i].returnName и Massiv[i].returnName[k] использовать нельзя!!! а можно было бы конечно
открыть все члены, но нельзя надо только методами!!!!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 20.03.2009, 18:32   #6
Strogg
Пользователь
 
Аватар для Strogg
 
Регистрация: 19.03.2009
Сообщений: 13
По умолчанию

Massiv[i].returnName - адрес функции-метода,
Massiv[i].returnName() - сам вызов,
Massiv[i].returnName[k] - попытка получить непонятно что...
Strogg вне форума Ответить с цитированием
Старый 20.03.2009, 18:34   #7
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,497
По умолчанию

Massiv[i].returnName[k] попытка получить символ из строки!! как можно по другому
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 20.03.2009, 18:36   #8
Am1r
Пользователь
 
Регистрация: 19.03.2009
Сообщений: 13
По умолчанию

как я понимаю, то в функции menu() у тебя объявляется экземпляр класса Books. Если так, то тебе нужно просто добавить параметр в функцию void Sort_i_vivod (char* _itsName ) (допустим, что так) и когда вызываешь функцию, передать указатель в эту функцию.

кстати, лучше весь код выложи...
Am1r вне форума Ответить с цитированием
Старый 20.03.2009, 18:39   #9
Strogg
Пользователь
 
Аватар для Strogg
 
Регистрация: 19.03.2009
Сообщений: 13
По умолчанию

Massiv[i].returnName()[k] попробуй
Strogg вне форума Ответить с цитированием
Старый 20.03.2009, 18:39   #10
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,497
По умолчанию

нет!! В меню у меня только считывание кодов клавишь!!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 20000 рублей в месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться Toxass Общие вопросы Delphi 2 18.12.2008 16:57
Помогите разобраться Proof БД в Delphi 13 19.05.2008 09:59


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS