Раздел «Язык Си».Exam5Tasks:

IF

i1 (1) Напечатать YES, если число делится на 3 но не делится ни на 15, ни на 12. Иначе напечатать NO.

cin cout
9 YES
24 NO
30 NO
2 NO

Циклы

w2 (2) Подсчитать сколько в числе цифр. Класс string не использовать.

w3 (2) Напечатать число наоборот. +1 бал если для 0 напечатаете 0 (последний пример)

cin cout
123 321
1000 0001
7 7

Строки

2D arrays

cin cout
1 2 3 4
5 6 7 8
0 2 4 6
1 2 3 4
5 6 7 8
0 2 4 6

cin cout
1 2 3 4
5 6 7 8
0 2 4 6
8

cin cout
1 2 3 4
5 6 7 8
6 2 4 0
4
8
6

cin cout
1 2 3 4
5 6 7 8
6 2 4 0
6 6 7 8

Классы

k1. Дан класс
 class Money {
   int kyat;
   int pya;
   public:
   Money ();
   Money (int k, int p);
   Money (int p); 

   void add(Money money);  // добавляет еще денег

   void set(int pyas);     // из pyas делает kyat и pya
   int  pyas();            // из kyat и pya возвращает количество денег в pya 
   void sub(Money money);  // вычитает деньги

   int equal(Money m);     // возвращает 1 если деньги равны, иначе возвращает 0

   int compare(Money m);   // возвращает <0 если m больше, возвращает >0 если m меньше

   void print();           // печатает, например, 5 kyat 7 pya
};
// Тут нужно написать функции.

int main () {
    Money zero;        // 0 kyat 0 pya
    Money big(5, 7);   // 5 kyat 7 pya
    Money small(243);  // 2 kyat 43 pya
    Money t;

    // +2 балла
    zero.print();      // 0 kyat 0 pya
    big.print();       // 5 kyat 7 pya
    small.print();     // 2 kyat 43 pya

    // +1 балл
    big.add(small);
    big.print();       // 7 kyat 50 pya

    // +1 балл
    t.set(750);
    if (t.equal(big)) {
         cout << "equal" << endl;
    } else {
         cout << "NOT equal" << endl;
    }  

    // +1 балл (или +3 балла, если sub использует pyas и set)
    big.sub(small);   
    big.print();       // 5 kyat 7 pya

    // +2 балла
    res = big.compare(small);
    cout << res << endl;          // > 0
    res = small.compare(big);
    cout << res << endl;          // < 0

}    

Класс string

s1. (3) Даны названия файлов по 1 файлу на строку. Подсчитать сколько файлов имеет расширение .png (использовать функцию rfind )
cin cout
hello.png
cat.jpg
dog.png
a.out
2

s2. (1) Дан путь (например, /home/student ), напечатать YES, если он начинается с / Иначе напечатать NO.

cin cout
/home/student/a.cpp YES
/home YES
hello.png NO

s3. (2) Дан путь (например, /home/student/a.cpp или a.cpp), напечатать имя файла.

cin cout
/home/student/a.cpp a.cpp
hello.png hello.png

s4. (2) Дан путь (например, /home/student/a.cpp или a.cpp), напечатать путь к объекту (без имени объекта).

cin cout
/home/student/a.cpp /home/student
/home/student/work /home/student
/home/student/work/ /home/student/work
a.cpp  

s5. (3) Заменить unix-path (например, /home/student/a.cpp ) на windows-path ( \home\student\a.cpp )

cin cout
/home/student/a.cpp \home\student\a.cpp

s6. (2) Если путь начинается с диска (1 буква и : ), то напечатать имя.

cin cout
C:\students\work\ C
Z:\home\tasks\a.cpp Z
tasks\a.cpp  

s7. (1) Подсчитать сколько в целом положительном числе цифр. Использовать класс string

cin cout
125 3
66688 5

s8. (3) 4str_bomb - подсчитать сколько раз в тексте есть подстрока bomb

s9. (2) 5str_bomb - заменить подстроку bomb 1 раз на watermelon

s10. (4) 5str_bomb - заменить все подстроки bomb на watermelon

s11. (3) сложить пути. Использовать string1 + string2

cin cout
/home/work
task4/a.cpp
/home/work/task4/a.cpp
/home/work/
task4/a.cpp
/home/work/task4/a.cpp
work
task4/a.cpp
work/task4/a.cpp
work/
task4/a.cpp
work/task4/a.cpp

-- TatyanaDerbysheva - 09 Jun 2015