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

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

  1. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Иногда бывает полезным (для VC) запустить батничек с параметрами
    Код (Text):
    1. cl.exe /? > opts.txt
    и почитать opts.txt,
    а затем скомпилить сорец (с/cpp) 2мя разными способами (для my.c)
    Код (Text):
    1. cl.exe /FAs /Famy.asm my.c
    и
    Код (Text):
    1. cl.exe /FAs /Famy.asm /O2 /Ox my.c
    Первый способ выдаст нам написанный как бы нубом/новичком асм листинг - он лёгок для понимания и изучения.
    Второй же выдаст хорошо оптимизированный, по меркам используемого компилятора, ассемблерный листинг, хороший для конечной модернизации и последующей оптимизации.
    // кстати так и проверил/освежил в памяти) самостийно >> (sar и shr), а также ~(not).
     
  2. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Я не могу компилировать пока:), но и сведению принято
    У меня есть только написанный мной кусок кода, в котором довольно не простые для меня циклы(хотя я сам их и написал:)
    Процедуру регистрации повторяю ;)
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    twgt
    Тогда надо было спрашивать "как на си написать следующие команды".
     
  4. y4eNick

    y4eNick New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2007
    Сообщения:
    37
    Существует ли меотд для объекта cin, что бы он вводимые символы заменял звёздочками (
    как это делают эдиты со стилем ES_PASSWORD)?
     
  5. y4eNick

    y4eNick New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2007
    Сообщения:
    37
    Попробавал так:
    Код (Text):
    1. // GLOBALS
    2.  
    3. char pass[10];
    4.  
    5. // Functions
    6. int inpass(char* buff, int size)
    7. {
    8.      HANDLE stin;
    9.      HANDLE stout;
    10.      DWORD  read;
    11.      char   ch;
    12.      
    13.      stin  = GetStdHandle(STD_INPUT_HANDLE);
    14.      stout = GetStdHandle(STD_OUTPUT_HANDLE);
    15.      
    16.      int i = 0;
    17.      while (i < size)
    18.      {
    19.          ReadConsole(stin,&ch,1,&read,0);
    20.          if(ch==0xD)break;
    21.          WriteConsole(stout,"*",1,&read,0);
    22.          *buff = ch;
    23.          buff++;
    24.          i++;
    25.      }
    26.  
    27.      return 0; 
    28. }
    29.  
    30.  
    31. // MAIN
    32.  
    33. int main(int argc, char* argv[])
    34. {
    35.  
    36.     cout << "Enter password :";
    37.     inpass(pass,10);
    38.     cout << endl << pass << endl;
    39.  
    40.     return 0;
    41. }
    На выходе:
    Почему так получается?
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ReadConsole дублирует символ на экране кажется..

    смотри в сторону SetConsoleMode:

    ENABLE_LINE_INPUT The ReadFile or ReadConsole function returns only when a carriage return character is read. If this mode is disabled, the functions return when one or more characters are available.
    ENABLE_ECHO_INPUT Characters read by the ReadFile or ReadConsole function are written to the active screen buffer as they are read. This mode can be used only if the ENABLE_LINE_INPUT mode is also enabled.
     
  7. y4eNick

    y4eNick New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2007
    Сообщения:
    37
    Great, спасибо.

    Так работает:
    Код (Text):
    1. int inpass(char* buff, int size)
    2. {
    3.          HANDLE stin,stout;
    4.      DWORD  read,mode;
    5.      char   ch;
    6.      
    7.          stin   = GetStdHandle(STD_INPUT_HANDLE);
    8.      stout  = GetStdHandle(STD_OUTPUT_HANDLE);
    9.  
    10.      GetConsoleMode(stin,&mode);
    11.      SetConsoleMode(stin,0);
    12.  
    13.      int i = 0;
    14.      while (i < size+1)
    15.      {
    16.              ReadConsole(stin,&ch,1,&read,0);
    17.          if(ch==0xD)break;
    18.          WriteConsole(stout,"*",1,&read,0);
    19.          *buff = ch;
    20.          buff++;
    21.          i++;
    22.      }
    23.  
    24.      SetConsoleMode(stin,mode);
    25.      if(ch != 0xD){return 0;}    
    26.          
    27.      return i; 
    28. }
     
  8. y4eNick

    y4eNick New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2007
    Сообщения:
    37
    По ходу возник ещё вопрос:

    если написать так:
    комилер ругается:
    а если :
    Всё good. В чём принципиальная разница?
     
  9. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ни в чем.. это две абсолютно одинаковые строки )))
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    y4eNick
    в iostream.h нету пространства имен std.
    в iostream есть. там все по стандарту.

    соотв. примеры:

    Код (Text):
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. void main(){ cout << "Hello, World!" << endl; }
    Код (Text):
    1. #include <iostream.h>
    2.  
    3. void main(){ cout << "Hello, World!" << endl; }
    Первый экзампл переносимый, второй - нет
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    что то до меня не доходит разница.
     
  12. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    Подскажите, пожалуйста, как правильней переконвертить строку с hexом в число? а строку с decом? (без исп StrToInt, если возможно).
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    itoa, atoi, ..
     
  14. dezziness

    dezziness New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2007
    Сообщения:
    2
    Все привет. У меня возникла проблема с дружественными функциями.
    Код (Text):
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. class myclass{
    5. private:
    6. int a;
    7. char b;
    8. public:
    9. myclass(int a1=0, char b1='g');
    10. friend ostream& operator<<(ostream & os, const myclass& tempo);
    11. };
    12.  
    13.  
    14. myclass::myclass(int a1, char b1)
    15. {
    16. a=a1;
    17. b=b1;
    18. }
    19.  
    20.  
    21. ostream & operator<<(ostream & os,const myclass & tempo)
    22. {
    23. os<<tempo.a;
    24. return os;
    25. }
    26.  
    27.  
    28. int main()
    29. {
    30. myclass test(5,'t');
    31.  
    32. return 0;
    33. }
    При компиляции выдает:
    D:\C++\classes.cpp(23) : error C2248: 'a' : cannot access private member declared in class 'myclass'

    Почему нет доступа к переменной "а", ведь функция - дружественная?

    Пробовал в MSVS 2003 и 2005.
     
  15. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Код (Text):
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. class myclass;
    5. ostream & operator<<(ostream & os,const myclass & tempo);
    6.  
    7. class myclass
    8. {
    9.     friend ostream& operator<<(ostream & os, const myclass& tempo);
    10.  
    11. private:
    12.     int a;
    13.     char b;
    14.  
    15. public:
    16.     myclass(int a1=0, char b1='g');
    17. };
    прототип надо делать
     
  16. y4eNick

    y4eNick New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2007
    Сообщения:
    37
    Это считается разными файлами????
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    y4eNick
    вообще-то да
     
  18. dezziness

    dezziness New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2007
    Сообщения:
    2
    iostream.h - более старая реализация.
     
  19. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    dezziness
    ну не совсем более старая, хотя ты прав. вообщем лучше использовать iostream
     
  20. progstone

    progstone New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2007
    Сообщения:
    14
    nitrotoluol
    int **p1 = new int [x][y]; так это двумерный массив
    а так int **p1 = new int *[x]; а так одномерный массив указателей на инт