Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2016, 13:54   #1
Троллев
Пользователь
 
Регистрация: 09.03.2016
Сообщений: 29
По умолчанию Нужна програма построения таблици из найденых строк.

Я почав писати на Перл, давно вже написав щось, але я не можу впоратися із масивами. Програма кілька днів до ряду у мене падала і падала. Я таким чином навіть не можу зрозуміти у чому ж помилки.

Може її переписати взагалі, або доробити.

Або взагалі, завдання повинне бути виконане на будь-якій мові, у будь-який доступний засіб, і хоч простий або ж складний, та як завгодно. Вручну редагувати такі об'еми- це .. Нікуди не годиться.
Потрібно дуже, просто аж краї, і навіть вже сьогодні.

Код:
#!/usr/bin/perl -w
use utf8;                  # говорит Perl что код нашей программа написан в кодировке utf8.
use open qw(:std :utf8);   # говорит Perl что все потоки STDIN, STDOUT, STDERR должны работать с utf8.
use warnings;
sleep(10);

my $str = "abc";
    $str =~ /(((a)(b))(c))/;
    print "1: $1 2: $2 3: $3 4: $4 5: $5\n";
    # prints: 1: abc 2: ab 3: a 4: b 5: c
sleep(10);



@BUFFER_temp = ();
$GLOBAL_lichylnyk = 0; $zvIryuvalnik = 0;

$FileNazva_1   =  'OPAfile.txt';
$Nazvadopovnjuvach = 'New_';
$FileNazva_2 = $Nazvadopovnjuvach.$FileNazva_1;
$FileNazva_3 = $Nazvadopovnjuvach.$FileNazva_2;


$Rjadky = 0;

$N = 1;
@KonstruktorRjadkiv = ([59][$N]);
                     for($U=0;$U<=58;$U++)  
						    { 
						        @KonstruktorRjadkiv [$U][$N-1]= ('|!    Немає значення     ');
  								@KonstruktorRjadkiv [58][$N-1]= ('|!    Немає значення  |  '. "\n";);
						    }	

print "$FileNazva_2";

open FILEHANDLE_2, ">>$FileNazva_2";
       #Відкриємо файл для читання і створимо іншого файлу, для запису в нього зміненого тексту.
open FILEHANDLE_1, $FileNazva_1;

open FILEHANDLE_3, ">>$FileNazva_3";


sub Vpysuvats{
				   
				   
       if($zvIryuvalnik-$N >=2)
                   {     
				        $N = $zvIryuvalnik;
						                         for($U=0;$U<=57;$U++)  
						    { 
						        @KonstruktorRjadkiv [$U][$N-1]= ('|!    Немає значення     ');
                                @KonstruktorRjadkiv [58][$N-1]= ('|!    Немає значення  |  '. "\n";);  								
						    }	
					}

}


while (defined (my $file_line = <FILEHANDLE_1>)) {

	sub Ste
	{
		if ($zvIryuvalnik-$GLOBAL_lichylnyk>=2)
		{                                   #блок стеження за лічильниками
		         print 'Ste Ste Ste Ste Ste Ste Ste Ste Ste Ste Ste Ste';
				   
				 print $file_line; print "/n";
		         #push @BUFFER_temp, $file_line;
                                Vpysuvats;
                                   $temp2= @BUFFER_temp[$GLOBAL_lichylnyk];
                                   $temp3= $temp2. ' |';
                                   $temp4= $temp3. "\n";
                                   @BUFFER_temp[$GLOBAL_lichylnyk]=  $temp4;
                                   print FILEHANDLE_2 "$BUFFER_temp[$GLOBAL_lichylnyk]";
				 $GLOBAL_lichylnyk++;



		}
	}

		$Rjadky++;
		print " Tse rjadok $Rjadky\n";
		for ($i=0; $i<=$GLOBAL_lichylnyk; $i++)
		     {
			    print  "A sho my maemo $i @BUFFER_temp[$GLOBAL_lichylnyk]\n";
			 }
			 #sleep 30;
		
		#@BUFFER_temp = ();
		if ($file_line =~ m/(^.*(([0-9]{3}) (.*) )$)/) #Шукаємо число з трьох цифр в кожному рядку і виділяємо окремо число і залишившийсь у залишку подальший рядок
		   {
		           print 'elsif 0';
				   
				   $zvIryuvalnik++;
				   Ste;
		           print "1: $1 2: $2 3: $3 4: $4 5: $5 6: $6 7: $7 8: $8\n";
		           $temp = $1;
				   $temp =~ s/\s+$//;#Чтобы отсечь "хвостовые" пробелы, годится
				   $temp = ' |!'. $temp;# дописати спочатку роздільник таблиці
                            print "GLOBAL_lichylnyk: $GLOBAL_lichylnyk  temp: $temp \n";
                                  #push $BUFFER_temp[$GLOBAL_lichylnyk], $temp;
                                   $temp2= @BUFFER_temp[$GLOBAL_lichylnyk];
                                   $temp3= $temp2.$temp;
                                   @BUFFER_temp[$GLOBAL_lichylnyk]=  $temp3;
								   
					$nomer = $2;

                    @KonstruktorRjadkiv [0][$N-1]=  $temp3;					
				   

			}

	    	elsif ($file_line =~ /(^.*([0-9]{3})(.*)$)/)
			{
			       $zvIryuvalnik++;
				   print 'elsif 1';
				   
				   print 'Ste';
				   
				   Ste;
				   
			       print "1: $1 2: $2 3: $3 4: $4 5: $5 6: $6 7: $7 8: $8\n";
		           $temp = $1;
				   $temp =~ s/\s+$//;#Чтобы отсечь "хвостовые" пробелы, годится
				   $temp = ' |!'. $temp;# дописати спочатку роздільник таблиці
                                   print "GLOBAL_lichylnyk: $GLOBAL_lichylnyk  temp: $temp \n";
                                   #push $BUFFER_temp[$GLOBAL_lichylnyk], $temp;
                                   $temp2= @BUFFER_temp[$GLOBAL_lichylnyk];
                                   $temp3= $temp2.$temp;
                                   @BUFFER_temp[$GLOBAL_lichylnyk]=  $temp3;
								   
					@KonstruktorRjadkiv [0][$N-1]=  $temp3;			   
				   
			}

		    elsif ($file_line =~/(\[{2}([0-9]{2})\.[^\[\]]*\]{2})/)
		    {
			       print 'elsif 2';
				   

				   
				   
                   $temp = $1;
				   $temp =~ s/\s+$//;#Чтобы отсечь "хвостовые" пробелы, годится
				   $temp = ' |!'. $temp;# дописати спочатку роздільник таблиці
                                  #push $BUFFER_temp[$GLOBAL_lichylnyk], $temp;
                                   $temp2= @BUFFER_temp[$GLOBAL_lichylnyk];
                                   $temp3= $temp2.$temp;
                                   @BUFFER_temp[$GLOBAL_lichylnyk]=  $temp3;
								   
					$nomer = $2;

                    @KonstruktorRjadkiv [$nomer][$N-1]=  $temp3;				   
								   
            }




		#sleep(25);
		#print "A thi zminulysja zminni? 1: $1 2: $2 3: $3 4: $4 5: $5 6: $6 7: $7 8: $8\n";
		#sleep(25);

}

print FILEHANDLE_3 "@KonstruktorRjadkiv";

# $file_line =~ m/^.([0-9]{3}s (.*) )$/;
#$file_line =~ m/^.([0-9]{3}[A-Za-z]+(\.[09]*)?)([CF])$/;

# s - це спеціальний символ, який вказує на будь-який символ з підмножини пробільних (пробіл, табуляція, etc ...) Уточню.  вказує на одиничний пробільний символ.
# ^ - в контейнері заперечення     Ну тобто перевертання значення
# Часто використовується послідовність .* для позначення будь-якої кількості будь-яких символів між двома частинами регулярного виразу.




close FILEHANDLE_2;

close FILEHANDLE_1;

close FILEHANDLE_3;



#(*) -

#Операція, яка позначається крапкою "." поєднує дві текстові змінні. Ð*езультатом цієї дії Ñ” третій рядок, який дорівнює першому Ñ– другому рядкам разом взятим. Англійською мовою операція об'єднання двох рядків зветься "concatenation". Не маючи кращого варіанту, я буду звати Ñ—Ñ— конкатенацією (на слух сприймається як дуже розумне слово - Ñ– це основна причина його вживання).


  __END__
Троллев вне форума Ответить с цитированием
Старый 18.05.2016, 13:56   #2
Троллев
Пользователь
 
Регистрация: 09.03.2016
Сообщений: 29
По умолчанию

Копіюю опис завдання

Добрій ночі! Допоможіть, будь ласка. треба виконати завдання будь-яким зручним або незручним засобом. Потрібно можливо вже завтра, а я за два тижні взагалі неспромігся зробити, а вкрай, аж закрай треба. Аж дуже.

Спробую якось сформулювати завдання.
Треба скласти таблицю з рядків, що знаходяться усередині файлу ЛІКАРСЬКІ РОСЛИНИДовідник- покажчик.htm

Кодування UTF8.

Важливо скласти усі знайдені рядки в таблицю, роздільники елементів цієї таблиці виглядають так |!

тобто

|! А |! б |! У |
|! Г |! Д |! Е |

Отже, програма читає файл.

Знаходить серед нього рядки, що починаються на число з крапою. На зразок 112. трумрлоє боротрумкдеродереваспрвовидабаорпму нє
Це - початок майбутньої таблиці, перший її стовпець, відповідно перший елемент масиву, @KonstruktorRj [0][N].

Далі потрібно вишукувати елементи виду [[01.Буонуымаркючуы, прукропджуючуы, Бутрумр зтрумртрумтрумрльнозмуыцнюючуы. ]]
[[14.ЭслунРваово-РваиЭсРваовуы (Бутрумр прукропджуючуы трумрДроеБуиБу) ]]
[[15.Дророноснуы]]
[[18.ЗтрумрсБуосовувтрумрнуы Дрори виртрумрзРваовуый ботрйробуы]]
[[25.ткуржачотрумуыннуы, зтрумрсБуосовувтрумрнуы Дрори зтрумрботрйрювтрумрннях Дроеченуы, ткуржачних Эсляхутурумуыв, ткуржачнотрумо муыхутурумуру.]]
[[37.ЗтрумрсБуосовувтрумрнуы Дрори БууберРваульомаркы лєтрумєнуыв]]
[[40.РваровосДроинюючуы]]
[[41.Ртрумрнозтрумртрумоювтрумрльнуы]]
[[43.ДророБуиблювоБунуы]]
[[44.ДророБуизтрумрДротрумрльнуы]]
[[50.ЗтрумрсБуосовувтрумрнуы Дрори кабанів зтрумрботрйрювтрумрннях]]
[[54.ДророБуимиРваробнуы]]

Кожен з них, треба вписувати за адресою [14][N], [15][N], [18][N] і так далі.

Якщо знову зустрічається рядок, що розпочинається з цифри і крапки, починається наступний, розташований нижче рядок таблиці [14][N 1] відповідно.

Ну, це, уся таблиця має 58 осередків, довжина її вниз заздалегідь невідома.

І уся вона порозділена знаками

|! 1.Росбирлинтрумр |![[01.Буонимаркючуы, прукропджуючуы, Бутрумр зтрумртрумтрумрльнозмуыцнюючуы. ]]|! [[02.ЗтрумрсДрооРвауыйливуы]]|! [[03.ЗтрумрсБуосовувтрумрнуы Дрори безсоннуы]]|! [[04.БолдрбреуБуохутубормраочуы]]|! Нифига Немає (Туди сюди ) |! ............... [[58.ЗтрумрсБуосовувтрумрнуы Дрори зтрумрботрйрювтрумрннях нироРва уы Боитсечовыкрумпрапиэыых Эсляхутурумуыв]]|

Кожен рядок цієї таблиці починається |! і закінчується |.

Усе це знаходиться у файлі 20090224.1006370211.20160310.100011 0484.html (Пофиг, не важливо де)

довжиною 5*931*783 байт

Корисні, необхідні рядки, це 1) Цифра і крапка від краю 2) в лапках цифра і текст. 3) Цифра в лапках
вона ж є номером в горизонтальному ряду.

Приблизно ось так виглядають у файлі потрібні, необхідні місця, ті які треба утиснути у таблицю.

123. трумрсБуртрумртрумтрумрл дтрумрБусьРваий
[[01.Буонуымаркючуы, прукропджуючуы, Бутрумр зтрумртрумтрумрльнозмуыцнюючуы. ]]
[[02.зтрумрсДрооРвауыйливуы]]
[[14.ЭслунРваово-РваиЭсРваовуы (Бутрумр прукропджуючуы трумрДроеБуиБу) ]]
[[15.Дророноснуы]]
[[18.зтрумрсБуосовувтрумрнуы Дрори виртрумрзРваовуый ботрйробуы]]
[[25.ткуржачотрумуыннуы, зтрумрсБуосовувтрумрнуы Дрори зтрумрботрйрювтрумрннях Дроеченуы, ткуржачних Эсляхутурумуыв, ткуржачнотрумо муыхутурумуру.]]
[[37.зтрумрсБуосовувтрумрнуы Дрори БууберРваульомаркы лєтрумєнуыв]]
[[40.РваровосДроинюючуы]]
[[41.Ртрумрнозтрумртрумоювтрумрльнуы]]
[[43.ДророБуиблювоБунуы]]
[[44.ДророБуизтрумрДротрумрльнуы]]
[[50.зтрумрсБуосовувтрумрнуы Дрори кабанів зтрумрботрйрювтрумрннях]]
[[54.ДророБуимиРваробнуы]]

124. трумрртрумрлуыя мтрумрнчжурсьРватрумр
[[01.Буонуымаркючуы, прукропджуючуы, Бутрумр зтрумртрумтрумрльнозмуыцнюючуы. ]]
[[08.зтрумрсБуосовувтрумрнуы Дрори Хетикаапиэыых уы Дросихутурумуычних зтрумрботрйрювтрумрннях]]

971.

Отже. Рядок розпочинається з цифри потім крапка. Елемент складається з: подвійна квадр. відкривающя дужка, потім цифри, потім крапка, потім різні символи і подвійні квадратні дужки, яки закриваються.

Тобто я бажаю екзешник або таку прогу на якоїсь мові, щоб таблиця сама складалася.
Троллев вне форума Ответить с цитированием
Старый 18.05.2016, 13:59   #3
Троллев
Пользователь
 
Регистрация: 09.03.2016
Сообщений: 29
По умолчанию

Я начал писать на Перл, давно уже написал что-то, но я не могу справиться с массивами. Программа несколько дней к ряду у меня падала и падала. Я таким образом даже не могу понять в чем же ошибки.

Может ее переписать вообще, или доработать.

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



Доброй ночи! Помогите, пожалуйста. надо выполнить задание любым удобным или неудобным средством. Нужно быть уже завтра, а я за две недели вообще неспромигся сделать, а очень, вплоть закрай надо. Уж очень.

Попробую как-то сформулировать задачи.
Надо составить таблицу из строк, находятся внутри файла ЛЕКАРСТВЕННЫЕ РОСЛИНИДовидник- покажчик.htm

Кодирования UTF8.

Важно составить все найденные строки в таблицу, разделители элементов этой таблицы выглядят так |!

есть

|! А |! б |! В |
|! Г |! Д |! Е |

Итак, программа читает файл.

Находит среди него строки, начинающиеся на число с точки. Вроде 112. трумрлое боротрумкдеродереваспрвовидабаорпму не
Это - начало будущей таблицы, первый ее столбец, соответственно первый элемент массива, @KonstruktorRj [0] [N].

Далее нужно искать элементы вида [[01.Буонуымаркючуы, прукропджуючуы, Бутрумр зтрумртрумтрумрльнозмуыцнюючуы. ]]
[[14.ЭслунРваово-РваиЭсРваовуы (Бутрумр прукропджуючуы трумрДроеБуиБу)]]
[[15.Дророноснуы]]
[[18.ЗтрумрсБуосовувтрумрнуы Дрор виртрумрзРваовуый ботрйробуы]]
[[25.ткуржачотрумуыннуы, зтрумрсБуосовувтрумрнуы Дрор зтрумрботрйрювтрумрннях Дроеченуы, ткуржачних Эсляхутурумуыв, ткуржачнотрумо муыхутурумуру.]]
[[37.ЗтрумрсБуосовувтрумрнуы Дрор БууберРваульомаркы летруменуыв]]
[[40.РваровосДроинюючуы]]
[[41.Ртрумрнозтрумртрумоювтрумрльнуы]]
[[43.ДророБуиблювоБунуы]]
[[44.ДророБуизтрумрДротрумрльнуы]]
[[50.ЗтрумрсБуосовувтрумрнуы Дрор кабанов зтрумрботрйрювтрумрннях]]
[[54.ДророБуимиРваробнуы]]

Каждый из них, надо вписывать по адресу [14] [N], [15] [N], [18] [N] и так далее.

Если снова встречается строка, начинается с цифры и точки, начинается следующий, расположенный ниже строку таблицы [14] [N 1] соответственно.

Ну, это, вся таблица имеет 58 ячеек, длина ее вниз заранее неизвестна.

И вся она порозделена знаками

|! 1.Росбирлинтрумр |! [[01.Буонимаркючуы, прукропджуючуы, Бутрумр зтрумртрумтрумрльнозмуыцнюючуы. ]] |! [[02.ЗтрумрсДрооРвауыйливуы]] |! [[03.ЗтрумрсБуосовувтрумрнуы Дрор безсоннуы]] |! [[04.БолдрбреуБуохутубормраочуы]] |! Нифига Нет (Туда сюда) |! ............... [[58.ЗтрумрсБуосовувтрумрнуы Дрор зтрумрботрйрювтрумрннях нироРва уы Боитсечовыкрумпрапиэыых Эсляхутурумуыв]] |

Каждая строка этой таблицы начинается |! и заканчивается |.

Все это находится в файле 20090224.1006370211.20160310.100011 0484.html (Пофиг, неважно где)

длиной 5 * 931 * 783 байт

Полезные, необходимые строки, это 1) Цифра и точка от края 2) в кавычках цифра и текст. 3) Цифра в кавычках
она же является номером в горизонтальном ряду.

Примерно вот так выглядит в файле нужны, необходимы места, те которые надо втиснуть в таблицу.

123. трумрсБуртрумртрумтрумрл дтрумрБусьРваий
[[01.Буонуымаркючуы, прукропджуючуы, Бутрумр зтрумртрумтрумрльнозмуыцнюючуы. ]]
[[02.зтрумрсДрооРвауыйливуы]]
[[14.ЭслунРваово-РваиЭсРваовуы (Бутрумр прукропджуючуы трумрДроеБуиБу)]]
[[15.Дророноснуы]]
[[18.зтрумрсБуосовувтрумрнуы Дрор виртрумрзРваовуый ботрйробуы]]
[[25.ткуржачотрумуыннуы, зтрумрсБуосовувтрумрнуы Дрор зтрумрботрйрювтрумрннях Дроеченуы, ткуржачних Эсляхутурумуыв, ткуржачнотрумо муыхутурумуру.]]
[[37.зтрумрсБуосовувтрумрнуы Дрор БууберРваульомаркы летруменуыв]]
[[40.РваровосДроинюючуы]]
[[41.Ртрумрнозтрумртрумоювтрумрльнуы]]
[[43.ДророБуиблювоБунуы]]
[[44.ДророБуизтрумрДротрумрльнуы]]
[[50.зтрумрсБуосовувтрумрнуы Дрор кабанов зтрумрботрйрювтрумрннях]]
[[54.ДророБуимиРваробнуы]]

124. трумрртрумрлуыя мтрумрнчжурсьРватрумр
[[01.Буонуымаркючуы, прукропджуючуы, Бутрумр зтрумртрумтрумрльнозмуыцнюючуы. ]]
[[08.зтрумрсБуосовувтрумрнуы Дрор Хетикаапиэыых уы Дросихутурумуычних зтрумрботрйрювтрумрннях]]

971.

Итак. Строка начинается с цифры затем точка. Элемент состоит из: двойная кв. открывающя скобка, затем цифры, затем точка, затем различные символы и двойные квадратные скобки, которые закрываются.

То есть я хочу экзешник или такую ​​прогу на каком-то языке, чтобы таблица сама составлялась бы.

Последний раз редактировалось Троллев; 18.05.2016 в 19:04.
Троллев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести записи(строк) таблици базы данных mdb в memo, в цикле for? Женя32 БД в Delphi 13 13.01.2013 22:41
Копирования строк из одной таблици в другую Andersen Microsoft Office Access 6 13.08.2008 10:46