ECE15: Introduction to Computer Programming Using the C Language Lecture 6: Arrays

Similar documents
C Language Part 2 Digital Computer Concept and Practice Copyright 2012 by Jaejin Lee

Dept. of CSE, IIT KGP

UNIVERSITY OF WINDSOR Fall 2007 QUIZ # 2 Solution. Examiner : Ritu Chaturvedi Dated :November 27th, Student Name: Student Number:

ECE15: Introduction to Computer Programming Using the C Language. Lecture Unit 4: Flow of Control

Subject: Computer Science

PROGRAMMING IN C LAB MANUAL FOR DIPLOMA IN ECE/EEE

Structured programming

Make sure the version number is marked on your scantron sheet. This is Version 1

n Group of statements that are executed repeatedly while some condition remains true

Lecture 6 Sorting and Searching

Note: unless otherwise stated, the questions are with reference to the C Programming Language. You may use extra sheets if need be.

1. The keyword main in C language is used for

Arrays a kind of data structure that can store a fixedsize sequential collection of elements of the same type. An array is used to store a collection

Name Roll No. Section

Principles of Programming. Chapter 6: Arrays

Solutions to Chapter 8

CS Introduction to Programming Midterm Exam #2 - Prof. Reed Fall 2015

INTRODUCTION TO C++ PROGRAM CONTROL. Dept. of Electronic Engineering, NCHU. Original slides are from

UNIVERSITY OF TORONTO FACULTY OF APPLIED SCIENCE AND ENGINEERING

C How to Program, 7/e by Pearson Education, Inc. All Rights Reserved.

Computer Science & Engineering 150A Problem Solving Using Computers

Arrays and Applications

The four laws of programs

ECE 15 Fall 15 Final Solutions

UNIVERSITY OF TORONTO FACULTY OF APPLIED SCIENCE AND ENGINEERING

Sample Examination. Family Name:... Other Names:... Signature:... Student Number:...

APS105. Collecting Elements 10/20/2013. Declaring an Array in C. How to collect elements of the same type? Arrays. General form: Example:

Fundamental of Programming (C)

'C' Programming Language

UNIVERSITY OF TORONTO FACULTY OF APPLIED SCIENCE AND ENGINEERING

These are reserved words of the C language. For example int, float, if, else, for, while etc.

C++ PROGRAMMING SKILLS Part 4: Arrays

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #16 Loops: Matrix Using Nested for Loop

For questions 4 through 7, select the value assigned to the relevant variable, given the declarations: 3) ) This is not allowed

Unit 5. Decision Making and Looping. School of Science and Technology INTRODUCTION

Functions. Arash Rafiey. September 26, 2017

Unit 1 - Arrays. 1 What is an array? Explain with Example. What are the advantages of using an array?

Procedural programming with C

UNIT - I. Introduction to C Programming. BY A. Vijay Bharath

Statements. Control Flow Statements. Relational Operators. Logical Expressions. Relational Operators. Relational Operators 1/30/14

Computer Science Foundation Exam

Questions Bank. 14) State any four advantages of using flow-chart

One Dimension Arrays 1

Computer Programming. C Array is a collection of data belongings to the same data type. data_type array_name[array_size];

Overview of C, Part 2. CSE 130: Introduction to Programming in C Stony Brook University

CSE101-lec#19. Array searching and sorting techniques. Created By: Amanpreet Kaur & Sanjeev Kumar SME (CSE) LPU. LPU CSE101 C Programming

only in the space provided. Do the rough work in the space provided for it. The question paper has total 12 pages.

Lecture 04 FUNCTIONS AND ARRAYS

Course Outline Introduction to C-Programming

MA 511: Computer Programming Lecture 2: Partha Sarathi Mandal

Control Structures. Chapter 13 Control Structures. Example If Statements. ! Conditional. if (condition) action;

Lecture 2 Arrays, Searching and Sorting (Arrays, multi-dimensional Arrays)

ESC 101N: Fundmentals of Computing ( IInd Semester) Mid Sem II Examination PM, Monday 7th March, 2011

Unit 3 Decision making, Looping and Arrays

Fundamental of Programming (C)

EECE.2160: ECE Application Programming Fall 2017

Structured programming

Programming for Engineers Arrays

CSE101-Lec#18. Multidimensional Arrays Application of arrays. Created By: Amanpreet Kaur & Sanjeev Kumar SME (CSE) LPU. LPU CSE101 C Programming

Chapter 3: Arrays and More C Functionality

Computer System and programming in C

Question Bank (SPA SEM II)

Government Polytechnic Muzaffarpur.

Fundamentals of Computer Programming Using C

Lecture 3. More About C

2-D Arrays. Of course, to set each grid location to 0, we have to use a loop structure as follows (assume i and j are already defined):

Programming & Data Structure Laboratory. Day 2, July 24, 2014

EECE.2160: ECE Application Programming Spring 2018

Prime Factorization. Jane Alam Jan. 1 P a g e Document prepared by Jane Alam Jan

UNIVERSITY OF TORONTO FACULTY OF APPLIED SCIENCE AND ENGINEERING

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #43. Multidimensional Arrays

Outline Introduction Arrays Declaring Arrays Examples Using Arrays Passing Arrays to Functions Sorting Arrays

Expressions. Arithmetic expressions. Logical expressions. Assignment expression. n Variables and constants linked with operators

Solutions to Assessment

(Refer Slide Time: 00:26)

Two Dimensional Array - An array with a multiple indexs.

Objectivities. Experiment 1. Lab6 Array I. Description of the Problem. Problem-Solving Tips

ITC213: STRUCTURED PROGRAMMING. Bhaskar Shrestha National College of Computer Studies Tribhuvan University

Programming and Data Structures

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Department of Computer Science & Engineering Indian Institute of Technology Kharagpur. Practice Sheet #04

x= suppose we want to calculate these large values 1) x= ) x= ) x=3 100 * ) x= ) 7) x=100!

8/2/10. Looking for something COMP 10 EXPLORING COMPUTER SCIENCE. Where is the book Modern Interiors? Lecture 7 Searching and Sorting TODAY'S OUTLINE

Last Class. While loops Infinite loops Loop counters Iterations

Outline Arrays Examples of array usage Passing arrays to functions 2D arrays Strings Searching arrays Next Time. C Arrays.

CSE123 LECTURE 3-1. Program Design and Control Structures Repetitions (Loops) 1-1

UNIVERSITY OF TORONTO FACULTY OF APPLIED SCIENCE AND ENGINEERING

Computer Science Foundation Exam

ECE 15 Fall 15 Midterm Solutions

Q1: C input/output; operators / 46 Q2: Conditional statements / 34 Q3: While and do-while loops / 20 TOTAL SCORE / 100 Q4: EXTRA CREDIT / 10

Chapter 4: Expressions. Chapter 4. Expressions. Copyright 2008 W. W. Norton & Company. All rights reserved.

Programming in OOP/C++

VARIABLE, OPERATOR AND EXPRESSION [SET 1]

MTH 307/417/515 Final Exam Solutions

CS256 Applied Theory of Computation

UNIT 2 ARRAYS 2.0 INTRODUCTION. Structure. Page Nos.

For instance, we can declare an array of five ints like this: int numbers[5];

Computer Programming. Decision Making (2) Loops

C Program. Output. Hi everyone. #include <stdio.h> main () { printf ( Hi everyone\n ); }

PROGRAMMING IN C AND C++:

Transcription:

ECE15: Introduction to Computer Programming Using the C Language Lecture 6: Arrays A. Orlitsky and A. Vardy, based in part on slides by S. Arzi, G. Ruckenstein, E. Avior, S. Asmir, and M. Elad

Outline Introduction to Arrays Simple Examples Math Examples String Arrays Sorting Two-Dimensional Arrays Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 2

Why Arrays Task: A company has 800 employees. Read their salaries, compute the average, and determine how many salaries are above the average.. Observation: Perhaps: First need to determine average. Then # salaries above it. Need to go over numbers twice. Must remember all. double salary1, salary2,..., salary800; û û û Typing 800 names (in addition to values) Storing 800 names (in addition to values) Cannot be processed in a loop Solution: Arrays! Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 3

What are Arrays Ordered list of variables of the same type Declaration: double salaries[800]; Accessing an element: salaries[5], salaries[i], salaries[2*i+j] Comments: n-element array declared First element has index 0 Last element has index n-1 int salaries[n]; int mynm[4]; 124-85 913 666 mynm[0] mynm[1] mynm[2] mynm[3] Array elements always stored in consecutive memory cells int int int int int int int int int int int int int Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 4

Assigning Values Array cells have arbitrary initial values Values can be assigned in a loop: Indices: 0..799 for (i = 0; i < 800; i++) salaries[i] = 3.5 * i; double prices[3] = {7.49, 9.99, 1.49}; for (i = 0; i < 800; i++) scanf("%lf", &salaries[i]); Fixed-size arrays can also be initialized at declaration int grades[5] = {100, 97, 79, 0, 0}; Missing values filled with 0 s int grades[5] = {100, 97, 79}; Can determine array size from initialization int grades[] = {100, 97, 79, 0, 0}; Different: 5-element array 3-element array int grades[] = {100, 97, 79}; equivalent equivalent int array[5] = {}; versus uninitialized int array[5]; all 0 Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 5

Run-time Array Declaration Can declare an array whose size is determined at run time int array_size; scanf("%d",&array_size); int my_array[array_size]; Cannot initialize at declaration int my_array[array_size]={}; û Can initialize later for (int i=0; i<array_size; i++) my_array[i]=0; Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 6

Outline Introduction to Arrays Simple Examples Math Examples String Arrays Sorting Two-Dimensional Arrays Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 7

Salaries #include<stdio.h> #define NUM_EMPLOYEES 800 salaries.c int main() { double salaries[num_employees], sum = 0.0, average; int i, above_average = 0; for (i = 0; i < NUM_EMPLOYEES; i++) { scanf("%lf", &salaries[i]); sum += salaries[i]; } average = sum/num_employees; for (i = 0; i < NUM_EMPLOYEES; ++i) above_average += (salaries[i] > average); n-element array Declared int name[n]; Elements numbered 0..n-1 } printf("average is: %f\n", average); printf("%d salaries are above it\n", above_average); return 0; Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 8

Backwards (numbers) Read numbers and print them in reverse Seen for digits (mod and division by 10), now any numbers #include <stdio.h> int main() { int num_numbers, i; printf("number of numbers: "); scanf("%d", &num_numbers); int array[num_numbers]; for (i=0; i<num_numbers; i++) scanf("%d", &array[i]); for (i=num_numbers-1; i>=0; i--) printf("%d", array[i]); printf("\n"); return 0; } backwards_numbers.c Lecture 8 ECE15: Introduction to Computer Programming Using the C Language 9

Which Digits Read digits Print each seen digit once In order of appearance 3 1 3 4 1 7 7 3 1 4 7 seen[10] Array for all digits Initially, all marked unseen Read digits If unseen - print, mark seen If seen - do nothing #include <stdio.h> #include <stdbool.h> int main() { int num_digits, i, digit; bool seen[10]={}; } printf("# digits: "); scanf("%d", &num_digits); printf("%d digits: ",num_digits); for (i=0; i<num_digits; i++) { scanf("%d", &digit); if (!seen[digit]) { printf("%d ", digit); seen[digit]=true; } } printf("\n"); return 0; digits.c Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 10

Outline Introduction to Arrays Simple Examples Math Examples String Arrays Sorting Two-Dimensional Arrays Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 11

Decimal to Binary - with Arrays What is decimal 10 in binary? 10 2 0 0 0 1 0 1 0 2 5 2 4 2 3 2 2 2 1 2 0 32 16 8 4 2 1 Same answer, different method: quotient quotient quotient quotient div:2 div:2 div:2 0 div:2 1 2 5 10 remainder remainder remainder remainder 1 0 1 0 Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 12

Decimal to Binary - Second Method #include <stdio.h> dec2bin2.c int main() { int decimal, i=0, bits[32]; printf("nonnegative decimal: "); scanf("%d", &decimal); printf("(%d)_10 = (", decimal); do { bits[i++]=decimal%2; decimal /= 2; } while (decimal); while(--i >= 0) printf("%d", bits[i]); } printf(")_2\n"); return 0; Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 13

The Median The median of a set of numbers is the number that cuts the set in half: Half the numbers are above the median, and half are below it. Example: Observation: The median is often more useful than average. For example, if salaries are 35, 40, 45, 50, 55, 60, 65, 70, 10000000 û 9 5 5 7 7 10 3 6 5 4 9 half of the numbers Definition: Arrange n numbers in increasing order: x 1 x 2 x 3 x n-1 x n ü median half of the numbers If n is odd, then the median is the middle element of the ordered sequence: x (n+1)/2. If n is even, the median is the average of the two middle elements: (x n/2 + x n/2+1 )/2. average = 1,111,157.7 median = 55 3 4 5 5 5 6 7 7 9 9 10 Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 14

Computing the Median Method A: Sort the n numbers in increasing order, then take the middle one (or average middle two). Sorting n numbers requires about n log 2 n operations, hence inefficient. Method B: Suppose the numbers can take at most m values. Make a histogram of the values observed (n operations). Then sum the histogram bars from left to right, till the sum exceeds n/2 (at most m operations). 0 0 0 0 1 2 5 6 3 7 9 4 6 5 5 10 9 7 5 11 values Median 6th 5 5 Median 7 9 3 4 5 6 7 9 10 0 1 2 3 4 5 6 7 8 9 10 Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 15

Computing the Histogram Example: The input consists of n = 85 exam grades, each an integer in 0,1,...,100. Count # times each grade occur #include <stdio.h> #define NUM_GRADES 85 #define MAX_GRADE 100 int main() { int histogram[max_grade + 1] = {}; int i, grade; 0,1, MAX_GRADE } for (i = 0; i < NUM_GRADES; i++) { scanf("%d", &grade); histogram[grade]++; }... return 0; Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 16

The Median Grade #include<stdio.h> #define NUM_GRADES 85 // Assumed to be odd! #define MAX_GRADE 100 int main() { int histogram[max_grade + 1] = {}; int i, grade, bar_sum; median.c } for (i = 0; i < NUM_GRADES; i++) { scanf("%d", &grade); histogram[grade]++; } bar_sum = grade = 0; while (bar_sum <= NUM_GRADES/2) bar_sum += histogram[grade++]; printf("median is %d\n", grade-1); return 0; Create Histogram Stop when sum exceeds half Incremented grade Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 17

All the Primes up to N Problem: Find all primes between 2 and a large positive integer N Possible Solution: Test all integers in the range 2,3,...,N for primality. This is very inefficient even with the best primality testing methods. The Eratosthenes Sieve: First, pretend that all the integers in the range 2,3,...,N are prime. Then proceed as follows: 2 is prime, mark all multiples of 2 as not prime 3 is prime, mark all multiples of 3 as not prime 4 was already marked as not prime, just skip it 5 is prime, mark all multiples of 5 as not prime 6 was already marked as not prime, just skip it After at most square root of N such steps, all the numbers in the range 2,3,...,N that remain unmarked must be prime. and so on... Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 18

Sieve of Eratosthenes Animation Computing the Sieve of Eratosthenes for primes up to 120 Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 19

Program Integers represented in array, 1 indicates prime, 0 non-prime int main() { int n, i, p, sqrt_n=0; } printf("find primes up to: "); scanf("%d", &n); char prime[n+1]; while ((sqrt_n+1)*(sqrt_n+1)<=n) sqrt_n++; for (i = 2; i <= n; i++) prime[i] = 1; for (p = 2; p <= sqrt_n; p++) if (prime[p]) for (i = 2; i <= n/p; i++) prime[i*p] = 0; printf("primes between 2 and %d:\n", n); for (i = 2; i <= n; i++) if (prime[i]) printf("%d\n", i); return 0; sieve.c So sieve[n] represents n floor(sqrt(n)) Start by assuming all prime Not eliminated - indeed prime All multiples of p are not prime Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 20

Comparison with Primality Testing A short program can compare Eratosthenes Sieve with testing every integer in the range using the improved primality testing algorithm. Parameters: N = 1,000,000 Repeated 100 times in a loop Results: Eratosthenes Sieve: 2 sec Primality testing: 18 sec... int prime = 1, n, i, sqrt_n;... if (n == 1 (n!= 2 && n%2 == 0)) prime = 0; else { while ((sqrt_n+1)*(sqrt_n+1)<=n) sqrt_n++; for (i = 3; i <= sqrt_n; i += 2) if (n%i == 0) { prime = 0; break; } } printf("%d is %sa prime\n", prime? "" : "not ", n);... compare_sieve_primes.c Sieve of Eratosthenes > 10 times faster Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 21

Outline Introduction to Arrays Simple Examples Math Examples String Arrays Sorting Two-Dimensional Arrays Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 22

Declaration and Initialization Strings of characters "ece15" string of 5 characters "" empty string Stored in character arrays... // Proper: char class1[]="ece15"; // array // Possible, but risky as we ll soon see: char class2[] = {'e','c','e','1','5'};... Lecture 8 ECE15: Introduction to Computer Programming Using the C Language 23

Input / Output Read & write -- %s Printed strings before Never read! #include <stdio.h> int main() { } - why? Need to store string. Array! printf("my fav class: %s\n", "ece15"); char word1[50], word2[50]; printf("one word: "); scanf("%s", word1); printf("word1: %s\n", word1) printf("two words: "); scanf("%s%s", word1, word2); printf("word1: %s\n", word1); printf("word2: %s\n", word2); return 0; No & string_io.c array a must %s reads till space Lecture 8 ECE15: Introduction to Computer Programming Using the C Language 24

String Delimiter How does printf know when to stop printing? (string had length 50, word was shorter) Strings stored with '\0' at end (Null char whose ASCII value is 0) char class1[]= ECE15 ; e c e 1 5 \0 % @ Print string without %s for(int i=0; string[i]; i++) printf("%c", string[i]); printf("\n"); print_string.c Correct array definition char class[5]; allocates 6 cells char class2[]={'e','c','e','1','5','\0'}; Char Desc Dec H!"# NULL 0 $+, Start of Heading 1 $01 Start of Text 2 601 End of Text 3 6+0 End of Transmission 4 6!> Enquiry 5.8A Acknoledge 6 36# Bell 7 3$ Backspace 8 0.3 Horizontal Tab ] 46 9 char class[5]={}; initializes all to \0 _ 47 b 48 d 49 f 50 h 51 j 52 l 53 o 54 q 55 u 56 Lecture 8 ECE15: Introduction to Computer Programming Using the C Language 25

Two Things that Require Work Copying For numbers and characters can write: var2=var1; Does not work for strings Need loop #include <stdio.h> int main() { char word1[50], word2[50]; int i=0; printf("word: "); scanf("%s", word1); for (i=0; word1[i]; i++) word2[i]=word1[i]; word2[i]='\0'; printf("copy: %s\n", word2); return 0; } copy.c Later see a function for this Lecture 8 ECE15: Introduction to Computer Programming Using the C Language 26

Two Things that Require Work (2) Comparing For numbers and characters can write: if(var2==var1) Does not work for strings Need loop Later see a function for this too.. #include <stdio.h> compare.c #include <stdbool.h> int main() { char word1[50], word2[50]; int i=0; bool same=true; printf("first word: "); scanf("%s", word1); printf("second word: "); scanf("%s", word2); do if (word2[i]!= word1[i]) same = false; while (word1[i] && word2[i++]); printf("%s\n", same? "same" : "different"); return 0; } 27 Lecture 8 ECE15: Introduction to Computer Programming Using the C Language

Backwards (characters) Read word and print it in reverse #include <stdio.h> int main() { int i, j; char word[50]; printf("word: "); scanf("%s", word); for (i=0; word[i]; i++) ; printf("reverse: "); for (j=i-1; j>=0; j--) printf("%c", word[j]); printf("\n"); return 0; } backwards_letters.c Lecture 8 ECE15: Introduction to Computer Programming Using the C Language 28

Introduction to Arrays Outline Simple Examples Math Examples String Arrays Sorting Two-Dimensional Arrays Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 29

Swapping Two Numbers Two variables: x and y Exchange their values Attempt x=y; y=x; x y before 0 1 after 1 0 correct temp=x; x=y; y=temp; before x y x y temp before 0 1 before 0 1? x=y 1 1 temp=x 0 1 0 after y=x 1 1 û x=y 1 1 0 y=temp 1 0 0 ü Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 30

Quiz Can we exchange two numbers without an extra variable? Yes! Two variables: Swap their values But risky! x=x+y y=x-y x=x-y x a a+b a+b b y b b a a floating-point arithmetic not always 100% accurate Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 31

Sorting Arranging elements in ascending (or descending) order One of the most important computer operations Helps find: Entries Largest Duplicates In past ~25% of computer time Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 32

Bubble Sort Illustration Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 33 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 Assumes i-1 largest elements found and sorted at the end Performs inner loop on elements 1, 2,, n-(i-1) Moves i th largest element to location n-i+1 Outer and inner loops n-1 outer iterations Outer iteration i (i=1 n-1) Outer loop 2 3 4 1 Inner loop 1 2 3 4

Bubble Sort Program n numbers: a0, a1, an-1 Sort in increasing order move largest # to right Compare a0 with a1 if a0 > a1, exchange them Compare a1 with a2 if a1 > a2, exchange them etc. till an is the largest move 2nd largest to 2nd from right Exchange pairs as for largest Successively move next largest right Demo: Hungarian, Indian, Danish # comparisons (n-1) +(n-2)+ +1 = n(n-1)/2 Faster algor s: n log n comparisons #include <stdio.h> int main() { int number, i, j, temp; printf("number of elements: "); scanf("%d", &number); int array[number]; for(i=0; i<number; i++) scanf("%d", &array[i]); for(i=0; i<number-1; i++) for (j=1; j<number-i; j++) if (array[j-1]>array[j]) { temp = array[j-1]; array[j-1] = array[j]; array[j] = temp; } for(i=0; i<number; i++) printf("%d ", array[i]); printf( \n"); return 0; } sort.c Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 34

Introduction to Arrays Outline Simple Examples Math Examples String Arrays Sorting Two-Dimensional Arrays Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 35

Two-dimensional arrays int ar[2][3]; Array of 2 rows and 3 columns Initialization int ar[2][3]={{1,0,2},{3,9,7}}; 3 necessary int ar[][3]={{1,0,2},{3,9,7}}; 0 1 0 1 2 1 0 2 3 9 7 Stored consecutively row by row 1 0 2 3 9 7 int ar[][3]={1,0,2,3,9,7}; Addressing ar[i][j]; ar[0][0]=1; ar[1][2]=7; Row Column Element in row i, column j Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 36

Applications of 2 (and 3) dim arrays Pictures Cars Planes Phones Video games Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 37

Matrix transposition Matrix - two dimensional array of numbers M[i][j] - element at row i, column j M[0][0]=1, M[1][2]=6 Transposition - flip around diagonal M[i][j] <---> M[j][i] Loop over i and j Swap M[i][j] and M[j][i] 1 2 3 4 5 6 7 8 9 1 42 73 24 5 86 37 68 9 Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 38

Matrix Transposition - V. 1 transpose1.c #include <stdio.h> #define SIZE 3 int main() { int ar[][size] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; int i, j, temp; int ar[][size] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; printf("matrix:\n"); for (i=0; i<size; i++) for (j=0; j<size; j++) printf("%d %s", ar[i][j], j==size-1? "\n" : ""); } for (i=1; i<size; i++) for (j=0; j<i; j++) { temp = ar[i][j]; ar[i][j]=ar[j][i]; ar[j][i]=temp; } printf("transpose:\n"); for (i=0; i<size; i++) for (j=0; j<size; j++) printf("%d %s", ar[i][j], j==size-1? "\n" : ""); return 0; Cleaner implementation with functions. Next! Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 39

Introduction to Arrays Outline Simple Examples Math Examples String Arrays Sorting Two-Dimensional Arrays Lecture 6 ECE15: Introduction to Computer Programming Using the C Language 40