Мне досталось задание написать на Shell:
Ввести список студентов с перечнем оценок каждого из низ по некоторой дисциплине. Вывести новый список, содержащий фамилию студента и его средний балл.
Однако на лекциях нам Shell не давали. Давали только Pascal и С.
Есть только методичка, из которой непонятно, как работать со строками, и пример программы:
#Enter input array and find first non-zero item
echo -n "Enter array length: "
read length
non_zero_item=0
i=1
while [ $i -le $length ]
do
echo -n "Enter Arr($[i]): "
read Arr$[i]
if [ $[Arr$[i]] != 0 -a $non_zero_item = 0 ]
then
non_zero_item=$[Arr$[i]]
fi
i=$[i+1]
done
#Print input data
echo "Input Array:"
i=1
while [ $i -le $length ]
do
echo -n " $[Arr$[i]]"
i=$[i+1]
done
echo
#First non-zero item
if [ $non_zero_item = 0 ]
then
echo "Non-zero item not found"
exit
else
echo "First non-zero item = $non_zero_item"
fi
#Processing
i=1
while [ $i -le $length ]
do
if [ $[Arr$[i]] = 0 ]
then
eval Arr$[i]=$non_zero_item
fi
i=$[i+1]
done
#Print output data
echo "Modified Array:"
i=1
while [ $i -le $length ]
do
echo -n " $[Arr$[i]]"
i=$[i+1]
done
echo
Этого для меня недостаточно, чтобы выполнить лабу. Со значительно более сложными заданиями на Си я всегда справляюсь. А тут, вроде бы, простая задача вызывает серьёзные проблемы. Тем более, у меня даже вышеприведённый пример почему-то не хочет работать. Если кому не сложно, помогите, пожалуйста!
21 июня 2009 в 12:01
Проблема решена. Всем большое спасибо!
20 мая 2009 в 20:02
может:
echo "Input kol-vo students"
read enter
read n
i=1
while [ $i -lt $n ]
do
echo -n "Input name students $i="
read enter
read name$i
i=$[i+1]
done
i=1
while [ $i -lt $n ]
do
echo "Input kol-vo ocenok for name$i"
read enter
read nn
j=1
echo "Input ocenki"
read enter
while [ $j -lt $nn ]
do
read name$ia$j
j=$[j+1]
done
i=$[i+1]
done
while [ $i -lt $n ]
do j=1
while [ $j -lt $nn ]
do
eval \temp=[ $temp + name$ia$j ]
j=$[j+1]
done
eval \temp=[ $temp /$nn ]
echo $name$i + "-" + $temp
temp=0
i=$[i+1]
done
17 мая 2009 в 0:03
из интерпретаторов sh проще всего в практическом использовании какой-нибудь bash (в силу его большой популярности на unix-like системах). так что //lmgtfy.com/?q=bash+for+windows
ЗЫ:
во-первых, для винды вам потребуется прописать, что .sh-файлы следует открывать с помощью вашего sh-исполнителя (открыть с помощью + всегда использовать эту программу). во-вторых, осмотрите переменную окружения PATHEXT – установка подходящего значения позволит исполнять .sh-файлы без указания расширения.
16 мая 2009 в 20:02
можно установить uwin-base
без геморроя
16 мая 2009 в 14:01
Вероятнее всего, тебе нужен MinGW/MSYS. Поищи в гугле, как их установить – это вполне реально, хотя и не без геморроя.
16 мая 2009 в 12:02
Спасибо за подсказки!
Проблема ещё в том, что препод скинул нам какой-то свой компилятор Shell для Windows, чтоб мы в нём делали. У меня он почему-то не идёт. Пробовал создавать почти пустые файлы с расширением ".sh"- он их как бы не видит. Значит, не только его пример не работает.
Что делать-не представляю. Устанавливать Unix, потом штудировать учебник, потерять на это неделю? Это из-за одной маленькой лабы!
У нас все другие задания (лабы и курсач) идут на Си, какой смысл был в таком задании на Shell- непонятно, тем более нам и Unix не объясняли (впрочем, и Windows тоже). Это, что ли, преподу галочка – типа обучил студентов новому языку?
ЛЮДИ, КТО SHELL ЗНАЕТ -МОЖЕТ, НАПИШЕТЕ ПРОГРАММКУ?
"Ввести список студентов с перечнем оценок каждого из них по некоторой дисциплине. Вывести новый список, содержащий фамилию студента и его средний балл."
Кому-то ведь это раз плюнуть, а мне потребуется прямо подвиг какой-то совершить!
P.S. Время ещё очень поджимает! Обидно будет, если выгонят из-за такой ерунды!
15 мая 2009 в 22:02
ностальгия
я на этом языке писал сайтик
15 мая 2009 в 20:02
а какую ошибку пишет?
15 мая 2009 в 20:01
//cs.ifmo.ru/~ad/Documentation/ABS_Guide_ru.html вот тот же самый на русском
у нас тоже лабы такие были, всё делал по этому учебнику
15 мая 2009 в 19:01
может пригодится: если выражение записать в ((вырадение)), то оно выполнится как на си (например ((i++)) – инкремент)
15 мая 2009 в 16:04
"Однако на лекциях нам Shell не давали" – у нас такое было по системному программированию. Лекций как таковых вообще не было, а лабы на ассемблере требовали…
15 мая 2009 в 16:02
преподы ебанулились(это везде так)…дай ему по голове самоучителем по 3DS Max или Photoshop…..
15 мая 2009 в 15:00
Пиздееееец… Преподов гнать в шею.
Вот, почитай лучше учебник
//tldp.org/LDP/abs/html/