[ 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. Adeliae

    Adeliae New Member

    Joined:
    1 Apr 2009
    Messages:
    5
    Likes Received:
    1
    Reputations:
    0
    awdrg, Visual C++ (в зависимости от версии) хватит на любом этапе, для создания небольших программ достаточно codeblocks:
    http://www.codeblocks.org/downloads/5#windows
    2-й содержит компилятор GCC (codeblocks поддерживает много компиляторов)
     
  2. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Если что то простое то юзаю Notepad++ & mingw
    Хотя в большинстве случаев пользуюсь Visual Studio
     
  3. B@ton

    B@ton New Member

    Joined:
    18 Jul 2007
    Messages:
    17
    Likes Received:
    1
    Reputations:
    0
    Есть задача "Для данной буквы латинского алфавита нужно вывести справа стоящую букву на стандартной клавиатуре. При этом клавиатура замкнута, т.е. справа от буквы «p» стоит буква «a», от буквы «l» стоит буква «z», а от буквы «m» — буква «q». "
    Есть ли алгоритм как просчитать такой вывод, или тупо нужно указывать соответствие букв?
     
  4. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    сделай массив с буквами кнопок например qwerty и тэдэ, и уже ищи в этом массиве нажатую кнопку и выводи правостоящий элемент
     
  5. Mosvit

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

    Joined:
    5 Mar 2007
    Messages:
    86
    Likes Received:
    16
    Reputations:
    1
    Кто-нибудь может объяснить что такое в языке С функция greb, а лучше дать исходник готовой программы использующий эту функцию.
     
  6. n4e/\@

    n4e/\@ Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    138
    Likes Received:
    17
    Reputations:
    0
    Code:
    #include <iostream>
    
    int main ()
    {
    	char mas[]={'q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'};
    	char a;
    	std::cin >> a;
    	if ( a=='m' ) std::cout << " " << mas[0];
    	else 
    		for ( int i=0; i<25; i++ )
    			if ( a==mas[i] ) std::cout << " " << mas[i+1];
    	return 0;
    } 
    
    
    Ну вот как то так.
     
    #2686 n4e/\@, 13 Apr 2009
    Last edited: 13 Apr 2009
  7. B@ton

    B@ton New Member

    Joined:
    18 Jul 2007
    Messages:
    17
    Likes Received:
    1
    Reputations:
    0
    Спасибо!
     
  8. Turbomax

    Turbomax New Member

    Joined:
    27 Mar 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    -5
    А кто может сказать как сделать счто б прога с нетом общалась и ваще с какой версии turbo c это возможно
     
  9. B@ton

    B@ton New Member

    Joined:
    18 Jul 2007
    Messages:
    17
    Likes Received:
    1
    Reputations:
    0
    Общение с нетом это браузер???turbo C это прошлое тысячилетие поставь хотябы DevC++.
     
  10. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    помогите с такой вот штукой
    Code:
    #include <ctype.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define BUFF_SIZE 200 
    #define TABLE_SIZE 65535
    typedef enum{INSERTED, NOT_INSERTED, COUNT_INCREMENTED} insertstatus_t;
    typedef struct {
    	const char * word; 
    	size_t count; 
    	size_t hash;
    } HASH_ITEM;
    /* compare two HASH_ITEM's by words */
    static int cmpitems(const void * p1, const void * p2){
    	return strcmp(((HASH_ITEM *)p1)->word, ((HASH_ITEM *)p2)->word);
    }
    /* sorting storage with qsort() function and refreshing HASH_INDEXes*/
    void sort(size_t* hash_index,HASH_ITEM* hash_items,size_t items_count){
    	
    	qsort(hash_items, items_count, sizeof(HASH_ITEM), cmpitems);
    	
    	for(size_t i = 0; i < items_count; ++i)
    		hash_index[hash_items[i].hash]=i;
    }
    void hash(const char* keyword, size_t * h1, size_t * h2) {
    	for(*h1=1, *h2=1; *keyword!= '\0'; keyword++) {
    		*h1 *= 17; *h1 += 13*(*keyword); 
            *h2 *= 13; *h2 += 17*(*keyword);
        }
        *h1 %= TABLE_SIZE;
        *h2 %= (TABLE_SIZE-1); *h2 += 1;
    }
    /* inserting keyword to hash table.
     * Returns 
     * INSERTED - word has been successfully inserted
     * NOT_INSERTED - can't find free hash index 
     * COUNTER_INCREMENTED - word already inserted, just inc word count */
    insertstatus_t
    insert(size_t* hash_index,HASH_ITEM* hash_items,size_t* items_count,
    						const char* keyword) {
    	size_t h1,h2,hfirst;
    	hash(keyword, &h1, &h2);
    	hfirst=h1;//first hash without probe
    	/* searching for already inserted word and increment counter*/
    	for (size_t i=0; hash_index[h1] != -1 && i<TABLE_SIZE+1; i++) {
            if (strcmp(keyword, hash_items[hash_index[h1]].word) == 0 ) {
               hash_items[ hash_index[h1] ].count++;
               return COUNT_INCREMENTED;
            } 
            h1 += h2; h1 %= TABLE_SIZE; // next hash with probe
            if(h1==hfirst) 
            	return NOT_INSERTED; //free pos not found, word not inserted
        }
        /* if it is the first insert */
        hash_index[h1] = *items_count;
        hash_items[*items_count].word=strcpy(malloc(strlen(keyword)+1),keyword);
        hash_items[ *items_count ].count = 1;
        hash_items[ (*items_count)++ ].hash = h1;
        return INSERTED;
    }
    void 
    print(const size_t* hash_index,const HASH_ITEM* hash_items,
    										size_t items_count) {
    	size_t i;
    	for(i=0; i<items_count; ++i)
    		(void)printf("%s %d\n",hash_items[i].word, hash_items[i].count);
    	(void)printf("\nCount of different words = %d\n",i);
    }
    /* returning  1 - word successfulley readed to WORD_BUF
    0 -  no words left*/
    int getword(char ** word_buf) {
    	/*if it is the first using of WORD_BUF*/
    	if(*word_buf==NULL)
    		*word_buf=malloc(BUFF_SIZE); 
    		
    	size_t word_len = 0; //current length of string in WORD_BUF
    	static size_t wbuf_growth=1;//level of WORD_BUF size,(BUFF_SIZE*WBUF_GROWTH)
    	const size_t wbuf_growth_max = 5;//max value of the WBUF_GROWTH
    	unsigned char c; //current readed symbol
    	int word_started = 0;
    	 
    	while(fread(&c,1,1,stdin)) {
    		if(isalpha((unsigned char)c) || (word_started && c == '\'')) {
    			if(!word_started) {
    				word_len = 0;
    				word_started = 1;
    			}
    			/* if word buffer is full we must to reallocate it or break 
    			 * the cycle if buffer have a maximum length  */
    			if(word_len+1 > wbuf_growth*BUFF_SIZE) {
    				if(wbuf_growth < wbuf_growth_max)
    					*word_buf=realloc(*word_buf,++wbuf_growth*BUFF_SIZE);
    				else
    					break;
    			}
    			(*word_buf)[word_len++] = (unsigned char)tolower(c);
    		} else if(word_started) {
    			/* we found end of the word */
    			break;
    		}
    	}   /* EOF or delimiter(end of word) is reached */
    	
    	if(word_started) {
    		(*word_buf)[word_len]= '\0';
    		return 1;
    	} else {
    		free(*word_buf);
    		return 0;
    	}
    }
    int main(void) {
    	/* storage for words and their attributes */
    	HASH_ITEM hash_items[TABLE_SIZE];
    	size_t items_count = 0;
    	/* hashes of the words are the indexes of this array, values is the 
    	 * indexes of appropriate HASH_ITEM's in storage */
    	size_t hash_index[TABLE_SIZE];
    	char * word = NULL;
    	
    	(void)memset(hash_index,-1,TABLE_SIZE*sizeof(size_t));
    	while(getword(&word)) {
    		if(insert(hash_index,hash_items,&items_count,word)==NOT_INSERTED)
    			(void)printf("Warning: keyword can't be inserted %s\n",word);
    	}
    	sort(hash_index,hash_items,items_count);
    	print(hash_index,hash_items,items_count);
    	return EXIT_SUCCESS;
    }
    Попробуйте покомпилировать это под вендой (у меня ее нет).
    Компилировать надо в стандарте Си от 99-го года, запускать как >prog_name < text_file.txt
    Просто нужно узнать, будет ли оно там работать + конструктивно попридирайтесь к коду
     
    #2690 ss88, 14 Apr 2009
    Last edited: 14 Apr 2009
  11. _nic

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

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Можно как то с помощью винапи получить мд5 хеш строки?
     
  12. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    тут не винапи нужно, а криптоапи:
    http://msdn.microsoft.com/en-us/library/aa382380(VS.85).aspx :)
    вот еще есть: http://polarssl.org/?page=show_source&type=source&file=md5
     
  13. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    Вопрос по Borland c++ builder 6.0
    Кусок кода, в котором содержится первая строчка текста с формы Memo
    Code:
    Memo1->Lines->Strings[0]
    Как загнать в массив char это значение?
     
  14. Turbomax

    Turbomax New Member

    Joined:
    27 Mar 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    -5
    а с turbo c норм переходить на c++ builder 2007 ?
     
  15. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Code:
    strcat(str, Memo1->Lines->Strings[0].c_str());
    
     
  16. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    есть класс
    у него свойство, к примеру test
    я могу объявить его так:

    static const int test = 4;

    но не могу понять смысла модификаторов const и static.
     
  17. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    Мдя...... судя по вопросам, которые тут задаются, я попал, явно, не в ту тему...
     
    1 person likes this.
  18. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    static означает, что это поле/свойство будет присуще всем экземлярам класса и просто определению класса, т.е. если ты поменяешь его в одном обьекте, то поменяется оно во всех экземлярах этого класса.
    const - просто свидетельствует о константности этого обьекта
     
    #2698 ss88, 14 Apr 2009
    Last edited: 14 Apr 2009
  19. s_p_a_m

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

    Joined:
    8 Feb 2008
    Messages:
    100
    Likes Received:
    58
    Reputations:
    4
    как в С++ перевести число из Восьмеричной системы в двоичную, или же в другую, если можно то пример :)
     
  20. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    Все компилируется и работает, спасибо за внимание :)
     
Thread Status:
Not open for further replies.