Простенькая задача.

Статус
В этой теме нельзя размещать новые ответы.

nixxx

Постоялец
Регистрация
24 Ноя 2006
Сообщения
82
Реакции
46
Но моих скромных знаний в php не достаточно.

Помогите пожалуйста реализовать следующее.

Есть файл list1.txt содержащий строки:

x аааа
x бббб
x вввв
x ггггг
x дддд

И файл list2.txt содержащий:

1
2
3

На выходе в list3.txt записывается:

1 аааа
2 бббб
3 вввв
1 ггггг
2 дддд

Когда пройдены все строки в list2.txt значения берутся заново начиная с первой строки.
// By Jeurey:
1. Задача не уровня pro
2. Заказ платных услуг - в соответствующем разделе.
3. Топик закрыт.
4. Бан на месяц.
 
1. Эта зада не для про раздела.
2. Возможно и найдутся желающие решить её вместо тебя на халяву, но ИМХО это не правильным. Нужно что бы ты сам решил задачу.
3. Пишешь алгоритм на русском языке. Это пожалуй самое трудное, понять как реализовать. Отсутствие привязки к php облегчит решение.
4. Смотришь разделы справки php:
- работа с файлами (чтение\запись);
- Control Structures (структуры управления) на предмет ветвлений и циклов;
- работа с массивами;
- работа со строками.
5. Пишешь на основе алгоритма код.

Подсказка по алгоритму... Читаем list2.txt в массив. Читаем list1.txt и пишем в list3.txt, при этом перебирая массив полученный из list2.txt и составляя нужную строку.
 
Не для про? Ну можно и по сложнее :)
Первому кто сделает, спасибо в виде 5wmz на кошелек.


Есть файл list.txt содержащий строки:

x аааа z
x бббб z
x вввв z
x ггггг z
x дддд z
x жжж z

И файлы list1.txt list2.txt list3.txt list4.txt и до list90.txt содержащие:

В list1.txt:

метро ВДНХ //первой строкой идет название метро
ул.Ленина
ул.Пушкина
ул.Гагарина

В list2.txt:

метро Курская
Нижняя ул.
Обуха пер.
Покровка ул.

В скрипте указывается кол-во строк из list.txt к которым нужно добавить значения из каждого list1-90.txt

Например указали -3

На выходе в Out.txt записывается:

ул.Ленина аааа ВДНХ
ул.Пушкина бббб ВДНХ
ул.Гагарина вввв ВДНХ
Нижняя ул. гггг Курская
Обуха пер. дддд Курская
Покровка ул жжж Курская


Когда пройдены все строки в list1.txt значения берутся заново начиная с первой строки до заданного количества строк.

Вобщем, Пишите в личку кто возьмется.
 
вот для первой задачи

не очень красиво зато работает

PHP:
<?
/* conf */
$list1_file = 'list1.txt'; //файл со списком типа "x аааа"

$list2_file = 'list2.txt'; //файл со значениями типа "1"

$list3_file = 'list3.txt'; //результирующий файл

$separated = " "; //разделитель в первом файле 

$separate = " "; //разделирель в итоговом файле
/* / conf */

$list1 = file($list1_file);
$list2 = file($list2_file);

$list1_n = count($list1);
$list2_n = count($list2);

for ($i = 0; $i < $list1_n; $i++)
{
list(, $list1[$i] ) = explode($separated, $list1[$i]);
$list1[$i] = str_replace("\n", "", $list1[$i]);
$list1[$i] = str_replace("\r", "", $list1[$i]);
}

for ($i = 0; $i < $list2_n; $i++)
{
$list2[$i] = str_replace("\n", "", $list2[$i]);
$list2[$i] = str_replace("\r", "", $list2[$i]);
}

$i = 0;
$i2 = 0;
$wr = "";
while ($list1[$i])
{
$wr .= $list2[$i2].$separate.$list1[$i]."\r\n";
$i++;
$i2++;
if ($i2 > $list2_n - 1) 
{
$i2 = 0;
}
}

$fs = fopen ( $list3_file, "w" ); 
ftruncate ( $fs, 0 ); 
fwrite ( $fs, $wr ); 
fflush ( $fs );
fclose ( $fs ); 
?>


Добавлено через 23 минуты
+++

ты чет запутано написал для 2-го примера -

допустим если количество указанных строк 2, то полученный файл будет вида :
---
ул.Ленина аааа ВДНХ
ул.Пушкина бббб ВДНХ
ул.Гагарина аааа ВДНХ
Нижняя ул. бббб Курская
Обуха пер. аааа Курская
Покровка ул бббб Курская
---

или

---
ул.Ленина аааа ВДНХ
ул.Пушкина бббб ВДНХ
Нижняя ул. вввв ВДНХ
Обуха пер. гггг Курская
---


а вообще лучше нормально напиши что именно тебе надо сделать
 
Если 2 то:

---
ул.Ленина аааа ВДНХ
ул.Пушкина бббб ВДНХ
Нижняя ул. вввв Курская
Обуха пер. гггг Курская
---
И еще, x и z - это маркеры которые нужно заменить x- улица, z- метро
 
ты меня еще больше запутал, моя ася в профиле - стукни
 
Код:
$arr1 = file('arr1.txt');
$arr2 = file('arr2.txt');

$len = max(count($arr1), count($arr2));

$k = $i = 0;

while ($k < $len && $i < $len) {
   echo $arr1[$k] . ' ' .$arr2[$i];
   $i++; 
   $k++;

   if ($k == count($arr1)) $k=0;
   if ($i == count($arr2))  $i=0;
}
 
Решение найдено. Тема закрыта.
 
2вариант:
все сделал как понял
работает с условием 2
останавливается после обработки list.txt
list.txt должен содержать только:

аааа
бббб
вввв
ггггг
дддд
жжж

без x и z

PHP:
<?
$file_mask = 'list00.txt';

$files_number = 3;

$lines_number = 3;

$sep = " ";

$res_file = 'out.txt';

function GetFile ($_f_n)
{
$_f_n = file($_f_n);
$_f_n = str_replace("\n", "", $_f_n);
$_f_n = str_replace("\r", "", $_f_n);
return $_f_n;
}

function GetArr ($_f_mask, $_number)
{
for ($i = 1; $i <= $_number; $i++)
{
$_file = str_replace ("00", $i, $_f_mask);
$_file = GetFile($_file);
$_list[$i] = $_file;
}
$_ins = str_replace ("00", "", $_f_mask);
$_ins = GetFile($_ins);
$_list[0] = $_ins;
return $_list;
}

$list = GetArr($file_mask, $files_number);
$replaces_n = count($list[0]);
$w = "";
$f = 1;
$u = 1;
for ($r = 0; $r < $replaces_n; $r++)
{
$w .= $list[$f][$u].$sep.$list[0][$r].$sep.$list[$f][0]."\r\n";
if ($u < $lines_number)
{
$u++;
}
else
{
$u = 1;
$f++;
}
}

$fs = fopen ( $res_file, "w" ); 
ftruncate ( $fs, 0 ); 
fwrite ( $fs, $w ); 
fflush ( $fs );
fclose ( $fs ); 

?>
 
Забанте меня на неделю. Можете и на совсем. Мне зарегаться и востребованными ответами месаджей по темам набрать не проблема. Но я не согласен с модерацией. За такие задачи бы отправлял в бан. Я думаю всем нужны не халявщики, а партнёры. Месандж в разделе работа - понял бы. В разделе "Помогите на халяву" тоже понял бы. Но ведь человек не учится и не собирается учиться, а раздел для того. Ну подсказать. Ну привести пример части задачи. А так уровень плинтуса... Да простят меня боги и не покинет уверенность. :an:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху