0% found this document useful (0 votes)
27 views26 pages

Arrays

Uploaded by

Kubrat Ivanov
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views26 pages

Arrays

Uploaded by

Kubrat Ivanov
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 26

Arrays

Fixed-Size Sequences of Elements

0 1 2 3 4
… … … … …

SoftUni Team
Technical Trainers
Software University
https://softuni.bg
Table of Contents

1. Arrays
2. Reading Arrays from the Console
3. Foreach Loop

2
Arrays
Working with Arrays of Elements
What Are Arrays?
 In programming, an array is a sequence of elements
Element index
Array of 5
0 1 2 3 4
elements … … … … …
Element of an array

 Elements are numbered from 0 to Length-1


 Elements are of the same type (e.g. integers)
 Arrays have fixed size (Array.Length) and
cannot be resized
4
Creating Arrays
 Use the new keyword
 It is used to create the array and initialize the array
elements to their default values
 Allocating an array of 10 integers: All elements are
int[] numbers = new int[10]; initially = 0

 An array that stores string elements can be declared


in the same way: All elements are
initially = null
string[] names = new string[10];

5
Working with Arrays
 Assigning values to the array elements
 The Length holds the number of array elements
for (int i = 0; i < numbers.Length; i++)
numbers[i] = 1;

 Accessing array elements by index


 The [] operator accesses elements by index
numbers[5] = numbers[2] + numbers[7];
numbers[10] = 1; // IndexOutOfRangeException

6
Days of Week – Example
 The days of week can be stored in array of strings:
string[] days = { Operator Notation in C#
"Monday", days[0] Monday
"Tuesday",
days[1] Tuesday
"Wednesday",
days[2] Wednesday
"Thursday",
"Friday", days[3] Thursday
"Saturday", days[4] Friday
"Sunday" days[5] Saturday
}; days[6] Sunday

7
Problem: Day of Week
 Enter a day number [1…7] and print the day name (in English)
or "Invalid day!"

Check your solution here: https://judge.softuni.bg/Contests/2906 8


Solution: Day of Week

string[] days = { "Monday", "Tuesday", "Wednesday",


"Thursday", "Friday", "Saturday", "Sunday" };
int day = int.Parse(Console.ReadLine());

The first day in our array


if (day >= 1 && day <= 7) stays at index 0, not 1.
Console.WriteLine(days[day - 1]);
else
Console.WriteLine("Invalid day!");

Check your solution here: https://judge.softuni.bg/Contests/2906 9


Reading Array
Using a For Loop or String.Split()
Reading Arrays from the Console
 First, read from the console the array length:
int n = int.Parse(Console.ReadLine());

 Next, create an array of given size n and read its elements:


int[] arr = new int[n];
for (int i = 0; i < n; i++)
{
arr[i] = int.Parse(Console.ReadLine());
}

11
Reading Array Values from a Single Line
 Arrays can be read from a single line of separated values
2 8 30 25 40 72 -2 44 56
Split( ) splits
string values = Console.ReadLine(); by space
string[] items = values.Split(); into string[]
int[] arr = new int[items.Length];

for (int i = 0; i < items.Length; i++)


arr[i] = int.Parse(items[i]);
12
Shorter: Reading Array from a Single Line
 Read an array of integers: using System.LINQ;

var inputLine = Console.ReadLine();


string[] items = inputLine.Split(', ');
int[] arr = items.Select(int.Parse).ToArray();

int[] arr = Console.ReadLine().Split(', ') Or even


.Select(int.Parse).ToArray(); shorter

13
Printing Arrays On the Console
 To print all array elements, a for-loop can be used
 Separate elements with white space or a new line
string[] arr = {"one", "two"};
// == new string [2] {"one", "two"};
// Process all array elements
for (int index = 0; index < arr.Length; index++)
{
// Print each element on a separate line
Console.WriteLine("arr[{0}] = {1}", index, arr[index]);
}
14
Problem: Print Numbers in Reverse Order
 Read an array of integers (n lines of integers), reverse it and
print its elements on a single line, space-separated:

3 4
10 -1
30 20 10 20 5 99 20 -1
20
30 99
5

Check your solution here: https://judge.softuni.bg/Contests/2906 15


Solution: Print Numbers in Reverse Order
// Read the array (n lines of integers)
var n = int.Parse(Console.ReadLine());
var arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = int.Parse(Console.ReadLine()); }
// Print the elements from the last to the first
for (int i = n-1; i >= 0; i--) {
Console.Write(arr[i] + " "); }
Console.WriteLine();

Check your solution here: https://judge.softuni.bg/Contests/2906 16


Problem: Rounding Numbers
 Read an array of real numbers (space separated), round them in
"away from 0" style and print the output as in the examples:
0.9 1.5 2.4 2.5 3.14 -5.01 -1.599 -2.5 -1.50 0

0.9 => 1 -5.01 => -5


1.5 => 2 -1.599 => -2
2.4 => 2 -2.5 => -3
2.5 => 3 -1.50 => -2
3.14 => 3 0 => 0

Check your solution here: https://judge.softuni.bg/Contests/2906 17


Solution: Rounding Numbers
 Rounding turns each value to the nearest integer
double[] nums = Console.ReadLine().Split()
.Select(double.Parse).ToArray();
int[] roundedNums = new int[nums.Length];
for (int i = 0; i < nums.Length; i++) {
2.5 => 3
roundedNums[i] = (int)Math
.Round(nums[i], MidpointRounding.AwayFromZero); }
// TODO: Print each number

Check your solution here: https://judge.softuni.bg/Contests/2906 18


Printing Arrays with for / String.Join(…)
 Use for-loop:
int[] arr = { 10, 20, 30, 40, 50};
for (int i = 0; i < arr.Length; i++) {
Console.WriteLine(arr[i]); }

 Use string.Join(separator, array):


int[] arr = { 1, 2, 3 };
Console.WriteLine(string.Join(", ", arr)); // 1, 2, 3
string[] strings = { "one", "two" };
Console.WriteLine(string.Join(" - ", strings)); // one - two

19
Problem: Reverse Array of Strings
 Read an array of strings (space separated values), reverse
it and print its elements:
a b c d e e d c b a -1 hi ho w w ho hi -1

 Reversing array elements:


exchange

a b c d e

Check your solution here: https://judge.softuni.bg/Contests/2906 20


Solution: Reverse Array of Strings

var items = Console.ReadLine().Split(' ').ToArray();


for (int i = 0; i < items.Length / 2; i++)
{
var oldElement = items[i];
items[i] = items[items.Length - 1 - i];
items[items.Length - 1 - i] = oldElement;
}

Console.WriteLine(string.Join(" ", items));

Check your solution here: https://judge.softuni.bg/Contests/2906 21


Foreach Loop
Iterate through Collections
Foreach Loop
 Iterates through all elements in a collection
 Cannot access the current index
 Read-only
foreach (var item in collection)
{
// Process the value here
}

23
Print an Array with Foreach

int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{
Console.Write($"{number} ");
}

12345
24
Summary

 Arrays
… hold a sequence of elements
 …Elements are numbered from 0 to length-1

 Creating
… (allocating) an array: new[]
 Accessing array elements by index
 Printing array elements: string.Join()

25
Questions?
© SoftUni – https://softuni.org. Copyrighted document. Unauthorized copy, reproduction or use is not permitted.

You might also like