using System;

using System.Media;

using System.IO;

//using System.Net;

 

namespace HaniaMuczy

{

    class Program

    {

        static void Main(string[] args)

        {

            // SoundPlayer sp = new SoundPlayer();

            // int[] X = new int[2];

            // sp.SoundLocation = @"C:\net\cow4.wav";

 

            System.Net.WebClient WC = new System.Net.WebClient();

            

            try

            {

                WC.DownloadFile(@"http://www.ath.bielsko.pl/~mkordos/sound/cow4.wav"@"C:\net\krowa2.wav");

                string s1 = WC.DownloadString(@"http://www.ath.bielsko.pl/~mkordos/index.html");

 

                System.Diagnostics.Process pr = new System.Diagnostics.Process();

                pr.StartInfo.FileName = @"C:\Program Files (x86)\Windows Media Player\wmplayer.exe";

                pr.StartInfo.Arguments = @"C:\net\krowa2.wav";

                pr.Start();

          

                // sp.Play();

                // X[5] = 5;

                Console.WriteLine(s1);

            }

            catch(IOException e0)

            {

                Console.WriteLine("Błąd 0 " + e0.Message);

            }

            catch(Exception e1)

            {

                Console.WriteLine("Błąd 1 " + e1.Message);

            }

 

            Console.ReadLine();

        }

    }

}

 

////////////////////////////////////////////////////////////////////////////////////

 

using System;

 

namespace ExtensionMethods1

{

 

    class CX

    {

        public int a, b;

    }

 

    static class DX

    {

        static public int dodaj(this CX cx)

        {

            return cx.a + cx.b;

        }

 

        static public int pomnoz(this CX cx, int m)

        {

            return m * cx.a;

        }

 

        static public int strx(this string s1, string s2)

        {

            if (s1.Contains(s2))

                return 1000;

            else

                return -1000;

        }

    }

 

    class A

    {

        public void aa()

        {

            Console.WriteLine("aa");

        }

    }

 

    class B : A

    {

 

        public B(int a, int b):this(a)

        {

            Console.WriteLine(a+b);

        }

 

        public B(int a)

        {

            Console.WriteLine(a);

        }

 

        public void aa()

        {

            Console.WriteLine("bb");

        }

        public void cc()

        {

            aa();

            base.aa();

        }

    }

   

    class Program

    {

 

 

        static void Main(string[] args)

        {

            CX x = new CX() { a = 5, b = 8 };

            Console.WriteLine(x.dodaj());

            Console.WriteLine(x.pomnoz(10));

 

            B b = new B(10,30);

            b.cc();

 

            Console.WriteLine("XXX".strx("X"));

 

            Console.ReadLine();

        }

    }

}

 

 

 

 

 

////////////////////////////////////////////////////////////////////////////////////

 

using System;
 
namespace classesX
{
    sealed class A
    { public virtual int add2(int a) { return a + 2; } }
 
    class B : A
    { public sealed override int add2(int a) { return a + 3; } }
 
    internal class C : B
    { public int add2(int a) { return a + 4; } }
 
    class classD { public int a; public int b;}
    struct structD1 { public int a; public int b; }
    struct structD2 { public int a; public int b; public void m1() { } }
    // structures -> stack, classes -> heap
 
    class Program
    {
        static void Main(string[] args)
        {
            classD cd = new classD1();
            cd.a = 12;
 
            structD1 sd1; 
            sd1.a = 12;
            
            structD2 sd2 = new structD2();
            sd2.a = 12;
            sd2.m1();
            
            C c = new C();
            Console.WriteLine(c.add2(10));
            Console.ReadLine();
 
        }
    }
}

 

////////////////////////////////////////////////////////////////////////////////////

 
 
using System;
using System.IO;
 
namespace IndOpOv
{
    class FileX
    {
        public string[] Lines;
        string fileName;
 
        public FileX(string fileName)
        {
            this.fileName = fileName;
            Lines = File.ReadAllLines(fileName);
        }
 
        public string this[int nr]
        {
            get {return Lines[nr];}
            set { Lines[nr] = value; }
        }
 
        public void close()
        {
            File.WriteAllLines(fileName, Lines);
        }
 
    }
 
    class Matrix
    {
        public double[] position;
 
        public Matrix(double[] x)
        {
            position = new double[x.Length];
            for (int i = 0; i < x.Length; i++)
                position[i] = x[i];
        }
 
        public static Matrix operator + (Matrix A, Matrix B)
        {
            double[] y = new double[A.position.Length];
            Matrix C = new Matrix(y);
 
            for (int i = 0; i < A.position.Length; i++)
                C.position[i] = A.position[i] + B.position[i];
 
            return C;
 
        }
 
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Matrix A1 = new Matrix(new double[] { 3, 4, 5 });
            Matrix A2 = new Matrix(new double[] { 13, 14, 15 });
            Matrix A3 = A1 + A2;
            Console.WriteLine("A3 " + A3.position[0] + " " + A3.position[1] + " " + A3.position[2]);
 
            FileX XF = new FileX(@"C:\net\f1.txt");
            Console.WriteLine(XF[2]);
            XF[2] = "Ala ma Asa";
            XF.close();
 
            int a = 3, b = 4;
            int c = a * b;
                       
            Console.ReadLine();
        }
    }
}
 
       
        Homework 
            Spróbować połączyć przeciążanie operatorów z indexerami, 
            aby można było dodawać tak: 
                    Matrix A3 = A1 + A2;
            i wyświetlać tak:
                    Console.WriteLine("A3 " + A3[0] + " " + A3[1] + " " + A3[2]);
        
            W nagrodę za dobre wykonanie Święty Mikołaj da Wam łapę