diff options
sem2
1 files changed, 99 insertions, 37 deletions
| -rw-r--r-- | Sem. 02/README.md | 136 |
diff --git a/Sem. 02/README.md b/Sem. 02/README.md index b59d8ac..d1bd441 100644 --- a/Sem. 02/README.md +++ b/Sem. 02/README.md @@ -1,52 +1,114 @@ -## Сруктури -Структурите в C++ се използват за групиране на елементи. Елементите, наричани още членове, могат да бъдат от различен тип и с различна дължина. +## Текстови файлове +Видове потоци: + - Потоци за вход (istream) + - Потоци за изход (ostream) - struct Box - { - int height; - int weight; - } +##### Пример за работа с поток за вход (cin) + ```c++ +#include <iostream> +using namespace std; +int main() +{ + int a, b; + cin >> a >> b; +} + ``` + Четем от стандартния вход. -### Деклариране на обекти от новия тип +##### Пример за работа с поток за изход (cout) + ```c++ +#include <iostream> +using namespace std; - Box b; //default values to height and weight - - Box b2 = {3, 4} // height = 3, weight = 3; - - Box b3; - b3.height = 13; - b3.weight = 14; +int main() +{ + int a = 10; + int b = 12; + int c = a + b; + cout << a << " + " << b << " = " << c << endl; +} + ``` -### Подаване във функции -Ако няма да променяме обекта го подаваме по **константна референция.** +### Работа с поток за вход от файл (ifstream) +Пример за четене от файл! + ```c++ +#include <iostream> +#include <fstream> +using namespace std; + +int main() +{ + ifstream file("myFile.txt"); + + if (!file.is_open()) + { + cout << "Error!" << endl; + return -1; + } + int a, b; - void calculcateArea(const Box& b) - { - return b.height * b.weight; - } - Може и само по **референция**, но тогава промените ще се отразят върху подадения аргумент. + file >> a >> b; + + file.close(); +} +``` +### Работа с поток за изход към файл (ifstream) + ```c++ +#include <iostream> +#include <fstream> + +using namespace std; - void readBox(Box& b) - { - cin >> b.height >> b.weight; - } -.Може и да го подаваме по **копие**. +int main() +{ + ofstream file("myFile.txt"); - Box revertBox(Box b) - { - int temp = b.height; - b.height = b.weight; - b.weight = temp; - - return b; + if (!file.is_open()) + { + cout << "Error!" << endl; + return -1; } -**Задача**: -Вход: Въвежда се цяло число **N** и после **N** тригъгълника в равнината, определени от 3 точки ( 6 координати). + int a = 3; + int b = 10; + + file << a << " " << b << " " << a + b << endl; + + file.close(); +} + ``` +**Задача 1**: + +Напишете програма, която отпечатва собствения си код. + +**Задача 2**: + +Напишете програма, която чете comma-separated values (**CSV**) файл със студенти **със следните 4 полета**: Първо име, Фамилно име, Имейл, Факултетен номер. +**Примерен файл:** (students.csv). + +**Домашна работа**: + + 1. Допълните примера от семинара да чете факултетните номера на студентите. +2. Направете функция, която след зареждане на файла, да отпечатва на **стандартния изход** информация за студента при подаден **факултетен номер**. +3. Напишете функция, която приема editFirstNamе, която **по подаден факултетен номер и низ**, да променя първото име на студента с дадения факултетен номер първото име с подадения низ. +4. Променете функцията **saveStudentsToFile** за да запазва студентите в същия формат (**CSV**). Т.е. при повторно пускане на програмата да може да прочете новият генериран файл. + + +Да се реализира прост интерфейс, с който да се извикват фунцкиите през конзолата: +Пример (входът от потребителя започва с '>') -Отпечатайте тригълниците **сортирани по лицата им.**
\ No newline at end of file + ``` +>open students.csv +>print 80000 +Name = Stefan Velkov, Email: stefan@yahoo.com, FN: 80000 +>edit 8000 Krum +>print 80000 +Name = Krum Velkov, Email: stefan@yahoo.com, FN: 80000 +>save +file students.csv successfully saved! +```
\ No newline at end of file |
