Здравствуйте, гость ( Вход | Регистрация )
![]() ![]()  | 
	
			
			  20.10.2004 - 19:10
			
				Вставить ник | Быстрая цитата |  Сообщение
					#21
					
				
			 
		 | 
	|
        	
				
					![]() Это вам не это... ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2357 Регистрация: 29.09.2003 Пользователь №: 106  | 
       
			
			 
				Попробуй так: 
			
Код Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); ShowMessage(AnsiString("запускаться?")); Application->Run(); Есть строки уже есть в файле проекта (не формы!!!), за исключением третей, ее то и надо добавить. Сообщение отредактировано -=Space=- - 20.10.2004 - 19:14  | 
| 
			
			 | 
	|
			
			  26.10.2004 - 20:09
			
				Вставить ник | Быстрая цитата |  Сообщение
					#22
					
				
			 
		 | 
	|
        	
				
					![]() силовик ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 6269 Регистрация: 19.07.2004 Пользователь №: 4192  | 
       
			
			 
				Вот задание лабы туповатое,по-моему,я его не понимаю... 
			
Если кто-нибудь может,сделайте плиз Дана строка символов,редставляющих собой арифметическое выражение. Порядок операций определён слева направо.Подсчитайте результат данного выражения. Сообщение отредактировано алексей - 26.10.2004 - 20:10  | 
| 
			
			 | 
	|
			
			  26.10.2004 - 20:48
			
				Вставить ник | Быстрая цитата |  Сообщение
					#23
					
				
			 
		 | 
	|
        	
				
					![]() `°¤,¸,ø¤°`°¤,¸ ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 971 Регистрация: 28.09.2003 Пользователь №: 30  | 
       
			
			 Код #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> void operand(double *sum, double val, char lo) { if (lo == '+') *sum += val; else if (lo == '-') *sum -= val; else if (lo == '*') *sum *= val; else if (lo == '/') *sum /= val; } int main () { int i, j, l1; double sum; char lastoper; char tmp[1024]; char s[1024]; #ifndef ONLINE_JUDGE freopen("input.txt","r",stdin); #endif while(gets(tmp)!=NULL) { if (!strcmp(tmp, "")) break; l1 = strlen(tmp); sum = 0; j = 0; lastoper = '+'; for (i = 0; i < l1; i++) { if ((tmp[i] >= '0' && tmp[i] <= '9') || tmp[i] == '.') { s[j] = tmp[i]; j++; } else if (tmp[i] == '+') { s[j] = 0; j = 0; operand(&sum, atof(s), lastoper); lastoper = '+'; } else if (tmp[i] == '-') { s[j] = 0; j = 0; operand(&sum, atof(s), lastoper); lastoper = '-'; } else if (tmp[i] == '*') { s[j] = 0; j = 0; operand(&sum, atof(s), lastoper); lastoper = '*'; } else if (tmp[i] == '/') { s[j] = 0; j = 0; operand(&sum, atof(s), lastoper); lastoper = '/'; } } s[j] = 0; operand(&sum, atof(s), lastoper); printf("%.6lf\n", sum); } return 0; } Никаких проверок нет. Операции + - * / приоритет одинаковый то есть выполняются слева направо. Числа могут быть вещественные состоят из цифр и точки, все остальные символы игнорируются. Одно выражение на одной строке, для выхода из программы ввести пустую строку. Удачи. Тестил на этом: 45+67.8-43.98 * 56/ 62.89  | 
| 
			
			 | 
	|
			
			  26.10.2004 - 21:04
			
				 | Быстрая цитата |  Сообщение
					#24
					
				
			 
		 | 
	|
| 
        	
				
        			
				
         		 Группа: Сообщений: 0 Регистрация: -- Пользователь №:  | 
       
			
			 
				Це зверь парсер зоветься  
			
Есть варинты и под BC и под VC. Они они несколько великоваты. Зато рюхают и скобки и ^ и экспоненциальную запись числа и т.д. и т.п. Надо если пиши.  | 
| 
			
			 | 
	|
			
			  21.11.2004 - 21:32
			
				Вставить ник | Быстрая цитата |  Сообщение
					#25
					
				
			 
		 | 
	|
        	
				
					![]() силовик ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 6269 Регистрация: 19.07.2004 Пользователь №: 4192  | 
       
			
			 
				Вотъ=) 
			
Дано два текстовых файла.Найти ПЕРЕСЕЧЕНИЕ ФАЙЛОВ,те сформировать новый файл,состоящий из слов,содержащихся в обоих файлах.  | 
| 
			
			 | 
	|
			
			  22.11.2004 - 15:31
			
				Вставить ник | Быстрая цитата |  Сообщение
					#26
					
				
			 
		 | 
	|
        	
				
					![]() `°¤,¸,ø¤°`°¤,¸ ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 971 Регистрация: 28.09.2003 Пользователь №: 30  | 
       
			
			 Код #include <stdio.h> 
				
				
				
				
			#include <stdlib.h> #include <string.h> /* Reshenie v lob o(n^2) */ #define MAX_WORD 10000 // Maximalnoe chislo slov v file #define MAX_LENGTH 1024 // Maximalnaya dlina slova char file1[MAX_WORD][MAX_LENGTH]; char file2[MAX_WORD][MAX_LENGTH]; int main () { FILE *in1; FILE *in2; FILE *out1; int l1 = 0; int l2 = 0; int i, j; in1 = fopen("in1.txt", "rt"); in2 = fopen("in2.txt", "rt"); out1 = fopen("out1.txt", "wt"); while(fscanf(in1, "%s", file1[l1++])!=EOF) ; while(fscanf(in2, "%s", file2[l2++])!=EOF) ; for (i = 0; i < l1; i++) { for (j = 0; j < l2; j++) { if (file2[j][0] == 0) continue; if (!strcmp(file1[i], file2[j])) { fprintf(out1, "%s\n", file1[i]); file2[j][0] = 0; break; } } } fclose(in1); fclose(in2); fclose(out1); return 0; }  | 
| 
			
			 | 
	|
			
			  23.11.2004 - 21:19
			
				Вставить ник | Быстрая цитата |  Сообщение
					#27
					
				
			 
		 | 
	|
        	
				
					![]() силовик ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 6269 Регистрация: 19.07.2004 Пользователь №: 4192  | 
       
			
			 Цитата([Privacy] @ 22.11.2004 - 16:38) Turbo, то, что ты написал в предыдущем ответе, ужасно. Просто отвратительно. Даже если бы это работало. PS: это я к тому, что, всё же, некоторым людям лучше оставаться в пределах формонакидательства и не покидать эти пределы. Цитата(Turbo @ 22.11.2004 - 17:02) Это работает 1) Я писал это 5 минут, а если бы это потребовало больеш времени, то я бы это писать не стал 2) Сложные комплексные решения он на лабе просто напросто не сдаст. 3) Если тебе не нравится мое напиши лучше, а мы посмотрим =) Да все нормально работает.Это главное. А вот по каталогам=) "Отсортировать имена файлов из каталога в алфавитном порядке.Имя кталога задать в строке аргументов.Если имя каталога отсутствует,то выбрать текущий каталог."  | 
| 
			
			 | 
	|
			
			  23.11.2004 - 21:30
			
				Вставить ник | Быстрая цитата |  Сообщение
					#28
					
				
			 
		 | 
	|
        	
				
					![]() сИтИвИк ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 6558 Регистрация: 22.12.2003 Пользователь №: 1628  | 
       
			
			 
				Я вижу тут лабы делают, классно и мне тож сделайте, а то уже запарился с ними, вот условие: 
			
Определить класс вектор. В класс включить два конструктора для определения вектора по его размеру и путем копирования другого вектора. При задании вектора по его размеру предусмотреть его заполнение случайными числами. Определить операции над векторами: ++ расположение элементов в обратном порядке; -- сортировка элементов вектора по убыванию.  | 
| 
			
			 | 
	|
			
			  23.11.2004 - 22:03
			
				Вставить ник | Быстрая цитата |  Сообщение
					#29
					
				
			 
		 | 
	|
        	
				
					![]() Это вам не это... ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2357 Регистрация: 29.09.2003 Пользователь №: 106  | 
       
			
			 
				К примеру от Turbo:  
			
А не лучше будет заменить while(fscanf(in1, "%s", file1[l1++])!=EOF) ; вот этим: while (!feof(in)) fgets(file1[l1++],MAX_LENGTH,in1); scanf может глюкнуть если в файле встретится %  | 
| 
			
			 | 
	|
			
			  23.11.2004 - 23:09
			
				Вставить ник | Быстрая цитата |  Сообщение
					#30
					
				
			 
		 | 
	|
        	
				
					![]() `°¤,¸,ø¤°`°¤,¸ ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 971 Регистрация: 28.09.2003 Пользователь №: 30  | 
       
			
			 Цитата(-=Space=- @ 23.11.2004 - 21:03) К примеру от Turbo:  А не лучше будет заменить while(fscanf(in1, "%s", file1[l1++])!=EOF) ; вот этим: while (!feof(in)) fgets(file1[l1++],MAX_LENGTH,in1); scanf может глюкнуть если в файле встретится % Мне не известно должны ли слова быть на новых строчках. А вообще решений тысячи. =) Если критична скорость то надо юзать fread() и алгоритм O(n*log(n))  | 
| 
			
			 | 
	|
			
			  24.11.2004 - 01:38
			
				Вставить ник | Быстрая цитата |  Сообщение
					#31
					
				
			 
		 | 
	|
        	
				
					![]() Постоялец форума ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 548 Регистрация: 7.11.2003 Пользователь №: 822  | 
       
			
			 
				Вот код: (еще 1 вариант) 
			
Код #include <stdio.h> 
				// a delimiter string for strtok() #define DELIMITER "\x09\x20\x0D\x0A\x00" // an amount of memory for reallocation "exception" #define EXCEPTION 1000 // a stub for qsort() int compare(const void *arg1, const void *arg2) { return _stricmp(*(char **)arg1,*(char **)arg2); } int main (int argc, char **argv, char **envp) { FILE *src1, *src2, *dst; char **srclist1, **srclist2; int srclen1 = 0, srclen2 = 0; int srclim1 = 0, srclim2 = 0; int flen1, flen2; char *file1, *file2; int i; int rc; int ptr1 = 0, ptr2 = 0; int found = 0; if(argc<3) { printf("usage: %s <src1> <src2> [dst]\n",argv[0]); return 1; } src1 = fopen(argv[1],"r"); src2 = fopen(argv[2],"r"); if(argv[3]) dst = fopen(argv[3],"w"); else dst = stdout; if(!src1) { printf("can't open %s for reading!\n",argv[1]); return 1; } if(!src2) { printf("can't open %s for reading!\n",argv[1]); return 1; } if(!dst) { printf("can't open %s for writing!\n",argv[1]); return 1; } // calculating size of FILE *src1 and feeding char *file1 with all its sources fseek(src1,0,SEEK_END); flen1 = ftell(src1); printf("length of [%s]: [%u] bytes\n",argv[1],flen1); rewind(src1); file1 = (char *)malloc(flen1); memset(file1,0,flen1); fread(file1,flen1,1,src1); // doing same things with FILE *src2 fseek(src2,0,SEEK_END); flen2 = ftell(src2); printf("length of [%s]: [%u] bytes\n",argv[2],flen2); rewind(src2); file2 = (char *)malloc(flen2); memset(file2,0,flen2); fread(file2,flen2,1,src2); // setting char **srclist1 with pointers to tokens grepped from char *file1 srclist1 = (char **)realloc(NULL,EXCEPTION*sizeof(char*)); srclim1 += EXCEPTION; srclist1[srclen1] = strtok(file1,DELIMITER); while(srclist1[srclen1]) { srclen1++; if(!(srclen1 % EXCEPTION)) { srclist1 = (char **)realloc(srclist1,(srclim1+EXCEPTION)*sizeof(char*)); srclim1 += EXCEPTION; } srclist1[srclen1] = strtok(NULL,DELIMITER); } printf("number of words in [%s]: [%u]\n",argv[1],srclen1); // doing same things about **srclist2 srclist2 = (char **)realloc(NULL,EXCEPTION*sizeof(char*)); srclim2 += EXCEPTION; srclist2[srclen2] = strtok(file2,DELIMITER); while(srclist2[srclen2]) { srclen2++; if(!(srclen2 % EXCEPTION)) { srclist2 = (char **)realloc(srclist2,(srclim2+EXCEPTION)*sizeof(char*)); srclim2 += EXCEPTION; } srclist2[srclen2] = strtok(NULL,DELIMITER); } printf("number of words in [%s]: [%u]\n",argv[2],srclen2); // qsort()ing contents within **srclist1 printf("qsorting words in [%s]...",argv[1]); qsort((void*)srclist1,(size_t)srclen1,sizeof(char*),compare); printf("done\n"); // ...and within **srclist2 printf("qsorting words in [%s]...",argv[2]); qsort((void*)srclist2,(size_t)srclen2,sizeof(char*),compare); printf("done\n"); // looking for unique words both in **srclist1 and **srclist2 printf("calculating conterminous words..."); while((ptr1 != srclen1) && (ptr2 != srclen2)) { rc = _stricmp(srclist1[ptr1],srclist2[ptr2]); if(rc < 0) ptr1++; if(rc > 0) ptr2++; if(!rc) { fprintf(dst,"%s\n",srclist1[ptr1]); ptr1++; ptr2++; } } printf("done"); fclose(src1); fclose(src2); fclose(dst); return 0; } Сообщение отредактировано Phoenix - 25.11.2004 - 20:22  | 
| 
			
			 | 
	|
			
			  24.11.2004 - 10:00
			
				Вставить ник | Быстрая цитата |  Сообщение
					#32
					
				
			 
		 | 
	|
        	
				
					![]() силовик ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 6269 Регистрация: 19.07.2004 Пользователь №: 4192  | 
       
			
			 
				алексей добавил(а) в нет данных 
			
"Отсортировать имена файлов из каталога в алфавитном порядке.Имя кталога задать в строке аргументов.Если имя каталога отсутствует,то выбрать текущий каталог." Сообщение отредактировано алексей - 24.11.2004 - 10:00  | 
| 
			
			 | 
	|
			
			  24.11.2004 - 14:52
			
				Вставить ник | Быстрая цитата |  Сообщение
					#33
					
				
			 
		 | 
	|
        	
				
					![]() `°¤,¸,ø¤°`°¤,¸ ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 971 Регистрация: 28.09.2003 Пользователь №: 30  | 
       
			
			 
				И вообще это один большой оффтоп который должен почистить модер. 
			
Почищено. Phoenix 2 алексей: работа с директориями зависит от того под какую платформу это пишется. Мне бы проще всего это было написать это на Visual Studio под MFC. Я не знаю на чем тебе это нужно.  | 
| 
			
			 | 
	|
| Guest_AVAL_* | 
			
			  24.11.2004 - 15:01
			
				 | Быстрая цитата |  Сообщение
					#34
					
				
			 
		 | 
	
| 
        	
				
        			
				
         		 Гости  | 
       
			
			 
				не совсем в тему, но все таки  
			
вот такую процедурку я написал месяц назад, хотелось бы услышать оценку - пускай даже такую что все это "ужасно" Цитата typedef struct { 
				
				
				
				
			char *data; int size; int len; } buf_t; void IncSize_sprintf(buf_t *buf, const char *srcFmt, ...) { char *tmpBuf = NULL; int cpLen = 0; va_list ap; int tmpBufLen = 0; int incSize = 0; int oldLen; va_start (ap, srcFmt); do { tmpBufLen += TMP_BUF_INIT_SIZE; tmpBuf = (char *)Realloc((void *)tmpBuf, sizeof(char) * tmpBufLen); cpLen = vsnprintf(tmpBuf, tmpBufLen, srcFmt, ap); } while (cpLen >= tmpBufLen); va_end(ap); oldLen = buf->len; buf->len += cpLen; while (buf->len >= buf->size) { buf->size += (DATA_BUF_INC_SIZE); incSize = 1; } if (incSize) buf->data = (char *)Realloc((void *)(buf->data), sizeof(char) * buf->size); memcpy((void *)(buf->data + oldLen), tmpBuf, cpLen); free(tmpBuf); }  | 
| 
			
			 | 
	|
			
			  24.11.2004 - 15:56
			
				Вставить ник | Быстрая цитата |  Сообщение
					#35
					
				
			 
		 | 
	|
        	
				
					![]() Bill rulz ^^ ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1418 Регистрация: 28.09.2003 Пользователь №: 24  | 
       
			
			 
				вот тут увидел вдруг вопрос, он хоть и старый, но вам хотел показать 
			
Цитата(алексей @ 26.10.2004 - 20:09) Вот задание лабы туповатое,по-моему,я его не понимаю... Если кто-нибудь может,сделайте плиз Дана строка символов,редставляющих собой арифметическое выражение. Порядок операций определён слева направо.Подсчитайте результат данного выражения. Представляю аналог на VB Код ' пробиваем переменные 
				
				
				
				
			Dim objScript As Object Dim strExpression As String Dim sngA As Single Dim sngResult As Single ' создаем обьект, который нам все посчитает Set objScript = CreateObject("MSScriptControl.ScriptControl") objScript.Language = "VBScript" ' то что надо посчитать strExpression = "67 + (54 + 68 / 23) * ( A - 7) / Sqr(16) " sngA = 10 ' выполняем код objScript.ExecuteStatement "A = " + CStr(sngA) objScript.ExecuteStatement "sngResult = " + CStr(strExpression) ' получаем результат sngResult = objScript.eval("sngResult") MsgBox "strExpression = " + CStr(sngResult), , "Результат"  | 
| 
			
			 | 
	|
			
			  24.11.2004 - 16:09
			
				Вставить ник | Быстрая цитата |  Сообщение
					#36
					
				
			 
		 | 
	|
        	
				
					![]() Постоялец форума ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 726 Регистрация: 26.09.2003 Пользователь №: 15  | 
       
			
			 
				Мануальный Васик тут не причем.  
			
Подрубить какой-нить жестокий парсер можно в любом языке, а задание человеку было дано для того, чтобы он научился выражения разбирать. Так с понтом можно сказать, что я веб браузер крутой написал, накинув в дельфи компонент, который в итоге Осла заюзает.  | 
| 
			
			 | 
	|
			
			  24.11.2004 - 16:16
			
				Вставить ник | Быстрая цитата |  Сообщение
					#37
					
				
			 
		 | 
	|
        	
				
					![]() силовик ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 6269 Регистрация: 19.07.2004 Пользователь №: 4192  | 
       
			
			 
				Убейте меня,если я хоть что-то в этом понимаю!  
			
 | 
| 
			
			 | 
	|
			
			  24.11.2004 - 16:37
			
				Вставить ник | Быстрая цитата |  Сообщение
					#38
					
				
			 
		 | 
	|
        	
				
					![]() Bill rulz ^^ ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1418 Регистрация: 28.09.2003 Пользователь №: 24  | 
       
			
			 
				Половина лаб в миете делается копипсатом примеров кода из хелпа. И никто никогда на них ничему не научится. Их просто нужно сдать и все, при этом не усложняя себе жизнь. Основное условие этого - выполнить задание, чаще всего не имеет никакого значения как это будет реализованно. 
			
Как пример из жизни - у нас щас идут лабы "по с++" или просто С, (?) я еще не понял  | 
| 
			
			 | 
	|
| Guest_AVAL_* | 
			
			  24.11.2004 - 20:17
			
				 | Быстрая цитата |  Сообщение
					#39
					
				
			 
		 | 
	
| 
        	
				
        			
				
         		 Гости  | 
       
			
			 
				to Privacy: Конечно правильно  
			
Хотя я буду рад коментариям от любого. Извиняюсь еще раз что втиснулся в чужую тему, но в ней просто Приваси поднял то что как мне кажется меня интересует. А теперь коментариии к тому что я там вывалил. Эта процедура автоматически расширяет буфер buf для поступающих в него форматированных данных если не хватает размера. Буфер естественно расширяется гораздо реже, чем происходит запись данных для этого константа DATA_BUF_INC_SIZE раз в 10-100 больше среднестатического размера поступаемых данных. Это сделано что бы сократить кол-во системных вызовов realloc. tmpBuf используется как вспомогательный для выполнения обычного snprintf. Размер этого буфера выбран заведомо больше чем поступающие форматированные данные в реале. поэтому для tmpBuf realloc() в реальной програме запускаться не будет, однако не хотелось привязывать програму к конкртеным числам и если теоретически с какого то фига в tempBuf данные не влезут он расширится и формирование строки повторится снова. Мне показалось это наиболее разумным А вопрос может быть только один - как бы это сделали вы програмисты со стажем знаниями и опытом. НУ или на сколько то что я написал криво?  | 
| 
			
			 | 
	|
			
			  24.11.2004 - 20:23
			
				Вставить ник | Быстрая цитата |  Сообщение
					#40
					
				
			 
		 | 
	|
        	
				
					![]() void* ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1631 Регистрация: 29.09.2003 Пользователь №: 45  | 
       
			
			 
				Господа, закончили оффтоп, Приваси, что ты крут известно всем и так. И если кто-то в вопросе разбирается хуже тебя, то это не делает из него ламера. Поэтому: на личности не переходим, и почистите, пожалуйста, свои мессаги от личностей и препирательств.
				
				
				
				
			 
			
 | 
| 
			
			 | 
	|
![]() ![]()  | 
	
 
  | 
		Текстовая версия | Сейчас: 4.11.2025 - 08:38 |