This week we learned about more features of C# including integer and floating-point types, numeric conversions, the 'do', 'foreach' and 'switch' statements, the conditional operator (?:), and single- and multi-dimensional arrays.
You can read about these topics in chapters 2-4 of Essential C#.
We solved these exercises in the tutorial:
Write a program that reads an N x N matrix of integers and prints it out rotated 90 degrees to the right.
using static System.Console;
class Program {
static void Main(string[] args) {
string s = ReadLine();
string[] words = s.Split(null);
int n = words.Length;
int[,] a = new int[n, n];
// first row
for (int i = 0 ; i < n ; ++i)
a[0, i] = int.Parse(words[i]);
// remaining rows
for (int r = 1 ; r < n ; ++r) {
words = ReadLine().Split(null);
for (int c = 0 ; c < n; ++c)
a[r, c] = int.Parse(words[c]);
}
// print out rotated matrix
for (int c = 0 ; c < n ; ++c) {
for (int r = n - 1 ; r >= 0 ; --r)
Write($"{a[r, c]} ");
WriteLine();
}
}
}Some zombies are chasing a player. Each zombie can see infinitely far in a 180° field of view. Write a program that reads the X-Y position of the player, the X-Y position of a zombie, and the direction vector f indicating the direction the zombie is facing. Each position or vector is a pair of floating-point numbers. The program should print "can see" if the zombie can see the player, otherwise "cannot see".
using static System.Console;
class Program {
// Read N coordinates on a single line and
// parse them into N doubles.
static double[] read_coords() {
string[] words = ReadLine().Split(null);
double[] r = new double[words.Length];
for (int i = 0 ; i < words.Length ; ++i)
r[i] = double.Parse(words[i]);
return r;
}
static void Main(string[] args) {
double[] player = read_coords();
double[] zombie = read_coords();
double[] zombie_dir = read_coords();
double[] zombie_to_player = { player[0] - zombie[0], player[1] - zombie[1] };
double dot_prod = zombie_to_player[0] * zombie_dir[0] +
zombie_to_player[1] * zombie_dir[1];
WriteLine(dot_prod > 0 ? "can see" : "cannot see");
}
}