This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
courses:programming:extra_tasks [2017/04/07 09:08] pro100kot |
courses:programming:extra_tasks [2017/10/26 12:57] pro100kot |
||
---|---|---|---|
Line 3: | Line 3: | ||
* <color green>3</color> Написать программу, которая выводит строку "HELLO WORLD!" на консоль. | * <color green>3</color> Написать программу, которая выводит строку "HELLO WORLD!" на консоль. | ||
* На вход подаются два целых числа | * На вход подаются два целых числа | ||
- | * если они > 0 вывести их сумму | + | * если первое больше второго, вывести их сумму |
* если они равны, вывести 0 | * если они равны, вывести 0 | ||
- | * если они < 0 вывести их произведение. | + | * если второе больше первого, вывести их произведение. |
* <color green>3</color> Найти и вывести максимальное число из трех целых чисел (числа вводятся с консоли). | * <color green>3</color> Найти и вывести максимальное число из трех целых чисел (числа вводятся с консоли). | ||
* <color green>3</color> Заполнить значениями, введенными с клавиатуры, одномерный массив целых чисел длиной 15 и вывести эти значения на консоль. | * <color green>3</color> Заполнить значениями, введенными с клавиатуры, одномерный массив целых чисел длиной 15 и вывести эти значения на консоль. | ||
Line 105: | Line 105: | ||
* Определение высоты дерева | * Определение высоты дерева | ||
* Вывод элементов дерева в порядке их возрастания (ЛКП обход дерева) | * Вывод элементов дерева в порядке их возрастания (ЛКП обход дерева) | ||
- | * Вывод элементов дерева с отображением структуры. Например: ((5) 10 (15)) 20 ((25) 30 (35)) | + | * Вывод элементов дерева с отображением структуры. Например: <code>((5)10(15))20((25)30(35))</code> |
* Удаление всех элементов дерева | * Удаление всех элементов дерева | ||
- | * ? | + | * Удаление заданного элемента - рекомендую подумать и попробовать реализовать самостоятельно |
Для удобства, рекомендуется использовать отдельную функцию для создания узла: | Для удобства, рекомендуется использовать отдельную функцию для создания узла: | ||
Line 120: | Line 120: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | ** Пример на обзор txt файлов во вложенных папках:** | ||
+ | <code c dir-list.c> | ||
+ | #include <stdio.h> | ||
+ | #include <string.h> | ||
+ | |||
+ | #include <sys/types.h> | ||
+ | #include <dirent.h> | ||
+ | |||
+ | void printFile(const char *path, const int lvl); | ||
+ | |||
+ | void dirTraveler(const char *startDir, const int lvl); | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | dirTraveler(".",0); | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | void dirTraveler(const char *startDir, const int lvl) | ||
+ | { | ||
+ | char path[1000]; | ||
+ | strcpy(path, startDir); | ||
+ | |||
+ | DIR *dir=opendir(path); | ||
+ | if(dir) | ||
+ | { | ||
+ | struct dirent *de = readdir(dir); | ||
+ | while(de) | ||
+ | { | ||
+ | if(de->d_type == DT_REG && strstr(de->d_name,".txt")) | ||
+ | { | ||
+ | int path_len = strlen(path); | ||
+ | strcat(path, "/"); | ||
+ | strcat(path, de->d_name); | ||
+ | printFile(path, lvl); | ||
+ | path[path_len] = '\0'; | ||
+ | } | ||
+ | if(de->d_type == DT_DIR && 0!=strcmp(".", de->d_name) && 0!=strcmp("..", de->d_name)) | ||
+ | { | ||
+ | int path_len = strlen(path); | ||
+ | strcat(path, "/"); | ||
+ | strcat(path, de->d_name); | ||
+ | dirTraveler(path, lvl+1); | ||
+ | path[path_len] = '\0'; | ||
+ | } | ||
+ | de = readdir(dir); | ||
+ | } | ||
+ | } | ||
+ | closedir(dir); | ||
+ | } | ||
+ | |||
+ | void printFile(const char *path, const int lvl) | ||
+ | { | ||
+ | int i; | ||
+ | char s[100]; | ||
+ | for(i=0;i<lvl;i++) | ||
+ | printf("\t"); | ||
+ | printf("%s[\n", path); | ||
+ | |||
+ | FILE *f = fopen(path, "r"); | ||
+ | if(f) | ||
+ | { | ||
+ | while(fgets(s,sizeof(s)/sizeof(char),f)) | ||
+ | { | ||
+ | for(i=0;i<lvl+1;i++) | ||
+ | printf("\t"); | ||
+ | printf("%s",s); | ||
+ | } | ||
+ | fclose(f); | ||
+ | } | ||
+ | |||
+ | for(i=0;i<lvl;i++) | ||
+ | printf("\t"); | ||
+ | printf("]\n"); | ||
+ | } | ||
+ | </code> | ||
+ | |||