Processing Sequences of Elements

Slides:



Advertisements
Similar presentations
JavaScript Basics Course Introduction SoftUni Team Technical Trainers Software University
Advertisements

Software Quality Assurance QA Engineering, Testing, Bug Tracking, Test Automation Software University Technical Trainers SoftUni Team.
 Dimitar Ivanov Introduction to programming with microcontrollers.
C# Advanced Topics Methods, Classes and Objects SoftUni Team Technical Trainers Software University
Methods Writing and using methods, overloads, ref, out SoftUni Team Technical Trainers Software University
Software University Curriculum, Courses, Exams, Jobs SoftUni Team Technical Trainers Software University
Fundamentals SoftUni Welcome to Software University SoftUni Team Technical Trainers Software University
Programming Basics Course Introduction SoftUni Team Technical Trainers Software University
AngularJS Directives Defining Custom Directives SoftUni Team Technical Trainers Software University
Software Testing Lifecycle Exit Criteria Evaluation, Continuous Integration Ivan Yonkov Technical Trainer Software University.
Teamwork and Personal Skills Course Introduction Software University SoftUni Team Technical Trainers.
Fundamentals SoftUni Welcome to Software University SoftUni Team Technical Trainers Software University
Conditional Statements Implementing Control-Flow Logic in C# SoftUni Team Technical Trainers Software University
Course Program, Evaluation, Exams
Loops Repeating Code Multiple Times SoftUni Team Technical Trainers Software University
Processing Sequences of Elements Svetlin Nakov Telerik Corporation
Methods, Arrays, Lists, Dictionaries, Strings, Classes and Objects
Svetlin Nakov Technical Trainer Software University
Build Processes and Continuous Integration Automating Build Processes Software University Technical Trainers SoftUni Team.
Multidimensional Arrays, Sets, Dictionaries Processing Matrices, Multidimensional Arrays, Dictionaries, Sets SoftUni Team Technical Trainers Software University.
Test-Driven Development Learn the "Test First" Approach to Coding SoftUni Team Technical Trainers Software University
Functions Reusable Parts of Code SoftUni Team Technical Trainers Software University
Java Collections Basics Arrays, Lists, Strings, Sets, Maps Svetlin Nakov Technical Trainer Software University
Graphs and Graph Algorithms Fundamentals, Terminology, Traversal, Algorithms SoftUni Team Technical Trainers Software University
Arrays, Lists, Stacks, Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Very Basic Mathematical Concepts for Programmers
Asynchronous Web Services Writing Asynchronous Web Services SoftUni Team Technical Trainers Software University
C# Basics Course Introduction Svetlin Nakov Technical Trainer Software University
Jekyll Static Site Generator Template-Based Site Generation Svetlin Nakov Technical Trainer Software University
Exam Preparation Algorithms Course: Sample Exam SoftUni Team Technical Trainers Software University
Console Input / Output Reading and Writing to the Console SoftUni Team Technical Trainers Software University
Tables, Rows, Columns, Cells, Header, Footer, Colspan, Rowspan
Processing Sequences of Elements Technical Trainer Telerik Corporation Doncho Minkov.
High-Quality Code: Course Introduction Course Introduction SoftUni Team Technical Trainers Software University
Java Collections Basics Arrays, Lists, Strings, Sets, Maps Bogomil Dimitrov Technical Trainer Software University
Advanced C# Course Introduction SoftUni Team Technical Trainers Software University
C# Advanced Topics Methods, Arrays, Lists, Dictionaries, Strings, Classes and Objects SoftUni Team Technical Trainers Software University
Mocking with Moq Tools for Easier Unit Testing SoftUni Team Technical Trainers Software University
Operators and Expressions
Mocking Unit Testing Methods with External Dependencies SoftUni Team Technical Trainers Software University
Test-Driven Development Learn the "Test First" Approach to Coding Svetlin Nakov Technical Trainer Software University
Programming for Beginners Course Introduction SoftUni Team Technical Trainers Software University
Objects and Classes Using Objects and Classes Defining Simple Classes SoftUni Team Technical Trainers Software University
Sets, Dictionaries SoftUni Team Technical Trainers Software University
Lists and Matrices Lists: Variable-Size Arrays Matrices: Arrays of Arrays (Tables) SoftUni Team Technical Trainers Software University
Advanced Tree Structures Binary Trees, AVL Tree, Red-Black Tree, B-Trees, Heaps SoftUni Team Technical Trainers Software University
Functional Programming Data Aggregation and Nested Queries Ivan Yonkov Technical Trainer Software University
Software Technologies Course Overview SoftUni Team Technical Trainers Software University
Programming Fundamentals Course Introduction SoftUni Team Technical Trainers Software University
Doctrine The PHP ORM SoftUni Team Technical Trainers Software University
ASP.NET MVC Course Program, Trainers, Evaluation, Exams, Resources SoftUni Team Technical Trainers Software University
First Steps in PHP Creating Very Simple PHP Scripts SoftUni Team Technical Trainers Software University
Inheritance Class Hierarchies SoftUni Team Technical Trainers Software University
Stacks and Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Generics SoftUni Team Technical Trainers Software University
C# OOP Advanced Course Introduction SoftUni Team Technical Trainers Software University
Java OOP Advanced Course Introduction SoftUni Team Technical Trainers Software University
Functional Programming
Processing Sequences of Elements
Sets, Hash table, Dictionaries
C# Basic Syntax, Visual Studio, Console Input / Output
C# Basic Syntax, Visual Studio, Console Input / Output
Processing Sequences of Elements
Repeating Code Multiple Times
Arrays, Lists, Stacks, Queues
Array and List Algorithms
Processing Variable-Length Sequences of Elements
Numeral Types and Type Conversion
Iterators and Generators
Multidimensional Arrays
Presentation transcript:

Processing Sequences of Elements Arrays Processing Sequences of Elements Arrays SoftUni Team Technical Trainers Software University http://softuni.bg

Table of Contents Defining, Initializing and Processing Arrays Reading Arrays from the Console Using for Loop to Read Arrays Using String.Split(…) Printing Arrays at the Console Using the foreach Loop Using String.Join(…) Arrays – Exercises

Working with Arrays of Elements © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

What are Arrays? In programming array is a sequence of elements Elements are numbered from 0 to Length-1 Elements are of the same type (e.g. integers) Arrays have fixed size (Array.Length) – cannot be resized Element index 0 1 2 3 4 Array of 5 elements … Element of an array © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

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

Problem: Day of Week Enter a day number [1…7] and print the day name (in English) or "Invalid day!" string[] days = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; int day = int.Parse(Console.ReadLine()); if (day >= 1 && day <= 7) Console.WriteLine(days[day - 1]); else Console.WriteLine("Invalid day!"); Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#0

Working with Arrays Allocating an array of 10 integers: All elements are initially == 0 Allocating an array of 10 integers: Assigning values to the array elements: Accessing array elements by index: int[] numbers = new int[10]; The Length holds the number of array elements for (int i = 0; i < numbers.Length; i++) numbers[i] = 1; The [] operator accesses elements by index numbers[5] = numbers[2] + numbers[7]; numbers[10] = 1; // IndexOutOfRangeException

Problem: Sieve of Eratosthenes Write a program to find all prime numbers in range [0…n] Sieve of Eratosthenes algorithm: primes[0…n] = true primes[0] = primes[1] = false Find the smallest p, which holds primes[p] = true primes[2*p] = primes[3*p] = primes[4*p] = … = false Repeat for the next smallest p

Solution: Sieve of Eratosthenes var n = int.Parse(Console.ReadLine()); bool[] primes = new bool[n + 1]; for (int i = 0; i <= n; i++) primes[i] = true; primes[0] = primes[1] = false; for (int p = 2; p <= n; p++) if (primes[p]) FillPrimes(primes, p); static void FillPrimes(bool[] primes, int step) { for (int i = 2 * step; i < primes.Length; i += step) primes[i] = false; } TODO: print the calculated prime numbers at the end Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#1

Problem: Last K Numbers Sums Enter two integers n and k Generate and print the following sequence: The first element is: 1 All other elements = sum of the previous k elements Example: n = 9, k = 5 120 = 4 + 8 + 16 + 31 + 61 6 3 Sequence: 1 1 2 4 7 13 8 2 Sequence: 1 1 2 3 5 8 13 21 9 5 Sequence: 1 1 2 4 8 16 31 61 120 1 1 2 4 8 16 31 61 120 + Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#2

Solution: Last K Numbers Sums var n = int.Parse(Console.ReadLine()); var k = int.Parse(Console.ReadLine()); var seq = new long[n]; seq[0] = 1; for (int current = 1; current < n; current++) { var start = Math.Max(0, current - k); var end = current - 1; long sum = // TODO: sum the values of seq[start … end] seq[current] = sum; } // TODO: print the sequence seq[] Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#2

Live Exercises in Class (Lab) new int[] Working with Arrays Live Exercises in Class (Lab)

Reading Arrays from the Console Using String.Split() and Select()

Reading Arrays From the Console First, read from the console the length of the array: Next, create the array of given size n and read its elements: int n = int.Parse(Console.ReadLine()); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = int.Parse(Console.ReadLine()); }

Problem: Sum, Min, Max, First, Last, Average Write a program to read n integers and print their sum, min, max, first, last and average values: 5 12 20 -5 37 8 Sum = 72 Min = -5 Max = 37 First = 12 Last = 8 Average = 14.4 4 50 20 25 40 Sum = 135 Min = 20 Max = 50 First = 50 Last = 40 Average = 33.75 Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#3

Solution: Sum, Min, Max, First, Last, Average Use System.Linq to enable aggregate functions like .Max() and .Sum() using System.Linq; … var n = int.Parse(Console.ReadLine()); var nums = new int[n]; for (int i = 0; i < n; i++) nums[i] = int.Parse(Console.ReadLine()); Console.WriteLine("Sum = {0}", nums.Sum()); Console.WriteLine("Min = {0}", nums.Min()); // TODO: print also max, first, last and average values Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#3

Reading Array Values from a Single Line Arrays can be read from a single line of space separated values: Or even write the above as a single line of code: 2 8 30 25 40 72 -2 44 56 string.Split(' ') splits string by space and produces string[] string values = Console.ReadLine(); string[] items = values.Split(' '); int[] arr = new int[items.Length]; for (int i = 0; i < items.Length; i++) arr[i] = int.Parse(items[i]); int[] arr = Console.ReadLine().Split(' ') .Select(int.Parse).ToArray(); Use System.Linq to enable .Select()

Problem: Triple Sum (a + b == c) Write a program to read an array of integers and find all triples of elements a, b and c, such that a + b == c (a stays left from b) 1 1 1 1 4 2 8 6 2 7 5 0 3 1 5 6 1 2 No 4 + 2 == 6 2 + 6 == 8 2 + 5 == 7 2 + 0 == 2 7 + 0 == 7 5 + 0 == 5 3 + 2 == 5 1 + 5 == 6 1 + 1 == 2 1 + 2 == 3 5 + 1 == 6 Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#4

Solution: Triple Sum (a + b == c) int[] nums = Console.ReadLine().Split(' ') .Select(int.Parse).ToArray(); for (int i = 0; i < nums.Length; i++) for (int j = i + 1; j < nums.Length; j++) { int a = nums[i]; int b = nums[j]; int sum = a + b; if (nums.Contains(sum)) Console.WriteLine($"{a} + {b} == {sum}"); } TODO: print "No" when no triples are found Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#4

Printing Arrays at the Console Using foreach and String.Join()

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 Example: string[] arr = {"one", "two", "three", "four", "five"}; // 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]); }

Problem: Rounding Numbers Read an array of real numbers (space separated values), 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 1.5 => 2 2.4 => 2 2.5 => 3 3.14 => 3 -5.01 => -5 -1.599 => -2 -2.5 => -3 -1.50 => -2 0 => 0 Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#5

Solution: Rounding Numbers Rounding turns each value to the nearest integer What to do when the value is exactly between two integers? double[] nums = Console.ReadLine() .Split(' ').Select(double.Parse).ToArray(); int[] roundedNums = new int[nums.Length]; for (int i = 0; i < nums.Length; i++) roundedNums[i] = (int) Math.Round(nums[i], MidpointRounding.AwayFromZero); Console.WriteLine($"{nums[i]} -> {roundedNums[i]}"); Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#5

Printing with foreach / String.Join(…) Use foreach-loop: Use string.Join(separator, array): int[] arr = { 10, 20, 30, 40, 50}; foreach (var element in arr) Console.WriteLine(element) int[] arr = { 1, 2, 3 }; Console.WriteLine(string.Join(", ", arr)); // 1, 2, 3 string[] strings = { "one", "two", "three", "four" }; Console.WriteLine(string.Join(" - ", strings)); // one - two - three - four

Problem: Reverse Array Read an array of strings (space separated values), reverse it and print its elements: Reversing array elements: 1 2 3 4 5 5 4 3 2 1 -1 20 99 5 5 99 20 -1 1 2 3 4 5 exchange Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#6

Solution: Reverse Array var nums = Console.ReadLine() .Split(' ').Select(int.Parse).ToArray(); for (int i = 0; i < nums.Length / 2; i++) SwapElements(nums, i, nums.Length - 1 - i); Console.WriteLine(string.Join(" ", nums)); static void SwapElements(int[] arr, int i, int j) { var oldElement = arr[i]; arr[i] = arr[j]; arr[j] = oldElement; } Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#6

Solution: Reverse Array – Functional Style Another solution to the "reverse array" problem: Or even shorter (without parsing strings to numbers): Console.WriteLine(string.Join(" ", Console.ReadLine().Split(' ').Select(int.Parse) .Reverse().ToArray())); Console.WriteLine(string.Join(" ", Console.ReadLine().Split(' ').Reverse())); Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#6

Reading and Printing Arrays Live Exercises in Class (Lab)

Arrays – Exercises

Problem: Sum Arrays Write a program that reads two arrays of integers and sums them When elements are less, duplicate the smaller array a few times 1 2 3 4 2 3 4 5 1 2 3 4 5 2 3 1 2 3 4 5 2 3 2 3 2 5 4 3 2 3 1 4 5 4 3 5 2 3 1 4 3 5 7 9 3 5 5 7 7 7 7 4 9 Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#7

Loop the array: end  start Solution: Sum Arrays var arr1 = Console.ReadLine() .Split(' ').Select(int.Parse).ToArray(); var arr2 = // TODO: read the second array of integers var n = Math.Max(arr1.Length, arr2.Length); var sumArr = new int[n]; for (int i = 0; i < n; i++) sumArr[i] = arr1[i % arr1.Length] + arr2[i % arr2.Length]; Console.WriteLine(string.Join(" ", sumArr)); Loop the array: end  start arr[len]  arr[0] arr[len+1]  arr[1] … Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#7

Problem: Condense Array to Number Reads an array of integers and condense them by summing adjacent couples of elements until a single integer is obtained: 2 10 3 2 4 1 2 5 0 4 1 2 12 13 6 5 3 5 4 5 3 9 9 8 25 11 8 18 17 19 35 Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#8

Solution: Condense Array to Number int[] nums = Console.ReadLine() .Split(' ').Select(int.Parse).ToArray(); while (nums.Length > 1) { int[] condensed = new int[nums.Length - 1]; for (int i = 0; i < nums.Length - 1; i++) condensed[i] = // TODO: sum nums nums = condensed; } Console.WriteLine(nums[0]); 2 10 3 12 13 1 nums[] : condensed[] : Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#8

Problem: Extract Middle 1, 2 or 3 Elements Write a method to extract the middle 1, 2 or 3 elements from array of n integers n = 1  1 element even n  2 elements odd n  3 elements Read n integers from the console and print the middle elements 5 { 5 } 2 3 8 1 7 4 { 8, 1 } 1 2 3 4 5 6 7 { 3, 4, 5 } 2 8 12 7 3 4 5 33 -2 8 22 4 { 4, 5 } Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#9

Solution: Extract Middle 1, 2 or 3 Elements static int[] ExtractMiddleElements(int[] arr) { int start = arr.Length / 2 - 1; int end = start + 2; if (arr.Length == 1) start = end = 0; else if (arr.Length % 2 == 0) end--; int[] mid = new int[end - start + 1]; // Copy arr[start … end]  mid[] return mid; } start end 1 2 3 4 5 6 7 Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#9

Problem: Largest Common End Read two arrays of words and find the length of the largest common end (left or right) hi php java csharp sql html css js hi php java js softuni nakov java learn 3 hi php java xml csharp sql html css js nakov java sql html css js 4 I love programming Learn Java or C#? Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#10

Solution: Largest Common End static int LargestCommonEnd( string[] words1, string[] words2) { var rightCount = 0; while (rightCount < words1.Length && rightCount < words2.Length) if (words1[words1.Length - rightCount - 1] == words2[words2.Length - rightCount - 1]) rightCount++; else break; return rightCount; } Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#10

Live Exercises in Class (Lab) Arrays – Exercises Live Exercises in Class (Lab)

Homework: Fold and Sum Read an array of 4*k integers, fold it like shown below, and print the sum of the upper and lower rows (2*k integers): 3 4 5 6 1 2 7 8 5 2 3 6 5 6 2 3 7 9 1 2 3 4 5 6 7 8 2 1 8 7 3 4 5 6 5 5 13 13 4 3 -1 2 5 0 1 9 8 6 7 -2 -1 3 4 -2 7 6 2 5 0 1 9 8 1 8 4 -1 16 14 Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#11

Homework: Rotate and Sum Read an array of n integers and an integer k. Rotate the array right k times and sum the obtained arrays as shown below: 3 2 4 -1 2 -1 3 2 4 4 -1 3 2 3 2 5 6 1 2 3 1 3 1 2 3 1 2 1 2 3 4 5 3 5 1 2 3 4 4 5 1 2 3 3 4 5 1 2 12 10 8 6 9 Check your solution here: https://judge.softuni.bg/Contests/Practice/Index/172#12

Summary Arrays hold sequence of elements Elements are numbered from 0 to length-1 Creating (allocating) an array: Accessing array elements by index: Printing array elements: int[] numbers = new int[10]; numbers[5] = 10; Console.Write(string.Join(" ", arr));

Arrays https://softuni.bg/courses/programming-basics/ © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

License This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" license Attribution: this work may contain portions from "Fundamentals of Computer Programming with C#" book by Svetlin Nakov & Co. under CC-BY-SA license © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Free Trainings @ Software University Software University Foundation – softuni.org Software University – High-Quality Education, Profession and Job for Software Developers softuni.bg Software University @ Facebook facebook.com/SoftwareUniversity Software University @ YouTube youtube.com/SoftwareUniversity Software University Forums – forum.softuni.bg © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.