Тут размещают свои топики новички в С/С++.

Тема в разделе "LANGS.C", создана пользователем nitrotoluol, 4 мар 2007.

  1. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    При чём тут предупреждения?

    Генерация кода после препроцессора есть в любом компиляторе, это-то как раз и нужно.
     
  2. voo

    voo New Member

    Публикаций:
    0
    Регистрация:
    3 май 2010
    Сообщения:
    5
    int XPutPixel(XImage *ximage, int x, int y, unsigned long pixel);
    тут учавствует XImage тип, а у меня обычный экран (как пример обычная функция для рисования черной точки int XDrawPoint(Display *display, Drawable d, GC gc, int x, int y); ) я не понимаю что тут можно сделать=(
     
  3. voo

    voo New Member

    Публикаций:
    0
    Регистрация:
    3 май 2010
    Сообщения:
    5
    ладно, отбой, я по другому сделал
     
  4. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Как правильно организовать метод добавления нового имя и номера в телеф.справочник?
    Пыталась сделать так, но неправильно получается: (фрагмент кода)
    Код (Text):
    1.      void telephonebook::new_nomer(telephonebook * ob)
    2.    {char st[80];int q;
    3.     cout<<"vvedite name i nomer:"<<"\n";
    4.  
    5.  
    6.       for( i=0; i<1; i++)
    7.  
    8.   {gets (st);
    9.   ob[i].set_name(st);
    10.   cin>>q;
    11.   ob[i].set_nomer(q);}
    12.  
    13.     for(i=0;i<=k;i++)
    14.   cout<<"\n"<<ob[i].get_name()<<"  "<<ob[i].get_nomer();
    15.   getch();
    16.  
    17.  
    18.  
    19.  
    20.  
    21.     }  ;
    22.  
    23.  
    24.  
    25.   void main()
    26.   {
    27.  
    28.  
    29.   char str[10];
    30.   int b;
    31.   telephonebook obj[k];
    32.  
    33.   cout<<"vvedite name i nomer:"<<"\n";
    34.  
    35.  
    36.   for( i=0; i<k; i++)
    37.  
    38.   {gets (str);
    39.   obj[i].set_name(str);
    40.   cin>>b;
    41.   obj[i].set_nomer(b);
    42.   }
    43.   for(i=0;i<k;i++)
    44.   cout<<"\n"<<obj[i].get_name()<<"  "<<obj[i].get_nomer();
    45.   getch();
    46.  
    47.  
    48.  
    49.  
    50.   char ch,f[6];
    51.       while (ch!='5')
    52.       {
    53.       cout<<"\n"<<"  menu:"<<"\n";
    54.       cout<<"1-poisk"<<"\n";
    55.       cout<<"2-sort"<<"\n";
    56.       cout<<"3-udalenie"<<"\n";
    57.       cout<<"4-dobavlenie"<<"\n";
    58.       cout<<"5=vichod"<<"\n";
    59.        ch=getch();
    60.        switch(ch)
    61.        {
    62.     case '1': obj[i].search_nomer(obj); break;
    63.     case '2': obj[i].sort_name(obj); break;
    64.     case '3': obj[i].delet_nomer(obj); break;
    65.     case '4': obj[i].new_nomer(obj); break;
    66.     };
    67.     };
    68.   }
     
  5. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Luna
    Ваша программа не компилируется. ^)
     
  6. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Booster
    это не программа, это-её часть ;р
     
  7. 4ygynOK

    4ygynOK New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2010
    Сообщения:
    5
    Помогите в написании программы: смотрите в основном 3-ий кейз в нём необходимо взять текст из файла и его зашифровать по ксору наложением ключа:

    Код (Text):
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <iostream.h>
    4. #include <stdlib.h>
    5.  
    6. void main(void){
    7.     //Âîçìîæíîñòü ñàìîìó ïèñàòü íåêîòîîðîé òåêñò â ôàéë ëèáî èñïîëüçîâàòü óæå èìåþùèéñÿ
    8.           FILE *file;
    9.           char* file_name = "file.txt";
    10.       int sch;
    11.         printf ("Vvedite nomer neobxodimou operacii:\n\n");
    12.         printf("1. Vvedenie texta c klaviatyry.\n2. Ispolzovanie gotovogo texta. \n3. Shifrotext");
    13.         printf("Number: ");
    14.         scanf("%d",&sch);
    15.         switch(sch){
    16.        
    17.         case 1:
    18.            
    19.                 char ch;
    20.                 file = fopen( file_name, "w" );
    21.                 printf("Vvedite shifryemyu text:\n");
    22.                 scanf("%c",&ch);
    23.                
    24.                     do {
    25.                         ch=getchar();
    26.                         putc(ch, file);
    27.                         }while(ch!='$');
    28.                
    29.                     fclose(file);
    30.            
    31.         break;
    32.        
    33.         case 2:
    34.        
    35.             file = fopen( file_name, "r" );
    36.             if(file!=NULL){
    37.             printf("Text iz fila:\n");
    38.             ch=getc(file);
    39.                 while (ch!=EOF){
    40.                     putchar(ch);
    41.                     ch=getc(file);
    42.                 }
    43.                     printf("\n");
    44.             }
    45.             else{
    46.                 printf("File not found !!!\n");
    47.             }
    48.         fclose(file);
    49.         break;
    50.             case 3:
    51.  
    52.     char *d_vxod;
    53.     char *d_rez;
    54.     int i=0;
    55.  
    56.     d_vxod=new char [1000];
    57.     if (d_vxod<=0){
    58.         printf("Error!!!");
    59.     }
    60.     d_rez=new char [1000];
    61.     if (d_rez<=0){
    62.         printf("Error!!!");
    63.     }
    64.    
    65.     union Char4un {        
    66.               unsigned char  k[16]; };
    67.     union Char4un key;
    68.     key.k[0]=0x01;
    69.     key.k[1]=0x23;
    70.     key.k[2]=0x45;
    71.     key.k[3]=0x67;
    72.     key.k[4]=0x89;
    73.     key.k[5]=0xAB;
    74.     key.k[6]=0xCD;
    75.     key.k[7]=0xEF;
    76.     key.k[8]=0x00;
    77.     key.k[9]=0x11;
    78.     key.k[10]=0x22;
    79.     key.k[11]=0x33;
    80.     key.k[12]=0x44;
    81.     key.k[13]=0x55;
    82.     key.k[14]=0x66;
    83.     key.k[15]=0x77;
    84.     file = fopen( file_name, "r" );
    85.             if(file!=NULL){
    86.             printf("Text iz fila:\n");
    87.                            
    88.                     for (int j=0;j<sizeof(d_vxod);j++){
    89.                         d_vxod[j]=getc(file);
    90.                         for (int s=0;s<sizeof(key.k);s++){
    91.                             d_vxod[j]=d_vxod[j]^key.k[s];
    92.                        
    93.                         putchar(d_vxod[j]);
    94.                         d_vxod[j]=getc(file);
    95.                         }
    96.                                
    97.             }
    98.                 delete d_vxod;
    99.                 delete d_rez;
    100.                 printf("\n");
    101.             }
    102.             else{
    103.                 printf("File not found !!!\n");
    104.             }
    105.         fclose(file);
    106.                
    107.     break;
    108.         }
    109. }
     
  8. Noga

    Noga New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2008
    Сообщения:
    92
    4ygynOK

    sizeof(d_vxod) = 4
     
  9. osox

    osox New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2009
    Сообщения:
    280
    sizeof(sometype*) == system dependent

    на днях из за этого уже не первый раз поймал heisenbug под отладчиком все работает без отладчика падает :)) и снова из за того же самого вместо типа передал указатель в sizeof внимательнее надо быть хорошо я быстро нашел :)
     
  10. Oleg_SK

    Oleg_SK Guest

    Публикаций:
    0
    Помогите, плиз, вынести классы в отдельные файлы. Сейчас программа выглядит так:
    Код (Text):
    1. //virtual.h
    2.  
    3. class One
    4. {
    5. public:
    6.     One(){};
    7.     virtual ~One();
    8.     virtual void TellMe()=0;
    9. protected:
    10.    
    11. private:
    12.    
    13. };
    14.  
    15. class Two: public One
    16. {
    17. public:
    18.     ~Two();
    19.     virtual void TellMe();
    20. protected:
    21.  
    22. private:
    23.  
    24. };
    25.  
    26. class Three: public One
    27. {
    28. public:
    29.     ~Three();
    30.    
    31. protected:
    32.     virtual void TellMe();
    33.  
    34. private:
    35.  
    36. };
    Код (Text):
    1. //virtual.cpp
    2.  
    3. #include "stdafx.h"
    4. #include <iostream>
    5. #include ".h"
    6.  
    7. using namespace std;
    8.  
    9. One::~One()
    10. {
    11.     cout << "!!!" << endl;
    12. }
    13.  
    14. Two::~Two()
    15. {
    16.     cout << "Two::destructor" << endl;
    17. }
    18.  
    19. void Two::TellMe()
    20. {
    21.     cout << "Two::TellMe" << endl;
    22. }
    23.  
    24. Three::~Three()
    25. {
    26.     cout << "Three::destructor" << endl;
    27. }
    28.  
    29. void Three::TellMe()
    30. {
    31.     cout << "Three::TellMe" << endl;
    32. }
    33.  
    34. int _tmain(int argc, _TCHAR* argv[])
    35. {
    36.     const int size=10;
    37.     One* arrey[size];
    38.     for(int i=0; i<size; i+=2)
    39.     {
    40.         arrey[i]=new Two;
    41.         arrey[i+1]=new Three;
    42.     }
    43.  
    44.     Three* temp;
    45.     for(int i=0; i<size; ++i)
    46.     {
    47.        
    48.         //temp = dynamic_cast<Three*>(arrey[i]);
    49.         //if(temp!=NULL)
    50.         //{
    51.         //  cout << "Three object...\n";
    52.         //  temp->TellMe();
    53.         //}
    54.  
    55.         arrey[i]->TellMe();
    56.     }
    57.    
    58.     cout << endl;
    59.  
    60.     for(int i=0; i<size; ++i)
    61.     {
    62.         delete arrey[i];
    63.     }
    64.  
    65.     cout << endl;
    66.    
    67.     int y;
    68.     cin >> y;
    69.     return 0;
    70. }
    Хочу выделить классы в отдельные файлы, но что-то не получается (лезут непонятные ошибки)... Делаю так:

    Код (Text):
    1. //One.h
    2.  
    3. class One
    4. {
    5. public:
    6.     One(){};
    7.     virtual ~One();
    8.     virtual void TellMe()=0;
    9. protected:
    10.    
    11. private:
    12.    
    13. };
    Код (Text):
    1. //One.cpp
    2.  
    3. #include <iostream>
    4. #include "One.h"
    5.  
    6. using namespace std;
    7.  
    8. One::~One()
    9. {
    10.     cout << "!!!" << endl;
    11. }
    Код (Text):
    1. //Two.h
    2.  
    3. #include "One.h"
    4.  
    5. class Two: public One
    6. {
    7. public:
    8.     ~Two();
    9.     virtual void TellMe();
    10. protected:
    11.  
    12. private:
    13.  
    14. };
    Код (Text):
    1. //Two.cpp
    2.  
    3. #include <iostream>
    4. #include "Two.h"
    5.  
    6. using namespace std;
    7.  
    8. Two::~Two()
    9. {
    10.     cout << "Two::destructor" << endl;
    11. }
    12.  
    13. void Two::TellMe()
    14. {
    15.     cout << "Two::TellMe" << endl;
    16. }
    Код (Text):
    1. //Three.h
    2.  
    3. #include "One.h"
    4.  
    5. class Three: public One
    6. {
    7. public:
    8.     ~Three();
    9.     virtual void TellMe();
    10.    
    11. protected:
    12.  
    13. private:
    14.  
    15. };
    Код (Text):
    1. //Three.cpp
    2.  
    3. #include <iostream>
    4. #include "Three.h"
    5.  
    6. using namespace std;
    7.  
    8. Three::~Three()
    9. {
    10.     cout << "Three::destructor" << endl;
    11. }
    12.  
    13. void Three::TellMe()
    14. {
    15.     cout << "Three::TellMe" << endl;
    16. }
    Код (Text):
    1. //virtual.cpp
    2.  
    3. #include "stdafx.h"
    4. #include <iostream>
    5. #include "One.h"
    6. #include "Two.h"
    7. #include "Three.h"
    8.  
    9. using namespace std;
    10.  
    11. int _tmain(int argc, _TCHAR* argv[])
    12. {
    13.     const int size=10;
    14.     One* arrey[size];
    15.     for(int i=0; i<size; i+=2)
    16.     {
    17.         arrey[i]=new Two;
    18.         arrey[i+1]=new Three;
    19.     }
    20.  
    21.     //Three* temp;
    22.     for(int i=0; i<size; ++i)
    23.     {
    24.         //temp = dynamic_cast<Three*>(arrey[i]);
    25.         //if(temp!=NULL)
    26.         //{
    27.         //  cout << "Three object...\n";
    28.         //  temp->TellMe();
    29.         //}
    30.                          
    31.         arrey[i]->TellMe();
    32.     }
    33.  
    34.     cout << endl;
    35.  
    36.     for(int i=0; i<size; ++i)
    37.     {
    38.         delete arrey[i];
    39.     }
    40.  
    41.     cout << endl;
    42.  
    43.     int y;
    44.     cin >> y;
    45.     return 0;
    46. }
    Хотелось бы узнать: что я делаю не так?

    P.S: Использую Visual Studio 2010.
     
  11. Oleg_SK

    Oleg_SK Guest

    Публикаций:
    0
    Поправка: во втором листинге с верху вместо #include ".h" стоит #include "virtual.h".
     
  12. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Oleg_SK
    В .h файлах других классов не используйте #include
    Код (Text):
    1. //Three.h
    2.  
    3. #include "One.h"
    вместо этой жести используйте следующее:
    Код (Text):
    1. //Three.h
    2.  
    3. class One;
    так же с другими классами. (кроме One естественно).
     
  13. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Oleg_SK
    организация хидеров такая
    Код (Text):
    1. #ifndef название_хидера
    2. #define название_хидера
    3.  
    4. здесь объявления
    5.  
    6. #endif
    если в винде, то можно просто в начале файла так
    #pragma once
    дальше не смотрел
     
  14. Oleg_SK

    Oleg_SK Guest

    Публикаций:
    0
    TermoSINteZ
    OK, заменил, но прога все равно не компилится... Ругань следующая:
    1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\sysfiles\sysfiles\two.cpp(2): warning C4627: '#include <iostream>': skipped when looking for precompiled header use
    1> Add directive to 'StdAfx.h' or rebuild precompiled header
    1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\sysfiles\sysfiles\two.cpp(3): warning C4627: '#include "Two.h"': skipped when looking for precompiled header use
    1> Add directive to 'StdAfx.h' or rebuild precompiled header
    1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\sysfiles\sysfiles\two.cpp(16): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?
    1> Three.cpp
    1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\sysfiles\sysfiles\three.cpp(2): warning C4627: '#include <iostream>': skipped when looking for precompiled header use
    1> Add directive to 'StdAfx.h' or rebuild precompiled header
    1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\sysfiles\sysfiles\three.cpp(3): warning C4627: '#include "Three.h"': skipped when looking for precompiled header use
    1> Add directive to 'StdAfx.h' or rebuild precompiled header
    1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\sysfiles\sysfiles\three.cpp(16): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?
    1> One.cpp
    1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\sysfiles\sysfiles\one.cpp(2): warning C4627: '#include <iostream>': skipped when looking for precompiled header use
    1> Add directive to 'StdAfx.h' or rebuild precompiled header
    1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\sysfiles\sysfiles\one.cpp(3): warning C4627: '#include "One.h"': skipped when looking for precompiled header use
    1> Add directive to 'StdAfx.h' or rebuild precompiled header
    1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\sysfiles\sysfiles\one.cpp(11): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?

    Просто ради эксперимента попробовал добавить в файлы One.cpp, Two.cpp и Three.cpp строку #include "StdAfx.h. После этого ругань стала другой:
    1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\sysfiles\sysfiles\two.h(4): error C2504: 'One' : base class undefined
    1> Three.cpp
    1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\sysfiles\sysfiles\three.h(4): error C2504: 'One' : base class undefined
     
  15. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Oleg_SK
    заинклюдь свои дела в StdAfx.h
    и оформи их как я писал выше.
    и включая в программу заместо них StdAfx.h
    это чисто мс фича, называется прекомпелируемые хидеры.
    можно их отключить в параметрах проекта.
     
  16. Oleg_SK

    Oleg_SK Guest

    Публикаций:
    0
    TermoSINteZ
    wsd
    OK, все получилось. Благодарю за помощь!

    P.S: Файлы iostream, One.h, Two.h и Three.h я заинклюдил в файле StdAfx.h. Из своих cpp-файлов я эти инклюды убрал, заменив их во всех этих файлах на инклюд StdAfx.h.
     
  17. Vituskosoy

    Vituskosoy New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2009
    Сообщения:
    18
    Подскажите пожалуйста, пишу GUI-серверок на winsock, куда правильнее засунуть обработку новых подключений, как в примере Самоучитель игры на WINSOCK ?
     
  18. osox

    osox New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2009
    Сообщения:
    280
    Vituskosoy

    CreateIoCompletionPort
    GetQueuedCompletionStatus
    PostQueuedCompletionStatus

    подробное описание и рабочий пример
    в книге Рихтера WINDOWS via C/C++ измените немного пример
    и все там как раз пул реализован на iocp и подробное описание

    а вообще еще же есть встроенные пулы
    QueueUserWorkItem и другие API для работы со встроенным пулом он тожен на IOCP реализован его самое простое использовать

    описание API для работы со встроенным пулом опять же в
    WINDOWS via C/C++ плюс гугль можно поспращивать :)
     
  19. osox

    osox New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2009
    Сообщения:
    280
    Vituskosoy

    в GLIB есть пул потоков еще главный плюс кросплатформенный :)
     
  20. osox

    osox New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2009
    Сообщения:
    280
    и как бы все в главном потоке принимать подключения и передавать запросы в пул простой серверок получится