Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > [c++]Вопросы по классам.


Автор: atomlex 23.12.2009, 20:03
Пишу на ms visual c++ 6
Оконное приложение.Первая кнопка читает текстовый файл и выводит слова в первый эдитбокс.
Вторая должна отсортровать эти слова по алфавиту методом выбора и записать в новый файл.
Вопрос в чем, если слова читаемые из файла остаются в эдитбоксе, т.е. в буфере, их можно взять и отсортировать, т.е. не прибегая к повторному чтению файла во время сортировки.Как это на частном случае сдеать?
И второй вопрос, куда прописать по-человечески фунции Sort() и main() из второй кнопки.Компил на них естественно ругается.
Спасибо.
Код

void CKursrabDlg::OnButton1() 
 
//Чтение файла и вывод на первый бокс
{
        char str[100];
        char Filter []="TextFile(*.txt),(*.doc) | *.txt; *.doc all(*.*) | *.*||";
        CFileDialog fd(TRUE, ".txt", "ReadMe", OFN_HIDEREADONLY, Filter);
//      fd. DoModal();
        if(fd.DoModal()==IDOK)  
        {
        CFile f;
        f.Open(fd.GetPathName(), CFile:: modeRead);
        f.SeekToBegin();
 
        //m_str - первый бокс, куда выводится данные из читаемого файла
int z = f.Read(str, sizeof(str));
str [z] = '\0';
        m_str.Format(str); 
        UpdateData(0);
        f.Close();                      
 
        }
}
 
void CKursrabDlg::OnButton2()
{
        // Кнопка сортировка текста по алфавиту выбором
 
 
void Sort(char *a[], int size )
{
int i,j,min;
 
char *k;
k = new char[1024];
 
 
for (i=0;i<size-1;i++)
{
        min=i;
           for(j=i+1; j<size; j++)
                   if(strcmp(a[j], a[min])>0)
                           min=j;
}
        k = a[min];
                a[min]=a[i];
                a[i]=k;
 
}
 
void main(int argc, char* argv[])
{
        int i,n;
        char mas;
 
 
for (i=0; i<n; i++)
  printf("%5s", mas[i]);
   printf("/n");
Sort(char **mas, int i);
  for (i=0; i<n; i++)
    printf ("%5s", mas[i]);
 
 
}
 
 
 
 
}

Автор: cristaloleg 23.12.2009, 21:03
Цитата
куда прописать по-человечески фунции Sort() и main()


В классе
Код

void CKursrabDlg::Sort(char *a[], int size )) 

Автор: atomlex 23.12.2009, 22:16
Куда именно в классе прописать?)

Автор: cristaloleg 24.12.2009, 12:00
В хедере
Код

class CKursrabDlg
{
    //.......
    void Sort(char *a[], int size );
    //......
}

Автор: atomlex 25.12.2009, 15:52
спасибо)
теперь при компиляции выдает ошибки
Код

 error C2601: 'Sort' : local function definitions are illegal
 error C2601: 'main' : local function definitions are illegal



Код

void CKursrabDlg::OnButton2()
{
    // Кнопка сортировка текста по алфавиту выбором



void CKursrabDlg::Sort(char *a[], int size )
{
int i,j,min;

char *k;
k = new char[1024];


for (i=0;i<size-1;i++)
{
    min=i;
       for(j=i+1; j<size; j++)
           if(strcmp(a[j], a[min])>0)
               min=j;
}
        k = a[min];
        a[min]=a[i];
        a[i]=k;

}

void CKursrabDlg::main(int argc, char* argv[])
{
    int i,n;
    char mas;


for (i=0; i<n; i++)
  printf("%5s", mas[i]);
   printf("/n");
Sort(char **mas, int i);
  for (i=0; i<n; i++)
    printf ("%5s", mas[i]);


}


}

Автор: cristaloleg 25.12.2009, 15:54
что то неправильно объявил
http://msdn.microsoft.com/en-us/library/sba3hty9%28VS.71%29.aspx

Автор: mes 25.12.2009, 16:17
Цитата(atomlex @  25.12.2009,  14:52 Найти цитируемый пост)
теперь при компиляции выдает ошибки

поставьте } в 4й строке

Автор: atomlex 27.12.2009, 19:39
Цитата(mes @ 25.12.2009,  16:17)
Цитата(atomlex @  25.12.2009,  14:52 Найти цитируемый пост)
теперь при компиляции выдает ошибки

поставьте } в 4й строке

можете объяснить что это меняет?
поставил, появились другие ошибки)

Автор: mes 27.12.2009, 19:59
Цитата(atomlex @  27.12.2009,  18:39 Найти цитируемый пост)
можете объяснить что это меняет?

ну так у Вас функция CKursrabDlg::OnButton2() открывается , но не закрывается smile

Цитата(atomlex @  27.12.2009,  18:39 Найти цитируемый пост)
поставил, появились другие ошибки) 

ну тут телепатов нет, показывайте какие ошибки...
могу лишь предположить что не в ту 4ю строчку поставили скобку smile

Автор: atomlex 27.12.2009, 20:05
Код

void CKursa4Dlg::OnButton2() 
{

    // Кнопка сортировка текста по алфавиту выбором

void CKursa4Dlg::Sort(char *a[], int size )
{
int i,j,min;

char *k;
k = new char[1024];


for (i=0;i<size-1;i++)
{
    min=i;
       for(j=i+1; j<size; j++)
           if(strcmp(a[j], a[min])>0)
               min=j;

        k = a[min];
        a[min]=a[i];
        a[i]=k;
}
}

void CKursa4Dlg::main(int argc, char* argv[]);
{


 int sizem;
char* m;

Sort(char *m, int sizem);

}
}






Код

 error C2601: 'Sort' : local function definitions are illegal
error C2144: syntax error : missing ')' before type 'char'
error C2660: 'Sort' : function does not take 0 parameters
error C2059: syntax error : ')'


Непонятно, почему так ругается на ")", и как с Sort() поступить.

Автор: cristaloleg 27.12.2009, 20:14
может проблема в том что Вы описываете функции в функции???

Автор: atomlex 27.12.2009, 20:34
М.Как их тогда отдельно описать?

Автор: mes 28.12.2009, 02:03
Цитата(atomlex @  27.12.2009,  19:34 Найти цитируемый пост)
М.Как их тогда отдельно описать? 

а если немножко внимательности ? Вам и название функции сказали в которой ошибка, и какая именно ошибка..
осталось только пальцем ткнуть   smile 

Цитата

Код

void CKursa4Dlg::OnButton2() 
{   <-------------------------// НАЧАЛО БЛОКА
    // Кнопка сортировка текста по алфавиту выбором

  <-------------------------// А ГДЕ КОНЕЦ ???

void CKursa4Dlg::Sort(char *a[], int size )
{
int i,j,min;



Автор: atomlex 28.12.2009, 21:58
Теперь проблема с вызовом функции Sort().Как вызвать функцию сортировки и отсортировать массив строк прочитанный первой кнопкой?Такие вот вопросы..
Код

error C2144: syntax error : missing ')' before type 'char'
error C2660: 'Sort' : function does not take 0 parameters
error C2059: syntax error : ')'

Автор: mes 28.12.2009, 23:06
Цитата(atomlex @  28.12.2009,  20:58 Найти цитируемый пост)
Теперь проблема с вызовом функции Sort().Как вызвать функцию сортировки и отсортировать массив строк прочитанный первой кнопкой?Такие вот вопросы..


вызов  происходит без указания типов.. а иначе это определение функции.


а вообще лучше перед началом почитать книжку по основам cpp и разобраться с ними.. 



P.S. у Вас еще в конце кода непонятно кому принадлежащая вторая закрывающая скобка.

желательно уделять время  форматированию кода, тогда вопросы о лишних/недостающих скобках исчезнут сами собой

Автор: atomlex 28.12.2009, 23:18
Все-таки нужно было ходить на лекции по методам программирования.
Спасибо за помощь..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)