HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #2781  
Старый 26.04.2009, 15:04
Kaimi
Познавший АНТИЧАТ
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


Отправить сообщение для Kaimi с помощью ICQ
По умолчанию

Цитата:
Люди подскажите как создать функцию которая примет структуру и вернет массив заполненый элементами из структуры. И как потом к этому массиву обращаться из мэйн. Че то сам писал писал так ничо и не получается. Желательно примерчик простенький.
На си)
А погуглить?
http://www.java2s.com/Tutorial/Cpp/0160__Structure/Passstructuretoafunctionasapointer.htm
 
Ответить с цитированием

Ругается на директиву.
  #2782  
Старый 26.04.2009, 15:38
v.tyshkev
Новичок
Регистрация: 16.03.2009
Сообщений: 5
Провел на форуме:
11620

Репутация: 0
Отправить сообщение для v.tyshkev с помощью AIM
По умолчанию Ругается на директиву.

При компиляции выходит сообщение об ошибке по директиве #include<.h>:

Цитата:
1)"Ожидается диретива предпроцессору (CS 1024)" 2)"Ожидается однострочный комментарий или признак конца строки (CS 1025)"
А вот и код:

Код:
#include <stdio.h>  
#include <stdlib.h>    

namespace az  
{  	
     class Program  	
     {  		
         int main()
           {
char *Remote_IP = getenv("REMOTE_ADDR");              char *Query_String = getenv("QUERY_STRING");                

printf("Content-type: text/html\n\n");              
printf("<html><body><h1>Привет</h1><p>");              printf("Ваш IP: %s", Remote_IP);             
 printf("<p>Переданные вами параметры: %s", Query_String);    			
printf("</body></html>")

return 0;  		
}  	
      }  
          }
Как от это исправить?
 
Ответить с цитированием

  #2783  
Старый 26.04.2009, 15:51
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

ппц что это ты нагородил, выкинь этот говнокод и почитай книжки.
 
Ответить с цитированием

  #2784  
Старый 26.04.2009, 16:39
ss88
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме:
298300

Репутация: 128
Отправить сообщение для ss88 с помощью ICQ
По умолчанию

Цитата:
Сообщение от KaZ@NoVa  
ss88,Не люблю копаться в чужих кодах.... Давай на словах. Имеется в виду, что надо сосканировать предложение, разбить на слова и... а дальше чо? "Заностится в бинарно дерево" по какому принципу? Если просто слова по-порядку, то просто забить слова в структуру (массив), а дальше их печатать в виде дерева (всмысле в каждой строке увеличиваем колличество распечатываемых слов в 2 раза). В этом коде слишком муторно разбираться...
Судя по тем кодам, что пишут в этой теме, мой код, действительно, совсем другой, не сказал бы, что он плохой... Слова добавлялись в дерево, вполне логично, по сравнению строк на больше/меньше. Никаких стеков, массивов нельзя - это глупо, да и на это стоит ограничение, просто, в данном случае, память является самым критичным ресурсом, поэтому разрастание стека при рекурсии - недопустимая роскошь. Привожу код с нерекурсивным обходом (не самый эллегантный алгоритм, но все же...), может кому пригодится, потому что задача не самая тривиальная... Если кто захочет компилить, то это делать надо в 99-м стандарте С.
Код:
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct tree_item_tag {
	const char * word; 
	size_t count;
	struct tree_item_tag *left, *right, *parent;
} tree_item_t;

void insert(tree_item_t** first_item, const char* keyword, size_t * count) {
	
	tree_item_t** pcur = first_item, **prev =  first_item; 
	int cmp_words;
	
	while (*pcur != NULL) { /* searching for already inserted word inc count */
		if((cmp_words=strcmp(keyword, (*pcur)->word)) == 0) {
			++(*pcur)->count;
			return;
        }  
        prev = pcur;
		pcur=(cmp_words<0) ? &((*pcur)->left) : &((*pcur)->right);
    } /* it is the first insert of this word */
	*pcur = malloc( sizeof(tree_item_t) );
    (*pcur)->word = strcpy( malloc( strlen(keyword) + 1) , keyword);
    (*pcur)->count = 1;
    (*pcur)->parent = *prev;
    (*pcur)->left = (*pcur)->right = NULL;  
    ++(*count);
}

void printnotrec(tree_item_t* tree_item, size_t count) {
	
	size_t cur_count = 0;
	tree_item_t * pcur = tree_item, * pprev = pcur, *tmppcur;
	
	while(cur_count != count) {
		tmppcur = pcur;
		if( (pcur->left==NULL && pprev!=pcur->right)
		||pprev==pcur->left) {
			(void)printf("%s %d\n",pcur->word, pcur->count);
			++cur_count;
			if( pcur->right == NULL ) {
				if( pcur->parent->right == pcur ) {
					pprev = pcur->parent;
					pcur = pcur->parent->parent;
					continue;
				} else 
					pcur = pcur->parent;
			} else 
				pcur = pcur->right;
		}
		else {
			if(pprev == pcur->right)
				pcur = pcur->parent;
			else 
				pcur = pcur->left;
		}
		pprev = tmppcur;
	}
}

int get_word(char * buf_word, size_t buf_size) {
	
	int c; /* current read symbol */
	size_t word_len = 0;
	
	while( (c=getchar()) != EOF) {
		if(isalpha( (unsigned char) c) || (word_len > 0 && c == '\'')) {
			buf_word[ word_len++ ] = (unsigned char) tolower(c);
			if(word_len + 1 == buf_size) break; /* return only part of word */
		} else if(word_len > 0) break; /* word can be returned */
	}  
	if(word_len > 0) {
		buf_word[ word_len ]= '\0';
		return 1;
	} else return 0;
}

int main(void) {
	
	tree_item_t *first_item = NULL;
	size_t buf_size = 50; /* must be bigger than 1 */
	size_t count = 0;
	char * buf_word = malloc(buf_size);
	
	while(get_word(buf_word, buf_size)) 
		insert(&first_item, buf_word,&count);
	
	printnotrec(first_item,count);
	printf("%d\n",count);
	return EXIT_SUCCESS;
}

Последний раз редактировалось ss88; 26.04.2009 в 18:07..
 
Ответить с цитированием

  #2785  
Старый 26.04.2009, 17:07
CHIP:))
Познающий
Регистрация: 17.01.2007
Сообщений: 94
Провел на форуме:
528220

Репутация: 65
Отправить сообщение для CHIP:)) с помощью ICQ
По умолчанию

Цитата:
Сообщение от Kaimi  
А погуглить?
http://www.java2s.com/Tutorial/Cpp/0160__Structure/Passstructuretoafunctionasapointer.htm
Спасибо за наводку, структуру передал, а как теперь вернуть массив?
 
Ответить с цитированием

  #2786  
Старый 26.04.2009, 17:50
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
Спасибо за наводку, структуру передал, а как теперь вернуть массив?
создай в куче и возвращай указатель на него.
 
Ответить с цитированием

  #2787  
Старый 26.04.2009, 18:33
CHIP:))
Познающий
Регистрация: 17.01.2007
Сообщений: 94
Провел на форуме:
528220

Репутация: 65
Отправить сообщение для CHIP:)) с помощью ICQ
По умолчанию

Может я что то не так делаю, вот мой код может кто нить подскажет что не так?

PHP код:
#include <stdio.h>
#include <time.h>

struct tm intime;  // создаю структуру типа tm которая описана в time.h
intfunct(struct tm *p); // обьявление функции
intfunct(struct tm *p// описание 
{
int temp[7];    // создаем массив который вернется
temp[0] = p.tm_sec;    // присваиваем элементам массива, значения структуры
temp[1] = p.tm_min// ..
temp[2] = p.tm_hour;
temp[3] = p.tm_mday;
temp[4] = p.tm_mon;
temp[5] = p.tm_year;
temp[6] = '\0'// закрываем массив
return temp;    // возвращаем массив
}


int main (void)
{
int *temp2;  // создаем указатель на массив который получим из функции
    
{
        
intime.tm_sec=10;    // присваиваем значения элементам нашей входной структуры
        
intime.tm_min=19;
        
intime.tm_hour=20;
        
intime.tm_mday=14;
        
intime.tm_mon=5;
        
intime.tm_year=109;
    }
    
temp2 funct(&intime); // пытаемся отправить структуру в функцию и ничего не выходит ((
return 0;
}

Compiling source file(s)...
gps.cpp
gps
.cppIn function `int* funct(tm*)':
gps.cpp:9: error: 
`tm_sec' has not been declared  //  здесь непонимаю почему ругается, ведь мы обьявили структуру в файле <time.h>
gps.cpp:9: error: request for member of non-aggregate type before '
;' token
gps.cpp:10: error: `tm_min' 
has not been declared
gps
.cpp:10errorrequest for member of non-aggregate type before ';' token
gps
.cpp:11error: `tm_hour' has not been declared

gps.cpp:8: warning: address of local variable 
`temp' returned // здесь вроде ругается что возвращаем локальную а не глобальную переменную 
 
Ответить с цитированием

  #2788  
Старый 26.04.2009, 18:41
FrMn
Познающий
Регистрация: 08.08.2008
Сообщений: 55
Провел на форуме:
369629

Репутация: 54
По умолчанию

Код:
temp[0] = p->tm_sec;    // присваиваем элементам массива, значения структуры
temp[1] = p->tm_min; // ..
temp[2] = p->tm_hour;
temp[3] = p->tm_mday;
...
насчет переменной локальной - она создается в стеке, а стек это такайа штука, которая после выхода из подпрограммы может быть использована другой подпрограммой - следовательно и данные будут испорчены.

Последний раз редактировалось FrMn; 26.04.2009 в 18:45..
 
Ответить с цитированием

  #2789  
Старый 26.04.2009, 19:09
ss88
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме:
298300

Репутация: 128
Отправить сообщение для ss88 с помощью ICQ
По умолчанию

Цитата:
Сообщение от CHIP:))  
Может я что то не так делаю, вот мой код может кто нить подскажет что не так?
не знаю, сколько вам лет, но я ТАКОГО даже в школе не писал ))) Вас самих не пугает ТАКОЕ??? "Сколько не делай из говна конфету, получается либо слдкое говно, либо говняная конфета" (с) Я
 
Ответить с цитированием

  #2790  
Старый 26.04.2009, 19:41
CHIP:))
Познающий
Регистрация: 17.01.2007
Сообщений: 94
Провел на форуме:
528220

Репутация: 65
Отправить сообщение для CHIP:)) с помощью ICQ
По умолчанию

Меня ТАКОЕ не пугает, просто потому что я неопытен в этой сфере. Если несложно можешь обьяснить конкретно что именно тебя так пугает в этом коде?
Я учту это на будущее. Мне 21)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ