Using While and If statements

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Using While and If statements
# 1  
Old 01-07-2011
Using While and If statements

1. The problem statement, all variables and given/known data:
Two problems I need solving please. I created a script where the user types in 7 numbers as standard input and each one is then stored in an array. Now I need to perform the following calculations on those numbers:

1) Use a while loop to determine the largest number in the range.

2)Use an If statement to calculate the median within the range.

Please provide each suggestion with the simplest command structure possible.

Many thanks for your help!


2. Relevant commands, code, scripts, algorithms:
If statement for question 2
While statement for question 1
-gt option
{arr[0]} array

3. The attempts at a solution (include all code and scripts):
1)

While [{arr[0]} -gt {arr[1-6]}
do
Done

2)

Sort {arr[0-6]}

#Absolutely stuck after sort

4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):

Canterbury Christ Church University
Canterbury, Kent
United Kingdom

Professor name: Richard Henson

Course name: Operating Systems Assignment 1

Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).
# 2  
Old 01-08-2011
- When refererring to an array element, you need a $ sign: ${arr[0]}
- Statements are case sensitive: while instead of While
- A test statement needs space around the square brackets :
Code:
while [ 1 -eq 1 ] 
do

- You cannot refer to a range of array elements like this ${arr[1-6]}
# 3  
Old 01-08-2011
Find largest number:
Code:
declare -a num
num=("3" "4" "1" "8" "2" "9" "7")
limit="`echo ${#num[@]}`"
check=0
i=0
while [ $i -lt $limit ]
do 
if [ $check -lt ${num[$i]} ]; then 
check="`echo ${num[$i]}`"
fi 
let i=i+1 
done 
echo "Largest number is:$check"

Median:
Code:
declare -a num
num=("3" "4" "1" "7" "2" "9" "10" "5")
limit="`echo ${#num[@]}`"
check=`expr $limit % 2`
if [ $check -eq 1 ];then
#Number count is odd 
# median
declare -a tmp_num 
tmp_num=(`for ((i=0;i<$limit;i++));do echo "${num[$i]}"; done | sort -n`)
med_pos=`expr $limit - 1`
med_posf=`expr $med_pos / 2`
echo "Median is:${tmp_num[$med_posf]}"
elif [ $check -eq 0 ];then
#number count is even
#median
declare -a tmp_num 
tmp_num=(`for ((i=0;i<$limit;i++));do echo "${num[$i]}"; done | sort -n`)
med_posx=`expr $limit / 2`
med_pos1=`expr $med_posx - 1`
med_pos2=`expr $med_pos1 + 1`
med_tmp=`expr ${tmp_num[$med_pos1]} + ${tmp_num[$med_pos2]}`
medf=`echo "scale = 2; $med_tmp / 2"| bc`
echo "Median is:$medf"
fi

This was just a quick attempt. change math options as u like
Smilie
# 4  
Old 01-08-2011
@mtomar, don't do other people's homework. Besides, your solution is a perfect example of shoddy programming.
# 5  
Old 01-08-2011
Quote:
Originally Posted by mtomar
Find largest number:
Code:
declare -a num
num=("3" "4" "1" "8" "2" "9" "7")
limit="`echo ${#num[@]}`"
check=0
i=0
while [ $i -lt $limit ]
do 
if [ $check -lt ${num[$i]} ]; then 
check="`echo ${num[$i]}`"
fi 
let i=i+1 
done 
echo "Largest number is:$check"

Median:
Code:
declare -a num
num=("3" "4" "1" "7" "2" "9" "10" "5")
limit="`echo ${#num[@]}`"
check=`expr $limit % 2`
if [ $check -eq 1 ];then
#Number count is odd 
# median
declare -a tmp_num 
tmp_num=(`for ((i=0;i<$limit;i++));do echo "${num[$i]}"; done | sort -n`)
med_pos=`expr $limit - 1`
med_posf=`expr $med_pos / 2`
echo "Median is:${tmp_num[$med_posf]}"
elif [ $check -eq 0 ];then
#number count is even
#median
declare -a tmp_num 
tmp_num=(`for ((i=0;i<$limit;i++));do echo "${num[$i]}"; done | sort -n`)
med_posx=`expr $limit / 2`
med_pos1=`expr $med_posx - 1`
med_pos2=`expr $med_pos1 + 1`
med_tmp=`expr ${tmp_num[$med_pos1]} + ${tmp_num[$med_pos2]}`
medf=`echo "scale = 2; $med_tmp / 2"| bc`
echo "Median is:$medf"
fi

This was just a quick attempt. change math options as u like
Smilie
Hi man. Many thanks for writing that long script but I must refuse to use it. It is far too complex and I would greatly like understand what scripts im adding to my assignment. Please give me a more simplified answer so I may interpret, understand it and then implement it. Thanks for your help again Smilie
# 6  
Old 01-12-2011
@javahater / @jjb1989
I am not here to get marks on my scripting skills... they are doing fine for me.
As i already said this was just a quick draft .. so i just kept adding lines rather than trying make it a beautiful looking small script. In my days there was no internet for help .... ahaha
idea is to give u a direction and u choose ur own path / scripts.
Smilie

no hard feelings !!
# 7  
Old 01-12-2011
@jjb1989
What Shell do you use?
Code:
echo $SHELL

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

if and then statements

I came across a bash script that outputs the forecast for the day and the max temperature but at the end of the day the max temperature disappears ($6) and I am left with "°C" after the forecast. Here is the script: #! /bin/bash curl -s --connect-timeout 30... (7 Replies)
Discussion started by: _light_
7 Replies

2. Shell Programming and Scripting

Using While and If statements

Hi guys, Two problems I need solving please. I created a script where the user types in 7 numbers as standard input and each one is then stored in an array. Now I need to perform the following calculations on those numbers: 1) Use a while loop to determine the largest number in the range. ... (2 Replies)
Discussion started by: jjb1989
2 Replies

3. Shell Programming and Scripting

vi and if statements

Hi I am very new to Unix programming and shell scripting. I am trying t figure out how to write a little script that will output the number of directories. I can find the number of directories using ls -l | grep "^d" | wc -l I can not figure out how to do it so when I type the name... (8 Replies)
Discussion started by: Reddoug
8 Replies

4. Shell Programming and Scripting

Help with IF statements

I am writing a script that does a search for a argument in a file and lists all like occurrences. The script verifies that it is a file and then runs another script that list the lines. My problem is that I need the script to accept a file or a directory and then go to that directory check all... (1 Reply)
Discussion started by: zero3ree
1 Replies

5. Shell Programming and Scripting

If statements....

Good morning all! I want to know if Im interpreting this if statement below right. if(((1) || (0)) && (1)){ do stuff; } This is saying: if true piped into false, then true, then do stuff. Right? What does the && stand for? thanks in advance! ben (3 Replies)
Discussion started by: bigben1220
3 Replies

6. UNIX for Dummies Questions & Answers

Help with For Statements

Hi, I am trying to write a for statement that will allow for the ps, who, finger, and date commands to run. Can anyone help? I use Putty. (22 Replies)
Discussion started by: lexydoll87
22 Replies

7. Shell Programming and Scripting

HELP!! if statements

I am kind of new in Unix and i have to make a menu. I want to put an if statement in the menu. you should enter the filename and it goes to that file. How do i do this? (1 Reply)
Discussion started by: trob
1 Replies

8. UNIX for Advanced & Expert Users

if statements

This is for a program I have to do to calculate the day of the week. I need to write an if statement that will do the following: if day is 29 and year is odd, don't calculate dayif ( day == 29 && year == ??? )I know how to do it for the day but I don't know how to do it for the year. (4 Replies)
Discussion started by: pwanda
4 Replies

9. Shell Programming and Scripting

Please help on IF statements.

I had different problem scenarios with IF statement. Can any expert please enlighten me on the difference with these scenarios. Thank you. 1st Scenario: testdate=`date +%Y%m` test=`cat /var/log/database0.$testdate*.log | grep "Errors found during processing" | tail -10` if then ... (4 Replies)
Discussion started by: filthymonk
4 Replies

10. UNIX for Dummies Questions & Answers

if statements

I am trying to change this : Albert Einstein 52 Peter Scott 22 Hilary Smith 48 Joan Bakewell 30 Catherine Maguire 26 into Albert Einstein Pass Peter Scott Fail Hilary Smith Pass Joan Bakewell Fail Catherine Maguire Fail I have to use a if statement that says: if field 3 is... (2 Replies)
Discussion started by: lilas
2 Replies
Login or Register to Ask a Question