Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите плиз с лабой :) 
V
    Опции темы
Олюнчик
  Дата 16.12.2006, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 16.12.2006

Репутация: 1
Всего: 1



В общем, учусь я в МАИ... Задали сделать лабу, а у меня что-то не получается smile 

Помогите.  smile 

Вот задание

1.    Создать подпрограмму, вычисляющую целую часть частного двух чисел. Числа должны передаваться подпрограмме в качестве аргументов.
2.    Выполнить подпрограмму с тремя различными частными.
3.    Используя встроенные переменные, вывести
- имя программы;
- имя операционной системы;
- версию перл;
- время запуска программы на выполнение.
4.    Вывести на экран случайное число в диапазоне от -100 до 100.
5.    Найти абсолютную часть числа из пункта 4.
6.    Открыть файл «basa.txt» для записи.
7.    Записать в файл «basa.txt» все полученные результаты из пунктов с 1 по 5 построчно.
8.    Закрыть файл «basa.txt».
9.    Переименовать файл «basa.txt» в «basa1.txt».
10.    Удалить файл «basa.txt».
11.    Создать директорию “ILOVEPERL”.
12.    Удалить директорию “ILOVEPERL”.

PM MAIL ICQ   Вверх
nitr
Дата 16.12.2006, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



А мне диплом выпишут? smile
Адрес и др. данные куда высылать?


Олюнчик, начинайте лабу, вознкнут вопросы другого плана, пожалуйте к нам smile
А так уж совсем нескромно smile "сделайте мне лабу". Думаю однокурсники "таким" помогут, а мы можем советовать и помочь в решении ошибок, но не таких проблем, хотя может появится "добрый чел" smile

з.ы.: не принимаем как обиду.


--------------------
PM   Вверх
Олюнчик
Дата 16.12.2006, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 16.12.2006

Репутация: 1
Всего: 1



nitr, как обиду не принимаю  smile 
Просто начала первое задание делать - сразу проблема: как передавать программе числа в виде аргументов?

P.s. учусь на вечернем, в группе такие же девочки, как я ;) Поэтому помочь некому smile

Это сообщение отредактировал(а) Олюнчик - 16.12.2006, 00:59
PM MAIL ICQ   Вверх
Hidrag
Дата 16.12.2006, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: нет
Всего: 25



В командной строке через пробел как обычно а впрограмме есть массив @ARGV который принимает эти параметры. Его создавать ненужно он автоматом создается ну а потом считываешь эти данные и делаешь что нужно:
Код

$s=$ARGV[0];



--------------------
user posted image
PM WWW ICQ   Вверх
nitr
Дата 16.12.2006, 04:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



или можно так (если известно ско-ко параметров принимаем)
script.pl
Код

#perl
my ($param1, $param2) = @ARGV;
print "Param1 = $param1\n";
print "Param2 = $param2\n";

Цитата

c:\>script.pl value1 value2
Param1 = value1
Param2 = value2

c:\>



--------------------
PM   Вверх
nitr
Дата 16.12.2006, 05:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



2) вопрос я не понял smile, похоже 3 раза проверить прогу с разными аргументами smile) или что?
на 3 можно ввести команду perldoc perlvar выведит "помощь" smile
5) математику я забыл smile
а так... способов решения много smile) на все пункты
вот мои...
Код

#perl
my ($num1, $num2) = @ARGV;
print "1) ".int($num1/$num2)."\n"; #целое от деления
print "3a) $0\n";                  #имя файла программы
print "3b) $^O\n";                 #ОС
print "3c) $]\n";                  #версия перла, а лучше так printf "%vd\n", $^V;
print "3d) $^T\n";                 #время...
print "4) ".(rand(200)-100)."\n";  #наш рандом

open my $flh, '<', 'base.txt';          #открываем на запись
print $flh "1) ".int($num1/$num2)."\n"; #целое от деления
print $flh "3a) $0\n";                  #имя файла программы
print $flh "3b) $^O\n";                 #ОС
print $flh "3c) $]\n";                  #версия перла, а лучше так printf "%vd\n", $^V;
print $flh "3d) $^T\n";                 #время...
print $flh "4) ".(rand(100)-100)."\n";  #наш рандом
close $flh;                             #закрываем

rename 'base.txt', 'base1.txt';    #переименование
unlink 'base1.txt';                #удаляем

mkdir 'ILOVEPERL';                 #создаём директорию
rmdir 'ILOVEPERL';                 #удаляем директорию


добавить надо 5-ый пункт smile , да и время наверное выводить красиво ;)
что-то типа
Код

#perl
my ($sec, $min, $hour) = localtime($^T);
print "start time: $hour:$min:$sec\n";


Это сообщение отредактировал(а) nitr - 16.12.2006, 05:23


--------------------
PM   Вверх
amg
Дата 16.12.2006, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



nitr почти на все вопросы уже дал ответы, вот примерно то же самое, может, немного по-другому.
Код

#!/usr/bin/perl -w

#1. Создать подпрограмму, вычисляющую целую часть частного двух чисел. 
#   Числа должны передаваться подпрограмме в качестве аргументов.
sub chastnoe {
  # Аргументы в подпрограмму передаются в виде массива @_
  # Тут надо бы вставить проверки, что аргументов
  # сколько нужно и что это числа, а не буквы, например
  my ($delimoe,$delitel) = @_;
  die "На ноль делить нельзя!\n" if $delitel == 0;
  return int($delimoe/$delitel);
}

#2. Выполнить подпрограмму с тремя различными частными.
my $result1 = chastnoe(22, 5);    
my $result2 = chastnoe(-12.5, 3); 
my $result3 = chastnoe(2e3, 50.1);

#4. Вывести на экран случайное число в диапазоне от -100 до 100.
my $random = int(rand(100-(-100)+1))+(-100);

#5. Найти абсолютную часть числа из пункта 4.
my $absolute = abs($random);

#6. Открыть файл basa.txt для записи.
open BASA, ">", 'basa.txt' or die "Can't write to basa.txt: $!\n";

#7. Записать в файл basa.txt все полученные результаты из пунктов с 1 по 5 пост
foreach ($result1,$result2,$result3,$random,$absolute) {
  print BASA $_, "\n";
}

#8. Закрыть файл basa.txt.
close BASA;

PM MAIL   Вверх
Олюнчик
Дата 16.12.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 16.12.2006

Репутация: 1
Всего: 1



Ребята, спасибки вам большое!  smile 
С этим все более менее понятно.

Но есть другой вопрос - задали нам сделать сайт, где в интерактивной части надо сделать следующие вещи:
- гостевую книгу
- опросы (например, нравится ли дизайн... smile )
- рассылку новостей
- вывод случайной картинки из фотогалереи на главную
и т.д.

Из всего этого сделала опрос и рассылку... но почему-то при нажатии на соответсвующие кнопки ("ок" и "разослать" соответственно) вместо того, чтобы выполнять эти сценарии, браузер выводит окно о загрузке соответствующий фалов voit.cgi и mail.cgi. Почему?!  smile 
Вроде все делала правильно, по лекциям.. один в один... а тут вот что.. smile
Сервак апач запущен и работает нормально... по отдельности, если запускать эти cgi-сценарии, они кое-как работают... а тут вот что.

И вопрос вывода картинки с фотогалереи - как это сделать? Препод на лекциях предложил выводить анекдоты, я пробовала, у меня получилось... но с картинками-то как?

Сайт мой о сноуборде, так что анекдоты будут не в тему smile
PM MAIL ICQ   Вверх
korob2001
Дата 16.12.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Убедись в том, что они лежат у тебя в каталоге /cgi-bin и права на них 0755.

Добавлено @ 15:57 
Цитата(Олюнчик @  16.12.2006,  12:01 Найти цитируемый пост)
И вопрос вывода картинки с фотогалереи - как это сделать? Препод на лекциях предложил выводить анекдоты, я пробовала, у меня получилось... но с картинками-то как?

Чуть подробнее, если можно. Что за галерея? Где хранятся изображения? Как ты пытаешься их показать?


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Олюнчик
Дата 16.12.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 16.12.2006

Репутация: 1
Всего: 1



korob2001, файлы лежат в каталоге cgi-bin.
А как задать права 0755?

А галерея - просто табличка на отдельной странице html... нужно, чтобы на главную выводилось мини-изображения картинки (в случайном порядке).
PM MAIL ICQ   Вверх
korob2001
Дата 16.12.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Код

my $cnt = chmod 0755 'file.cgi', 'file2.cgi', 'file3.cgi';
print "Права изменены для $cnt файлов\n";


По поводу картинок:
Код

#!/usr/bin/perl

# Сюда будем сохранять имена изображений
my @images = ();
 
# Открываем каталог с картинками
opendir(DIR, "/home/localhost/www/images") or die $!;

# Читаем каталог
while (my $f = readdir DIR) {
    # Отбрасываем всё, что не является картинками
    next if $f =~ /\.(?:gif|jpg|png)$/i;
    # Заносим имена изображений в массив
    push(@images, $f);
}

# Закрываем каталог
closedir(DIR);

# Получаем случаное изображение
my $random_image = $images[rand @images];

# Выводим заголовок и страницу с изображением
print "Content-type: text/html\n\n";
print "<html><body>";

print qq[<img src="/images/$random_image" border="0" alt=""/>];

print "</body></html>";

Возможно этот код с ошибками, так как тестировать нет времени. Писал его сразу в форму. Пути к каталогу и к файлу в тэге <img ...> поменяй на свои.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Олюнчик
Дата 17.12.2006, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 16.12.2006

Репутация: 1
Всего: 1



Ребята! Спасибки огромное вам!!! smile 
С лабой разобралась, отладила все и сделала отчет.  smile 

Осталось с сайтом разобраться...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.