[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    О, ты не признаешь технологий?
    Я книжку отдажды читал, там был тип на тебя похожий, его Женей звали. Женя Базаров ;)

    именно так!
    Этого далеко недостаточно и на этом никуда не уедешь и дальше абстрактных задачек не продвинешься.

    Вот пример задачки(недавно делал): составить БД(ФИО юзверя|IP|MAC|порт на патч-панели|порт на коммутаторе) с автозаполнением IP и MAC через номер порта коммутатора. С одной стороны все просто, но с другой стороны без знания HTTP, HTML, SQL, SNMP хyй что сделаешь.
     
  2. Feonor

    Feonor Elder - Старейшина

    Joined:
    23 Jul 2008
    Messages:
    128
    Likes Received:
    52
    Reputations:
    19
    Ну если тебе важней успеть в срок то да конечно, только потом пользователь имеет кучу багов и недоделок. Тут нужно просто для себя выбрать либо быстро и сердито либо дольше(не всегда потому что нет нужды писать то что уже написано, особенно уже проверенные компоненты), но качественней.

    Вот! О чем и речь. Использовать готовые модули это не плохо, важно понимать что ты на копи пейстил. Потом прога накручивается и если делаешь и не понимаешь то в через неделю ваще не разберешся...
     
  3. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    2 nerezus
    все нормальные работодатели знают что брать спеца лучше с алгоритмической подготовкой а в MSDN он и сам глянет! Разное время на обучение специалистов!

    Давай я вам дам задачку (ЗАДАЧА РЕАЛЬНАЯ И МНЕ ПОХ ЧТО ТЫ ЧЕГО ТО ТАМ ДЕЛАЕШЬ С МАК И SQL) ... я вас понял обоих !

    ПОЭТОМУ ДАВАЙТЕ КА ПОНТАНИТЕСЬ
    Два массива A и B массивы представляют из себя базы с числом записей 10000, для упрощения скажу что там одно единственное поле уникальное ,но может встречаться и
    пробел который назовем пустым полем. Массив B образован путем ПЕРЕМЕШИВАНИЯ, УДАЛЕНИЯ, ВВОДА НОВЫХ. Скажу сразу порядок элементов является ВАЖНЫМ!

    Передавать базу ежедневно по сети - это не решение!
    Суть такова имея 2 массива создать МИНИМАЛЬНОЕ количество комманд синхронизации
    I(N) -вставка строки по номеру N со сдвигом всех нижних ниже
    D(N) -удаление строки с номером N cо сдвигом всех нижних вверх
    S(N,V) -вставка значений в строку N c перезаписью значения.

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

    Понятно что быдлокодер будет просто тупо передавать базу с ипользованием TCP 8)))) .... и не важно что он использует TCP главное что его задача с первого момента уже является ТРЭШОМ!
     
    #1343 Delimiter, 28 Jul 2008
    Last edited: 28 Jul 2008
    1 person likes this.
  4. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    Я тут бред какойта написал

    Читаю я книгу по С++ там был пример моделирования игры =)

    то пример сработал .. я решил немного его переделать и он перестал работать ....

    Code:
    #include <stdafx.h> 
    
    int roll(void); 
    void game(int& money,int stav); 
    
    int main(int argc, char *argv[])
    {
    	int bank = 1000;
    	int stavka;
    	setlocale(LC_ALL,"Russian"); 
    
    	std::cout << "Денег в банке: " << bank << std::endl;	
    	std::cout << "Делай ставку или уходи!(для ухода введите Ctrl+Z): ";
    
    	while((stavka = std::cin.get()) != EOF)
    	{
    		if(stavka > bank)
    		{
    			std::cout << "Ставка не верна! Введите ставку ещё раз: ";
    		} else {
    			game(bank,stavka);
    			std::cout << "Денег в банке:" << bank << std::endl;
    		
    			if(bank == 0)
    			{
    				std::cout << "Вы банкрот! Можете уходить." <<std::endl;
    				break;
    			} else {
    				std::cout	<< std::endl 
    				<< "Введите ставку для продолжения или Ctrl + Z для выхода: ";
    			}
    		}
    	}
    	return 0;
    }
    
    void game(int& money,int stav)
    {
    	enum Status { CONTINUE, WIN, LOST };
    	int sum,myPoint;
    	Status gameStat;
    
    	srand(time(NULL));
    	sum = roll();
    
    	switch(sum)
    	{
    		case 7: case 11:
    			gameStat = WIN;
    			break;
    		case 2: case 3: case 12:
    			gameStat = LOST;
    			break;
    		default:
    			gameStat = CONTINUE;
    			myPoint = sum;
    			std::cout << "Очки: " << myPoint << std::endl;
    			break;
    	}
    
    	while (gameStat == CONTINUE){
    		sum = roll();
    
    		if(sum == myPoint)
    			gameStat = WIN;
    		else if(sum == 7)
    			gameStat = LOST;
    	}
    
    	if(gameStat == WIN)
    	{
    		std::cout <<"Вы выйграли!!!" << std::endl;
    		money += stav;
    	}
    	else
    	{
    		std::cout <<"Вы проиграл!" << std::endl;
    		money -= stav;
    	}
    }
    
    int roll(void){
    	int sum1,sum2,all;
    
    	sum1 = 1 + rand() % 6;
    	sum2 = 1 + rand() % 6;
    	all = sum1 + sum2;
    	std::cout <<"Результат кидания: " << all << std::endl;
    	return all;
    }
    
    воть ... при запуске я ввожу ставку... например 100
    но она не берёт эту ставку а присваивает переменой stavka число 49(так и не понел откуда) потом он не спрашивая меня проходит ещё несколько кругов игры а потм вспоминает о том что надо ввести ставку =)

    Вот лог

     
  5. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    2Doom123
    49d = 31h = '1'
    те cin.get() берёт ввод в виде строки и не преобразует его к типу int ^_____^

    если Си++ пользуй cin >> stavka;
    Возможно у cin есть методы нормально преобразующие ввод, но я слабо знаком с плюсами.
    счас на мсдн посмотрел, вроде в cin.get() можно задавать параметры для интерпритации ввода. Погугли на эту тему )
     
    #1345 izlesa, 28 Jul 2008
    Last edited: 28 Jul 2008
    1 person likes this.
  6. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    итак, 2 массива строк(все значения уникальные) A и B? И имея A и B на одной машине, надо на другую послать набор комманд, чтобы она на той A превратила в B?
     
  7. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    не понял ничего из твоего поста ...
    ЗЫ #include <windows.h> там наверное все что тебе нужно ...
     
  8. _empty

    _empty Elder - Старейшина

    Joined:
    22 Mar 2008
    Messages:
    62
    Likes Received:
    17
    Reputations:
    5
    #include <windows.h>

    Апи функции: RegOpenKey, RegOpenKeyEx,RegSetValue, примеры использования можно найти в гугле или на мсдн
     
  9. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
  10. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Обьясните плз чайнику почему при копирование одного символа из строки за ним появляется мусор(в перемонной b)
    Code:
    main()
    {
    char *a=new char[100];
    char *b=new char[100];
    strcpy(a,"abcde");
    cout<<a<<endl;
    strncpy(b,a,1);
    printf("%s",b);
    getch();
    }
    
    а если добавить строчку memset(b,NULL,100); то все ОК :confused: Разве переменная сразу после её инициализации не является пустой????
     
  11. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    нет, автоматические переменные (память выделяется в стеке) при создании не обнуляются и там содержится мусор.
    Как и динамические массивы как в твоём примере (память выделяется в куче).
    Обнуляются только статические переменные (память в секции данных).
     
  12. SlyBit

    SlyBit Elder - Старейшина

    Joined:
    4 Jul 2008
    Messages:
    49
    Likes Received:
    8
    Reputations:
    0
    _nic

    вместо
    Code:
    char *a=new char[100];
    лучше используй
    Code:
    char *a = (char*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 100);
     
  13. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    2SlyBit
    не мешай человеку стандартную библиотеку изучать ^_____^
    нда, и с чего ты взял, что это он под винду кодит?
     
  14. SlyBit

    SlyBit Elder - Старейшина

    Joined:
    4 Jul 2008
    Messages:
    49
    Likes Received:
    8
    Reputations:
    0
    izlesa

    почитал его предыдущие посты ;)
     
  15. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Какие преимущества дает такая громоздкая конструкция?
     
  16. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    2_nic
    она эффективнее ) тк в конечном итоге функции из стандартной библиотеки вызывают ВинАПИ и в частности эту функцию.
    Хотя можешь не парится и использовать malloc ... всмысле new ^_____^
     
  17. SlyBit

    SlyBit Elder - Старейшина

    Joined:
    4 Jul 2008
    Messages:
    49
    Likes Received:
    8
    Reputations:
    0
    + обнуление памяти
     
  18. Patrik

    Patrik Elder - Старейшина

    Joined:
    15 Jan 2006
    Messages:
    42
    Likes Received:
    6
    Reputations:
    0
    Меня интересует, существуют ли какие-нибудь универсальные средства визуализации XML (XSD) на языке C(C++,C#), т.е. чтоб из xml-документа сделать графический, табличку, например, или массив табличек на листике.
     
  19. agrofyl2

    agrofyl2 New Member

    Joined:
    25 Apr 2008
    Messages:
    54
    Likes Received:
    4
    Reputations:
    0
    Здравствуйте. Научился я чуточку кодить на PHP, решил начать кодить на С++. Так вот пара вопросов. 1. Как осуществить конкатенцию строк. Как получить строку, которая выглядит на пхп так: $a="hello, $name";. 2. Как имитировать клик, двойной клик мыши. Ставим курсор, получаем ид. окна, пишем SendMessage(windid, LBUTTONDOWN... потом батон ап. Но при запуске проги получается просто как будто я нажал и держу кнопку мыши. Реализовать полный щелчек? Например нужно запустить прогу с раб. стола(дабл клик), или нажать на кнопку меню.
    Спасибо. Надеюсь все описал понятно и без ошибок-я с мобилы. Буду очень благодарен за помощь.
     
    #1359 agrofyl2, 7 Aug 2008
    Last edited: 8 Aug 2008
  20. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    1. char *strcat(char *dist, const char *src) - функция из стандартной библиотеки (объявляется в string.h) присоединяет src в конец dist. Нужно следить, чтобы в dist хватало места.

    2. Если приложение твоё, то проще послать соответствующее WM_COMMAND, ктр запускает обработчик нажатия буттона.

    имитация
    DBLCLICK - WM_LBUTTONDBLCLK
    LEFTCLICK - WM_LBUTTONDOWN/WM_LBUTTONUP с соответствующими lParam и wParam

    ЗЫ сожги свою книгу по Си++
     
    1 person likes this.
Thread Status:
Not open for further replies.