1. Technology for efficient programming of algorithms
    Introduction
    
    
      - Състезания по програмиране за студенти
 
- Course site, rules for classes, tasks, tests and contests
- Assessment
C and C ++ standards, compilers
    
     Dev-C++, Code::Blocks
      for Windows, gcc for Linux, BSD, etc. UNIX ОС
      Console applications, input and output
    
    Standard input and output in C and C ++
    
    C 
    scanf("<format>",<address>);
    
    
      int ik; 
unsigned uk; 
long lk; 
unsigned long ulk; 
double dk; 
scanf("%d %u %ld %lu %lf", &ik, &uk, &lk, &ulk, &dk);
    
    printf("<format>",<name>);
      
    
    
      int ik = -10;
unsigned uk = 10;
long lk = -1000000;
unsigned long ulk = 1000000;  // 16 bit
double dk = 2.52;
printf("%d %u %ld %lu %lf\n", ik, uk,lk, ulk, dk);
    
    C++ 
    
    cin >> <name>;
      
    
    
      int k;
cin >> k;
    
    cout << <name>;
    
    
      int ik = -10;
unsigned int uk = 10;
long lk = -1000000;
unsigned long ulk = 1000000; // 16 битов цял тип данни
double dk = 2.52;
cout << ik << " " <<uk << " " << lk << " "
     << ulk<< " " << dk << "\n";
    
    Input and output redirection
    C or C ++ program file with standard input and output: 
          prog.exe
      Program input text file:: 
          test1.inp 
      Program run: 
          prog <test1.inp >test1.out 
      Text file produced by the program in this run: 
          test1.out
        
    Example 1: Sum of two numbers
    Two integers  in the interval [-100, 100] are given. Write a
      program that calculates the sum of the numbers.
      
          #include <iostream>
        using namespace std;
        int main()
        {
           
              int i, j; 
           
              cin >> i >> j; 
           
              cout << (i+j);     
           
              return 0;
        }
        
    Source file: add.cpp
        Executable file (Windows): add.exe 
        
    Run:
        
    C:\my_dir\>add
          < inp.txt > out.txt
        
    
      
        
          | Input file: inp.txt12
5
 | Outpiut file: out.txt17
 | 
      
    
    
    Input for many test examples 
    - Input for fixed number of examples (numbers)
        int n;
        cin >> n;
        for (int i = 0; i < n; i++) { cin >> ... }
    - Input to the end of file for numbers and strings (words)
        while (cin >> x) { ...}
        while (cin >> x && x > 0) { ... } 
    
     -  Input to the end of file for strings (lines)
      string st;
        while(getline(cin, st)) { ... }
      
    
Example
      2: Sum of two numbers
    Two integers  in the interval [-100, 100] are given. Write a
    program that calculates the sum of the numbers..
    
    Input
    There are many examples from standard input. The first number is the
    number of examples, each following line contains two numbers to sum.
    
    Output
    For each example from the input, of the standard output (on a
    separate line), one number is output - the sum of the numbers from
    the corresponding input example.
    
    Example:
    Input
    3
      -10 2
      20 3
      30 4
    
    Output
    -8
        23
        34
      
    Решение:
      // Николай Киров F12345
    #include
        <iostream>
      using namespace std;
        
      int main()
      {
            int n;
            cin >> n;
            for (int k = 0; k < n; k++)
            {
                int i, j; 
         
            cin >> i >> j; 
         
            cout << (i+j) << endl;
            }     
          return 0;
      }
    Решението като файл: f123456_0a.cpp
    
Example 3: Sum of
      two numbers
    Two integers  in the interval [-100, 100] are given. Write a
    program that calculates the sum of the numbers.
    
    Input
    Many examples are entered from the standard input, each row contains
    two numbers to sum.
    
    Output
    For each example from the input, of the standard output (on a
    separate line), one number is output - the sum of the numbers from
    the corresponding input example.
    
    Example:
    Input
      -10 2
      20 3
      30 4
    
    Output
    -8
        23
        34
      
    Solution:
      // Николай Киров F12345
    #include
        <iostream>
      using namespace std;
        
      int main()
      {
            int i, j;
       
while(cin
>>
i
>>
        j) cout <<
        (i+j) << endl;
          return 0;
      }
    
 Тестване на програмата:
    - стандартни случаи;
    - гранични случаи;
    - минимални и максимални размерности на входа;
    - специални случаи;
    - НЕ се разглеждат случаи, които са извън зададените ограничения (НЕ
    се прави проверка за коректност на входа).
    Testing the program:
    - standard cases;
    - borderline cases;
    - minimum and maximum sizes of the input;
    - special cases;
    ** Cases that are outside the set limits are NOT considered (DO NOT
    check the correctness of the input).
    
* Big numbers
      
    Example 4: Sum of two numbers
    Two integers  in the interval [-100, 100] are given. Write a
    program that calculates the sum of the numbers.
    
    Input
    Many examples are entered from the standard input, each row contains
    two numbers to sum.
    
    Output
    For each example from the input, of the standard output (on a
    separate line), one number is output - the sum of the numbers from
    the corresponding input example.
    
    Example:
    Input
      -100000000000000000000000000
        1
      200000000000000000000000000000000000000
        -200000000000000000000000000000000000000
    
    Output
    -999999999999999999999999999
    0
    
    Solution:
      // Николай Киров F12345
    #include
        <iostream>
        #include <string>
      using namespace std;
        
        string sum(string s1, string s2)
        {
            ......
        }
        
      int main()
      {
            string i, j;
       
while(cin
>>
i
>>
        j) cout << sum(i, j) << endl; 
          return 0;
      }
    
 * Personalization
    
    Example 5: Sum of two
      numbers
    Two integers  in the interval [-100, 100] are given. Write a
    program that calculates the sum of the numbers and student's faculty
    number.
    
    Input
    Many examples are entered from the standard input, each row contains
    two numbers to sum.
    
    Output
    For each example from the input, of the standard output (on a
    separate line), one number is output - the sum of the numbers from
    the corresponding input example.
    
    Example:
    Input
      -10 2
      20 3
      30 4
    
    Output
    ...
    
 * Random generator.
    
    Example 6: Sum of two numbers
     Find the sum of the smallest and largest numbers in the series
    of 100 random numbers in the interval[-100, 100].
    
    Input
    Many numbers (test examples) are entered from the standard input,
    each number specifies an initial value for a random series.
    
    Output
    For each example from the input, of the standard output (on a
    separate line), one number is output - the sum of the numbers from
    the corresponding input example.
    
    Example:
    Input
      2
      20 
      33 
    
    Output
    5
        -1
        3
      
    Solution:
      // Николай Киров F12345
    #include
        <iostream>
        #include <cstdlib>
       using namespace
        std;
        
      int main()
      {
            int i;
       
        while(cin >> i)
            {
       
                srand(i);   
            
                int mi = 101, ma = -101;
                for (int j=0; j<100;
        j++)
                {
                    int x =
        rand()%201 - 100; 
                    if (x
        > ma) ma = x;
                    if (x
        < mi) mi = x;
                }
                cout << (ma + mi)
        << endl;
            }
          
        return 0;
      }