From cd6a6b268266417c849e2ee9e44c1c429ec379bd Mon Sep 17 00:00:00 2001 From: Dmitry Sudarenko Date: Wed, 13 Nov 2024 09:22:28 +0300 Subject: [PATCH] first commit --- 01_Lecture01/00_hello_world_p36.c | 12 ++ 01_Lecture01/01_sqrt_equation_p37.c | 19 +++ 01_Lecture01/02_ASCII_art_p38.c | 14 ++ 01_Lecture01/03_ASCII_art_hard_p39.c | 18 +++ 03_Lecture03/00_example_p4.c | 10 ++ 03_Lecture03/01_announcement_p10.c | 13 ++ 03_Lecture03/02_announcement_spec_p13.c | 13 ++ 03_Lecture03/03_const_p15.c | 16 ++ 03_Lecture03/04_side_effect_p17.c | 10 ++ 03_Lecture03/05_calc_p19.c | 10 ++ 03_Lecture03/06_explicit_p21.c | 11 ++ 03_Lecture03/07_implicit_p23.c | 20 +++ 03_Lecture03/08_implicit_2_p24.c | 10 ++ 03_Lecture03/09_implicit_3_p25.c | 12 ++ 03_Lecture03/10_short_p27.c | 8 + 03_Lecture03/11_postfix_p28.c | 8 + 03_Lecture03/12_prefix_p28.c | 8 + 03_Lecture03/13_sequence_point_p30.c | 13 ++ 03_Lecture03/14_numbers_sum_p32.c | 11 ++ 03_Lecture03/15_sum_p35.c | 11 ++ 03_Lecture03/16_16rich_p38.c | 10 ++ 03_Lecture03/17_mistakes_p40.c | 11 ++ 03_Lecture03/18_output_p41.c | 17 ++ 03_Lecture03/19_output_2_p42.c | 12 ++ 03_Lecture03/20_output_3_p43.c | 17 ++ 03_Lecture03/21_mistake_p45.c | 12 ++ 03_Lecture03/22_print_p46.c | 11 ++ 03_Lecture03/23_sqrt_equation_p49.c | 26 +++ 04_Lecture04/00_inttypes_p5.c | 12 ++ 04_Lecture04/01_compare_p7.c | 11 ++ 04_Lecture04/02_operations_p9.c | 10 ++ 04_Lecture04/03_solution_p14.c | 16 ++ 04_Lecture04/04_max_p18.c | 13 ++ 04_Lecture04/05_max_tern_p21.c | 17 ++ 04_Lecture04/06_example_tv_p22.c | 16 ++ 04_Lecture04/07_right_shift_p25.c | 11 ++ 04_Lecture04/08_left_shift_p26.c | 10 ++ 04_Lecture04/09_shift_features_p27.c | 9 ++ 04_Lecture04/10_bit operations_p29.c | 10 ++ 04_Lecture04/11_bit operations_2_p30.c | 10 ++ 04_Lecture04/12_bit operations_3_p31.c | 14 ++ 04_Lecture04/13_bit operations_4_p32.c | 14 ++ 04_Lecture04/14_bit operations_5_p33.c | 13 ++ 04_Lecture04/15_bit operations_6_p33.c | 13 ++ 04_Lecture04/16_invert_p34.c | 14 ++ 04_Lecture04/17_sqrt_equation_p40_41.c | 49 ++++++ 05_Lecture05/00_switch_p6.c | 25 +++ 05_Lecture05/01_while_p11.c | 12 ++ 05_Lecture05/02_while_2_p11.c | 13 ++ 05_Lecture05/03_while_example_p13.c | 13 ++ 05_Lecture05/04_while_example_2_p15.c | 13 ++ 05_Lecture05/05_digits_p19.c | 17 ++ 05_Lecture05/06_deviders_p21.c | 16 ++ 05_Lecture05/07_do_while_p24.c | 11 ++ 05_Lecture05/08_number_p29.c | 19 +++ 05_Lecture05/09_comtinue_p31.c | 12 ++ 05_Lecture05/10_break_p32.c | 15 ++ 05_Lecture05/11_sqrt_p36.c | 18 +++ 05_Lecture05/12_count_p38.c | 19 +++ 05_Lecture05/13_fibonacci_p40.c | 23 +++ 05_Lecture05/14_goto_p42.c | 10 ++ 05_Lecture05/15_global_p45.c | 11 ++ 05_Lecture05/16_example_1_p47.c | 11 ++ 05_Lecture05/16_example_2_p47.c | 12 ++ 05_Lecture05/17_define_p52.c | 11 ++ 05_Lecture05/18_sqrt_equation_p54.c | 35 ++++ 06_Lecture06/00_getchar_putchar_p5.c | 9 ++ 06_Lecture06/01_getchar_putchar_2_p6.c | 13 ++ 06_Lecture06/02_letter_change_p12.c | 13 ++ 06_Lecture06/03_getch_p13.c | 18 +++ 06_Lecture06/03_getch_p13_ncurses.c | 21 +++ 06_Lecture06/03_letter_add_p15.c | 16 ++ 06_Lecture06/04_numbers_combine_p16.c | 14 ++ 06_Lecture06/05_function_1_p19.c | 15 ++ 06_Lecture06/06_function_2_p19.c | 18 +++ 06_Lecture06/07_function_void_1_p21.c | 18 +++ 06_Lecture06/08_function_void_p22.c | 16 ++ 06_Lecture06/09_function_void_1_p23.c | 20 +++ 06_Lecture06/10_function_void_2_p23.c | 18 +++ 06_Lecture06/11_module_p29.c | 14 ++ 06_Lecture06/12_prime_check_p30.c | 24 +++ 06_Lecture06/13_sqrt_final_34_37.c | 87 ++++++++++ 06_Lecture06/14_fsm_p40.c | 13 ++ 06_Lecture06/15_fsm_2_p41.c | 31 ++++ 06_Lecture06/16_coffee_p43.c | 68 ++++++++ 06_Lecture06/16_coffee_p43refact.c | 78 +++++++++ 07_Lecture07/00_func_p5.c | 15 ++ 07_Lecture07/01_pointer_p9.c | 11 ++ 07_Lecture07/02_pointer_use_p10.c | 15 ++ 07_Lecture07/03_pointer_to_pointer_p12.c | 14 ++ 07_Lecture07/04_swap_p13.c | 16 ++ 07_Lecture07/05_swap_2_p15.c | 16 ++ 07_Lecture07/06_rec_p19.c | 15 ++ 07_Lecture07/07_rec_fact_p21.c | 15 ++ 07_Lecture07/08_sum_p24.c | 21 +++ 07_Lecture07/09_sum_rec_p25.c | 18 +++ 07_Lecture07/10_fibonachi_25.c | 15 ++ 07_Lecture07/11_2_for_rec_p33.c | 38 +++++ 07_Lecture07/11_fibonachi_diag_p28.c | 28 ++++ 07_Lecture07/12_print_rev_p36.c | 18 +++ 07_Lecture07/13_gcd_p37.c | 21 +++ 07_Lecture07/14_dec_to_bin_p38.c | 21 +++ 07_Lecture07/15_max_find_p39.c | 20 +++ 08_Lecture08/00_array_p8.c | 15 ++ 08_Lecture08/01_arr_mult_p10.c | 37 +++++ 08_Lecture08/02_arr_min_p13.c | 39 +++++ 08_Lecture08/03_arr_swap_p14.c | 60 +++++++ 08_Lecture08/04_arr_bubblesort_p17.c | 55 +++++++ 08_Lecture08/05_arr_bubblesort_2_p18.c | 55 +++++++ 08_Lecture08/06_arr_all_p19.c | 105 ++++++++++++ 08_Lecture08/07_float_bin_p27.c | 22 +++ 08_Lecture08/08_float_bin_error_p30.c | 37 +++++ 09_Lecture09/00__p6.c | 23 +++ 09_Lecture09/00_st_scanf_printf_p7.c | 9 ++ 09_Lecture09/01__p10.c | 13 ++ 09_Lecture09/01__p12.c | 10 ++ 09_Lecture09/01_getchar_p8.c | 14 ++ 09_Lecture09/02_strlen_p15.c | 9 ++ 09_Lecture09/03_strlen find_p16.c | 16 ++ 09_Lecture09/04__p17.c | 12 ++ 09_Lecture09/04_strcmp_optim_p18_19.c | 30 ++++ 09_Lecture09/05_strcpy_p20.c | 16 ++ 09_Lecture09/06_mystrcpy_p21.c | 27 ++++ 09_Lecture09/07_words_p23.c | 14 ++ 09_Lecture09/08__p25.c | 18 +++ 09_Lecture09/08_sizeof_p27.c | 12 ++ 09_Lecture09/09_StrToHexMas_p36_37.c | 59 +++++++ 09_Lecture09/09__p31.c | 35 ++++ 09_Lecture09/10_pointer_increase_p40.c | 9 ++ 09_Lecture09/11_pointer_increase_p42.c | 12 ++ 09_Lecture09/12_pointer_increase_p44.c | 11 ++ 09_Lecture09/12_pointer_increase_p45.c | 12 ++ 09_Lecture09/13_scalar_p47-48.c | 25 +++ 10_Lecture10/00_file_p5.c | 10 ++ 10_Lecture10/01_file_sum_p15.c | 12 ++ 10_Lecture10/02_file_ftell_p17.c | 19 +++ 10_Lecture10/03_file_sum_end_p19.c | 16 ++ 10_Lecture10/04_file_fread_p26.c | 14 ++ 10_Lecture10/05_students_p36_38.c | 86 ++++++++++ 10_Lecture10/06_sensor_p41_42.c | 78 +++++++++ 11_Lecture11/Module01_p7/.vscode/launch.json | 7 + .../Module01_p7/.vscode/settings.json | 5 + 11_Lecture11/Module01_p7/.vscode/tasks.json | 28 ++++ 11_Lecture11/Module01_p7/build.bat | 5 + 11_Lecture11/Module01_p7/func.c | 9 ++ 11_Lecture11/Module01_p7/func.o | Bin 0 -> 1088 bytes 11_Lecture11/Module01_p7/hello.c | 7 + 11_Lecture11/Module01_p7/main.c | 15 ++ 11_Lecture11/Module01_p7/main.o | Bin 0 -> 1092 bytes 11_Lecture11/Module01_p7/makefile | 14 ++ .../Module02_p9/.vscode/settings.json | 6 + 11_Lecture11/Module02_p9/func.c | 6 + 11_Lecture11/Module02_p9/func.h | 1 + 11_Lecture11/Module02_p9/main.c | 13 ++ 11_Lecture11/Module02_p9/makefile | 13 ++ .../Module03_p11/.vscode/settings.json | 5 + 11_Lecture11/Module03_p11/func.c | 11 ++ 11_Lecture11/Module03_p11/lib2.h | 4 + 11_Lecture11/Module03_p11/main.c | 13 ++ 11_Lecture11/Module03_p11/makefile | 14 ++ 11_Lecture11/Module03_p11/mylibrary.h | 7 + 12_Lecture12/.vscode/settings.json | 5 + 12_Lecture12/00_argc_p7.c | 8 + 12_Lecture12/01_argc_argv_p8.c | 26 +++ 12_Lecture12/02_getopt_p17.c | 20 +++ 12_Lecture12/02_ls_p21.c | 34 ++++ 12_Lecture12/03_macros_debugprint_p26.c | 9 ++ 12_Lecture12/04_macros_degug_p27.c | 11 ++ 12_Lecture12/05_macros_example_p28.c | 12 ++ 12_Lecture12/06_macros_swap_p30.c | 18 +++ 12_Lecture12/07_macros_half_p31.c | 11 ++ 12_Lecture12/08_macros_half_2_p33.c | 11 ++ 12_Lecture12/09_macros_tostr_p35.c | 12 ++ 12_Lecture12/10_macros_merge_p36.c | 12 ++ 12_Lecture12/11_why_me_p37.c | 19 +++ 12_Lecture12/12_if_endif_p41.c | 17 ++ 13_Lecture13/.vscode/launch.json | 30 ++++ 13_Lecture13/.vscode/tasks.json | 28 ++++ 13_Lecture13/00_logir_p7.c | 9 ++ 13_Lecture13/01_logir_sclog4c_p8.c | 10 ++ 13_Lecture13/02_lifo_1_p14.c | 43 +++++ 13_Lecture13/02_lifo_1_p14.exe | Bin 0 -> 139653 bytes 13_Lecture13/03_lifo_2_p15_16.c | 71 +++++++++ 13_Lecture13/03_lifo_2_p15_16.exe | Bin 0 -> 143233 bytes 13_Lecture13/04_fifo_p18_20.c | 83 ++++++++++ 13_Lecture13/04_fifo_p18_20.exe | Bin 0 -> 141427 bytes 13_Lecture13/04_fifo_p18_20.o | Bin 0 -> 2066 bytes 13_Lecture13/test.c | 79 ++++++++++ 16_Seminar03/00_assign_p3.c | 14 ++ 16_Seminar03/01_time_p5.c | 14 ++ 16_Seminar03/02_printf_p7.c | 13 ++ 16_Seminar03/02_sum_p_6.c | 9 ++ 16_Seminar03/03_mult_p_6.c | 12 ++ 16_Seminar03/04_averege_p_6.c | 9 ++ 16_Seminar03/05_sub_p_6.c | 9 ++ 16_Seminar03/06_printf_p7.c | 13 ++ 16_Seminar03/07_sum_digits_p8.c .c | 11 ++ 16_Seminar03/08_scanf.c .c | 8 + 17_Seminar04/00_yes_no_p5.c | 11 ++ 17_Seminar04/01_1_xor.c | 8 + 17_Seminar04/01_min_p6.c | 11 ++ 17_Seminar04/02_reset_3_bits_p7.c | 12 ++ 17_Seminar04/03_rise_2_bits_p8.c | 16 ++ 17_Seminar04/04_rise_2_bits_p9.c | 13 ++ 17_Seminar04/05_OR_AND.c | 11 ++ 18_Seminar05/00_switch_p1.c | 30 ++++ 18_Seminar05/01_printf_p2.c | 14 ++ 18_Seminar05/02_printf_p4.c | 15 ++ 18_Seminar05/03_digits_p7.c | 18 +++ 18_Seminar05/04_for_1_p8.c | 10 ++ 18_Seminar05/05_for_2_p8.c | 10 ++ 18_Seminar05/06_deviders_p11.c | 22 +++ 18_Seminar05/07_greater_number_p13.c | 12 ++ 18_Seminar05/08_easy_numb_p15.c | 25 +++ 18_Seminar05/09_printf_p16.c | 14 ++ 18_Seminar05/10_count_p19.c | 17 ++ 18_Seminar05/11_palindrom_p21.c | 19 +++ 19_Seminar06/00_float_p3.c | 19 +++ 20_Seminar07/00_func_p2.c | 15 ++ 20_Seminar07/01_f_p4.c | 17 ++ 20_Seminar07/02_taylor_p9_10.c | 29 ++++ 20_Seminar07/03_refact_1_p11.c | 32 ++++ 20_Seminar07/04_refact_2_p12.c | 36 +++++ 20_Seminar07/05_prbs_p14.c | 23 +++ 21_Seminar08/00_random_p3.c | 18 +++ 21_Seminar08/01_random_func_p4.c | 22 +++ 21_Seminar08/02_random_generator_p5.c | 31 ++++ 21_Seminar08/03_array_func_p6_9.c | 124 +++++++++++++++ 21_Seminar08/04_crc8_p19_20.c | 33 ++++ 21_Seminar08/05_isPrime_p23_24.c | 36 +++++ 21_Seminar08/06_isPrime_refact_p25.c | 23 +++ 22_Seminar09/00_scanf_p3.c | 12 ++ 22_Seminar09/01_scanf_2_p5.c | 12 ++ 22_Seminar09/02_pointer_increase_p8.c | 11 ++ 22_Seminar09/03_pointer_difference_p10.c | 11 ++ 22_Seminar09/04_pointer_printf_p12.c | 12 ++ 22_Seminar09/05_sum_p14.c | 18 +++ 22_Seminar09/06_sum0_p17.c | 18 +++ 22_Seminar09/07_arr_printf_p21.c | 17 ++ 22_Seminar09/07_arr_printf_p22.c | 12 ++ 22_Seminar09/07_arr_printf_p23.c | 19 +++ 22_Seminar09/08_VLA_p26.c | 11 ++ 22_Seminar09/08_qsort_p31.c | 39 +++++ 22_Seminar09/08_str_p28.c | 11 ++ 23_Seminar10/00_struct_size_p3.c | 28 ++++ 23_Seminar10/01_union_p7.c | 22 +++ 23_Seminar10/02_union_pi_p8.c | 18 +++ 23_Seminar10/03_bit_field_p11.c | 15 ++ 23_Seminar10/04_sensor_p14_16.c | 120 ++++++++++++++ 23_Seminar10/05_sensor_serial_p17.c | 146 +++++++++++++++++ 23_Seminar10/test.c | 149 ++++++++++++++++++ 24_Seminar11/00_file_p3_8.c | 113 +++++++++++++ 25_Seminar12/00_file_p2_5.c | 113 +++++++++++++ 25_Seminar12/01_macros_sum_p7.c | 11 ++ 25_Seminar12/02_macros_sum_2_p9.c | 11 ++ 25_Seminar12/03_macros_max_p11.c | 11 ++ 25_Seminar12/04_macros_swap_p13.c | 14 ++ 25_Seminar12/05_macros_swap_2_p15.c | 14 ++ 25_Seminar12/06_macros_aname_p17.c | 20 +++ 25_Seminar12/07_varg_p18.c | 16 ++ 25_Seminar12/08_p19.c | 32 ++++ 25_Seminar12/ls.c | 70 ++++++++ 26_Seminar13/.vscode/tasks.json | 28 ++++ 26_Seminar13/00_case_p3.c | 30 ++++ 26_Seminar13/01_errors_p6.c | 28 ++++ 26_Seminar13/02_fgetc_p7.c | 34 ++++ 26_Seminar13/03_no_fscanf_p8.c | 38 +++++ 26_Seminar13/04_file_errors_p10.c | 24 +++ 26_Seminar13/05_Sensor_p12_13/main.c | 18 +++ 26_Seminar13/05_Sensor_p12_13/makefile | 14 ++ 26_Seminar13/05_Sensor_p12_13/sensor.c | 79 ++++++++++ 26_Seminar13/05_Sensor_p12_13/sensor.h | 23 +++ 26_Seminar13/06_array_stack_p15.c | 24 +++ 26_Seminar13/temperature_small1.csv | 16 ++ 26_Seminar13/temperature_small2.csv | 16 ++ CourseWork/temperature_data_examples (1).zip | Bin 0 -> 1212743 bytes .../Итоговое задание.pdf | Bin 0 -> 49364 bytes 277 files changed, 5945 insertions(+) create mode 100644 01_Lecture01/00_hello_world_p36.c create mode 100644 01_Lecture01/01_sqrt_equation_p37.c create mode 100644 01_Lecture01/02_ASCII_art_p38.c create mode 100644 01_Lecture01/03_ASCII_art_hard_p39.c create mode 100644 03_Lecture03/00_example_p4.c create mode 100644 03_Lecture03/01_announcement_p10.c create mode 100644 03_Lecture03/02_announcement_spec_p13.c create mode 100644 03_Lecture03/03_const_p15.c create mode 100644 03_Lecture03/04_side_effect_p17.c create mode 100644 03_Lecture03/05_calc_p19.c create mode 100644 03_Lecture03/06_explicit_p21.c create mode 100644 03_Lecture03/07_implicit_p23.c create mode 100644 03_Lecture03/08_implicit_2_p24.c create mode 100644 03_Lecture03/09_implicit_3_p25.c create mode 100644 03_Lecture03/10_short_p27.c create mode 100644 03_Lecture03/11_postfix_p28.c create mode 100644 03_Lecture03/12_prefix_p28.c create mode 100644 03_Lecture03/13_sequence_point_p30.c create mode 100644 03_Lecture03/14_numbers_sum_p32.c create mode 100644 03_Lecture03/15_sum_p35.c create mode 100644 03_Lecture03/16_16rich_p38.c create mode 100644 03_Lecture03/17_mistakes_p40.c create mode 100644 03_Lecture03/18_output_p41.c create mode 100644 03_Lecture03/19_output_2_p42.c create mode 100644 03_Lecture03/20_output_3_p43.c create mode 100644 03_Lecture03/21_mistake_p45.c create mode 100644 03_Lecture03/22_print_p46.c create mode 100644 03_Lecture03/23_sqrt_equation_p49.c create mode 100644 04_Lecture04/00_inttypes_p5.c create mode 100644 04_Lecture04/01_compare_p7.c create mode 100644 04_Lecture04/02_operations_p9.c create mode 100644 04_Lecture04/03_solution_p14.c create mode 100644 04_Lecture04/04_max_p18.c create mode 100644 04_Lecture04/05_max_tern_p21.c create mode 100644 04_Lecture04/06_example_tv_p22.c create mode 100644 04_Lecture04/07_right_shift_p25.c create mode 100644 04_Lecture04/08_left_shift_p26.c create mode 100644 04_Lecture04/09_shift_features_p27.c create mode 100644 04_Lecture04/10_bit operations_p29.c create mode 100644 04_Lecture04/11_bit operations_2_p30.c create mode 100644 04_Lecture04/12_bit operations_3_p31.c create mode 100644 04_Lecture04/13_bit operations_4_p32.c create mode 100644 04_Lecture04/14_bit operations_5_p33.c create mode 100644 04_Lecture04/15_bit operations_6_p33.c create mode 100644 04_Lecture04/16_invert_p34.c create mode 100644 04_Lecture04/17_sqrt_equation_p40_41.c create mode 100644 05_Lecture05/00_switch_p6.c create mode 100644 05_Lecture05/01_while_p11.c create mode 100644 05_Lecture05/02_while_2_p11.c create mode 100644 05_Lecture05/03_while_example_p13.c create mode 100644 05_Lecture05/04_while_example_2_p15.c create mode 100644 05_Lecture05/05_digits_p19.c create mode 100644 05_Lecture05/06_deviders_p21.c create mode 100644 05_Lecture05/07_do_while_p24.c create mode 100644 05_Lecture05/08_number_p29.c create mode 100644 05_Lecture05/09_comtinue_p31.c create mode 100644 05_Lecture05/10_break_p32.c create mode 100644 05_Lecture05/11_sqrt_p36.c create mode 100644 05_Lecture05/12_count_p38.c create mode 100644 05_Lecture05/13_fibonacci_p40.c create mode 100644 05_Lecture05/14_goto_p42.c create mode 100644 05_Lecture05/15_global_p45.c create mode 100644 05_Lecture05/16_example_1_p47.c create mode 100644 05_Lecture05/16_example_2_p47.c create mode 100644 05_Lecture05/17_define_p52.c create mode 100644 05_Lecture05/18_sqrt_equation_p54.c create mode 100644 06_Lecture06/00_getchar_putchar_p5.c create mode 100644 06_Lecture06/01_getchar_putchar_2_p6.c create mode 100644 06_Lecture06/02_letter_change_p12.c create mode 100644 06_Lecture06/03_getch_p13.c create mode 100644 06_Lecture06/03_getch_p13_ncurses.c create mode 100644 06_Lecture06/03_letter_add_p15.c create mode 100644 06_Lecture06/04_numbers_combine_p16.c create mode 100644 06_Lecture06/05_function_1_p19.c create mode 100644 06_Lecture06/06_function_2_p19.c create mode 100644 06_Lecture06/07_function_void_1_p21.c create mode 100644 06_Lecture06/08_function_void_p22.c create mode 100644 06_Lecture06/09_function_void_1_p23.c create mode 100644 06_Lecture06/10_function_void_2_p23.c create mode 100644 06_Lecture06/11_module_p29.c create mode 100644 06_Lecture06/12_prime_check_p30.c create mode 100644 06_Lecture06/13_sqrt_final_34_37.c create mode 100644 06_Lecture06/14_fsm_p40.c create mode 100644 06_Lecture06/15_fsm_2_p41.c create mode 100644 06_Lecture06/16_coffee_p43.c create mode 100644 06_Lecture06/16_coffee_p43refact.c create mode 100644 07_Lecture07/00_func_p5.c create mode 100644 07_Lecture07/01_pointer_p9.c create mode 100644 07_Lecture07/02_pointer_use_p10.c create mode 100644 07_Lecture07/03_pointer_to_pointer_p12.c create mode 100644 07_Lecture07/04_swap_p13.c create mode 100644 07_Lecture07/05_swap_2_p15.c create mode 100644 07_Lecture07/06_rec_p19.c create mode 100644 07_Lecture07/07_rec_fact_p21.c create mode 100644 07_Lecture07/08_sum_p24.c create mode 100644 07_Lecture07/09_sum_rec_p25.c create mode 100644 07_Lecture07/10_fibonachi_25.c create mode 100644 07_Lecture07/11_2_for_rec_p33.c create mode 100644 07_Lecture07/11_fibonachi_diag_p28.c create mode 100644 07_Lecture07/12_print_rev_p36.c create mode 100644 07_Lecture07/13_gcd_p37.c create mode 100644 07_Lecture07/14_dec_to_bin_p38.c create mode 100644 07_Lecture07/15_max_find_p39.c create mode 100644 08_Lecture08/00_array_p8.c create mode 100644 08_Lecture08/01_arr_mult_p10.c create mode 100644 08_Lecture08/02_arr_min_p13.c create mode 100644 08_Lecture08/03_arr_swap_p14.c create mode 100644 08_Lecture08/04_arr_bubblesort_p17.c create mode 100644 08_Lecture08/05_arr_bubblesort_2_p18.c create mode 100644 08_Lecture08/06_arr_all_p19.c create mode 100644 08_Lecture08/07_float_bin_p27.c create mode 100644 08_Lecture08/08_float_bin_error_p30.c create mode 100644 09_Lecture09/00__p6.c create mode 100644 09_Lecture09/00_st_scanf_printf_p7.c create mode 100644 09_Lecture09/01__p10.c create mode 100644 09_Lecture09/01__p12.c create mode 100644 09_Lecture09/01_getchar_p8.c create mode 100644 09_Lecture09/02_strlen_p15.c create mode 100644 09_Lecture09/03_strlen find_p16.c create mode 100644 09_Lecture09/04__p17.c create mode 100644 09_Lecture09/04_strcmp_optim_p18_19.c create mode 100644 09_Lecture09/05_strcpy_p20.c create mode 100644 09_Lecture09/06_mystrcpy_p21.c create mode 100644 09_Lecture09/07_words_p23.c create mode 100644 09_Lecture09/08__p25.c create mode 100644 09_Lecture09/08_sizeof_p27.c create mode 100644 09_Lecture09/09_StrToHexMas_p36_37.c create mode 100644 09_Lecture09/09__p31.c create mode 100644 09_Lecture09/10_pointer_increase_p40.c create mode 100644 09_Lecture09/11_pointer_increase_p42.c create mode 100644 09_Lecture09/12_pointer_increase_p44.c create mode 100644 09_Lecture09/12_pointer_increase_p45.c create mode 100644 09_Lecture09/13_scalar_p47-48.c create mode 100644 10_Lecture10/00_file_p5.c create mode 100644 10_Lecture10/01_file_sum_p15.c create mode 100644 10_Lecture10/02_file_ftell_p17.c create mode 100644 10_Lecture10/03_file_sum_end_p19.c create mode 100644 10_Lecture10/04_file_fread_p26.c create mode 100644 10_Lecture10/05_students_p36_38.c create mode 100644 10_Lecture10/06_sensor_p41_42.c create mode 100644 11_Lecture11/Module01_p7/.vscode/launch.json create mode 100644 11_Lecture11/Module01_p7/.vscode/settings.json create mode 100644 11_Lecture11/Module01_p7/.vscode/tasks.json create mode 100644 11_Lecture11/Module01_p7/build.bat create mode 100644 11_Lecture11/Module01_p7/func.c create mode 100644 11_Lecture11/Module01_p7/func.o create mode 100644 11_Lecture11/Module01_p7/hello.c create mode 100644 11_Lecture11/Module01_p7/main.c create mode 100644 11_Lecture11/Module01_p7/main.o create mode 100644 11_Lecture11/Module01_p7/makefile create mode 100644 11_Lecture11/Module02_p9/.vscode/settings.json create mode 100644 11_Lecture11/Module02_p9/func.c create mode 100644 11_Lecture11/Module02_p9/func.h create mode 100644 11_Lecture11/Module02_p9/main.c create mode 100644 11_Lecture11/Module02_p9/makefile create mode 100644 11_Lecture11/Module03_p11/.vscode/settings.json create mode 100644 11_Lecture11/Module03_p11/func.c create mode 100644 11_Lecture11/Module03_p11/lib2.h create mode 100644 11_Lecture11/Module03_p11/main.c create mode 100644 11_Lecture11/Module03_p11/makefile create mode 100644 11_Lecture11/Module03_p11/mylibrary.h create mode 100644 12_Lecture12/.vscode/settings.json create mode 100644 12_Lecture12/00_argc_p7.c create mode 100644 12_Lecture12/01_argc_argv_p8.c create mode 100644 12_Lecture12/02_getopt_p17.c create mode 100644 12_Lecture12/02_ls_p21.c create mode 100644 12_Lecture12/03_macros_debugprint_p26.c create mode 100644 12_Lecture12/04_macros_degug_p27.c create mode 100644 12_Lecture12/05_macros_example_p28.c create mode 100644 12_Lecture12/06_macros_swap_p30.c create mode 100644 12_Lecture12/07_macros_half_p31.c create mode 100644 12_Lecture12/08_macros_half_2_p33.c create mode 100644 12_Lecture12/09_macros_tostr_p35.c create mode 100644 12_Lecture12/10_macros_merge_p36.c create mode 100644 12_Lecture12/11_why_me_p37.c create mode 100644 12_Lecture12/12_if_endif_p41.c create mode 100644 13_Lecture13/.vscode/launch.json create mode 100644 13_Lecture13/.vscode/tasks.json create mode 100644 13_Lecture13/00_logir_p7.c create mode 100644 13_Lecture13/01_logir_sclog4c_p8.c create mode 100644 13_Lecture13/02_lifo_1_p14.c create mode 100644 13_Lecture13/02_lifo_1_p14.exe create mode 100644 13_Lecture13/03_lifo_2_p15_16.c create mode 100644 13_Lecture13/03_lifo_2_p15_16.exe create mode 100644 13_Lecture13/04_fifo_p18_20.c create mode 100644 13_Lecture13/04_fifo_p18_20.exe create mode 100644 13_Lecture13/04_fifo_p18_20.o create mode 100644 13_Lecture13/test.c create mode 100644 16_Seminar03/00_assign_p3.c create mode 100644 16_Seminar03/01_time_p5.c create mode 100644 16_Seminar03/02_printf_p7.c create mode 100644 16_Seminar03/02_sum_p_6.c create mode 100644 16_Seminar03/03_mult_p_6.c create mode 100644 16_Seminar03/04_averege_p_6.c create mode 100644 16_Seminar03/05_sub_p_6.c create mode 100644 16_Seminar03/06_printf_p7.c create mode 100644 16_Seminar03/07_sum_digits_p8.c .c create mode 100644 16_Seminar03/08_scanf.c .c create mode 100644 17_Seminar04/00_yes_no_p5.c create mode 100644 17_Seminar04/01_1_xor.c create mode 100644 17_Seminar04/01_min_p6.c create mode 100644 17_Seminar04/02_reset_3_bits_p7.c create mode 100644 17_Seminar04/03_rise_2_bits_p8.c create mode 100644 17_Seminar04/04_rise_2_bits_p9.c create mode 100644 17_Seminar04/05_OR_AND.c create mode 100644 18_Seminar05/00_switch_p1.c create mode 100644 18_Seminar05/01_printf_p2.c create mode 100644 18_Seminar05/02_printf_p4.c create mode 100644 18_Seminar05/03_digits_p7.c create mode 100644 18_Seminar05/04_for_1_p8.c create mode 100644 18_Seminar05/05_for_2_p8.c create mode 100644 18_Seminar05/06_deviders_p11.c create mode 100644 18_Seminar05/07_greater_number_p13.c create mode 100644 18_Seminar05/08_easy_numb_p15.c create mode 100644 18_Seminar05/09_printf_p16.c create mode 100644 18_Seminar05/10_count_p19.c create mode 100644 18_Seminar05/11_palindrom_p21.c create mode 100644 19_Seminar06/00_float_p3.c create mode 100644 20_Seminar07/00_func_p2.c create mode 100644 20_Seminar07/01_f_p4.c create mode 100644 20_Seminar07/02_taylor_p9_10.c create mode 100644 20_Seminar07/03_refact_1_p11.c create mode 100644 20_Seminar07/04_refact_2_p12.c create mode 100644 20_Seminar07/05_prbs_p14.c create mode 100644 21_Seminar08/00_random_p3.c create mode 100644 21_Seminar08/01_random_func_p4.c create mode 100644 21_Seminar08/02_random_generator_p5.c create mode 100644 21_Seminar08/03_array_func_p6_9.c create mode 100644 21_Seminar08/04_crc8_p19_20.c create mode 100644 21_Seminar08/05_isPrime_p23_24.c create mode 100644 21_Seminar08/06_isPrime_refact_p25.c create mode 100644 22_Seminar09/00_scanf_p3.c create mode 100644 22_Seminar09/01_scanf_2_p5.c create mode 100644 22_Seminar09/02_pointer_increase_p8.c create mode 100644 22_Seminar09/03_pointer_difference_p10.c create mode 100644 22_Seminar09/04_pointer_printf_p12.c create mode 100644 22_Seminar09/05_sum_p14.c create mode 100644 22_Seminar09/06_sum0_p17.c create mode 100644 22_Seminar09/07_arr_printf_p21.c create mode 100644 22_Seminar09/07_arr_printf_p22.c create mode 100644 22_Seminar09/07_arr_printf_p23.c create mode 100644 22_Seminar09/08_VLA_p26.c create mode 100644 22_Seminar09/08_qsort_p31.c create mode 100644 22_Seminar09/08_str_p28.c create mode 100644 23_Seminar10/00_struct_size_p3.c create mode 100644 23_Seminar10/01_union_p7.c create mode 100644 23_Seminar10/02_union_pi_p8.c create mode 100644 23_Seminar10/03_bit_field_p11.c create mode 100644 23_Seminar10/04_sensor_p14_16.c create mode 100644 23_Seminar10/05_sensor_serial_p17.c create mode 100644 23_Seminar10/test.c create mode 100644 24_Seminar11/00_file_p3_8.c create mode 100644 25_Seminar12/00_file_p2_5.c create mode 100644 25_Seminar12/01_macros_sum_p7.c create mode 100644 25_Seminar12/02_macros_sum_2_p9.c create mode 100644 25_Seminar12/03_macros_max_p11.c create mode 100644 25_Seminar12/04_macros_swap_p13.c create mode 100644 25_Seminar12/05_macros_swap_2_p15.c create mode 100644 25_Seminar12/06_macros_aname_p17.c create mode 100644 25_Seminar12/07_varg_p18.c create mode 100644 25_Seminar12/08_p19.c create mode 100644 25_Seminar12/ls.c create mode 100644 26_Seminar13/.vscode/tasks.json create mode 100644 26_Seminar13/00_case_p3.c create mode 100644 26_Seminar13/01_errors_p6.c create mode 100644 26_Seminar13/02_fgetc_p7.c create mode 100644 26_Seminar13/03_no_fscanf_p8.c create mode 100644 26_Seminar13/04_file_errors_p10.c create mode 100644 26_Seminar13/05_Sensor_p12_13/main.c create mode 100644 26_Seminar13/05_Sensor_p12_13/makefile create mode 100644 26_Seminar13/05_Sensor_p12_13/sensor.c create mode 100644 26_Seminar13/05_Sensor_p12_13/sensor.h create mode 100644 26_Seminar13/06_array_stack_p15.c create mode 100644 26_Seminar13/temperature_small1.csv create mode 100644 26_Seminar13/temperature_small2.csv create mode 100644 CourseWork/temperature_data_examples (1).zip create mode 100644 CourseWork/Итоговое задание.pdf diff --git a/01_Lecture01/00_hello_world_p36.c b/01_Lecture01/00_hello_world_p36.c new file mode 100644 index 0000000..964c2c3 --- /dev/null +++ b/01_Lecture01/00_hello_world_p36.c @@ -0,0 +1,12 @@ +/* Это комментарий. + Он не влияет на работу программы */ + +// Это тоже комментарий только из одной строки + +#include // Подключаем библиотеку ввода-вывода + +int main (int argc, char **argv) // Программа начинается тут. Это точка выполнения программы +{ + printf ("Hello world!\n"); // Напечатать текст Hello World! + return 0; // Завершает программу с кодом 0, что все хорошо +} // Конец блока main diff --git a/01_Lecture01/01_sqrt_equation_p37.c b/01_Lecture01/01_sqrt_equation_p37.c new file mode 100644 index 0000000..fc512e9 --- /dev/null +++ b/01_Lecture01/01_sqrt_equation_p37.c @@ -0,0 +1,19 @@ +/* + Комментарий + */ +//Комментарий +#include +#include + +int main (int argc, char **argv) +{ + setlocale(LC_ALL, "en_US.UTF-8"); //устанавливаем русскую локализацию + printf("Вычисление корней квадратного уравнения \\ \"a*x*x+b*x+c=0\" \n"); + printf("Введите a: \n"); + printf("Введите b: \n"); + printf("Введите c:\n"); + printf("Корни квадратного уравнения \n"); + printf("X1 = \n"); + printf("X2 = \n"); + return 0; +} diff --git a/01_Lecture01/02_ASCII_art_p38.c b/01_Lecture01/02_ASCII_art_p38.c new file mode 100644 index 0000000..1d8968c --- /dev/null +++ b/01_Lecture01/02_ASCII_art_p38.c @@ -0,0 +1,14 @@ +#include +int main(int argc, char **argv) +{ + /* + (\___/) + (='.'=) + (")_(") + */ + printf("(\\___/)\n"); + printf("(='.'=)\n"); + printf("(\")_(\")\n"); + + return 0; +} diff --git a/01_Lecture01/03_ASCII_art_hard_p39.c b/01_Lecture01/03_ASCII_art_hard_p39.c new file mode 100644 index 0000000..12916b6 --- /dev/null +++ b/01_Lecture01/03_ASCII_art_hard_p39.c @@ -0,0 +1,18 @@ +#include +int main(int argc, char **argv) +{ + /* + ___ _____ ______________ ___ ____ ______ + / | / ___// ____/ _/ _/ / | / __ \/_ __/ + / /| | \__ \/ / / / / / / /| | / /_/ / / / + / ___ |___/ / /____/ /_/ / / ___ |/ _, _/ / / + /_/ |_/____/\____/___/___/ /_/ |_/_/ |_| /_/ + */ + + printf(" ___ _____ ______________ ___ ____ ______\n"); + printf(" / | / ___// ____/ _/ _/ / | / __ \\/_ __/\n"); + printf(" / /| | \\__ \\/ / / / / / / /| | / /_/ / / / \n"); + printf(" / ___ |___/ / /____/ /_/ / / ___ |/ _, _/ / / \n"); + printf("/_/ |_/____/\\____/___/___/ /_/ |_/_/ |_| /_/\n"); + return 0; +} diff --git a/03_Lecture03/00_example_p4.c b/03_Lecture03/00_example_p4.c new file mode 100644 index 0000000..8ebafad --- /dev/null +++ b/03_Lecture03/00_example_p4.c @@ -0,0 +1,10 @@ +#include + +int main() +{ + int i, sum=0; + for (i=1; i<10; i++) + sum*=i; + printf("%d",sum); + return 0; +} diff --git a/03_Lecture03/01_announcement_p10.c b/03_Lecture03/01_announcement_p10.c new file mode 100644 index 0000000..a187022 --- /dev/null +++ b/03_Lecture03/01_announcement_p10.c @@ -0,0 +1,13 @@ +#include + +int main() +{ + unsigned short a; //объявление целочисленной переменной + float f; //объявление вещественной переменной + int su7, prime=7, five=5; //объявление переменных с инициализацией + float pi=3.14; //объявление переменных с инициализацией + char c, c2='A', m=10; //объявление символьных переменных с инициализацией + double big_pi; //объявление вещественной переменной двойной точности + printf("%d",sizeof(a));//забегая вперед + return 0; +} diff --git a/03_Lecture03/02_announcement_spec_p13.c b/03_Lecture03/02_announcement_spec_p13.c new file mode 100644 index 0000000..4a24dab --- /dev/null +++ b/03_Lecture03/02_announcement_spec_p13.c @@ -0,0 +1,13 @@ +#include + +int main() +{ + unsigned int a; //объявление целочисленной переменной + float f; //объявление вещественной переменной + unsigned long long int su7, prime=7, five=5; //объявление переменных с инициализацией + float pi=3.14; //объявление переменных с инициализацией + unsigned char c, c2='A', m=10; //объявление символьных переменных с инициализацией + long double big_pi; //объявление вещественной переменной двойной точности + printf("%d",sizeof(su7));//забегая вперед + return 0; +} diff --git a/03_Lecture03/03_const_p15.c b/03_Lecture03/03_const_p15.c new file mode 100644 index 0000000..95133de --- /dev/null +++ b/03_Lecture03/03_const_p15.c @@ -0,0 +1,16 @@ +#include + +extern int Voltage; +int main() +{ + { // Операторные скобки обознаячают составной оператор + float Power = 0.5f; + } + { + static int Current; + } + Power = 0;// Ошибка! области видимости + const int SIZE=1000; // Объявление целочисленной константы. + //Обратите внимание, имена констант + // обычно пишут заглавными буквами. +} diff --git a/03_Lecture03/04_side_effect_p17.c b/03_Lecture03/04_side_effect_p17.c new file mode 100644 index 0000000..9f92e11 --- /dev/null +++ b/03_Lecture03/04_side_effect_p17.c @@ -0,0 +1,10 @@ +#include + +int main() +{ + int a, b, x, y, z; + a = 5; //положить целое число 5 в переменную a + x = x + 20; // x=25 побочный эффект + y = (x - 15) * (x + a); // y=300 + z = y = a+1; // y=6 z=6 +} diff --git a/03_Lecture03/05_calc_p19.c b/03_Lecture03/05_calc_p19.c new file mode 100644 index 0000000..f1a8535 --- /dev/null +++ b/03_Lecture03/05_calc_p19.c @@ -0,0 +1,10 @@ +#include + +int main() +{ + int a, x, y, z; + a = 27; //положить целое число 27 в переменную a + x = a / 5; // x=5 + y = 11 % 3; // y=2 + z = (x + 5) * y; // z=20 +} diff --git a/03_Lecture03/06_explicit_p21.c b/03_Lecture03/06_explicit_p21.c new file mode 100644 index 0000000..fe37948 --- /dev/null +++ b/03_Lecture03/06_explicit_p21.c @@ -0,0 +1,11 @@ +#include + +int main() +{ + int X; + int Y = 200; + char C = 255; //Чтобы избежать неоднозначностей, рекомендуется явно + //указывать знаковость для типа char -1 или 255? + X = C * 10 + Y; // переменная С приводится к типу int + printf("%d\n",X); +} diff --git a/03_Lecture03/07_implicit_p23.c b/03_Lecture03/07_implicit_p23.c new file mode 100644 index 0000000..a6ae348 --- /dev/null +++ b/03_Lecture03/07_implicit_p23.c @@ -0,0 +1,20 @@ +#include + +int main() +{ + float f; + f = 3/2; //целочисленное деление f=1.0 + printf("%f\n",f); + f = 3./2; //вещественное деление f=1.5 + printf("%f\n",f); + int a = 7; + float x; + x = a / 4; // 1 + printf("%f\n",x); + x = 4 / a; // 0 + printf("%f\n",x); + x = (float)a / 4; // 1.75 + printf("%f\n",x); + x = 1.*a / 4; // 1.75 + printf("%f\n",x); +} diff --git a/03_Lecture03/08_implicit_2_p24.c b/03_Lecture03/08_implicit_2_p24.c new file mode 100644 index 0000000..4726559 --- /dev/null +++ b/03_Lecture03/08_implicit_2_p24.c @@ -0,0 +1,10 @@ +#include + +int main() +{ + short i, x=5,y=-2; + i = x + y; //переменные x и y сначала расширяются до типа int, + // выполняется сложение а затем результат + //помещается в i + printf("%d",i); +} diff --git a/03_Lecture03/09_implicit_3_p25.c b/03_Lecture03/09_implicit_3_p25.c new file mode 100644 index 0000000..6e52c15 --- /dev/null +++ b/03_Lecture03/09_implicit_3_p25.c @@ -0,0 +1,12 @@ +#include + +int main() +{ + unsigned int u = 50; + int i = -500; + int answer = i / u; // answer = 85899335. + printf("%d\n",answer); + // i будет приведен к беззнаковому типу и его + //значение будет равно 2^32-500 вместо -500, а результат + //деления будет приведен обратно к знаковому типу int +} diff --git a/03_Lecture03/10_short_p27.c b/03_Lecture03/10_short_p27.c new file mode 100644 index 0000000..73c766d --- /dev/null +++ b/03_Lecture03/10_short_p27.c @@ -0,0 +1,8 @@ +#include + +int main() +{ + int a = 50, b=7; + a = a + b; // a=57 + a += b; // a=57 можно так +} diff --git a/03_Lecture03/11_postfix_p28.c b/03_Lecture03/11_postfix_p28.c new file mode 100644 index 0000000..3480b7d --- /dev/null +++ b/03_Lecture03/11_postfix_p28.c @@ -0,0 +1,8 @@ +#include + +int main() +{ + // Постфиксная форма + int a, b=7; + a = b++; // a=7 b=8 +} diff --git a/03_Lecture03/12_prefix_p28.c b/03_Lecture03/12_prefix_p28.c new file mode 100644 index 0000000..79d9b57 --- /dev/null +++ b/03_Lecture03/12_prefix_p28.c @@ -0,0 +1,8 @@ +#include + +int main() +{ + // Префиксная форма + int a, b=7; + a = ++b; // a=8 b=8 +} diff --git a/03_Lecture03/13_sequence_point_p30.c b/03_Lecture03/13_sequence_point_p30.c new file mode 100644 index 0000000..69d9aca --- /dev/null +++ b/03_Lecture03/13_sequence_point_p30.c @@ -0,0 +1,13 @@ +#include + +int main() +{ + //~ int a, b, c; + //~ a = (a+b) * (c + 3); // после вычисления всего выражения + + int a, b=10, c; + a = b++ + ++b; // ТАК НЕЛЬЗЯ дважды модифицируется одна переменная Внимание! Attention! Atención! + printf("%d %d\n",a,b); + a = (c=3) + (c=2); // ТАК НЕЛЬЗЯ дважды модифицируется одна переменная Внимание! Attention! Atención! + printf("%d %d\n",a,c); +} diff --git a/03_Lecture03/14_numbers_sum_p32.c b/03_Lecture03/14_numbers_sum_p32.c new file mode 100644 index 0000000..5f2ab00 --- /dev/null +++ b/03_Lecture03/14_numbers_sum_p32.c @@ -0,0 +1,11 @@ +#include + +int main() +{ + int n=123; + int sum; + sum = n%10; //sum = 3 + sum += (n/10)%10; //sum = 5 + sum += (n/100)%10; //sum = 6 + printf("%d\n",sum); +} diff --git a/03_Lecture03/15_sum_p35.c b/03_Lecture03/15_sum_p35.c new file mode 100644 index 0000000..4eba939 --- /dev/null +++ b/03_Lecture03/15_sum_p35.c @@ -0,0 +1,11 @@ +#include //Объявить библиотеки ввода-вывода + +int main(void) +{ + int a, b, c; //Объявить переменные + printf("Input number:\n"); //Вывести на экран подсказку + scanf ("%d%d", &a, &b); //Считать два целых числа и записать их по адресу a,b + c = a + b; //Сложить два числа и поместить сумму в c + printf("%d\n", c); //Вывести на экран значение в переменной c + return 0; //Завершить программу успешно +} diff --git a/03_Lecture03/16_16rich_p38.c b/03_Lecture03/16_16rich_p38.c new file mode 100644 index 0000000..841989c --- /dev/null +++ b/03_Lecture03/16_16rich_p38.c @@ -0,0 +1,10 @@ +#include + +int main(void) +{ + int a; + printf("Input number:"); + scanf ("%d", &a); + printf("%#5x", a); + return 0; +} diff --git a/03_Lecture03/17_mistakes_p40.c b/03_Lecture03/17_mistakes_p40.c new file mode 100644 index 0000000..2155f16 --- /dev/null +++ b/03_Lecture03/17_mistakes_p40.c @@ -0,0 +1,11 @@ +#include + +int main(void) +{ + int a, b; + scanf ("%d", a); // &a + scanf ("%d", &a, &b); // %d%d + scanf ("%d%d", &a); //&a, &b + scanf ("%d %d", &a, &b); // пробел не обязательно + scanf ("%f%f", &a, &b); // %d%d +} diff --git a/03_Lecture03/18_output_p41.c b/03_Lecture03/18_output_p41.c new file mode 100644 index 0000000..2ae4e8e --- /dev/null +++ b/03_Lecture03/18_output_p41.c @@ -0,0 +1,17 @@ +#include + +int main(void) +{ + int a=1, b=5, c=123; + printf ("%d\n", c); + //123 + + printf ("Result: %d\n", c); + //Result: 123 + + printf ("%d+%d=%d\n", a, b, c ); + //1+5=123 + + printf ("%d+%d=%d\n", a, b, a+b ); + //1+5=6 +} diff --git a/03_Lecture03/19_output_2_p42.c b/03_Lecture03/19_output_2_p42.c new file mode 100644 index 0000000..2bd92d6 --- /dev/null +++ b/03_Lecture03/19_output_2_p42.c @@ -0,0 +1,12 @@ +#include + +int main(void) +{ + int x = 1234; + printf ("%d\n", x); //минимальное число позиций под вывод числа + //1234 + + printf ("%9d\n", x);//под вывод числа выделено 9 позиций + printf ("%09d\n", x);//под вывод числа выделено 9 позиций + // 1234 +} diff --git a/03_Lecture03/20_output_3_p43.c b/03_Lecture03/20_output_3_p43.c new file mode 100644 index 0000000..6061cf3 --- /dev/null +++ b/03_Lecture03/20_output_3_p43.c @@ -0,0 +1,17 @@ +#include + +int main(void) +{ + float x = 123.4567; + printf ("%f\n", x); + //123.456700 + + printf ("%9.3f\n", x); + //123.456 + + printf ("%e\n", x); // стандартно 1.234567 * 102 + //1.234560e+02 + + printf ("%10.2e\n", x);// всего 10 знаков, 2 цифры под мантиссу + //1.23e+02 +} diff --git a/03_Lecture03/21_mistake_p45.c b/03_Lecture03/21_mistake_p45.c new file mode 100644 index 0000000..8785704 --- /dev/null +++ b/03_Lecture03/21_mistake_p45.c @@ -0,0 +1,12 @@ +#include + +int main(void) +{ + int a, b; + float x, y; + a = 5; + 10 = x;//константа + y = 7,8; //точка вместо запятой + b = 2.5; //неверный тип + a = b + x; //пропадет дробная часть +} diff --git a/03_Lecture03/22_print_p46.c b/03_Lecture03/22_print_p46.c new file mode 100644 index 0000000..e994d00 --- /dev/null +++ b/03_Lecture03/22_print_p46.c @@ -0,0 +1,11 @@ +#include + +int main(void) +{ + int a = 1, b= 3; + printf ("a+%d=a+b\n", b); + printf ("%d=F (%d)\n", a, b); + printf ("a=F (%d)\n", b); + printf ("%d>%d\n", a+b, b); + printf ("F(%d)==G(%d)\n", b, a); +} diff --git a/03_Lecture03/23_sqrt_equation_p49.c b/03_Lecture03/23_sqrt_equation_p49.c new file mode 100644 index 0000000..1992305 --- /dev/null +++ b/03_Lecture03/23_sqrt_equation_p49.c @@ -0,0 +1,26 @@ +#include +#include +#include + +int main(int argc, char **argv) +{ + float a,b,c; + float B,d; + float X1,X2; + setlocale(LC_ALL, ".utf-8"); + printf("Вычисление корней квадратного уравнения\"a*x*x+b*x+с=0\"\n"); + printf("Введите a:\n"); + scanf ("%f", &a); //1 + printf("Введите b:\n"); + scanf ("%f", &b); //18 + printf("Введите c:\n"); + scanf ("%f", &c); //32 + B = b/2; + d = sqrtf(B*B - a*c); + printf("Корни квадратного уравнения \n"); + X1 = (-B + d)/a; //-2 + printf("X1 = %f \n",X1); + X2 = (-B - d)/a; //-16 + printf("X2 = %f \n",X2); + return 0; +} diff --git a/04_Lecture04/00_inttypes_p5.c b/04_Lecture04/00_inttypes_p5.c new file mode 100644 index 0000000..0ddd378 --- /dev/null +++ b/04_Lecture04/00_inttypes_p5.c @@ -0,0 +1,12 @@ +#include +#include + +int main() +{ + int32_t a; + int8_t b;//char + uint8_t c;//unsigned char c; + scanf ("%" SCNd32, &a);//SCNu32 + printf("a = %" PRId32 " hex a = %" PRIx32"\n",a,a);//PRIu32 + return 0; +} diff --git a/04_Lecture04/01_compare_p7.c b/04_Lecture04/01_compare_p7.c new file mode 100644 index 0000000..8c1b580 --- /dev/null +++ b/04_Lecture04/01_compare_p7.c @@ -0,0 +1,11 @@ +#include +#include + +int main() +{ + int a, b; + a = 5 == 3; // a=0 - + b = 100 >= 1; // b=1 + printf("a=%d b=%d",a,b); + return 0; +} diff --git a/04_Lecture04/02_operations_p9.c b/04_Lecture04/02_operations_p9.c new file mode 100644 index 0000000..d88c36d --- /dev/null +++ b/04_Lecture04/02_operations_p9.c @@ -0,0 +1,10 @@ +#include +#include + +int main() +{ + int a, b=5, n=0; + a = ( n!=0 && b/n ); // Нет ошибки - деления на ноль + printf("%d %d",a,b); + return 0; +} diff --git a/04_Lecture04/03_solution_p14.c b/04_Lecture04/03_solution_p14.c new file mode 100644 index 0000000..b542bfe --- /dev/null +++ b/04_Lecture04/03_solution_p14.c @@ -0,0 +1,16 @@ +#include +#include + +int main() +{ + int a = 5, b = 7; + printf("%d\n",(a += 5) * (b -= 3)); + printf("a=%d,b=%d\n",a,b); + printf("%d\n",--b / (a++ - 3)); + printf("a=%d,b=%d\n",a,b); + printf("%d\n",(a -= 2) || 47 / (b - 7)); + printf("a=%d,b=%d\n",a,b);//a=9,b=3 + printf("%d\n",(a *= b) + (b *= a)); + printf("a=%d,b=%d\n",a,b);//неопределенность + return 0; +} diff --git a/04_Lecture04/04_max_p18.c b/04_Lecture04/04_max_p18.c new file mode 100644 index 0000000..57512d6 --- /dev/null +++ b/04_Lecture04/04_max_p18.c @@ -0,0 +1,13 @@ +#include +#include + +int main() +{ + int a,b; + scanf("%d%d",&a,&b); + if (a>b) + printf("%d",a); + else + printf("%d",b); + return 0; +} diff --git a/04_Lecture04/05_max_tern_p21.c b/04_Lecture04/05_max_tern_p21.c new file mode 100644 index 0000000..d4e7984 --- /dev/null +++ b/04_Lecture04/05_max_tern_p21.c @@ -0,0 +1,17 @@ +#include +#include + +int main() +{ + int a,b, max; + scanf("%d%d",&a,&b); + // короткая запись if else + //условная операция + max = a>b ? a : b; + //~ if(a>b) + //~ max = a; + //~ else + //~ max = b; + printf("%d",max); + return 0; +} diff --git a/04_Lecture04/06_example_tv_p22.c b/04_Lecture04/06_example_tv_p22.c new file mode 100644 index 0000000..d9ce58d --- /dev/null +++ b/04_Lecture04/06_example_tv_p22.c @@ -0,0 +1,16 @@ +#include + +const int TV_PAL = 1; +const int TV_SECAM = 0; +const int TV_WORK = 1; +const int TV_TEST = 0; + +int main(int argc, char **argv) +{ + int tv_system = TV_SECAM; + int tv_input = TV_TEST; + printf("TV Diagnostic %s %s", + tv_system == TV_PAL ? "PAL" : "SECAM", + tv_input ? "WORK" : "TEST"); + return 0; +} diff --git a/04_Lecture04/07_right_shift_p25.c b/04_Lecture04/07_right_shift_p25.c new file mode 100644 index 0000000..8f45adc --- /dev/null +++ b/04_Lecture04/07_right_shift_p25.c @@ -0,0 +1,11 @@ +#include +#include + +int main() +{ + uint32_t u=0xaabbccdd; + printf("0x%X\n",u); // 0aabbccdd + u = u>>4; // логический сдвиг + printf("0x%08X\n",u); // 0aabbccd + return 0; +} diff --git a/04_Lecture04/08_left_shift_p26.c b/04_Lecture04/08_left_shift_p26.c new file mode 100644 index 0000000..564ef65 --- /dev/null +++ b/04_Lecture04/08_left_shift_p26.c @@ -0,0 +1,10 @@ +#include +#include + +int main() +{ + int32_t a=0xaabbccdd; + printf("%x\n",a); // 0aabbccdd + a >>= 4; // арифметический сдвиг + printf("%x\n",a); // faabbccd +} diff --git a/04_Lecture04/09_shift_features_p27.c b/04_Lecture04/09_shift_features_p27.c new file mode 100644 index 0000000..3d9e2c8 --- /dev/null +++ b/04_Lecture04/09_shift_features_p27.c @@ -0,0 +1,9 @@ +#include +#include + +int main() +{ + int a=1,b=-1; + printf("a = %d b = %d", a>>32, b>>-1); + // a = 0 b = -1 +} diff --git a/04_Lecture04/10_bit operations_p29.c b/04_Lecture04/10_bit operations_p29.c new file mode 100644 index 0000000..a3c0feb --- /dev/null +++ b/04_Lecture04/10_bit operations_p29.c @@ -0,0 +1,10 @@ +#include +#include + +int main() +{ + unsigned int a=0xAABBCCFF; + a = a & ~7;//1111 1000 + printf("a = %x", a); + // a = aabbccf8 +} diff --git a/04_Lecture04/11_bit operations_2_p30.c b/04_Lecture04/11_bit operations_2_p30.c new file mode 100644 index 0000000..635d3fc --- /dev/null +++ b/04_Lecture04/11_bit operations_2_p30.c @@ -0,0 +1,10 @@ +#include +#include + +int main() +{ + unsigned int a=0xFFFFFF00; + a = a | 3; + printf("a = %x", a); + // a = ffffff03 +} diff --git a/04_Lecture04/12_bit operations_3_p31.c b/04_Lecture04/12_bit operations_3_p31.c new file mode 100644 index 0000000..572ab24 --- /dev/null +++ b/04_Lecture04/12_bit operations_3_p31.c @@ -0,0 +1,14 @@ +#include +#include + +int main() +{ + uint32_t n=0; + uint8_t a=0xaa,b=0xbb,c=0xcc,d=0xdd; + n = a;//n=0xaa + n = (n<<8) | b;//n=0xaa00 | 0xbb = 0xaabb + n = (n<<8) | c;// 0xaabb00| 0xcc = 0xaabbcc + n = (n<<8) | d; + printf("n = %x", n); + // n = aabbccdd +} diff --git a/04_Lecture04/13_bit operations_4_p32.c b/04_Lecture04/13_bit operations_4_p32.c new file mode 100644 index 0000000..5d67dd8 --- /dev/null +++ b/04_Lecture04/13_bit operations_4_p32.c @@ -0,0 +1,14 @@ +#include +#include + +int main() +{ + unsigned int n=0xaabbccdd; + unsigned char a,b,c,d; + d = n; + c = n>>8; + b = n>>16; + a = n>>24; + printf("a = %x, b = %x, c = %x, d = %x", a,b,c,d); + // a = aa, b = bb, c = cc, d = dd +} diff --git a/04_Lecture04/14_bit operations_5_p33.c b/04_Lecture04/14_bit operations_5_p33.c new file mode 100644 index 0000000..d3bf95f --- /dev/null +++ b/04_Lecture04/14_bit operations_5_p33.c @@ -0,0 +1,13 @@ +#include +#include + +int main() +{ + unsigned int a=5, b=7; + printf("a = %d, b = %d\n", a,b); + a = a+b; + b = a-b; + a = a-b; + printf("a = %d, b = %d\n", a,b); + // a = 7 b =5 +} diff --git a/04_Lecture04/15_bit operations_6_p33.c b/04_Lecture04/15_bit operations_6_p33.c new file mode 100644 index 0000000..38a817b --- /dev/null +++ b/04_Lecture04/15_bit operations_6_p33.c @@ -0,0 +1,13 @@ +#include +#include + +int main() +{ + unsigned int a=5, b=7; + printf("a = %d, b = %d\n", a,b); + a = a^b; + b = a^b; + a = a^b; + printf("a = %d, b = %d", a,b); + // a = 7 b =5 +} diff --git a/04_Lecture04/16_invert_p34.c b/04_Lecture04/16_invert_p34.c new file mode 100644 index 0000000..9528241 --- /dev/null +++ b/04_Lecture04/16_invert_p34.c @@ -0,0 +1,14 @@ +#include +#include + +int main() +{ + unsigned int mask, n=0xAB; // n = 1010 1011 + printf("n = %x\n", n); + mask = (1<<5)-1; + //~ mask = 0x1F; + //~ mask = 0b11111; + n = n ^ mask; + printf("n = %x\n", n); + // n = b4 1011 0100 +} diff --git a/04_Lecture04/17_sqrt_equation_p40_41.c b/04_Lecture04/17_sqrt_equation_p40_41.c new file mode 100644 index 0000000..57cc7f0 --- /dev/null +++ b/04_Lecture04/17_sqrt_equation_p40_41.c @@ -0,0 +1,49 @@ +#include +#include +#include + +int main(int argc, char **argv) +{ + float a,b,c; + float B,d; + float X1,X2; + printf("%s\n",setlocale(LC_ALL, ".utf-8")); + printf("Вычисление корней квадратного уравнения\"a*x*x+b*x+с=0\"\n"); + printf("Введите a:\n"); + scanf ("%f", &a); //1 + printf("Введите b:\n"); + scanf ("%f", &b); //18 + printf("Введите c:\n"); + scanf ("%f", &c); //32 + B = b/2; + if(a!=0) + { + d = B*B-a*c; + if(d<0) + { + printf("Корни квадратного уравнения комплексные\n"); + } + else + { + printf("Корни квадратного уравнения \n"); + d = sqrtf(d); + X1 = (-B + d)/a; //-2 + printf("X1 = %f \n",X1); + X2 = (-B - d)/a; //-16 + printf("X2 = %f \n",X2); + } + } + else + { + if(b!=0) + { + X1 = -c/b; + printf("Корень линейного уравнения %f\n",X1); + } + else + { + printf("Корней НЕТ!\n"); + } + } + return 0; +} diff --git a/05_Lecture05/00_switch_p6.c b/05_Lecture05/00_switch_p6.c new file mode 100644 index 0000000..6404a4a --- /dev/null +++ b/05_Lecture05/00_switch_p6.c @@ -0,0 +1,25 @@ +#include + +int main () +{ +int input; + scanf ("%d", &input); + switch (input) + { + case 1: + printf ("one\n"); + break; + case 2: + printf ("two\n"); + break; + case 3: + printf ("three\n"); + break; + case 4: + printf ("four\n"); + break; + default : + printf ("default\n"); + } + return 0; +} diff --git a/05_Lecture05/01_while_p11.c b/05_Lecture05/01_while_p11.c new file mode 100644 index 0000000..6ae8712 --- /dev/null +++ b/05_Lecture05/01_while_p11.c @@ -0,0 +1,12 @@ +#include + +int main() +{ + int n = 0; + while (n!=5)// лучше n<5 + { + printf("Hello\n"); + n++; // n = n+1 + } + return 0; +} diff --git a/05_Lecture05/02_while_2_p11.c b/05_Lecture05/02_while_2_p11.c new file mode 100644 index 0000000..ca2cbc2 --- /dev/null +++ b/05_Lecture05/02_while_2_p11.c @@ -0,0 +1,13 @@ +#include + +int main() +{ + int n; + n=5; + while (n!=0)//n>0 + { + printf("Hello %d\n",n); + n--; + } + return 0; +} diff --git a/05_Lecture05/03_while_example_p13.c b/05_Lecture05/03_while_example_p13.c new file mode 100644 index 0000000..a391942 --- /dev/null +++ b/05_Lecture05/03_while_example_p13.c @@ -0,0 +1,13 @@ +#include + +int main() +{ + int n; + n=1; + while (n <= 5) + { + printf("%d\n", n); + n++; + } + return 0; +} diff --git a/05_Lecture05/04_while_example_2_p15.c b/05_Lecture05/04_while_example_2_p15.c new file mode 100644 index 0000000..4930e6b --- /dev/null +++ b/05_Lecture05/04_while_example_2_p15.c @@ -0,0 +1,13 @@ +#include + +int main() +{ + int n; + n=2; + while (n != 5) + { + printf("%d\n", n); + n = n+2; + } + return 0; +} diff --git a/05_Lecture05/05_digits_p19.c b/05_Lecture05/05_digits_p19.c new file mode 100644 index 0000000..22e7e38 --- /dev/null +++ b/05_Lecture05/05_digits_p19.c @@ -0,0 +1,17 @@ +#include + +int main () +{ + int input, n, count; + printf ("Input number : "); + scanf ("%d", &input); + count = 0; + n = input; + while (n != 0)//n>0 + { + count++; + n = n / 10; // Отбросили одну цифру + } + printf ("In %d fount %d digits", input, count); + return 0; +} diff --git a/05_Lecture05/06_deviders_p21.c b/05_Lecture05/06_deviders_p21.c new file mode 100644 index 0000000..dd7fedf --- /dev/null +++ b/05_Lecture05/06_deviders_p21.c @@ -0,0 +1,16 @@ +#include + +int main(int argc, char **argv) +{ +int a = 14; +int b = 35; + printf("a=%d,b=%d,",a,b); + while (b != 0) + { + int t = b; + b = a % b; + a = t; + } + printf("NOD=%d\n",a); + return 0; +} diff --git a/05_Lecture05/07_do_while_p24.c b/05_Lecture05/07_do_while_p24.c new file mode 100644 index 0000000..75967d0 --- /dev/null +++ b/05_Lecture05/07_do_while_p24.c @@ -0,0 +1,11 @@ +#include + +int main(int argc, char **argv) +{ +int a = 4, b = 6; + do + { + a++; + } while (a < b); // Не забываем точку с запятой в конце + return 0; +} diff --git a/05_Lecture05/08_number_p29.c b/05_Lecture05/08_number_p29.c new file mode 100644 index 0000000..deececa --- /dev/null +++ b/05_Lecture05/08_number_p29.c @@ -0,0 +1,19 @@ +#include + +int main(int argc, char **argv) +{ + int i, a=1; + for(i=1; i<4; i++) + a++; + printf("%d\n",a); + + int s, b=1; + for(s=1; s<4; s++) + b = b+s; + printf("%d\n",b); + + int e, k=1, l=2; + for(e=3; e>=1; e--) + k+=l; + printf("%d\n",k); +} diff --git a/05_Lecture05/09_comtinue_p31.c b/05_Lecture05/09_comtinue_p31.c new file mode 100644 index 0000000..03b83e0 --- /dev/null +++ b/05_Lecture05/09_comtinue_p31.c @@ -0,0 +1,12 @@ +#include + +int main(int argc, char **argv) +{ + int i; + for(i=1; i<5; i++) + { + if (i==3) + continue; + printf("i = %d\n",i); + } +} diff --git a/05_Lecture05/10_break_p32.c b/05_Lecture05/10_break_p32.c new file mode 100644 index 0000000..9e646e9 --- /dev/null +++ b/05_Lecture05/10_break_p32.c @@ -0,0 +1,15 @@ +#include + +int main() { + char c; + for(;;)//while(1) + { + printf( "\nPress any key, Q to quit: " ); + // Convert to character value + scanf("%c", &c); + printf("%x\n",c); + if (c == 'Q') + break; + } + return 0; +} // Loop exits only when 'Q' is pressed diff --git a/05_Lecture05/11_sqrt_p36.c b/05_Lecture05/11_sqrt_p36.c new file mode 100644 index 0000000..026285d --- /dev/null +++ b/05_Lecture05/11_sqrt_p36.c @@ -0,0 +1,18 @@ +#include + +int main() { + // Используя цикл while + int i=1; + while (i<=10) { + printf("%d\n",i*i); + i++; + } +/* + // Используя цикл for + int i; + for(i=1; i<=10; i++) { + printf("%d\n",i*i); + } +*/ + return 0; +} diff --git a/05_Lecture05/12_count_p38.c b/05_Lecture05/12_count_p38.c new file mode 100644 index 0000000..9f25cc4 --- /dev/null +++ b/05_Lecture05/12_count_p38.c @@ -0,0 +1,19 @@ +#include + +int main() +{ + int i, count = 0; + for (i = 102; i <= 987; i++) + { + int d1 = i % 10; + int d2 = i % 100/10; + int d3 = i / 100; + if (d1!=d2 && d1!=d3 && d2!=d3) + //if (i / 100 != i % + //10 && i / 100 != i % 100 / 10 + //&& i % 100 / 10 != i % 10) + count++; + } + printf("%d", count); + return 0; +} diff --git a/05_Lecture05/13_fibonacci_p40.c b/05_Lecture05/13_fibonacci_p40.c new file mode 100644 index 0000000..e8f65bc --- /dev/null +++ b/05_Lecture05/13_fibonacci_p40.c @@ -0,0 +1,23 @@ +#include + +int main( void ) +{ + unsigned int n, i, f1, f2, m; + scanf("%d", &n); + f1 = 1; + f2 = 1; + if (n == 1) + printf("1"); + else + if (n != 0) + { + printf("1 1 "); + for (i = 2; i < n; ++i){ + m = f1 + f2; + f1 = f2; + f2 = m; + printf("%u ", f2); + } + } + return 0; +} diff --git a/05_Lecture05/14_goto_p42.c b/05_Lecture05/14_goto_p42.c new file mode 100644 index 0000000..d59f89d --- /dev/null +++ b/05_Lecture05/14_goto_p42.c @@ -0,0 +1,10 @@ +#include + +int main() +{ + printf("Hello"); + goto skip; + printf("World"); +skip: + return 0; +} diff --git a/05_Lecture05/15_global_p45.c b/05_Lecture05/15_global_p45.c new file mode 100644 index 0000000..8ddafea --- /dev/null +++ b/05_Lecture05/15_global_p45.c @@ -0,0 +1,11 @@ +#include + +/*Глобальная переменная. Видна внутри всего файла.*/ +int a=5; +int main() +{ +/*Локальная переменная видна только внутри main. */ + int a=10; + printf("a = %d",a); + return 0; +} diff --git a/05_Lecture05/16_example_1_p47.c b/05_Lecture05/16_example_1_p47.c new file mode 100644 index 0000000..cbf539f --- /dev/null +++ b/05_Lecture05/16_example_1_p47.c @@ -0,0 +1,11 @@ +#include + +int main() +{ + int i, sum=0; + for(i=0; i<5; i++) { + sum+=i; + } + printf("%d\n",i); // i = 5 + return 0; +} diff --git a/05_Lecture05/16_example_2_p47.c b/05_Lecture05/16_example_2_p47.c new file mode 100644 index 0000000..8276dcf --- /dev/null +++ b/05_Lecture05/16_example_2_p47.c @@ -0,0 +1,12 @@ +#include + +int main() +{ + int sum=0; + // переменная i видна только внутри for + for(int i=0; i<5; i++) { + sum+=i; + } + printf("%d\n",i); //ошибка + return 0; +} diff --git a/05_Lecture05/17_define_p52.c b/05_Lecture05/17_define_p52.c new file mode 100644 index 0000000..ffc4948 --- /dev/null +++ b/05_Lecture05/17_define_p52.c @@ -0,0 +1,11 @@ +#include + +// Плохо +unsigned int a, h; +char ln[25], f[25]; + +// Хорошо +#define NAME_LENGTH 100 +unsigned int age, height; +char lastName[NAME_LENGTH], + firstName[NAME_LENGTH]; diff --git a/05_Lecture05/18_sqrt_equation_p54.c b/05_Lecture05/18_sqrt_equation_p54.c new file mode 100644 index 0000000..08be4dc --- /dev/null +++ b/05_Lecture05/18_sqrt_equation_p54.c @@ -0,0 +1,35 @@ +#include +#include + +int main(int argc, char **argv) +{ +char Choice; + setlocale(LC_ALL, ".utf-8"); + while(1) + { + printf("1. Вычисление корней квадратного уравнения\n"); + printf("0. Выход\n"); + printf("Для выход нажмите Q\n"); +NO_PRINT: + scanf("%c",&Choice); + printf("%x\n",Choice); + switch(Choice) + { + case '1': + printf("SquarEquation()\n"); + break; + case '0': + case 'q': + case 'Q': + return 0; + break; + case 0xa://'\n': + goto NO_PRINT; + break; + default: + printf("Непонятный выбор %x\n",Choice); + break; + } + } + return 0; +} diff --git a/06_Lecture06/00_getchar_putchar_p5.c b/06_Lecture06/00_getchar_putchar_p5.c new file mode 100644 index 0000000..b01dbd3 --- /dev/null +++ b/06_Lecture06/00_getchar_putchar_p5.c @@ -0,0 +1,9 @@ +#include + +int main() +{ + char c; + while( (c=getchar())!='.') + putchar(c); + return 0; +} diff --git a/06_Lecture06/01_getchar_putchar_2_p6.c b/06_Lecture06/01_getchar_putchar_2_p6.c new file mode 100644 index 0000000..7502d5f --- /dev/null +++ b/06_Lecture06/01_getchar_putchar_2_p6.c @@ -0,0 +1,13 @@ +#include + +int main () +{ + char character; + puts("Введите символ, символ точки - выход('.'):"); + do + { + character = getchar(); // считать введённый со стандартного потока ввода символ + putchar (character); // вывести этот символ + } while (character != '.'); // пока введенный символ не точка + return 0; +} diff --git a/06_Lecture06/02_letter_change_p12.c b/06_Lecture06/02_letter_change_p12.c new file mode 100644 index 0000000..85bd94f --- /dev/null +++ b/06_Lecture06/02_letter_change_p12.c @@ -0,0 +1,13 @@ +#include + +int main() +{ + char c; + while( (c=getchar())!='\n') //спец символ новой строки + if(c>='a' && c<='z') //все символы лежат подряд ‘a’=97, ‘b’=98, ‘c’=99, ... + putchar(c-0x20); + //putchar('A' + (c-'a')); + else + putchar(c); + return 0; +} diff --git a/06_Lecture06/03_getch_p13.c b/06_Lecture06/03_getch_p13.c new file mode 100644 index 0000000..6d3a552 --- /dev/null +++ b/06_Lecture06/03_getch_p13.c @@ -0,0 +1,18 @@ +#include +#include +//https://sourceforge.net/p/msys2/mailman/msys2-users/thread/81B27E05-0DCC-4FB2-9615-5627895BED40@crelg.com/ + +int main () +{ + char character; + puts("Exit('.'):"); + do + { + character = _getch(); // считать введённый со стандартного потока ввода символ + if(character>='a' && character<='z') //все символы лежат подряд ‘a’=97, ‘b’=98, ‘c’=99, ... + putchar('A' + (character-'a')); + else + putchar(character); + } while (character != '.'); // пока введенный символ не точка + return 0; +}// не работает в https://www.onlinegdb.com/ diff --git a/06_Lecture06/03_getch_p13_ncurses.c b/06_Lecture06/03_getch_p13_ncurses.c new file mode 100644 index 0000000..8de8e03 --- /dev/null +++ b/06_Lecture06/03_getch_p13_ncurses.c @@ -0,0 +1,21 @@ +#include +//#include +#include + +int main () +{ + char character; + initscr(); + noecho(); + //~ puts("Exit('.'):"); + printw("Exit('.'):\n"); + do + { + character = getch(); // считать введённый со стандартного потока ввода символ + if(character>='a' && character<='z') //все символы лежат подряд ‘a’=97, ‘b’=98, ‘c’=99, ... + addch('A' + (character-'a')); + else + addch(character); + } while (character != '.'); // пока введенный символ не точка + return 0; +}// работает в https://www.onlinegdb.com/ #include diff --git a/06_Lecture06/03_letter_add_p15.c b/06_Lecture06/03_letter_add_p15.c new file mode 100644 index 0000000..d569a30 --- /dev/null +++ b/06_Lecture06/03_letter_add_p15.c @@ -0,0 +1,16 @@ +#include + +int main() +{ + char c; + int sum=0; + while( (c=getchar())!='\n') //спец символ новой строки + { + if(c>='0' && c<='9') + sum+=c-0x30; + //~ sum+=c-'0'; + //~ sum+=c&0x0F; + } + printf("%d",sum); + return 0; +} diff --git a/06_Lecture06/04_numbers_combine_p16.c b/06_Lecture06/04_numbers_combine_p16.c new file mode 100644 index 0000000..4d1230b --- /dev/null +++ b/06_Lecture06/04_numbers_combine_p16.c @@ -0,0 +1,14 @@ +#include + +int main() +{ + char c; + int Number=0;//unsigned long long + while( (c=getchar())!='\n') //спец символ новой строки проверка на переполнения + { + if(c>='0' && c<='9') + Number = Number*10+c-'0';//if Number + } + printf("%d",Number); + return 0; +} diff --git a/06_Lecture06/05_function_1_p19.c b/06_Lecture06/05_function_1_p19.c new file mode 100644 index 0000000..785ab90 --- /dev/null +++ b/06_Lecture06/05_function_1_p19.c @@ -0,0 +1,15 @@ +#include + +int max (int a, int b) +{ + if (a>b) + return a; + return b; // Здесь можно обойтись без else +} +int main () +{ + int a,b; + scanf ("%d%d", &a,&b); + printf ("max = %d\n", max(a,b)); + return 0; +} diff --git a/06_Lecture06/06_function_2_p19.c b/06_Lecture06/06_function_2_p19.c new file mode 100644 index 0000000..9859379 --- /dev/null +++ b/06_Lecture06/06_function_2_p19.c @@ -0,0 +1,18 @@ +#include + +int max (int a, int b) +{ + if (a>b) + return a; + return b; +} +int main () +{ + int a,b; + scanf ("%d%d", &a,&b); + // Чтобы объявлять переменные не в начале нужен С99 + int result = max (a,b); //Результат функции присваем maximum, имя функции не должно совпадать с именем переменной, int max = max (a,b); https : //www.onlinegbd.com + printf ("max = %d\n", result); + return 0; +} + diff --git a/06_Lecture06/07_function_void_1_p21.c b/06_Lecture06/07_function_void_1_p21.c new file mode 100644 index 0000000..58b5d30 --- /dev/null +++ b/06_Lecture06/07_function_void_1_p21.c @@ -0,0 +1,18 @@ +#include + +void max(void) +{ + int a,b; //локальные переменные + scanf("%d%d",&a,&b); + if (a>b) + printf("%d\n",a); + else + printf("%d\n",b); +} + +int main () +{ + max(); + return 0; +} + diff --git a/06_Lecture06/08_function_void_p22.c b/06_Lecture06/08_function_void_p22.c new file mode 100644 index 0000000..1e33a13 --- /dev/null +++ b/06_Lecture06/08_function_void_p22.c @@ -0,0 +1,16 @@ +#include + +int max (int a, int b) +{ + if (a>b) + return a; + return b; +} + +int main() +{ + int a,b; + scanf("%d%d",&a,&b); + printf("max = %d\n", max(a,b)); + return 0; +} diff --git a/06_Lecture06/09_function_void_1_p23.c b/06_Lecture06/09_function_void_1_p23.c new file mode 100644 index 0000000..4563409 --- /dev/null +++ b/06_Lecture06/09_function_void_1_p23.c @@ -0,0 +1,20 @@ +#include + +int max (int, int); + +int main() +{ + int a,b; + scanf("%d%d",&a,&b); + printf("max = %d\n", max(a,b)); + return 0; +} + +int max (int a, int b) +{ + if (a>b) + return a; + return b; +} + + diff --git a/06_Lecture06/10_function_void_2_p23.c b/06_Lecture06/10_function_void_2_p23.c new file mode 100644 index 0000000..5d8ccf6 --- /dev/null +++ b/06_Lecture06/10_function_void_2_p23.c @@ -0,0 +1,18 @@ +#include + +int max (int a, int b); + +int main() +{ + int a,b; + scanf("%d%d",&a,&b); + printf("max = %d\n", max(a,b)); + return 0; +} + +int max (int a, int b) +{ + if (a>b) + return a; + return b; +} diff --git a/06_Lecture06/11_module_p29.c b/06_Lecture06/11_module_p29.c new file mode 100644 index 0000000..14e36dd --- /dev/null +++ b/06_Lecture06/11_module_p29.c @@ -0,0 +1,14 @@ +#include + +int abs(int num) +{ + return (num<0)?-num:num; +} + +int main() +{ + int num; + scanf("%d",&num); + printf("%d",abs(num)); + return 0; +} diff --git a/06_Lecture06/12_prime_check_p30.c b/06_Lecture06/12_prime_check_p30.c new file mode 100644 index 0000000..984ec13 --- /dev/null +++ b/06_Lecture06/12_prime_check_p30.c @@ -0,0 +1,24 @@ +#include + +int prime(int n) +{ + //~ int i=2; + //~ while (i*i<=n) + for(int i=2;i*i<=n;i++) + { + if (n%i==0) + return 0; + //~ i++; + } + return 1; +} + +int main() +{ + int num; + scanf("%d",&num); + prime(num) ? printf("Prime") : printf("Not prime"); +//printf("%s",prime(num) ? "Prime" : "Not prime"); +//if (prime(num)) printf("Prime"); else printf("Not prime"); + return 0; +} diff --git a/06_Lecture06/13_sqrt_final_34_37.c b/06_Lecture06/13_sqrt_final_34_37.c new file mode 100644 index 0000000..c0f9740 --- /dev/null +++ b/06_Lecture06/13_sqrt_final_34_37.c @@ -0,0 +1,87 @@ +#include +#include +#include +#include + +float InputFloat(char* message) +{ +float number; +static int counter = 0; + counter++; + printf("%d,%s",counter,message); + scanf("%f",&number); + return number; +} + +void CalcRealRoots(float sqrD,float B,float a) +{ +float X1,X2; + printf("Корни квадратного уравнения \n"); + float d = sqrtf(sqrD); + X1 = (-B + d)/a; //2 + printf("X1 = %f \n",X1); + X2 = (-B - d)/a; //16 + printf("X2 = %f \n",X2); +} + +//Сделаем вычисление корней квадратного уравнения отдельной функцией. +void SquareEquation(void) +{ + printf("Вычисление корней квадратного уравнения \\ \"a*x*x+b*x+с=0\"\n"); + float a = InputFloat("Введите a:\n");//1 + float b = InputFloat("Введите b:\n");//18 + float c = InputFloat("Введите c:\n");//32 + float B = b/2; + if(a!=0) + { + float d = B*B-a*c; + if(d<0) + { + printf("Корни квадратного уравнения комплексные \n"); + } + else + { + CalcRealRoots(d,B,a); + } + } + else + { + if(b!=0) + { + float X1 = -c/b; + printf("Корень линейного уравнения %f\n",X1); + } + else + { + printf("Корней НЕТ!\n"); + } + } +} + +int main(int argc, char **argv) +{ +char Choice; + setlocale(LC_ALL, ".utf-8"); + while(1) + { + printf("1. Вычисление корней квадратного уравнения\n"); + printf("0. Выход\n"); + printf("Для выход нажмите Q\n"); + Choice = _getch(); + switch(Choice) + { + case '1': + SquareEquation(); + break; + case '0': + case 'q': + case 'Q': + return 0; + break; + default: + printf("Непонятный выбор %x\n",Choice); + break; + } + } + return 0; +} diff --git a/06_Lecture06/14_fsm_p40.c b/06_Lecture06/14_fsm_p40.c new file mode 100644 index 0000000..36d00a2 --- /dev/null +++ b/06_Lecture06/14_fsm_p40.c @@ -0,0 +1,13 @@ +#include + +int main() { + int c; + do { + c = getchar(); + while (c == ' ') c = getchar(); + while (c != ' ' && c != '\n' && c != EOF) putchar(c), c = getchar(); + putchar('\n'); + while (c != '\n' && c != EOF) c = getchar(); + } while (c != EOF); + return 0; +} diff --git a/06_Lecture06/15_fsm_2_p41.c b/06_Lecture06/15_fsm_2_p41.c new file mode 100644 index 0000000..a97d482 --- /dev/null +++ b/06_Lecture06/15_fsm_2_p41.c @@ -0,0 +1,31 @@ +#include + +int main() { + enum states { before, inside, after } state; + int c; + state = before; + while ((c = getchar()) != EOF) { + switch (state) { + case before: + if (c == '\n') + putchar('\n'); + else if (c != ' ') + putchar(c), state = inside; + break; + case inside: + switch (c) { + case ' ': + state = after; break; + case '\n': + putchar('\n'), state = before; + break; + default: putchar(c); + } + break; + case after: + if (c == '\n') + putchar('\n'), state = before; + } + } + return 0; +} diff --git a/06_Lecture06/16_coffee_p43.c b/06_Lecture06/16_coffee_p43.c new file mode 100644 index 0000000..7a89a4c --- /dev/null +++ b/06_Lecture06/16_coffee_p43.c @@ -0,0 +1,68 @@ +#include +#include + +int Rubl_1 = 0,Rubl_2 = 0,Cancel = 0; +enum signals { RUBL_1, RUBL_2, CANCEL, NONE}; + + +void GetUserSignal(void) +{ + char Choice; + while(1) + { + printf("1.Put 1 rubl\n2.Put 2 rubl\n0.Cancel\n"); + Choice = _getch(); + switch(Choice) + { + case '1': Rubl_1=1; return; + case '2': Rubl_2=1; return; + case '0': Cancel=1; return; + } + } + } + +int main() +{ + enum states { READY, PREPFRE, WAIT, CHANGE, RETURN } state = READY; +// enum signals signal; + while (1) + { + switch (state) + { + case READY: + printf("Ready\n"); + GetUserSignal(); + if(Rubl_2) + state = PREPFRE; + if(Rubl_1) + state = WAIT; + break; + case PREPFRE: + printf("Preapare cofee\n"); + state = READY; + break; + case WAIT: + printf("Wait\n"); + GetUserSignal(); + if(Rubl_2) + state = CHANGE; + if(Rubl_1) + state = PREPFRE; + if(Cancel) + state = RETURN; + break; + case CHANGE: + printf("Change 1 Rubl\n"); + state = PREPFRE; + break; + case RETURN: + printf("Change 1 Rubl\n"); + state = READY; + break; + } + Rubl_1 = 0; + Rubl_2 = 0; + Cancel = 0; + } + return 0; +} diff --git a/06_Lecture06/16_coffee_p43refact.c b/06_Lecture06/16_coffee_p43refact.c new file mode 100644 index 0000000..ca4b160 --- /dev/null +++ b/06_Lecture06/16_coffee_p43refact.c @@ -0,0 +1,78 @@ +#include +#include + +enum signals { RUBL_1, RUBL_2, CANCEL}; +enum states { READY, PREPFRE, WAIT, CHANGE, RETURN }; + +enum signals GetUserSignal(void) +{ + char Choice; + while(1) + { + printf("1.Put 1 rubl\n2.Put 2 rubl\n0.Cancel\n"); + Choice = _getch(); + switch(Choice) + { + case '1': + return RUBL_1; + case '2': + return RUBL_2; + case '0': + return CANCEL; + } + } +} + +int main() +{ + enum states state = READY; + while (1) + { + switch (state) + { + case READY: + printf("Ready\n"); + switch(GetUserSignal()) + { + case (RUBL_2): + state = PREPFRE; + break; + case(RUBL_1): + state = WAIT; + break; + case(CANCEL): + printf("Error signal CANCEL\n"); + break; + } + break; + case PREPFRE: + printf("Preapare cofee\n"); + state = READY; + break; + case WAIT: + printf("Wait\n"); + switch(GetUserSignal()) + { + case(RUBL_2): + state = CHANGE; + break; + case(RUBL_1): + state = PREPFRE; + break; + case(CANCEL): + state = RETURN; + break; + } + break; + case CHANGE: + printf("Change 1 Rubl\n"); + state = PREPFRE; + break; + case RETURN: + printf("Change 1 Rubl\n"); + state = READY; + break; + } + } + return 0; +} diff --git a/07_Lecture07/00_func_p5.c b/07_Lecture07/00_func_p5.c new file mode 100644 index 0000000..f0f93d4 --- /dev/null +++ b/07_Lecture07/00_func_p5.c @@ -0,0 +1,15 @@ +#include + +void func(void) { + static int a=5; //статическая память + a++; + printf("a = %d\n",a); +} + +int main(void) +{ + func(); + func(); + func(); + return 0; +} diff --git a/07_Lecture07/01_pointer_p9.c b/07_Lecture07/01_pointer_p9.c new file mode 100644 index 0000000..2a4c8f3 --- /dev/null +++ b/07_Lecture07/01_pointer_p9.c @@ -0,0 +1,11 @@ +#include + +int main(void) +{ + int *p, n=0; //объявление переменной p - указатель на целочисленный объект + printf("n = %d\n", n); // n = 10 + p = &n; //присвоение адреса n в p + *p = 10; //n = 10 или положить значение по адресу в переменной p + printf("n = %d\n", n); // n = 10 + return 0; +} diff --git a/07_Lecture07/02_pointer_use_p10.c b/07_Lecture07/02_pointer_use_p10.c new file mode 100644 index 0000000..4f5563a --- /dev/null +++ b/07_Lecture07/02_pointer_use_p10.c @@ -0,0 +1,15 @@ +#include + +int main() { + int x, y, + *ptr; // объявляем 3 переменные + ptr = NULL; // инициализируем указатель null, нулевым значением + //~ printf("x = %d y = %d ptr=%p\n",x,y,ptr); + x = -7; + ptr = &x; // адрес переменной х записываем в переменную ptr + y = *ptr; // Записываем в y значение на которое указывает указатель ptr + *ptr = 3; // Записываем в ячейку (х) на которую ссылается указатель ptr число 3 + //std::cout << "x = " << x << " y = " << y; // вывод на экран x = 3 y = -7 + printf("x = %d y = %d ptr=%p\n",x,y,ptr); + return 0; +} diff --git a/07_Lecture07/03_pointer_to_pointer_p12.c b/07_Lecture07/03_pointer_to_pointer_p12.c new file mode 100644 index 0000000..5be23b6 --- /dev/null +++ b/07_Lecture07/03_pointer_to_pointer_p12.c @@ -0,0 +1,14 @@ +//Можно объявлять указатели на указатели: +#include + +int main() { + int a = 77; + printf("%d\n",a);// << std::endl; // 88 + int *ptrA = &a; + int** ppA = &ptrA; + *ptrA = 88; + printf("%d\n",a);// << std::endl; // 88 + **ppA = 99; + printf("%d\n",a);// << std::endl; // 99 + return 0; +} diff --git a/07_Lecture07/04_swap_p13.c b/07_Lecture07/04_swap_p13.c new file mode 100644 index 0000000..15eb6ae --- /dev/null +++ b/07_Lecture07/04_swap_p13.c @@ -0,0 +1,16 @@ +#include + +void swap(int a, int b) { + int tmp; + tmp = a; + a = b; + b = tmp; +} + +int main(void) +{ + int n=7, m=5; + printf("n = %d m = %d\n",n,m); + swap(n, m); // Передаются значения + printf("n = %d m = %d\n",n,m); +} diff --git a/07_Lecture07/05_swap_2_p15.c b/07_Lecture07/05_swap_2_p15.c new file mode 100644 index 0000000..66b68c4 --- /dev/null +++ b/07_Lecture07/05_swap_2_p15.c @@ -0,0 +1,16 @@ +#include + +void swap(int *pa, int *pb) { + int tmp; + tmp = *pa; + *pa = *pb; + *pb = tmp; +} + +int main(void) +{ + int n=7, m=5; + printf("n = %d m = %d\n",n,m); + swap(&n, &m); // Передается адрес + printf("n = %d m = %d\n",n,m); +} diff --git a/07_Lecture07/06_rec_p19.c b/07_Lecture07/06_rec_p19.c new file mode 100644 index 0000000..db7974e --- /dev/null +++ b/07_Lecture07/06_rec_p19.c @@ -0,0 +1,15 @@ +#include + +void rec(int n) +{ + //~ printf("%5d",n); + if(n>0) + rec(n-1); + printf("%5d",n); +} + +int main(void) +{ + rec(3); + return 0; +} diff --git a/07_Lecture07/07_rec_fact_p21.c b/07_Lecture07/07_rec_fact_p21.c new file mode 100644 index 0000000..512cef8 --- /dev/null +++ b/07_Lecture07/07_rec_fact_p21.c @@ -0,0 +1,15 @@ +#include + +unsigned int factorial(unsigned int n) { + printf("%d\n",n); + if(n<=1) // Условие остановки + return 1; + int _f = n * factorial(n-1); + printf("%d*factorial(%d)=%d\n",n,n-1,_f); + return _f; // Шаг +} + +int main() { + factorial(3); + return 0; +} diff --git a/07_Lecture07/08_sum_p24.c b/07_Lecture07/08_sum_p24.c new file mode 100644 index 0000000..e023eb0 --- /dev/null +++ b/07_Lecture07/08_sum_p24.c @@ -0,0 +1,21 @@ +#include + +//Нерекурсивный способ: +int sumIter(int num) +{ + int sum = 0; + while(num > 0) + { + sum += num % 10; + num /= 10; + } + return sum; +} + +int main() +{ + int numb; + scanf("%d",&numb); + printf("%d\n",sumIter(numb)); + return 0; +} diff --git a/07_Lecture07/09_sum_rec_p25.c b/07_Lecture07/09_sum_rec_p25.c new file mode 100644 index 0000000..9b8993a --- /dev/null +++ b/07_Lecture07/09_sum_rec_p25.c @@ -0,0 +1,18 @@ +#include + +//Рекурсивный способ: +int sumRec(int num) +{ + if (num > 0) + return num % 10 + sumRec(num / 10); + else + return 0; +} + +int main() +{ + int numb; + scanf("%d",&numb); + printf("%d\n",sumRec(numb)); + return 0; +} diff --git a/07_Lecture07/10_fibonachi_25.c b/07_Lecture07/10_fibonachi_25.c new file mode 100644 index 0000000..0cf670c --- /dev/null +++ b/07_Lecture07/10_fibonachi_25.c @@ -0,0 +1,15 @@ +#include + +int fibonachi(int n) +{ + if(n<=0) + return 0; + if(n==1) + return 1; + return fibonachi(n - 1) + fibonachi(n - 2); +} + +int main(void) +{ + printf("%d\n",fibonachi(6)); +} diff --git a/07_Lecture07/11_2_for_rec_p33.c b/07_Lecture07/11_2_for_rec_p33.c new file mode 100644 index 0000000..8215404 --- /dev/null +++ b/07_Lecture07/11_2_for_rec_p33.c @@ -0,0 +1,38 @@ +#include + +void iterFor(int start,int n) +{ + for(int i=start; i + +int fibonachi(int n) +{ + printf("n=%d\n",n); + if(n <= 0) + { + //printf("F(%d)=0\n",n); + printf("return 0\n"); + return 0; + } + if(n == 1) + { + printf("F(1)=1\n"); + //printf("F(%d)=1\n",n); + return 1; + } + + int Fib = fibonachi(n - 1)+ fibonachi(n - 2); + printf("Fib(%d)=%d\n",n,Fib); + return Fib; +} + +int main(void) +{ + printf("%d\n",fibonachi(6)); + return 0; +} diff --git a/07_Lecture07/12_print_rev_p36.c b/07_Lecture07/12_print_rev_p36.c new file mode 100644 index 0000000..9123a8b --- /dev/null +++ b/07_Lecture07/12_print_rev_p36.c @@ -0,0 +1,18 @@ +#include + +void print_rev (void) +{ + char ch; + scanf ("%c", &ch); //ввод очередного символа c=getchar(); + if (ch != '.') + print_rev (); //рекурсивный вызов для обработки оставшихся символов + else + return; + printf ("%c", ch); //вывод символа +} + +int main() +{ + print_rev(); + return 0; +} diff --git a/07_Lecture07/13_gcd_p37.c b/07_Lecture07/13_gcd_p37.c new file mode 100644 index 0000000..16f1385 --- /dev/null +++ b/07_Lecture07/13_gcd_p37.c @@ -0,0 +1,21 @@ +#include + +int gcd ( int n, int m ) +{ + if(n == m) + return n ; + if (n < m) + return gcd(n,m - n ); + return gcd(n - m,m ); +} + +int main() +{ + int a,b; + printf("a="); + scanf("%d",&a); + printf("b="); + scanf("%d",&b); + printf("GCD=%d",gcd(a,b)); + return 0; +} diff --git a/07_Lecture07/14_dec_to_bin_p38.c b/07_Lecture07/14_dec_to_bin_p38.c new file mode 100644 index 0000000..33bf010 --- /dev/null +++ b/07_Lecture07/14_dec_to_bin_p38.c @@ -0,0 +1,21 @@ +#include + +void dec_to_bin(int n) +{ + if (n >= 2) + dec_to_bin(n / 2); + printf("%d", n % 2); + //std::cout << n % 2; +} +int main() +{ + int n; + printf("n -> "); + //std::cout << "\n\nn -> "; + scanf("%d",&n); + //std::cin >> n; + printf("Bin = "); + //std::cout << "\n\nBin = "; + dec_to_bin(n); + return 0; +} diff --git a/07_Lecture07/15_max_find_p39.c b/07_Lecture07/15_max_find_p39.c new file mode 100644 index 0000000..1d2c818 --- /dev/null +++ b/07_Lecture07/15_max_find_p39.c @@ -0,0 +1,20 @@ +#include +#include + +uint32_t max_find() +{ + uint32_t number, max; + scanf("%u", &number); + if(number == 0) + return 0; + max = max_find(); + if (max < number) + max = number; + return max; +} + +int main() +{ + printf("Max=%u",max_find()); + return 0; +} diff --git a/08_Lecture08/00_array_p8.c b/08_Lecture08/00_array_p8.c new file mode 100644 index 0000000..f12f3cd --- /dev/null +++ b/08_Lecture08/00_array_p8.c @@ -0,0 +1,15 @@ +#include + +int main(int argc, char **argv) +{ + int n; + scanf ("%d", &n); // ввод количества элементов массива + int arr[n]; + for (int i =0; i < n; i++) { // ввод массива + scanf ("%d", &arr[i]); + } + for (int i =0; i < n; i++) { // ввод массива + printf ("%d ", arr[i]); + } + return 0; +} diff --git a/08_Lecture08/01_arr_mult_p10.c b/08_Lecture08/01_arr_mult_p10.c new file mode 100644 index 0000000..57b03ea --- /dev/null +++ b/08_Lecture08/01_arr_mult_p10.c @@ -0,0 +1,37 @@ +#include +#include + +#define SIZE 5 + +int Input(int arr[], int n) +{ + int i; + for(i=0;i +#include + +#define SIZE 5 + +int Input(int* arr, int n) +{ + int i; + for(i=0;i arr[i]) + min = arr[i]; + } + return min; +} + +int main(int argc, char **argv) +{ + int arr[SIZE]={0}; + Input(arr,SIZE); + printf("Min = \t\t%d\n",Min(arr,SIZE)); + return 0; +} diff --git a/08_Lecture08/03_arr_swap_p14.c b/08_Lecture08/03_arr_swap_p14.c new file mode 100644 index 0000000..b960076 --- /dev/null +++ b/08_Lecture08/03_arr_swap_p14.c @@ -0,0 +1,60 @@ +#include +#include + +#define SIZE 5 + +int Input(int* arr, int n) +{ + int i; + for(i=0;i arr[i]) + { + min = arr[i]; + pos = i; + } + return pos; +} + +int PosMax(int *arr,int len) +{ + int max=arr[0],i,pos=0; + for (i = 1; i < len; i++) + if (max < arr[i]) + { + max = arr[i]; + pos = i; + } + return pos; +} + +void SwapArr(int *arr,int i,int j) +{ + int temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; +} + +int main(int argc, char **argv) +{ + int arr[SIZE]={0}; + Input(arr,SIZE); + SwapArr(arr,PosMin(arr,SIZE),PosMax(arr,SIZE)); + Print(arr,SIZE); + return 0; +} diff --git a/08_Lecture08/04_arr_bubblesort_p17.c b/08_Lecture08/04_arr_bubblesort_p17.c new file mode 100644 index 0000000..47fd184 --- /dev/null +++ b/08_Lecture08/04_arr_bubblesort_p17.c @@ -0,0 +1,55 @@ +#include +#include + +#define SIZE 5 + +int Input(int* arr, int n) +{ + int i; + for(i=0;i i; j--) + { + if(arr[j-1]>arr[j]) + { + SwapArr(arr,j-1,j); + noSwap = 0; + } + } + if(noSwap) + break; + } +} + +int main(int argc, char **argv) +{ + int arr[SIZE]={0}; + Input(arr,SIZE); + BubbleSort(arr,SIZE); + Print(arr,SIZE); + return 0; +} diff --git a/08_Lecture08/05_arr_bubblesort_2_p18.c b/08_Lecture08/05_arr_bubblesort_2_p18.c new file mode 100644 index 0000000..8bb4cd0 --- /dev/null +++ b/08_Lecture08/05_arr_bubblesort_2_p18.c @@ -0,0 +1,55 @@ +#include +#include + +#define SIZE 5 + +int Input(int* arr, int n) +{ + int i; + for(i=0;i=0; i--) + { + noSwap = 1; + for(j=0; jarr[j+1]) + { + SwapArr(arr,i,j); + noSwap = 0; + } + } + if(noSwap) + break; + } +} + +int main(int argc, char **argv) +{ + int arr[SIZE]={0}; + Input(arr,SIZE); + BubbleSort(arr,SIZE); + Print(arr,SIZE); + return 0; +} diff --git a/08_Lecture08/06_arr_all_p19.c b/08_Lecture08/06_arr_all_p19.c new file mode 100644 index 0000000..16bcc30 --- /dev/null +++ b/08_Lecture08/06_arr_all_p19.c @@ -0,0 +1,105 @@ +#include +#include + +#define SIZE 5 +#define COEF 3 + +int Input(int arr[], int n) +{ + //~ static int test[3] = {0}; + int i; + for(i=0;i arr[i]) + min = arr[i]; + } + return min; +} + +int PosMin(int *arr,int len) +{ + int min=arr[0],i,pos=0; + for (i = 1; i < len; i++) + if (min > arr[i]) + { + min = arr[i]; + pos = i; + } + return pos; +} + +int PosMax(int *arr,int len) +{ + int max=arr[0],i,pos=0; + for (i = 1; i < len; i++) + if (max < arr[i]) + { + max = arr[i]; + pos = i; + } + return pos; +} + +void SwapArr(int *arr,int i,int j) +{ + int temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; +} + +void BubbleSort(int* arr,int n) +{ + int noSwap; + for (int i = 0; i < n; i++) + { + noSwap = 1; + for (int j = n-1; j > i; j--) + { + if(arr[j-1]>arr[j]) + { + SwapArr(arr,j-1,j); + noSwap = 0; + } + } + if(noSwap) + break; + } +} + + +int main(void) +{ + int arr[SIZE]; + Input(&arr[0],SIZE); + Mult(arr,SIZE,COEF); + Print(arr,SIZE); + printf("Min = %d\n",Min(arr,SIZE)); + SwapArr(arr, PosMin(arr,SIZE), PosMax(arr,SIZE)); + Print(arr,SIZE); + BubbleSort(arr,SIZE); + Print(arr,SIZE); + return 0; +} diff --git a/08_Lecture08/07_float_bin_p27.c b/08_Lecture08/07_float_bin_p27.c new file mode 100644 index 0000000..13b6a59 --- /dev/null +++ b/08_Lecture08/07_float_bin_p27.c @@ -0,0 +1,22 @@ +#include + +//Перевод вещественного числа в двоичный вид +void print_float_bin(float num) { + unsigned int* fi = (unsigned int*)# + for(int i=31;i>=0;i--) { + if(i==30 || i==22) + putchar(' '); + if(*fi&(1< +#include + + +//Перевод вещественного числа в двоичный вид +void print_float_bin(float num) { + unsigned int* fi = (unsigned int*)# + for(int i=31; i>=0; i--) { + if(i==30 || i==22) + putchar(' '); + if(*fi&(1< +#define N 11 + +int main(int argc, char **argv) +{ + { + char s[10];// Строка из 9 значимых символов + } + { + char s[N];// Строка из N-1 значимых символов, в строке всегда есть символ \0 + } + { + char st[] = "hello"; + // st[0]='h' st[1]='e' st[2]=’l’ st[3]=’l’ st[4]='o' st[5]='\0' + printf("%llu\n", sizeof(st)); // 6 + } + { + char st[10] = "hello"; + // st[0]='h' st[1]='e' st[2]=’l’ st[3]=’l’ st[4]='o' st[5]='\0' + printf("%llu\n", sizeof(st)); // + } + return 0; +} diff --git a/09_Lecture09/00_st_scanf_printf_p7.c b/09_Lecture09/00_st_scanf_printf_p7.c new file mode 100644 index 0000000..8e057c8 --- /dev/null +++ b/09_Lecture09/00_st_scanf_printf_p7.c @@ -0,0 +1,9 @@ +#include + +int main(int argc, char **argv) +{ + char s[10]; + scanf("%s",s); // считать строку до первого пробельного символа или \n + printf("%s",s); // напечатать строку + return 0; +} diff --git a/09_Lecture09/01__p10.c b/09_Lecture09/01__p10.c new file mode 100644 index 0000000..5c41934 --- /dev/null +++ b/09_Lecture09/01__p10.c @@ -0,0 +1,13 @@ +#include + +int main(int argc, char **argv) +{ + char s[100]=""; + int r; + //~ r=scanf("%[a-z]",s);// считать стр буквы + //~ r=scanf("%[0-9]",s);// считать цифры + r=scanf("%[^\n]",s);// все кроме \n + + printf("%s %d\n",s,r); + +} diff --git a/09_Lecture09/01__p12.c b/09_Lecture09/01__p12.c new file mode 100644 index 0000000..9c6f928 --- /dev/null +++ b/09_Lecture09/01__p12.c @@ -0,0 +1,10 @@ +#include + +int main(int argc, char **argv) +{ + char s1[100]="", s2[100]=""; + int r; + r=scanf("%[0-9]=%[a-z]",s1,s2); + printf("r = %d\n",r); + +} diff --git a/09_Lecture09/01_getchar_p8.c b/09_Lecture09/01_getchar_p8.c new file mode 100644 index 0000000..73ad461 --- /dev/null +++ b/09_Lecture09/01_getchar_p8.c @@ -0,0 +1,14 @@ +#include + +int main(int argc, char **argv) +{ + char s[100], c; + int i=0; + while( (c=getchar())!='\n' ) + s[i++]=c; + s[i]='\0'; + i=0; + while( s[i] ) // s[i] != 0 + putchar(s[i++]); + printf("\n%s\n",s); // напечатать строку +} diff --git a/09_Lecture09/02_strlen_p15.c b/09_Lecture09/02_strlen_p15.c new file mode 100644 index 0000000..c2affa5 --- /dev/null +++ b/09_Lecture09/02_strlen_p15.c @@ -0,0 +1,9 @@ +#include +#include + +int main(void) { + char st[10] = "hello"; + printf("Sizeof = %llu\n", sizeof(st)); + printf("Strlen = %llu\n", strlen(st)); + return 0; +} diff --git a/09_Lecture09/03_strlen find_p16.c b/09_Lecture09/03_strlen find_p16.c new file mode 100644 index 0000000..668324c --- /dev/null +++ b/09_Lecture09/03_strlen find_p16.c @@ -0,0 +1,16 @@ +#include + +int my_strlen(const char *src) +{ + int len=0; + while (*src++)//*src++!=0 + len++; + return len; +} + +int main(int argc, char **argv) +{ +char* str={"Hello!"}; + printf("%d\n",my_strlen(str)); + return 0; +} diff --git a/09_Lecture09/04__p17.c b/09_Lecture09/04__p17.c new file mode 100644 index 0000000..6dcece0 --- /dev/null +++ b/09_Lecture09/04__p17.c @@ -0,0 +1,12 @@ +#include + +int main(int argc, char **argv) +{ + char st1[10] = "hello"; + char st2[10] = "hello"; + if(st1 == st2) + printf("Yes"); + else + printf("No"); + return 0; +} diff --git a/09_Lecture09/04_strcmp_optim_p18_19.c b/09_Lecture09/04_strcmp_optim_p18_19.c new file mode 100644 index 0000000..e4a2a98 --- /dev/null +++ b/09_Lecture09/04_strcmp_optim_p18_19.c @@ -0,0 +1,30 @@ +#include +#include + +int my_strcmp(const char *a, const char *b) +{ + while ( *a && *b && *a == *b ) + ++a, ++b; + return *a - *b; +} + +void Print(char* str,int res) +{ + printf(str, res==0 ? "equal to" : res<0 ? "less" : "greater than"); +} + +int main(void) +{ + char *a = "abcde", + *b = "xyz", + *c = "abcd", + *d = "xyz"; + printf("A = %s\nB = %s\nC = %s\nD = %s\n\n", a, b, c, d); + Print("A is %s B\n",my_strcmp(a,b)); + Print("A is %s D\n",my_strcmp(a,d)); + Print("A is %s C\n",my_strcmp(a,c)); + Print("B is %s C\n",my_strcmp(b,c)); + Print("B is %s D\n",my_strcmp(b,d)); + Print("C is %s D\n",my_strcmp(c,d)); + return 0; +} diff --git a/09_Lecture09/05_strcpy_p20.c b/09_Lecture09/05_strcpy_p20.c new file mode 100644 index 0000000..c51ea11 --- /dev/null +++ b/09_Lecture09/05_strcpy_p20.c @@ -0,0 +1,16 @@ +#include + +char *strcpy (char *dst, char *src) +{ +char *ptr = dst; + while(*dst++=*src++); + return ptr; +} +int main(int argc, char **argv) +{ +char str1[]={"Hello!"};//char* str1 = {"Hello!"}; +char str2[]={"World!"};//char* str2={"World!"} + printf("%s\n",strcpy(str2,str1)); + printf("%s\n",str2); + return 0; +} diff --git a/09_Lecture09/06_mystrcpy_p21.c b/09_Lecture09/06_mystrcpy_p21.c new file mode 100644 index 0000000..1dd323b --- /dev/null +++ b/09_Lecture09/06_mystrcpy_p21.c @@ -0,0 +1,27 @@ +#include + +char *my_strcpy2(char *dst, char *src) +{ +char *ptr = dst; + while((*dst++=*src++))//(*dst++=*src++)!=0 + {} + return ptr; +} + +char *my_strcpy1(char *dst, char *src) +{ + for (char* ptr = dst; *src; src++,ptr++) + *ptr = *src; + return dst; +} + + +int main(int argc, char **argv) +{ +char str1[]={"Hello!"};//char* str1 = {"Hello!"}; +char str2[]={"World!"};//char* str2={"World!"} + printf("%s\n",my_strcpy2(str2,str1)); + printf("%s\n",str2); + printf("%s\n",str1); + return 0; +} diff --git a/09_Lecture09/07_words_p23.c b/09_Lecture09/07_words_p23.c new file mode 100644 index 0000000..079bedf --- /dev/null +++ b/09_Lecture09/07_words_p23.c @@ -0,0 +1,14 @@ +#include + +int main(void) +{ + char s[100]; + int count=0; + while(scanf("%s",s)==1) + { + count++; + printf("In this text %d words\n",count); + } + //printf("In this text %d words\n",count); + return 0; +} diff --git a/09_Lecture09/08__p25.c b/09_Lecture09/08__p25.c new file mode 100644 index 0000000..7d51c6a --- /dev/null +++ b/09_Lecture09/08__p25.c @@ -0,0 +1,18 @@ +#include +#include + +int main(void) +{ + //~ int a[5]; + //~ int b[5]; + //~ a = b; // так делать нельзя + + int a[5]={1,2,3,4,5}; + //~ int a[5]={0}; + int *pa; + pa = a; // так можно + pa = &a[0]; // и так + printf("%d\n",pa[3]); + return 0; + +} diff --git a/09_Lecture09/08_sizeof_p27.c b/09_Lecture09/08_sizeof_p27.c new file mode 100644 index 0000000..bd03ede --- /dev/null +++ b/09_Lecture09/08_sizeof_p27.c @@ -0,0 +1,12 @@ +#include +#include + +int main(void) +{ + int a[5]; + int *pa; + pa = a; + printf("sizeof(a) = %llu\n", sizeof(a)); + printf("size a = %llu\n", sizeof(a)/sizeof(a[0])); + printf("sizeof(pa) = %llu\n", sizeof(pa)); +} diff --git a/09_Lecture09/09_StrToHexMas_p36_37.c b/09_Lecture09/09_StrToHexMas_p36_37.c new file mode 100644 index 0000000..876fe30 --- /dev/null +++ b/09_Lecture09/09_StrToHexMas_p36_37.c @@ -0,0 +1,59 @@ +#include +#include +#include + +//преобразование hex-цифры в dec-число +int CharToHex(char c) +{ + int result=-1; + if (c>='0' && c<='9') + result=c-'0'; + else if(c>='A' && c<='F') + result=c-'A'+10; + else if(c>='a' && c<='f') + result=c-'a'+10; + return result; +} +int StrToHexMas(char* Str,uint8_t* mas); + +int main(int argc, char **argv) +{ +uint8_t arr[10]; +int len = StrToHexMas("AAa a 1 15",arr); + printf("%s\n","AAa a 1 15"); + printf("%d\n",len); + for(int i=0;i=0) //если это значащий символ + { + Result = data; + if(i=0) //если это данные + { + Result *= 16; + Result += data; + } + } + mas[index++]=Result; //кладем число в массив + } + } + return index; +} diff --git a/09_Lecture09/09__p31.c b/09_Lecture09/09__p31.c new file mode 100644 index 0000000..d073d14 --- /dev/null +++ b/09_Lecture09/09__p31.c @@ -0,0 +1,35 @@ +#include +#include + +void print_matrix_1 (int m, int n, int *a) +{ + int i, j; + for (i = 0; i < m; i++) { + for (j = 0; j < n; j++) { + printf ("%d ", a[i * n + j]); + } + printf ("\n"); + } +} + +void print_matrix_2 (int m, int n, int a[m][n]) +{ + int i, j; + for (i = 0; i < m; i++) { + for (j = 0; j < n; j++) { + printf ("%d ", a[i][j]); + } + printf ("\n"); + } +} + + + + +int main(void) +{ + int matr[3][5]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}}; // 3 строки и 5 столбцов + print_matrix_1(3,5,(int*)matr); + print_matrix_2(3,5,matr); + return 0; +} diff --git a/09_Lecture09/10_pointer_increase_p40.c b/09_Lecture09/10_pointer_increase_p40.c new file mode 100644 index 0000000..c0df4bb --- /dev/null +++ b/09_Lecture09/10_pointer_increase_p40.c @@ -0,0 +1,9 @@ +#include + +int main() +{ + int a[5]= {10,20,30,40,50}; + printf("&a[0] = %p\n", &a[0]); + printf("&a[1] = %p\n", &a[1]); + return 0; +} diff --git a/09_Lecture09/11_pointer_increase_p42.c b/09_Lecture09/11_pointer_increase_p42.c new file mode 100644 index 0000000..fa4b51d --- /dev/null +++ b/09_Lecture09/11_pointer_increase_p42.c @@ -0,0 +1,12 @@ +#include + +int main() +{ + int a[5] = {10,20,30,40,50}; + int *pa, n; + pa = a; + n = *(pa+2); // a[2] + //~ n = pa[2]; + printf("n = %d\n", n); + return 0; +} diff --git a/09_Lecture09/12_pointer_increase_p44.c b/09_Lecture09/12_pointer_increase_p44.c new file mode 100644 index 0000000..3914f96 --- /dev/null +++ b/09_Lecture09/12_pointer_increase_p44.c @@ -0,0 +1,11 @@ +#include + +int main() +{ + int a[5] = {10,20,30,40,50}; + int *pa, n=1; + pa = a; + *pa++ = n+3; + printf("%d,%d,%d,%d,%d *pa=%d",a[0],a[1],a[2],a[3],a[4],*pa); + return 0; +} diff --git a/09_Lecture09/12_pointer_increase_p45.c b/09_Lecture09/12_pointer_increase_p45.c new file mode 100644 index 0000000..d0991dc --- /dev/null +++ b/09_Lecture09/12_pointer_increase_p45.c @@ -0,0 +1,12 @@ +#include + +int main() +{ + int a[5] = {10,20,30,40,50}; + int *pa, n=10; + pa = a+2; + n = ++*pa; // ++(*pa) + //n = *(++pa);//n=40 + printf("%d\n",n); + return 0; +} diff --git a/09_Lecture09/13_scalar_p47-48.c b/09_Lecture09/13_scalar_p47-48.c new file mode 100644 index 0000000..2159351 --- /dev/null +++ b/09_Lecture09/13_scalar_p47-48.c @@ -0,0 +1,25 @@ +#include +#define SIZE 3 + +float scalar(float*arrA,float*arrB,int len) +{ + float result = 0; + for(int i=0;i + +int main(void){ + FILE *f; + f = fopen("in.txt","w"); // открытие файла in.txt на запись + fclose(f); //Закрытие файла. После окончания работы с +//файлом необходимо убедиться, что все записанные данные попали +//на диск, и освободить все ресурсы, связанные с ним. + return 0; +} diff --git a/10_Lecture10/01_file_sum_p15.c b/10_Lecture10/01_file_sum_p15.c new file mode 100644 index 0000000..6925148 --- /dev/null +++ b/10_Lecture10/01_file_sum_p15.c @@ -0,0 +1,12 @@ +#include + +int main(void){ +FILE *f; + int sum = 0, n; + f = fopen("in.txt", "r"); + while (fscanf (f, "%d", &n) == 1) + sum += n; + fclose (f); + printf ("%d\n", sum); + return 0; +} diff --git a/10_Lecture10/02_file_ftell_p17.c b/10_Lecture10/02_file_ftell_p17.c new file mode 100644 index 0000000..d61ccaf --- /dev/null +++ b/10_Lecture10/02_file_ftell_p17.c @@ -0,0 +1,19 @@ +#include + +int main(void){ +FILE *f; + static char filename[100]={0}; + size_t size; + printf("Input file name: "); + scanf("%s",filename); + f = fopen (filename, "r"); + if (f != NULL) { + fseek (f, 0, SEEK_END); + size = ftell (f); + fclose (f); + printf ("File size of '%s' - %lu bytes.\n",filename, size); + } else { + printf ("Can't open file %s\n", filename); + } + return 0; +} diff --git a/10_Lecture10/03_file_sum_end_p19.c b/10_Lecture10/03_file_sum_end_p19.c new file mode 100644 index 0000000..c964037 --- /dev/null +++ b/10_Lecture10/03_file_sum_end_p19.c @@ -0,0 +1,16 @@ +#include + +int main(void){ +FILE *f; + int sum = 0, n; + signed char c;// обязательно signed! иначе зациклится + f = fopen("in.txt", "r+"); // режим чтение и дозапись + while ( (c=fgetc(f))!=EOF ) { + if(c>='0' && c<='9') { + sum += c-'0'; + } + } + fprintf (f, " %d", sum); + fclose (f); + return 0; +} diff --git a/10_Lecture10/04_file_fread_p26.c b/10_Lecture10/04_file_fread_p26.c new file mode 100644 index 0000000..6fb2bd5 --- /dev/null +++ b/10_Lecture10/04_file_fread_p26.c @@ -0,0 +1,14 @@ +#include + +int main(void){ + unsigned int i = 0x31323334, u=0; + FILE *f = fopen ("out.bin", "wb"); + fwrite (&i, sizeof (int), 1, f); // данные запишутся в формате little-endian + fclose(f); + + f = fopen ("out.bin", "rb"); + fread (&u, 1, 1, f); + fclose(f); + printf("u = %x\n",u); // u = 34 + return 0; +} diff --git a/10_Lecture10/05_students_p36_38.c b/10_Lecture10/05_students_p36_38.c new file mode 100644 index 0000000..9a32288 --- /dev/null +++ b/10_Lecture10/05_students_p36_38.c @@ -0,0 +1,86 @@ +#include +#include +#include + +#define STR_SIZE 30 +#define STUDEN_NUMBER 200 + +struct student { + char surname[STR_SIZE]; + char name[STR_SIZE]; + uint8_t age; +}; +//возраст самого старшего человека; +int Eldest(struct student* course,int number){ + int max = course->age; + for(int i=1;iage) + max = (course+i)->age; + return max; +} + +//количество людей с заданным +//именем (имя также является +//параметром функции); +int SameNameNumber(struct student* course,int number,char* name) +{ + int counter = 0; + for(int i=0;i +#include +#include + +#define SIZE 30 + +struct sensor { + uint8_t day; + uint8_t month; + uint16_t year; + int8_t t; +}; + +void cgangeIJ(struct sensor* info,int i, int j){ +struct sensor temp; + temp=info[i]; + info[i]=info[j]; + info[j]=temp; +} +//упорядочивающую его по неубыванию температуры +void SortByT(struct sensor* info,int n){ + for(int i=0; i=info[j].t) + cgangeIJ(info,i,j); +} + +unsigned int DateToInt(struct sensor* info){ + return info->year << 16 | info->month << 8 | info->day; +} +//упорядочивающую его по дате +void SortByDate(struct sensor* info,int n){ + for(int i=0; i= DateToInt(info+j)) + cgangeIJ(info,i,j); +} + +void AddRecord(struct sensor* info,int number, +uint16_t year,uint8_t month,uint8_t day,int8_t t){ + info[number].year = year; + info[number].month = month; + info[number].day = day; + info[number].t = t; +} + +int AddInfo(struct sensor* info){ +int counter=0; + AddRecord(info,counter++,2021,9,16,9); + AddRecord(info,counter++,2022,9,2,-9); + AddRecord(info,counter++,2021,1,7,8); + AddRecord(info,counter++,2021,9,5,1); + return counter; +} + +void print(struct sensor* info,int number){ + printf("===================================\n"); + for(int i=0;i +extern int m; // Глобальная переменная. Видна из обоих файлов + +int max(int a, int b) +{ + m=5; + printf("m=%d\n",m); + return a>b? a : b; +} diff --git a/11_Lecture11/Module01_p7/func.o b/11_Lecture11/Module01_p7/func.o new file mode 100644 index 0000000000000000000000000000000000000000..ffd166ec4bd299457096214ee98dbe4f14cbb764 GIT binary patch literal 1088 zcmZ`&%}T>S5T5NuEh1XMzmx1iK~dIL>p@WnikeFys67Y@);5)j)e@uBo&-S%Meref z1Rp@F;KkPvJopHr&TP^)vG#+Rotgc1Cz*W7-9&+~8vz(rkp|MS%8rUXXX3KW0D6!^ z(9i^!`!bhtGOE(v>0my}gR`^t3~%R(cy{>07;fET-yrZlU6#YV9wa=p@Z!2GwelX3 zm-OF*<2fDT`b;v|0U(a)Tg!c>K9iUa5$XB9khkgIM@RISsizJ1-MIb~ZYt)cM~rF* zoq7dY{G^)9no2hGx{)y zb#H-<)zw8Yv1wh*O^cQD!m%R`E=6ir9G7QYIw5;6Lcc+5nmcqm5`1 zBbu)U3G{<1LI<5_Tq(heNJYJ>h7N|%7|49#*rF8i{R42w^5-X6ne{53FJ{V(l!1WA zpSjmJg&$BK&d4{3H2$DwX@@hK3MsXTpkC<=Z(h+L1+_~0_?HvVDRtnCW)MbDqx79Q zqbY_F)Tf%F;!xKxX!3+EG|r|}{MRk{1)59*N_OGI$=5kJRVdaIe~l>Bcz@hjrBVSu Rl(v;GIkqgeEqLTQ>lbxabDRJG literal 0 HcmV?d00001 diff --git a/11_Lecture11/Module01_p7/hello.c b/11_Lecture11/Module01_p7/hello.c new file mode 100644 index 0000000..4a42a83 --- /dev/null +++ b/11_Lecture11/Module01_p7/hello.c @@ -0,0 +1,7 @@ +#include + +int main(void) +{ + printf("Hello world!\n"); + return 0; +} diff --git a/11_Lecture11/Module01_p7/main.c b/11_Lecture11/Module01_p7/main.c new file mode 100644 index 0000000..4eeca8a --- /dev/null +++ b/11_Lecture11/Module01_p7/main.c @@ -0,0 +1,15 @@ +#include + +int max(int, int); // Функция описана в др файле +int m=0; // Глобальная переменная. Видна из обоих файлов + +int main(void) +{ + int a,b; + scanf("%d%d",&a,&b); + + printf("max(%d %d)=%d \n",a,b,max(a,b)); + printf("m=%d\n",m); + + return 0; +} diff --git a/11_Lecture11/Module01_p7/main.o b/11_Lecture11/Module01_p7/main.o new file mode 100644 index 0000000000000000000000000000000000000000..22ccaf0721a3ae2f04d1d638d300516c101599e1 GIT binary patch literal 1092 zcmZ`&K}#D!6n>LgZIprqt%5?CLsJxGTs0>_SQY8EAcRPu9*VBnC@Ut0WR;jxKoFJ~ z@Q3&VJhtkghaTEne?SX8^aps5w(rfX>1@+J*f-zz-ZyXd?Y#BR9s${T3Sdkj3uIVo zgbHid!exd5jG%^W03QLlZRvZVry~D%4&>g+oqF9=JTXa(TcoQc3ku9#;<=__Jx4Z@ zy2mK^*rT%@S?$$*L0u*8gX2C2Y-cuWo&aDY{n}G6=M>!Nn|u1h{!VhYQ@C?GYxl3B zPi}PWcKTE>dasi0!d-jqJ|@w1d!6WV^m#e@ptK}*AGB(x3O_Z%SE}CWt^M}qBDRd5 z@uBQBCNsXs_)|-`3_=-~LDB-SH1A92EzWY9H}nE8S63IsWWIE~Fe6ruf`d@(oQU;} z&5e0ctsU-{is6))%gQ-Pjib^14&!6NGxSv4f*0sV6k0$}FKWSS^g5eIG^%26(5Dsh z(Cch~NM{k?J^-$~Mx>@2`il9QeQL7;{Ur!Wq4B(#)Av{jiCo0GT b ? a : b; +} diff --git a/11_Lecture11/Module02_p9/func.h b/11_Lecture11/Module02_p9/func.h new file mode 100644 index 0000000..fe64c04 --- /dev/null +++ b/11_Lecture11/Module02_p9/func.h @@ -0,0 +1 @@ +int max(int, int); diff --git a/11_Lecture11/Module02_p9/main.c b/11_Lecture11/Module02_p9/main.c new file mode 100644 index 0000000..a8f29fd --- /dev/null +++ b/11_Lecture11/Module02_p9/main.c @@ -0,0 +1,13 @@ +#include +#include "func.h" + +int m; + +int main(void) +{ + int a,b,c; + scanf("%d%d",&a,&b); + m = max(a,b); + printf("max(%d %d) = %d\n", a, b, m); + return 0; +} diff --git a/11_Lecture11/Module02_p9/makefile b/11_Lecture11/Module02_p9/makefile new file mode 100644 index 0000000..869f9e3 --- /dev/null +++ b/11_Lecture11/Module02_p9/makefile @@ -0,0 +1,13 @@ +all: prog + +prog: main.o func.o + gcc -o prog main.o func.o + +main.o: main.c func.h + gcc -c -o main.o main.c + +func.o: func.c + gcc -c -o func.o func.c + +clean: + rm -rf *.o prog \ No newline at end of file diff --git a/11_Lecture11/Module03_p11/.vscode/settings.json b/11_Lecture11/Module03_p11/.vscode/settings.json new file mode 100644 index 0000000..3f1de6b --- /dev/null +++ b/11_Lecture11/Module03_p11/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "mylibrary.h": "c" + } +} \ No newline at end of file diff --git a/11_Lecture11/Module03_p11/func.c b/11_Lecture11/Module03_p11/func.c new file mode 100644 index 0000000..3aa658f --- /dev/null +++ b/11_Lecture11/Module03_p11/func.c @@ -0,0 +1,11 @@ +#include "mylibrary.h" + +int max_3(int a, int b, int c) +{ + return max(max(a,b),c); +} + +static int max(int a, int b) +{ + return a > b ? a : b; +} diff --git a/11_Lecture11/Module03_p11/lib2.h b/11_Lecture11/Module03_p11/lib2.h new file mode 100644 index 0000000..d3a57f7 --- /dev/null +++ b/11_Lecture11/Module03_p11/lib2.h @@ -0,0 +1,4 @@ +#ifndef LIB_2_H +#define LIB_2_H +#include "mylibrary.h" +#endif \ No newline at end of file diff --git a/11_Lecture11/Module03_p11/main.c b/11_Lecture11/Module03_p11/main.c new file mode 100644 index 0000000..deaf79f --- /dev/null +++ b/11_Lecture11/Module03_p11/main.c @@ -0,0 +1,13 @@ +#include +#include "mylibrary.h" + +int m; + +int main(void) +{ + int a,b,c; + scanf("%d%d%d",&a,&b,&c); + m = max_3(a,b,c); + printf("max(%d %d %d) = %d\n", a, b, c, m); + return 0; +} diff --git a/11_Lecture11/Module03_p11/makefile b/11_Lecture11/Module03_p11/makefile new file mode 100644 index 0000000..53dba3c --- /dev/null +++ b/11_Lecture11/Module03_p11/makefile @@ -0,0 +1,14 @@ +all: prog + +prog: main.o func.o + gcc -o prog main.o func.o + +main.o: main.c mylibrary.h + gcc -c -o main.o main.c -I ./mylibrary.h + +func.o: func.c + gcc -c -o func.o func.c + +clean: + del *.o + del prog.exe diff --git a/11_Lecture11/Module03_p11/mylibrary.h b/11_Lecture11/Module03_p11/mylibrary.h new file mode 100644 index 0000000..d0edbb8 --- /dev/null +++ b/11_Lecture11/Module03_p11/mylibrary.h @@ -0,0 +1,7 @@ +#include "lib2.h" + +// Функция доступна только из func.c +static int max(int, int); + +// Функция доступна везде +int max_3(int, int, int); diff --git a/12_Lecture12/.vscode/settings.json b/12_Lecture12/.vscode/settings.json new file mode 100644 index 0000000..0f06797 --- /dev/null +++ b/12_Lecture12/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "stdio.h": "c" + } +} \ No newline at end of file diff --git a/12_Lecture12/00_argc_p7.c b/12_Lecture12/00_argc_p7.c new file mode 100644 index 0000000..17033e4 --- /dev/null +++ b/12_Lecture12/00_argc_p7.c @@ -0,0 +1,8 @@ +#include + +int main(int argc, char *argv[]) +{ + for(int i=0; i + +int main(int argc, char *argv[]) +{ + int size=0; + for(int i=0; i +#include + +int main(int argc, char *argv[]) +{ + int rez=0; + // opterr=0;//Можно отключить вывод сообщений об ошибках, для этого надо где-то в + //программе перед вызовом функции вставить opterr=0 + while ( (rez = getopt(argc,argv,"ab:C::d")) != -1) + { + switch (rez) + { + case 'a': printf("found argument \"a\".\n"); break; + case 'b': printf("found argument \"b = %s\".\n",optarg); break; + case 'C': printf("found argument \"C = %s\".\n",optarg); break; + case 'd': printf("found argument \"d\"\n"); break; + case '?': printf("Error found !\n");break; + } + } +} diff --git a/12_Lecture12/02_ls_p21.c b/12_Lecture12/02_ls_p21.c new file mode 100644 index 0000000..a42a3a2 --- /dev/null +++ b/12_Lecture12/02_ls_p21.c @@ -0,0 +1,34 @@ +#include +#include +#define PATH_LENGTH 255 + +int main(int argc, char *argv[]) +{ + char dir[PATH_LENGTH], buf[PATH_LENGTH]; + int rez = 0; + // opterr=0; + while ((rez = getopt(argc, argv, "hf:")) != -1) + { + switch (rez) + { + case 'h': + printf("This is example of list directory\n"); + printf("Usage: clear [options]\n\ + -h This help text\n\ + -f Specify folder.\n"); + printf("Example: %s -f /tmp\n", argv[0]); + return 0; + case 'f': + printf("folder is \"f = %s\".\n",optarg); + strcpy(dir, optarg); + break; + case '?': + printf("Unknown argument: %s Try -h for help\n", argv[optind - 1]); + return 1; + }; + }; + // convert_path_to_full(buf, dir); + // printf("ls for folder %s\n",buf); + // ls(dir); + return 0; +} diff --git a/12_Lecture12/03_macros_debugprint_p26.c b/12_Lecture12/03_macros_debugprint_p26.c new file mode 100644 index 0000000..a250266 --- /dev/null +++ b/12_Lecture12/03_macros_debugprint_p26.c @@ -0,0 +1,9 @@ +#include + +#define DEBUGPRINT fprintf (stderr, "debug in %d line\n", __LINE__) + +int main(void) +{ + DEBUGPRINT; + return 0; +} diff --git a/12_Lecture12/04_macros_degug_p27.c b/12_Lecture12/04_macros_degug_p27.c new file mode 100644 index 0000000..ccf393a --- /dev/null +++ b/12_Lecture12/04_macros_degug_p27.c @@ -0,0 +1,11 @@ +#include + +#define ONE printf ("DEBUG\n") +#define TWO ONE; ONE +#define FOUR TWO; TWO + +int main(void) +{ + FOUR; + return 0; +} diff --git a/12_Lecture12/05_macros_example_p28.c b/12_Lecture12/05_macros_example_p28.c new file mode 100644 index 0000000..ca2aaaf --- /dev/null +++ b/12_Lecture12/05_macros_example_p28.c @@ -0,0 +1,12 @@ +#include + +#define A B + 1 +#define B 2 + +int main(void) +{ + int a; + a = A + 2; + printf("a = %d\n", a); + return 0; +} diff --git a/12_Lecture12/06_macros_swap_p30.c b/12_Lecture12/06_macros_swap_p30.c new file mode 100644 index 0000000..cea6919 --- /dev/null +++ b/12_Lecture12/06_macros_swap_p30.c @@ -0,0 +1,18 @@ + +#include + +/* Открывающая скобка не должна быть отделена пробельными +символами от имени макроса. Если в списке параметров или в +тексте встречаются комментарии, каждый комментарий заменяется +на один символ пробела. */ + +#define SWAP(a,b) (a ^= b, b ^= a, a ^= b) + +int main(void) +{ + int a=1,b=2; + printf("%d %d\n",a,b); + SWAP(a,b); + printf("%d %d\n",a,b); + return 0; +} diff --git a/12_Lecture12/07_macros_half_p31.c b/12_Lecture12/07_macros_half_p31.c new file mode 100644 index 0000000..1ce5b05 --- /dev/null +++ b/12_Lecture12/07_macros_half_p31.c @@ -0,0 +1,11 @@ +#include + +#define HALF(x) x/2 + +int main(void) +{ + int a=5, b; + b = HALF(a + 5); + printf("a = %d b = %d\n",a, b); + return 0; +} diff --git a/12_Lecture12/08_macros_half_2_p33.c b/12_Lecture12/08_macros_half_2_p33.c new file mode 100644 index 0000000..c33622e --- /dev/null +++ b/12_Lecture12/08_macros_half_2_p33.c @@ -0,0 +1,11 @@ +#include + +#define HALF(x) ((x)/2) + +int main(void) +{ + int a=5, b; + b = HALF(a + 5); + printf("a = %d b = %d\n",a, b); + return 0; +} diff --git a/12_Lecture12/09_macros_tostr_p35.c b/12_Lecture12/09_macros_tostr_p35.c new file mode 100644 index 0000000..4605ea1 --- /dev/null +++ b/12_Lecture12/09_macros_tostr_p35.c @@ -0,0 +1,12 @@ +#include + +//Преобразование аргумента в строку +#define TOSTR(a) #a + +int main(void) +{ + printf("%s\n",TOSTR(hello world)); + printf("%s\n",TOSTR(123)); + printf("%s\n",TOSTR("hello world")); + return 0; +} diff --git a/12_Lecture12/10_macros_merge_p36.c b/12_Lecture12/10_macros_merge_p36.c new file mode 100644 index 0000000..b283c32 --- /dev/null +++ b/12_Lecture12/10_macros_merge_p36.c @@ -0,0 +1,12 @@ +#include + +//Операция склейки записывается как ## +#define MERGE(a,b) a##b + +int main(void) +{ + MERGE(d,o); // do + MERGE(a,2); // a2 + MERGE(+,+); // ++ + return 0; +} diff --git a/12_Lecture12/11_why_me_p37.c b/12_Lecture12/11_why_me_p37.c new file mode 100644 index 0000000..f4fa8a3 --- /dev/null +++ b/12_Lecture12/11_why_me_p37.c @@ -0,0 +1,19 @@ +#include + +void why_me(); + +int main(void){ + printf("File: %s\n", __FILE__); + printf("Date:Q %s\n", __DATE__); + printf("Time: %s\n", __TIME__); + printf("Version: %ld\n", __STDC_VERSION__); + printf("Line: %d\n", __LINE__); + printf("Function: %s\n", __func__); + why_me(); + return 0; +} + +void why_me() { + printf("Function: %s\n", __func__); + printf("Line: %d\n", __LINE__); +} diff --git a/12_Lecture12/12_if_endif_p41.c b/12_Lecture12/12_if_endif_p41.c new file mode 100644 index 0000000..94f568c --- /dev/null +++ b/12_Lecture12/12_if_endif_p41.c @@ -0,0 +1,17 @@ +#include + +#define DEBUG + +#if defined DEBUG +#define DEBUGPRINT fprintf(stderr, "debug in %d line func: %s\n", __LINE__, __func__) +#else +#define DEBUGPRINT +#endif + +int main(void) +{ + int a = 5, b = 7; + DEBUGPRINT; + printf("a = %d b = %d\n", a, b); + return 0; +} diff --git a/13_Lecture13/.vscode/launch.json b/13_Lecture13/.vscode/launch.json new file mode 100644 index 0000000..889a255 --- /dev/null +++ b/13_Lecture13/.vscode/launch.json @@ -0,0 +1,30 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "(gdb) Attach", + "type": "cppdbg", + "request": "attach", + "program": "enter program name, for example ${workspaceFolder}/a.exe", + "MIMode": "gdb", + "miDebuggerPath": "/path/to/gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + }, + { + "description": "Set Disassembly Flavor to Intel", + "text": "-gdb-set disassembly-flavor intel", + "ignoreFailures": true + } + ] + } + + + ] +} \ No newline at end of file diff --git a/13_Lecture13/.vscode/tasks.json b/13_Lecture13/.vscode/tasks.json new file mode 100644 index 0000000..865ba8b --- /dev/null +++ b/13_Lecture13/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: gcc.exe build active file", + "command": "C:\\msys64\\ucrt64\\bin\\gcc.exe", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}\\${fileBasenameNoExtension}.exe" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/13_Lecture13/00_logir_p7.c b/13_Lecture13/00_logir_p7.c new file mode 100644 index 0000000..97dd55a --- /dev/null +++ b/13_Lecture13/00_logir_p7.c @@ -0,0 +1,9 @@ +//Логирование вручную +#include + +int main(int argc, char *argv[]) +{ + fprintf(stderr,"Debug message\n"); + fprintf(stdout,"Stdout message\n"); + return 0; +} diff --git a/13_Lecture13/01_logir_sclog4c_p8.c b/13_Lecture13/01_logir_sclog4c_p8.c new file mode 100644 index 0000000..e4d7abc --- /dev/null +++ b/13_Lecture13/01_logir_sclog4c_p8.c @@ -0,0 +1,10 @@ +//Логирование sclog4c +#include +#include "sclog4c.c" + +int main(int argc, char *argv[]) +{ + sclog4c_level = SL4C_ALL; + logm(SL4C_DEBUG, "Program name: %s", argv[0]); + return 0; +} diff --git a/13_Lecture13/02_lifo_1_p14.c b/13_Lecture13/02_lifo_1_p14.c new file mode 100644 index 0000000..e2d55ab --- /dev/null +++ b/13_Lecture13/02_lifo_1_p14.c @@ -0,0 +1,43 @@ +// Пример организации стека как однонаправленного списка +#include +#include + +typedef int datatype; + +typedef struct list { + datatype value; + struct list * next; +}stack; + +void push(stack **p,datatype data) +{ + stack *ptmp; + ptmp=malloc(sizeof(stack)); + ptmp->value=data; + ptmp->next=*p; + *p=ptmp; +} + +_Bool empty_stack(stack *p) { + return p==NULL; +} + +datatype pop(stack **p){ + stack *ptmp=*p; + datatype c; + if(empty_stack(*p)) + exit (1); // Попытка взять из пустого стека + c=ptmp->value; + *p=ptmp->next; + free(ptmp); + return c; +} + +int main(){ + stack *p=NULL; // Важно для корректной работы присвоить NULL + for(int i=1;i<=5; i++) + push(&p,i); + for(int i=1;i<=5; i++) + printf("%d\n",pop(&p)); // 5 4 3 2 1 + return 0; +} diff --git a/13_Lecture13/02_lifo_1_p14.exe b/13_Lecture13/02_lifo_1_p14.exe new file mode 100644 index 0000000000000000000000000000000000000000..5e7e81520c212fd8143afdc4474224a7f2b86283 GIT binary patch literal 139653 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

+#include + +typedef int datatype; + +typedef struct stack +{ + datatype *item; + int size; + int sp; +} stack; + +void init_stack(stack *st) +{ + st->size = 4; + st->sp = 0; + st->item = malloc(st->size * sizeof(datatype)); +} + +void delete_stack(stack *st) +{ + free(st->item); +} + +void push(stack *st, datatype value) +{ + if (st->sp == st->size - 1) + { + st->size = st->size * 2; + st->item = realloc(st->item, + st->size * sizeof(datatype)); + } + st->item[st->sp++] = value; +} + +void pop(stack *st, datatype *value) +{ + if (st->sp < 1) + { + printf("stack empty"); + exit(1); + } + *value = st->item[--(st->sp)]; +} + +int empty_stack(stack *st) +{ + return (st->sp < 1); +} + +int main() +{ + stack st; + + int a, i; + init_stack(&st); + do + { + scanf("%d", &a); + push(&st, a); + } while (a != 0); + for (i = 0; i < st.sp; i++) + printf("%d ", st.item[i]); + while (!empty_stack(&st)) + { + pop(&st, &a); + printf("%d ", a); + } + return 0; +} diff --git a/13_Lecture13/03_lifo_2_p15_16.exe b/13_Lecture13/03_lifo_2_p15_16.exe new file mode 100644 index 0000000000000000000000000000000000000000..a325734775d9fab7a4a276f62695d481a3a2acde GIT binary patch literal 143233 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%0D;XsZkG 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 h>!1u +#include + +typedef int datatype; + +typedef struct list +{ + datatype value; + struct list *next; +} queue; + +_Bool empty_queue(queue *p) +{ + return p == NULL; +} + +datatype dequeue(queue **p) +{ + queue *ptmp = *p; + datatype c; + if (empty_queue(*p)) + { // Попытка взять из пустой очереди + fprintf(stderr, "Error. Queue is empty\n"); + exit(1); + } + c = ptmp->value; + *p = ptmp->next; + free(ptmp); + return c; +} + +void enqueue(struct list **pl, datatype data) +{ + struct list *ptmp = *pl, + *elem; + elem = malloc(sizeof(struct list)); + elem->value = data; + elem->next = NULL; + if (*pl == NULL) + { + *pl = elem; + return; + } + while (ptmp->next) + ptmp = ptmp->next; + ptmp->next = elem; +} + +void enqueue_recurs(struct list **pl, datatype data) +{ + if (*pl == NULL) + { + (*pl) = malloc(sizeof(struct list)); + (*pl)->value = data; + (*pl)->next = NULL; + return; + } + else + { + enqueue_recurs(&((*pl)->next), data); + } +} + +void print_list(struct list *pl) +{ + while (pl) + { + printf("%d ", pl->value); + pl = pl->next; + } + printf("\n"); +} + +int main() +{ + queue *pq = NULL; + for (int i = 1; i <= 5; i++) + enqueue_recurs(&pq, i); + for (int i = 1; i <= 5; i++) + printf("%d\n", dequeue(&pq)); + return 0; +} diff --git a/13_Lecture13/04_fifo_p18_20.exe b/13_Lecture13/04_fifo_p18_20.exe new file mode 100644 index 0000000000000000000000000000000000000000..86ab19a9b288c83e2e561029042d2c6483b30f55 GIT binary patch literal 141427 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%0AZ&shg_5H# zUq8MCwUFcQ*pCXflclb1g`cY$4hNus6}m)vh0$R_6fq)5iKTW3B{i1kL$8?KgkdB%XO01i=6DoK|%d!Co>k6 zQ5R`@>(VSDvTMVznbcdCMGVJH&j5;h%jP6Q2LNAZhr%$##AUr_`l79%4wq01XXzAjCpBy_oC3BcfKC2riblMF%jySY_7H~AwCP1WQ%akp3+X# z944Ji5Ab9g8kz*lmm{zOSHB|kYqj^5UHCp;+!Fms%#^wvj>53D6-guO7q9}*rO5rY zB@R%f5#2PV91%1I*|HxQ1hRuaFes{QjS%^15v1ca(S&$i??L{i+wG7aC7Yqa{`NpN zBS*8zhTZ9IJ;!uI*)nNH!o+A@-q83!yZ4@6i=)~pBA!Co2n5EWvUb&|PlQleL6)yV zV7(l6IbJA@$}%dub;pdHnh;|@;gJZFeg(<-(C}n_AdfO;j<03+NVh*}jLn_ZrwlSW z=E~^kD-t@Pu5rnxCn?zW(mhA4`Y9g?6v#LYYYn?!pHQiaMMtu)_Vz+gsj?77ZVq8U zS`!#Sib;6kslI6|J$&?)S#|n2cJwPa*b7CJ^=g`&Sla_-lb?_tR4f|`Z?<+&u-kW( zcdMp<2Mcw&Pi&56bf%pQ5vmCcl!tneMOZSYd4~HVDW>=R)=%HUM8Dr1un#w?iru9H zoa>PF<&V9t3E8qb#FGRmyQ6C=c}OH1OofR!tfOzSFlc3*fld^kKM-F&R>>MKn)mE* zHHfKAIWox6le#+mx&bRsNUC&7CHIuI*2`-M<&el#J5}XHTG8gYkv16B^zJe=9VB<*xJ{@A%)M6&e*ZIx!48Z>wUB-ia8D14S0vBUJTKA)- z+(0GgX&FkGTL#-g&Oy>ni&EETKi#VL*RA@1K*8jEke+=lW)oMO>jfjszslBGJeBR? zJr9!4GWdYqYl@ZMCxSqfuh=sW-69Y2JPdD0$>)3G0Xs{4w47KSlFDv|CcELV;8WG% zK}T|*jveCw%>4vyDgkdV34;7B%qUkB;p$2AA*D2J z_3Q_eLAnEQAwuqdj(>9vjKDVn4nC;58FHGY`H!3){39lB1YjWI7Cy+v?+X0Bir@42 zMa+Sb+=4&h%KSS|{5&nf;gI+MD}vYcjL0aSPT*+@PxE=I=Ba_F^Kr5-q~6{_Lkii?T8YX z#d26Te2Hb9C54Mb9}-23L~n8WT5Fjj!}>4_82QN1H)`F`W;zKg-r>Zp_BIwYtHen_ zj93X|zS%h%mpw{QvW-IDPP9{}I?-G5ofwjx=w(hZbKDKIg^u&oLVMi<}sF{^o z`6`qROLz*(&WtXC{7Z#hp%%}I&4hs!y#g_pN$I23uZ$-tkua#~ki)ua9jtFwL4i{M zE_8yp_`Ar;E+L($mDx@DW#%P9zFES=hLd`wV=jx}(_FIze#m$+iEf`NURcZU0_{Wi zaTOI2C+s}Dqiq)RMeQ*-MJDnj{JNq*`E?KY-v-CrFxtufwiAC)*4&#;{B-h;z8Zzv zGvE$4IPe>%ok-?M4NkAOoa_gkoz4c_Psz@;@pqJYOOpwjMG^-eEq z%_UB$$a0ButoUon`=#=>Qr=BM1}pb&#zwL-?*Y|XCm)v?(alIJa5D0QVajN=nRLIJ*iWpC0BNn2f z5I62yw^gJrLxam;i1yS*Y-KxSAwIHxGZ3%X%;7m=Wz<^sDw;vOpem9q7>;OUX`==C zP8QHICn1t8L~hd=9z8}T3k!@Q;1nTnS*@{|w4ffK7LVNxJPQF3fIjAa>T?#}Jg&u0 z*3wnDGP%0?e$>SK%*F57gk=oJl{uEDCzVa54}skA@+Sh+M3Qst=oY15Pq-XCvxZhi5aozfMMq16e;9s5KkpMP2j1Fr`bH6#nTsg zI+v#}@pLIq*Wx65nAN&iKVuIQMrKW3D(tMB#XNZu8WQWf>(C3cPJT1GNQAq}SVC6K zLUH@%BzboQvRVCi2_o(J`2|i-!l|bwd0FmczKN>)Sac2H0CN^P9y?R!ILSHoY<-2&=T^4U;2?o@{?>eSpYolfPId;N$vhLVcZB;V*h0+0 zWlv||N#c@`Ky<^(X}t@uk5Ka0!_ze z74!y<2rZ_S$4m#`F-?uq;2nP^r-Bvs7Q9QDVdz%#3$C{rQK=wt8P8vY|hSo9qts(`XN;OAaP# z?I!e%C$)V9SDXhyqp@Mm5tJCii8y*{vFHux7bEIt^vQSfqE>_H)Wan{4@(Cepk7)6}p42kx2dRp-k z=NPMHl9N~N6j^cnwbo2>3aks*hb_l8OmD>2Tnr0W^SEH(I-BcLZ^LQoz_vO{Zs4oZk7uDAk%u( zS1MPh51<@T>&&f+eyOUnSpa6c^qWXOZ&#{1>%dS44D!g}p(F++th9#(gD=20q~?7@ zP_Q*9XG(Z1ks^V^!F5RK6Sc5&ryaHG+E8^v;c&yCtYe&>vw2~or)OF>qiU=I&w@%| z#nvvUH=}2imX1-PnQ!$*U%C<%Vm-3X#EWO9`3=<^j87YU-$Ic53_m(~4)ofJ-<{Mi z>ob$9_M6}3>HCDe!qabfdWWZvdD_QQ46nvS_zkHv&K(J5oWFxS*1aDKgA)@C=)z{i zmcykG*g0{rkS$HLl+n2oShGYF%i;XZBDg(5u*_wx0Uav~oz&<_(D>Q-YdyNIP1tRF zfzuBcW~~!F$I0eARc;9zY^x>V3<6m;YPv-~2lFJb?bDsS^8p=IaHE(vu~s`hCvqxk zR>3l96;^wR7)a$!5-gUXTOoKXaiU|updV+mtcF*kcXLjG9cwGP%0U~H9bG_6$eo#w z0b45rHd-N3rpyv&@MtIVG+>L;qOj+PS+uO^>FAIb-axOzfEqpUO3~9m36F`%5-xNy z-f@lumrV3Wqn8R%IGVGpLX?{YvT8690>=HJA!{bY!E6KtjxOzZlJJ2HpI`99sbVW( zYO-0;MeKE$&JfX7K#-?ke3)E`&RQs8IZoCWF?uX&K?xoZ*|MUWqgz3y59IGlIkr}A z?yvxKMdgq8Ee)iNVz^Hjx?2)cURd@EOWS}_%hPER&!AUYBXzziO$ z0)6zUP^5px(=3F6T%<LH?9RW&KU^xl$=b@OhVfia|eUN`Dr- zBbYT{QxrjT&9yF=>DFL&bUx(HD~Z0&!n5oji@ui6Y%a$H6?&={bx~0)`(@~kp>96A z2xZTVS{LKi+#G#f7g*?(z1M(A-XduKp)1-ng4-qS_b>7pK?h)c1$EZ`Up3_d7;3&# ze6};NQW!x->^o`e9>$B+;1D^-Lh>UD9L9WeL-a~5v#O;ZYud7-lx=-eNd3x1qNP}y zvX&_IPAT=%7rpA4?)@feiIZ~dZgEs(VfbcRztSvJ6)p@!gMjtU^hX0>y*E?U)&Mb# zTG`ec#U@#Fhpo)YlVm%G{xG~HLmJ{SjP&fdtQNKrL*rYDEV-EfnKEfVrx>;)H11}2 z6yf_5T$wREg*6)yeA(A1PaA|AfOau{-@s4gcAjI#S9p4hun&3qgeMVto7Gy}mYTPj zMWMG&f;BD_P0bD6a-4$|y_ezFfuH2~Os)ihs1`9Q*Rf7^ z;+UXAm--z<7tHljkCj__rtaH`m0uZ&pv!f6w?d7<;v_TiYsF6rbsetEukf^$ut$0N zE>A)zy~48=YL*acffHYhXBN%)<5(w3sUQk^{18Q`=WHd(oOBgpDPq4 z#nXp8eZrH8hyRf{PkneAh?8{;uO{&%bm6W@^C9D)C~MR@<0E1Aoa)9{CzcJ`s05k%4FkzKY#A`!jm{~Axu6!&y8 zPjW^HD|E~UDx>8>nm+JsbO7<7{;ndMs{aPBSUZdBRmnoBhfr-FrRi>n5?d z`*|oI5RJD)(Z41MFLH%M)Oa5%yo;0ZE)3!|^_JyjROF%gMrwn2KUa9Vo?N_XLA-=| z^4KEDdGuCFymWe?ek)POohtuCl^^xw1*8AEvGCKb^dHl9_l|f zT~sXjk#2>0l!XM(s4^hdX$rV%k*<10&%1(*CeEE2Y!XZ|3qMm`gZwum=(8W-X6On z8o5047q9)?V>l%%EnOjp4Z8Y4iK3fM4(h86`1-+0Lkc-60HeIb+pXv>QSk(JcNy#Z zQu_Y}ds#Zp{iR~G6E#F!G+?1E5{BX*Tru?}4d3-B! z8W^N2AMH4Sp}n5>oGiF94py(#ae(Q2)x2o7N>4|RdT0i|o;4G5H_kuPVW z)X(O`W@mjtT}{b4OI^)KUvIR>U7))oA^pEuQ0+RtMi!=yuFOg~Nw2h6(rZ%mLiJU) zAgQ{_g`ZAS`8!qql>Pyaa-HDRtcd?sR61yk)p87ya(v{;A@tR(RD%}bI&~=oNT+|o z_u^r@o>Cd1=xKQJ-hk9A@sszV4C^6sQIaC2XUzy2GFfRpde6@F1me(ey+!GG33lOn z@72~Mc*oIFFUKdrcPsdnN$}*&naMX*zkqgMh)Ac$KY9&9MCFCr?o;KXKDn#99>q*o z{Gl&5E>*Ads=X`zw}Xxzc#KhW&@EWm6@Sv(jeKq=UFBmv5}v#&U|0Q*uKYvO>r{*L z>Gtbj=`oH{zT`C@bzC@GMg?IHq8w_$M~u+K!TKUx_pnP8T<6#6$*YY*pUu>#PETI- z6Cvq*e|qxLgF0QY`_G?$Qw_{-U(&j^wXJ@oF?D%;?RoRtR~qxNTRVbHu)goKnzov04K4MxZA~p}6)o(;UVGlu zrj;wPl((QOwvUy31nt>1=Qg#R-q3hneT$|eQ>WM0G|#JVt#4Tc0i;}V@orq#k(HlA z5Rq9GPa$cLJlFoMX=_+juNOe)-!{!;L8G^FuVhnRSJzVC+B#?HDUEF{Yb%->xUM^; z4k^GDybc8bOK_LWQOTjngCx2mSRv5r()jZ@at);G67 zt@G+@n_B9OX)9Jt#mewCwQcn+4XterwP3(n5K7f#1tbm2)0=7_)~PFMu!{HD4UNZ* zQJJv0Z+pEIHb5(#nwCS7={1dYShIdbGZe!Lsx#_V&#SL#g%PyESY~iV`Q!pLD=RY2 z#G=-yzj~O)%4Vbaj5ASPkPKEBEMBu`FK0Ehw6)i)P&HvRXi`)3aSFV zmNvoq-_+s$&BU5Iaq;ZMQx>LU$B#9pP8>CR)Ra+xk6H=CT|IL3 z@ngNKkysUcl={`LsV}MZ;~xYaW7@<~HKSG{5`jxQ2;)yfW9^D|#GUj>qncam&ckBh z0q*If)#N~2O6*=>$D+ozlH~?mx}~9UWW&nl6}W@H)dK}rpa_(@`lYyDf_T{0T8Aqv z^S+{C2`=heT9(rjprxAT1^{ZCRuWC#tmZbrt%ULdf5D}`rLo4xLPsDZVn5mC_|sMk zFTh`H-wUd^Xl`k$Mf4$PZ6gu|pGj17+sKB-$;K%Y7cZ-?KW|A3R_JdnX=z_v(b9A- zLU8Nisf%aNsF+bTWop%F4Q=Wg!cDC@yM75*^ItsrxT@2Ei8a?pA9uLuEG`|3{VcHm zaP#O1RbxtF9;Zwk6%cTg7I4(mQ9c3HwO_zdNdg`oIxz3l))taH1Q6@{i^@?3aELCn zthSaLEBs4+$m8K%X|qpbuCDpJhJJ|UM01NK79JIF*TWnv_9JZRK;V<7YgPC>)|clH zwXqtpwiYecp=-lO$#;2(;$cS@?t*aW(s_iut3#BHyE<@FheH?6N6B}2h~l-aXl-q8 zK6K&Iw|j=m!oBFOwel=nv}(R4=MYP~rV;T2wQ=a>^-=O&?uSF8l^#_qb}Upqk#2i5 z2NQIB9DJ9DsJ)fwJRG{_y08?*K>v~53*CYpqVVV_RxNEF&F0-#O9!J{KP5lWZYwff zXOAW!(yEr%ufX7|_0VNZCYOBgQ$bf!HMiEc*ENl7smK0>La1)bcrXg>!XlCcNV;8x zLD*8!U3J@klqN;@*9$1AI=kA!R@Se?EP(8;hWg2F@7C>M_tLQY%8< z)gj8}kAovuU~cWurA$RK73@$Y$Lw3}VGy?qd&3NdWZ_=yZ-3K`@rO{zl?|rgm(YQvG!*ZZworBC0~ zfsP^nW{))fBhCS6;7Pn^#5d#hVRyuCkD2rA+hg~}?0d|4n?-_spS9aE&$Mrg-XAs3 z#FzK_K*Gybq;#|Wvh|8>E&#&TC~vn${~E>Ztr<^em>9 zf02%TzqNy;cLX>vO{9<*k}~jDqQ7iEi%-cD&GPk@&Gyq7yE1(DLNNPf`%~MTFVf8U zGT(>DXD*hY#fEsx6zuH}fk_^p+FKl_)j00x&A7lqPpxZsN#f)z4}ok}02idrlB8G+ z`&#Ewyns)U{}}y<<(Di!&bSh?ce@XX|aI$ZFqa-V1j2z2<*Q01GA# z;>}ffb2m%8xf)M#AR_T96<(#ntJHYlD->8QcwVhoKpWLpn~^bIA_#~?jo*5?2~)V- zyc(a)uGuVV9(u^MDmt_YExQ^RVtq5eS|E;5iQ-glR>j+Fej>Grccs-o`{b{X_%`zi zGt=5rrU^b_zJ&W7?)^*V>$op1*XggDAK*Ub-hTkfnbuN$Z=8!4>^xEI`|Ss8VJRlQ z;_wc8yK^gc>9rq^J|0D7KOX&j>LQ7UyEmX ziJR@O#UCd8;rL_mnBuhAek}eXfiK2?6psTa%COn~5!D7kGdnXG96B=}%Y=Ui4_y`Z zAMAgidQclE@&Z%?in_plCF3o4xBXVe#~INtV`-BCo9&M?{+1CF*GFYSW0()=# zZ}FT~TNmLXV-S+!p8|Ga0QPD8Mu-53AjtwH2>5n7FuzV`yJNMsp)i@xX2OzjSn@Sk zB<+m?V{h~me8>xoPbl4d$$Y+~hWN;@tK5I~pPW0Rk+RLA(ySORSQC*6o9+LJ-5s}L z32Jhyym&1BY@8|77qWOX{_I>IwP6pN?LE==uyhYD?uk7qqv8L?u8&7WjnNzBKU-wT zGS5wk&ePqR~kp%5(nr{#-58wI=s?2Dj_mj&`~(Z=*LmF!~y#C@jGA_`pQR# z36Zg~ToMNv3Dh|1mN?V|X#EPt#oCT<%w+7dH)g_!Xdm`J0Rk69PjMyME?z}DBm5p; zCy8?4O#yXJhtz^SKBd=7*6@7XB~`{yby-1YHUHC(MR^hG1x~zRjc@ zx0$<41U>R#lZ;Y-5ZPd1aWft^n!$N?egl~4j{^mqNoBK;H0yM)JtX=Nz=lkSv>5h; z$zF*-@4p@X00CoWi=f!u;SO2xKpU6BrcLPiKds`~3Tm`IPv( z%e*wg`%5F2M}+5J9{HUB{4Vm21iTaZs{s5p@~H%T8o8QvWM6G{;M-yZiwEUTX!xY^Q?RDwe`|QpoX+;PPqYUO`KcfRnv|GNsqPEU&#caw9GCMi`G& z>;2ZV1Uzd!uK>?mza-$7);3#WY_lJ+0eHmTp#VGVodoQ(Ur>M-?4J|xbNhD^AbF)Y zOZIa$d-RzE`?;Du0D}Eo%^m>3ey(N@fM7pYvj^Y>`*j=E`nqJV>@@{?<{U00jF=%^m>3zEZOXK(MdW>;Vw$D>Zv`&v+mLePHc_!P@(*4OGshpd@3|KI=+( zB}KINm{&!Ba8=}|5upDx@=8SN{S{gsDUuWK{VtG*VXoG(qf*^VU!#}Y%ngpLM< zelg?E-Y5k3d!rb!RbXuMTt;31`zRFaxr`T?_##M!5`{MG??+$85-0YnX!H?iQMtUb z))b0i%g2JYfv+YE`(rKD({jTj8sol#uDCJ23;Su5@DIX}T43d}1l@Xwr1 zW{EQMUzm;zzb8zHL6{c9{;R!@*1N&E6^u!TS5^xOF4*j`USRSI_D}JLjeCc^1-?jv zcVo1QK#SJ2!~SoMMP-gpto3x(iva~52=dB09|VzmxAm$eMg%N@^<7+}CBz7wV@z=+ zMv8(ES#(Br(9Cy4zNcK~dy!ud@QX;N3}!^)jnEHiG6S>{`3e4zCa<(sei7MBL{W{u zi2R<2zmNPel5@UmT<0s}`ZX~tSY^LJ6QheJ#j@99O(w{2oq0tB?r}xrN+sKsk-G@E zEAkZyV0oW1e*$Nql+T&}q(4AgPhn6cN!nY5=TOc^aOIZWHuAtAZ-g`fA#VVp1c?i* zLTNcg3Y%$mULo=qjgS>uG{URS((yql| zgV~Sqm5|!5Y@66@giwzvkRy-*ffU{im_A_3>e#R?tNU*;HXDo@e!qvTMgjO26vAW* zkJL6V3SsmDtXCmwNhG*opWTc~JGU@$L$ypnL>``kuIMM7iimXTbWPVTpN`T@NrBuS zLi8U2h9kykWGO@eU1&>poKTvjtd z@|X=Vv?bXEi|iekia;CsAe`juld9dmW*E;$uv@4yrpbl}|Uh>0_ULDD7owEdE8 zzh$q_uwTn~HWPJ%Xe)<$92Sb9ofy`M5jMwJA4J7i)v))(--}~#d?PaLjsH0=#xO>{ zpZ0F_zw90MZrgal4~`ewiDM14x|>Ya0GNKAsCf$Ho`JFruVYy`IA=wO>~3v8E{Iw!8sbFJHeWCM-u1!)<^d4TNcCfCKl+0hNo9l%-NjfBqu2maG#Dc%51DSn=w-^U%cMN6Bj zzHwDEOHzoREEnJIB_!d8)Dkkxh479ujwqH-8`*&D?xv(efwMj!;R%3Lca!Ujz-jIV z=ThL%j=b8r4iGqO+Oo40j{;|JH;0p9V6A)^)WCcEst6Ocn<3fmYEAI9R2y+2P zyv@%M2rAmmg}qk6T|)4A*BX5BCnA94RRRbA;vkM?4hD9)g2+E5b^NSP9+WOsv?*EA z+Nw~bC72`ht^2oRjYkNs0Xi#i#v0VVqomoxfgr$P&q{wg>mlBUQqt=9OO9h2>mlGI zy1{t@I6SZ-Dd=n(g7v1vz5n!_!ol*Q!1)SA4;?>MIBXCt^J%D3)}tTs_X>xx%rZ-H z4&!{Ja0&#D91{6y@S2+s@W8s7q=UPD;@*GCQ8+yX&cHAuz>5@4FM;zsWDXz0fs=6K z*s);*K*lOMY-!Nh108D0J9LZI0+4Fa)-L1gJ^W~GN&Pa7Sq?fZjj+s=(ip~BNH5bk zhPGari`-e>VAcb%Ue<|-5q^V{q38R-&@W7IcF$cHY3wASLT3G#UHXCoj#cOi_T#7jUq z!MGv0v!qjCWAq~LINX|NoRXTK<}p!MTJx+Ohz@zC<4nu;j*=EHw$RNibD)>#yJAdW zB#<%T6Wj&unW&5jj07?!T#`cfSV9yyw5YE9oxV)#mA*U%bi!6eKc#m{KNb6U`=phZ zw5auv2P{#p^nOb3lztk+6(#cyZFNroB(2W-HqFB_jGMr#Q(FS4Bp=NsEVVoscqo%$ z+=pCybS?pT9FPtqN|{-1j~Me+;cYWJuHZo%8;GJv z8#~!kjt`CP4qF@9?u_%Lc$c)pYTR~bhf7c>X@^5WQ7jJQ5y2Jha4Kj?JA5~grf+D6 z+xEi_xiXZr!;Q#_;`+4wjWPRm?83Bj&wWo{v(sl8B;L5u2ebPuKI1Z#P62O;r z0mey(u8Ru5WnCm8s9V;>Uys*yaV?dR zJajySIjgz|rt@xp>O#lE-N0uJSgB&B>d(K1bZSoeS6C+2>7`goN&45tC>bpvc(6{V zxOJ-6sSDz;PAN}!v91Vl!}G7O{jg47bL(_dkcqluotAY`r$l4lc#j+Fw8lMhy59K; znDj5-cdrUf*XjEGh;^Dn%6O>8XceGK?WU?PvSeL2C+NDk3XrgVSQi(%b&=k`7~Z<` zuO_!H()(8%1n$nin!BhAt>;;;p7EiI{3@75c8@)%FRAAQ^y7j97ykpCZK5vVgCgah zfHXrR_>Ww{-UTtLs@Bw1)u1PXYo=NfasgIIbRoDfdPC7=KnV7+y?TEZIKjF&5MQoF zZdvbnxC$QHmwyH@ImnSq5{~laHvvY0fioEAVBe+$Uycs0JbhXjQbb9Uv;nZ8aHdY^ z3P<(T6Tp#LosO%dvI}0*7P&f1)xJxda#!0Ok;=rT^FIu#S z>C}p}1RoJxmHvgYTrYR`w777b&uT*cVq}G{(#X zz}>~nue*NQ2iW2MA^RlbVeV?qAxT+I>eO#qGbQf25cTpEw&tG!&?E4m9>ELkdc|GV#J%^Pn{dDRg+69W1+6P5U zn2MU{4rj)qVcp}D7j}U|9<290ZoN}elq`7Am%r=QdrdG=-O*2*k-NKk{~O46SMQy` z>8{=l_$gRIhw1yPcR?QMUus1IpXB;uKIvaw_g6h1`~(z&vE@K~a6NLTwGGv#5J#4) z4AP^JzC*Wz9{|=}JIEOndU{uV+HLWZ+2K_>RsR_{;cQ+J$Wpnemyc z9?SU57CI=8jvL!u`+-yH#VZsy+;SniwhG82dPKlYJ`{@K;<%$x31RI(jHKhRS(JLB zVM8)$Ehu)RLkjQEl~pSVA6XNlOUJqb=bj$gCoX_!3yJ6T)KY7NlBO0(Gbg>-%$X zbsDZOl4Qg_@-$r+Hv$sY59?xe>J4JH9eiM=^>j^_)nlXQGt?XSec76cNX%fZU9~BK8_s<^z)z zwXL_i5aP@OP8mYG9NiGI0+0^;mAMF64ahc-B-K*VP=(%kbj1z!gVSlBnE>hEXu|0(!&Ss&_Z=fJ8TIf z075$~>&6agW2{gaMHwMs1W5<&=XMlXM$sQ6rOI2{&))s8p9E@A+D`>ClDT(i`x)ul zk8gD!g{ET^1*T#SwME+o8nWJlvS_JTU;AoweQg971xPwrUtfT7WPOz+rOI2@MYCHM z2>`>@%DQ;at&8+y&n1XavM$p1E)wXXf+h5GtQ5d^)_R`f>KX47_|`tssGN6~dhU7* z;?)KBdO)D@9S7orJCLtCAEbY=22#!u>A5cyT$X(pFoW?~`{`oPVU2g$t6ZY%{kO0- zy*~glse|=?wOj9epDTROPupETy(nDi$U@ubaBZU$kT5CQ#=EX<+z2`_f~13OK^3yf zc_bjGIOxkJ3{~1s&y@1empQJKIt<$n$+9hIc6~YhIHeu($hH6zcxpK*zgR<2;X5EI z+k#ZSOx)9G6p&QdhRD1CmwRyKL27Y{otXq3slD}pyc@u|36RbJ&cnfq|3eyx>_j?+Vcg_ zyli(`L6MRL587%kAV^#74=scb+UolKuvPB#LXWV_VW5KyzC*{uDscbcD8?3e9p`QbBk4>(*BS1j1@$ zUHlQ1CF>%6yE76Bly#B*x!$%e>O$-JE3Tedo)@SF_c#zemmwEOrPN_q&%_KL)bpdR zo_7NwAdbjDJ>Tu>nLZdk=og$GY54*vk#GoT^MghW2KRw84faIa<9%K<9 z9RbL>%oTuK0Z4Tpohxh`e}Tq>V;=2;Wssvg+u*YR)^tS2(dGUEg$~B>4M31_CS0kr2lR3i(N zs=rDc_BZyTvfvuPVGJil?{IAcIz%FH#(0V9>af{{diR^LSMmz6G7gScB1{Mn>Zhy= z{ph&*9_qqB6R6h&BvGxO1CtqylMWqM`8*|^?=TB({+ye%&EE}3>h^1SzwXb;b%>O%K3w;-#GW5K=;h#ESM*YbSwf4Ezmj6V|qVXb(F_Q9hev(Gl%WgUqrZ_w(AxY4z3NF3J1bmUCprQXl1Rw>Ez zy#TxKq3w@tY;$dc+72GtHaMRN6?ADEx8A1x{b6V!JU$g|9GXWt23e8THgZr|(l$m0 zg;9634bF9UXB(B^C1b)Z$eG$U*a%A7_+3g~v<=SKgB{AAek{!Kvb2p9^`*W{oC+d7 z+whjd1Z{O=?AZ_7kT{fQ3~~n5sN+U6QfM`YY8y|vwt)gB9ojYq?1yd4xJ%o{SD}UQ zSdX?b@d#}jOM-<`d>J=RbZz6*Bx&R=ZDS99-Py(;UE8<{8B^QF?_AqR-*4gc64-TV z8{FlwyST9sM5Jx_SN`;h$ajcbUl!me09gY)iB{Nc-xHX2rt(tuX;s`z>MAe}Cxs;NMd+^{z+#r|X^S9??$V$R1IJ$3$J}$Tkd&pnPb4 z146&85dxr<8{tSKWojkt};wyI~ECGZvN{ zN|s04Mwzff+N-vNJm3mTaC7_lgjA)_<_6RR_juvu+)%6rNU98E!W0U z;Yb@B(+QabcN1L*5n=I19m)>FR_C`&Rd&9Ekgn|7FFwa|jqT9&mFg+E@~>)L%jt2( zFW0t_;!Dy{xemzRM`+5fzYo*$XvkQ8L#J#*%6vTMB7@e#c?nkVfkm6r5O+r70I#vt zA?|e^cUA9ux~O+;^Ij>m&HGBKXQ*^3QrW8h$`5G}39(mOsP}ij+EZoo*C3lHX%{x{ z$*iNXPi9s2fzViYHsAdDm22#BU0><#dE5kD%jt2(kJYwe7JCX-SK8*?avhM(??vkw zu(5IP!hQmfv4y%6+6#`~gAS6yQP#3XYxRJ*e;ne@US*JbBE}Q)U zMXD%zm?JI6Jwnf2L|RW~9cg_stFnKqi?Zv8^f{JmY=y3`^igzNLf3M7oblP(Hq3;I zuil?fxeh4SZ4CK)WhmNggarh=;P^){%v2C%E!(xV91!>A6!)7$+?zw(J44)m9pb+Gpty4eFHo*=YeL-lge8D;{JSCU zuN@TkO(E{s_kJPn?;aHQdqdniLfm(RxR-{w z?>#8)TSDA#4{_fW;yyXV{gZ>@zBR%e_Z=bbdqdps4RKE# z6!#q=?z=+VKM8SvKE!?4L2=(1;=Vh?ox{~&r2SEdd+9-O-xcEiT8Mir#Qjx|yXsl( z=%Qz(dzD^4LH8;vJzgqem+4YK-^s_}p0lb01EJL}dX=8cx>xCwS(W|uF3PTZU!P;S z#^&kzO5bA~w?}I}Jdf`sSAFfckZdHDx_EA6KU3(U7stA&u8Y^NCKto5oEKabFYS{tb`2s`vN1sCRAiUMaNA`%0>8zCxGcbFg_n`RUH)J(;!5 z`(##S-`7RiwatHyZFN4GmDP>!qU_r0KF4y6U9RgZ zy+w_ipldlj&iF~%HoAH`pzG^^tS+W0Yl|8e)ADG@*a^B68ge|pzf}=ZSd8MH?TNQnEEgW|qD#C=zY`zP8jT+RO-V+Uk} z(P(?#c2L|O331;M;=VV;oul<2_w5J8eOrk8_7L}XL)>?UxbHY9?ps6Lw}rUx331;N z;=b#kxNiw@-xA`^cP5pd)jKD*hq&)PDDL-$xOaxQ?+$TaAL9PnL2>U4albvpeOHM4 za*w-;^VnCY+cwUlquV$iFBP@+=u*JTlaIsQuOod?r(Lvhp3J(9^U18r{+lk!u4BUI zSgx^!Izo2Q#=Wa+IX%vJz9%j96MRdTdeiS(f9#gM*4x_xd$tgV$G2jJA63F$Lk-oFpAT15N?-!_;(Z1^*s6Hvj6ukI` zZATYx*p{@kw$v)hKtn5oHFayNE|Blrl4itcZf~nyUejX8H!%``@YsjM9g4Dq9Es=Z zW#UPe#u*MsM*zZgrgy3SkIZ!jA<7aYPftR=3RVA%6yh@1;N_MW-*yq{rP7XD}e21Y{luh@RP&IHv-_D9SqtnGXmL zFi?;sfHVhqT?|N}sKJE7=>+6GO`fW_fYmWN30uMEm%=H42@X=WZ2(80_WQak{Nj&-V}b%s%fTwY1P51butxvH>42={AZx~J6-fztsT{D(YM_$+}h{Z<65 z&V~c&-m)x3Pe7_&%E)RA0;CXsJ?>)x*&?XwlAZ!cuoMdbDGStTDD{-JQSqfs`56F%HogWf{6sh@@H7iy$)#4i;mrfOzdYpZxkdUR6 zC4C#YI#raAkdMdy-Pe?asbQxY;95YM8R|8zhqPFGc_;-4@lHY#fK&%$E&-&|Ef=|- z1W0qB6te-*^Wl=tT0m|Gj;FE900~;%U4XDIJnjzzqMueoj9TS8%LDSf37j(I@^tti zAi6Iqx&IxIPT+Xlhu|Za=>d6;1H|)``77${n~`Hnpibukhof4_tE#qX<;tcyf#=!S z65=2}d!=Y1Bw$e&0k~lMgS(UmEl~q| z1*GFyuZ@p;pb#IO0e}Rf=ml|=0h#XR!iDiHAUtF#TH9J0YgaZK%LBPy0Zve>ZvwI#T9x(1{5C#8 zel4Kqo`76~6i?=p0Z9bP#kEp+cpldZNN0fZ6@cic$j!`g3s}O>0Z9aK z-UMWCfV%~!*aq%iy%z#f7N9d+IgTgcB<2d##bQ7<1~h*zAo4AygrJU{b^wuYlxfH& zKz0Od^)W!GRZnBz17r;(^dKJsQW22(Ge97+PlvtmWoH5q&oYYv*%-(*8W69)fh6N( zKp1T#FVWY6h0|Ijoho)VRD>kHtc%l;D;Ch$d4TK)=;vBMjDY9f#awQGRd`cPvZs6< zIC%lBZU;oq5lQYl0om^A5OiwUKjh(+{TIL~b<4%Hy@1eDy*iEK%RFk;%hewcWKuX) zOBs)(wRjO}IB@ignUv>5Kt2hSeGVxHO2HL+rUx{3J|H^)AwNmy5{(PEK3Loq@b~_JyylidSVFB~ObGBQ1x_9y zUeEI+K*$~cRVn5Hvd5(Zuu%`lwtzhCfYc$y)9Q7ABmiN#W!dipM8BmhA>UUx9j9x2;To!>*8)<8J5R!U09g}|XB!}1dn!jVh<($@njE#W!bmDJTQXHZ(46($_UhmbBEb(swHw8te7-(iVRC zsVJaA^d)hypRae{RJ)>~waum8(zs0CW0OR&TzW&}s+tuIbrq0eWqn(H%k-MYx)t>; zSgfVKs8H$_7s6EwPD$NCl9bw0VapJkF3ZYJQd?b<-Ybv8eePw6 zf$w~5;nvn3E=?8oIBZzOIv43x7&D(25-b@B$OwzeYg(&nYulP&EJ+en)uFC98^ID( zaWt`{CI#7LjqU%Zva4;5(+0x#hnh*6#?!B^ed*kc?YOa>e%!$zpQ$-ufb;qM>-(&B zB_wf>_Dd#kAg%W0*=HAz1Wd_IJCsfBHqf08CXUur1)gpFM!VDJ%3Vu-_mAn%wrw|& z)Dnd0T_*FV?q;jM%lbM|sh)s+fY-#j)&pP8_2{Y1IsPX>yAY*G#3kYF15gJFgF1{` zAID;v_jjyErk2nr!Xc~FnJuE*bQIn!Omf@o+TloYfUh3pi#PLq*UO$v#E<}AD;nBX z&0|(k0k7zzJM1Swki`o6yUb|LFo-&|r%|KkP1D#g{itn7_D#Rh@?(3|c$8=lu4 zYeJsEmL$RM@GCkUOZqf64(4^yi#dvEKD3B-tS9(A?^o_;XHPnu{U+1#09jG^0pb@0 zs1SS6^PSl>02Vi>dxh?=?mQxdM?w6;UWD@?=m#eh0L+Ni^tG&u+qK$i6<_{wyy0Bt z6!WJU^trE1cU}}Y%7r~qv^M^D(ZJ5hNb5I)>G90%I+%OY-!!#znN5AM?>bWt_5nYx zsrNeq{;ekPMcJ<3%JWb|PfrKkNNw`A1yI?xhUG&nQjs02 za{D~E;3STXcWk~h-mv}TKDqvwTz^`{m_m{_`0LXLO+72wS!TSn$Nr6%7C}CoefjeF z3$#M>k;j4L7#jhl?ndUFlMql>Sw8^1ERtJws(%6Np^Cyd)$R~k5QG)eTL4yhaF4sO z{FyDwp$Z^HnfF%rJ&(~mvD^p?reUBQY!q+OMCBIUoxZ)1Peu;KgY&6S9U#pjb@orw zQNMrek4T_9dNp0oEXKM6TNYoYoGL{bm!<+izCi9NVIYrX)&xJ%=4kjZU;Ze;=(6gs zz3GlvuXj_n?JI6r2SZyj79)ZK_lPud#%WGzWBgTS@(|{|W^_=;WXE@w!&T;+P`vx9 zhw~sG>>1y&flRs4o_Xo^(%^?W@(Fbcdu8?FFTOg{`c~d`?+dZl+8%Jt-o+M5c^YOs8^7!N9A%Hu- z4o#xINODwWgxso(8jNjQTMIJ&X~F;JsjSgy)e~RKh{P zF@kr3;$W6#xH8h&+4*#krVjyFLqP6{%98X?7ySC?YCFkCQGKA^81i5KD>;e-lwaHk z!^g@dz`~62;K?p4UCMIUahj{x)N!g=8kuJn?1)`F;b@X$o$gdEZf|g0?kxLC;8l`l zYYzg}SD+3^&vlnTNJ52jg)vcNlGx)yVTqTk(sfJHv>IS!2vR1`CEvVf(w7R8)c2l> zTJ#8+s08~EMA67f8I5_om`KSCk&!uHMEwNyQ(wk-XLOBD8QAT+44QO`hd7h8E!)8x z1yjev*fpRIdb1DB<%v^F!N-**S69@e6hw-fl;>JaIFi8^r#Ll>j{LiW_%SaV(IR4a zbK=KN?FF9$H?R76>K0`ZH(($xuL#Iuzu1HH_9XKQZ*U+g7j2nTdBKH zjJ@>33yN9jB>{L%7Ll35nhs_VWzLpRP&9s3?Ofz8~e6C4bhcP==P% bq$}lc#*vQ%E~7dqXuoh=x=bhG>fVtU literal 0 HcmV?d00001 diff --git a/13_Lecture13/04_fifo_p18_20.o b/13_Lecture13/04_fifo_p18_20.o new file mode 100644 index 0000000000000000000000000000000000000000..92d6b2294b660fa4932f071107fc3d6cf1baeb80 GIT binary patch literal 2066 zcmZuy&u<$=6n-1qU@A~8ib~3_ZlRS@h!!WLQiV8}mKDpPl4)gBgwWzRYglB*X1#_q zA{CPPq1CFWNSuKqe?r3nIRO-oJt38Q)kxvs1420j%=hN)uE&s(cIKP+zIpTJo0*-J z&+jKLUlxc?DwHQH^wvU!rK-*l%^O5l^U{9^jY-vatd)9L*La7)3RQ>Ja<6xoPq%%- zytV0ouYmAzPG=ESs9dqS(>w>1A$Y$h`8|xj;sw(@6ZT@l0aOL~Ri0l;d(xKC%pJn3 zIniAwx>Rxo8znmW_3-VVlx6ToSy^MdfqVCE4s9mmHvsQ;hA|XnXft=y((JnAt+rJbTYD6B=zp#7B7{ zi7XO8vwK(Sdr-FR59{1g?!Ga8pT|pc$pE=|L~$_*Kxw< z*nHl(aQh8D-cfE(BF#sV_6uMWnA_X<=7G7rfOB~s*bahDV41J?y}oDqJ=1G--n_DCc7x9QUL!nfE-YCK7GE9|zPr31 zd3p==F@+kaPbkzz{g^^up=R0g^dssg6sjOELEiz%*zbX!RNh~Jo>J%z(5ynIunOUw z1ri<{^Z>pbVyB3eIjU?AW;VVY!egz(%TdL~c?dEy@9E4omm$_u#&_-|S9KH!a1Cqi+^ zTNMkR3$gGRR-RAE#PTdGd`865uKTOZ +#include + +// #define DEBUG +#ifdef DEBUG + #define D if(1) +#else + #define D if(0) +#endif + +FILE* log_func; +FILE* log_for; + + + +typedef int datatype; + +typedef struct list +{ + datatype value; + struct list *next; +} queue; + +_Bool empty_queue(queue *p) +{ + return p == NULL; +} + +void enqueue(queue **pl, datatype data) +{ + D printf("enqueue %p %d\n", *pl, data); + fprintf(log_func,"enqueue %p %d\n", *pl, data); + fflush(log_func); + queue *elem = malloc(sizeof(struct list)); + elem->value = data; + elem->next = NULL; + if(*pl==NULL) + { + *pl = elem; + } + else + { + queue *ptmp; + for (ptmp = *pl; ptmp; ptmp = ptmp->next)//error + // for (ptmp = *pl; ptmp->next; ptmp = ptmp->next) + {} + D printf("for %p %d\n", ptmp, data); + fprintf(log_for,"for %p %d\n", ptmp, data); + fflush(log_for);//если забыли, то пусто + ptmp->next = elem; + } +} + +void print_list(struct list *pl) +{ + while (pl) + { + printf("%d ", pl->value); + pl = pl->next; + } + printf("\n"); +} + +int main() +{ + queue *pq = NULL; + log_func = fopen("log_func.txt","w"); + log_for = fopen("log_for.txt","w"); + + + D printf("This is debug message\n"); + for (int i = 1; i <= 5; i++) + enqueue(&pq, i); + print_list(pq); + fclose(log_func); + fclose(log_for); + return 0; +} diff --git a/16_Seminar03/00_assign_p3.c b/16_Seminar03/00_assign_p3.c new file mode 100644 index 0000000..f011f75 --- /dev/null +++ b/16_Seminar03/00_assign_p3.c @@ -0,0 +1,14 @@ +#include + +int main(void) +{ + float f=123.767; + int k, fint; + fint = f; //fint = 123 + fint *= 10; //fint = 1230 + f = f*10; //f = 1235.67 + k = f - fint; //k=5 + printf ("%d",k); + return 0; +} + diff --git a/16_Seminar03/01_time_p5.c b/16_Seminar03/01_time_p5.c new file mode 100644 index 0000000..dde4f27 --- /dev/null +++ b/16_Seminar03/01_time_p5.c @@ -0,0 +1,14 @@ +#include + +int main(void) +{ + int s = 10000; + int h = s/3600; + s = s - h*3600; + int m = s/60; + s = s - m*60; + int s1 = h*60*60+m*60+s%60; + printf("s=%d m=%d h=%d s1=%d\n",s,m,h,s1); + return 0; +} + diff --git a/16_Seminar03/02_printf_p7.c b/16_Seminar03/02_printf_p7.c new file mode 100644 index 0000000..6ea13cb --- /dev/null +++ b/16_Seminar03/02_printf_p7.c @@ -0,0 +1,13 @@ +#include + +int main(void) +{ + int a = 1, b= 3; + printf ("a+%d=a+b\n", b); + printf ("%d=F (%d)\n", a, b); + printf ("a=F (%d)\n", b); + printf ("%d>%d\n", a+b, b); + printf ("F(%d)==G(%d)\n", b, a); + return 0; +} + diff --git a/16_Seminar03/02_sum_p_6.c b/16_Seminar03/02_sum_p_6.c new file mode 100644 index 0000000..bd38dc6 --- /dev/null +++ b/16_Seminar03/02_sum_p_6.c @@ -0,0 +1,9 @@ +#include +int main() +{ +int a, b, c, sum; + scanf("%d%d%d", &a, &b, &c); + sum = a+b+c; + printf ("%d+%d+%d=%d\n", a, b, c, sum); +return 0; +} diff --git a/16_Seminar03/03_mult_p_6.c b/16_Seminar03/03_mult_p_6.c new file mode 100644 index 0000000..d09eb96 --- /dev/null +++ b/16_Seminar03/03_mult_p_6.c @@ -0,0 +1,12 @@ +#include +int main() +{ +int a, b, c, sum, mult; + scanf("%d%d%d", &a, &b, &c); + sum = a+b+c; + mult = a*b*c; + printf ("%d+%d+%d=%d\n", a, b, c, sum); + printf ("%d*%d*%d=%d\n", a, b, c, mult); +return 0; +} + diff --git a/16_Seminar03/04_averege_p_6.c b/16_Seminar03/04_averege_p_6.c new file mode 100644 index 0000000..4e7293f --- /dev/null +++ b/16_Seminar03/04_averege_p_6.c @@ -0,0 +1,9 @@ +#include +int main(){ +int a, b, c; +float averege; + scanf("%d%d%d", &a, &b, &c); + averege = (a + b + c) / 3.; + printf("%.2f\n", averege); +return 0; +} diff --git a/16_Seminar03/05_sub_p_6.c b/16_Seminar03/05_sub_p_6.c new file mode 100644 index 0000000..d346809 --- /dev/null +++ b/16_Seminar03/05_sub_p_6.c @@ -0,0 +1,9 @@ +#include +int main() +{ +int x; +int y; + scanf("%d%d", &x, &y); + printf("%d", x - y); +return 0; +} diff --git a/16_Seminar03/06_printf_p7.c b/16_Seminar03/06_printf_p7.c new file mode 100644 index 0000000..6ea13cb --- /dev/null +++ b/16_Seminar03/06_printf_p7.c @@ -0,0 +1,13 @@ +#include + +int main(void) +{ + int a = 1, b= 3; + printf ("a+%d=a+b\n", b); + printf ("%d=F (%d)\n", a, b); + printf ("a=F (%d)\n", b); + printf ("%d>%d\n", a+b, b); + printf ("F(%d)==G(%d)\n", b, a); + return 0; +} + diff --git a/16_Seminar03/07_sum_digits_p8.c .c b/16_Seminar03/07_sum_digits_p8.c .c new file mode 100644 index 0000000..74b0a3d --- /dev/null +++ b/16_Seminar03/07_sum_digits_p8.c .c @@ -0,0 +1,11 @@ +#include +int main(int argc, char **argv) +{ // На вход подается произвольное трехзначное число, напечать сумму цифр + int a, d1, d2, d3; + scanf (" %d", &a); + d1 = (a / 100) % 10; + d2 = (a / 10) % 10; + d3 = a % 10; + printf("%d\n",d1+d2+d3); + return 0; +} diff --git a/16_Seminar03/08_scanf.c .c b/16_Seminar03/08_scanf.c .c new file mode 100644 index 0000000..f5fb489 --- /dev/null +++ b/16_Seminar03/08_scanf.c .c @@ -0,0 +1,8 @@ +#include +int main() +{ + int a=-1, b=-1; + int res = scanf("%d,%d", &a, &b); + printf ("res = %d a=%d b=%d\n", res , a, b); +return 0; +} diff --git a/17_Seminar04/00_yes_no_p5.c b/17_Seminar04/00_yes_no_p5.c new file mode 100644 index 0000000..1e923c0 --- /dev/null +++ b/17_Seminar04/00_yes_no_p5.c @@ -0,0 +1,11 @@ +#include + +int main(void) +{ + int x; + scanf("%d",&x); + printf("%s",(x == 0) ? "NO\n" : "YES\n"); + x==0 ? printf("NO\n") : printf("YES\n"); + return 0; +} + diff --git a/17_Seminar04/01_1_xor.c b/17_Seminar04/01_1_xor.c new file mode 100644 index 0000000..28ebf19 --- /dev/null +++ b/17_Seminar04/01_1_xor.c @@ -0,0 +1,8 @@ +#include + +int main(void) +{ + int a0=1,a1=1,a2=3,a3=5,a4=5; + printf ("%d\n", a0^a1^a2^a3^a4); + return 0; +} diff --git a/17_Seminar04/01_min_p6.c b/17_Seminar04/01_min_p6.c new file mode 100644 index 0000000..0ef033d --- /dev/null +++ b/17_Seminar04/01_min_p6.c @@ -0,0 +1,11 @@ +#include + +int main(void) +{ + int a=-1, b=-1; + scanf("%d%d", &a, &b); + int min = (a < b) ? a : b; + printf ("min = %d a=%d b=%d\n", min , a, b); + return 0; +} + diff --git a/17_Seminar04/02_reset_3_bits_p7.c b/17_Seminar04/02_reset_3_bits_p7.c new file mode 100644 index 0000000..369033f --- /dev/null +++ b/17_Seminar04/02_reset_3_bits_p7.c @@ -0,0 +1,12 @@ +#include +#include + +int main(void) +{ + uint32_t a=0xAABBCCFF; + a = a>>3; + a = a<<3; + printf("a = %x", a); + // a = aabbccf8 + return 0; +} diff --git a/17_Seminar04/03_rise_2_bits_p8.c b/17_Seminar04/03_rise_2_bits_p8.c new file mode 100644 index 0000000..3f2d347 --- /dev/null +++ b/17_Seminar04/03_rise_2_bits_p8.c @@ -0,0 +1,16 @@ +#include +#include + +#define BIT_ODD 0 +#define BIT_PARITY 1 + + +int main( ) +{ + unsigned int a=0xFFFFFF00; + //~ a = a |((1<<2) - 1); // чтобы не запоминать константу + a |= (1< +#include + +int main( ) +{ + unsigned int a=0xFFFFFF00, mask=-1; // mask = 0xffffffff + //~ mask = mask>>(32 - 2); + mask = 0b11; + a = a | mask; + printf("a = %x", a); + // a = ffffff03 + return 0; +} diff --git a/17_Seminar04/05_OR_AND.c b/17_Seminar04/05_OR_AND.c new file mode 100644 index 0000000..f820d7b --- /dev/null +++ b/17_Seminar04/05_OR_AND.c @@ -0,0 +1,11 @@ +#include +#include +#include + + +int main(void) +{ + int32_t x = 3, y = 8;//0b0011 = 3, 0b1000 = 8 + (x & y) ? printf("True ") : printf("False ");//0b0011 & 0b1000 = 0b0000 + (x && y) ? printf("True ") : printf("False ");//0b0011 && 0b1000 = 0b0001 +} diff --git a/18_Seminar05/00_switch_p1.c b/18_Seminar05/00_switch_p1.c new file mode 100644 index 0000000..f9a2772 --- /dev/null +++ b/18_Seminar05/00_switch_p1.c @@ -0,0 +1,30 @@ +#include + +int max(int a,int b) +{ + return a>b ? a : b; +} + +int main() +{ + int a,b; + scanf ("%d%d", &a,&b); + switch (max(a,b)) + { + case 2: + printf("case 2:\n"); + a *= 2 ; // Если expr == 2, то выполнится a += 5; из следующей ветки + //~ break; + case 3: + a += 5; + break; // А здесь произойдет выход + case 4: + a -= b; + break; + default: + break; + } + printf("%d", a); + return 0; //Завершить программу успешно +} + diff --git a/18_Seminar05/01_printf_p2.c b/18_Seminar05/01_printf_p2.c new file mode 100644 index 0000000..2e761ce --- /dev/null +++ b/18_Seminar05/01_printf_p2.c @@ -0,0 +1,14 @@ +#include + +int main() +{ + int n; + n=1; + while (n <= 5) { + printf("%d\n", n); + n = n+2; + } + return 0; +} + + diff --git a/18_Seminar05/02_printf_p4.c b/18_Seminar05/02_printf_p4.c new file mode 100644 index 0000000..6cadd10 --- /dev/null +++ b/18_Seminar05/02_printf_p4.c @@ -0,0 +1,15 @@ +#include + +int main() +{ + int n; + n=5; + while (n >= 1) { + printf("%d\n", n*n*n); + n--; + } + return 0; +} + + + diff --git a/18_Seminar05/03_digits_p7.c b/18_Seminar05/03_digits_p7.c new file mode 100644 index 0000000..cba4271 --- /dev/null +++ b/18_Seminar05/03_digits_p7.c @@ -0,0 +1,18 @@ +#include + +int main( ) +{ + int n, count; + printf("Input number: "); + scanf("%d", &n); + count = 0; + while (n != 0) + { + count++; + n = n / 10; // Отбросили одну цифру + } + //~ for(count = 0;n != 0;n /= 10,count++) //; Отбросили одну цифру + //~ {} + printf("In %d found %d digits", n, count); + return 0; +} diff --git a/18_Seminar05/04_for_1_p8.c b/18_Seminar05/04_for_1_p8.c new file mode 100644 index 0000000..984c6c2 --- /dev/null +++ b/18_Seminar05/04_for_1_p8.c @@ -0,0 +1,10 @@ +#include + +int main( ) +{ + int i, a=1; + for(i=1; i>=3; i--) + a++; + printf("%d", a); + return 0; +} diff --git a/18_Seminar05/05_for_2_p8.c b/18_Seminar05/05_for_2_p8.c new file mode 100644 index 0000000..9ade938 --- /dev/null +++ b/18_Seminar05/05_for_2_p8.c @@ -0,0 +1,10 @@ +#include + +int main( ) +{ + int i, a=1; + for(i=1; i<=4; i--) + a++; + printf("%d", a); + return 0; +} diff --git a/18_Seminar05/06_deviders_p11.c b/18_Seminar05/06_deviders_p11.c new file mode 100644 index 0000000..b990347 --- /dev/null +++ b/18_Seminar05/06_deviders_p11.c @@ -0,0 +1,22 @@ +#include +#include + +int main(void) +{ + uint32_t n, i=2; + scanf("%" PRIu32, &n); + while(i<=n) + { + if(n%i == 0) + { + printf("%" PRIu32 " ",i); + n/=i; + } + else + { + i++; + } + } + printf("\n"); + return 0; +} diff --git a/18_Seminar05/07_greater_number_p13.c b/18_Seminar05/07_greater_number_p13.c new file mode 100644 index 0000000..b0f080f --- /dev/null +++ b/18_Seminar05/07_greater_number_p13.c @@ -0,0 +1,12 @@ +#include +#include + +int main(void) +{ + unsigned int i,n, pow2=1; + scanf("%u",&n); + for(i=0; pow2 +#include + +int main() +{ + + + uint32_t count=0; + for(uint32_t i=11; i<=999; i++) + { + if ((i < 100) && (i%10 == i/10)) // 11, 22, ... + { + count++; + printf("%" PRIu32 " ",i); + } + else if(i>=100 && i%10 == i/100) // 111, 121, 131, ... + { + count++; + printf("%" PRIu32 " ",i); + } + } + printf("Total polindroms %" PRIu32 "\n",count); + return 0; +} + diff --git a/18_Seminar05/09_printf_p16.c b/18_Seminar05/09_printf_p16.c new file mode 100644 index 0000000..d4fc0b6 --- /dev/null +++ b/18_Seminar05/09_printf_p16.c @@ -0,0 +1,14 @@ +#include + +int a=5; + +int main(){ + int a=10; + if (1==1) { + int a=20; /*Локальная переменная видна только внутри if. Не стоит называть переменные также как и во внешней области видимости */ + printf("a = %d\n",a); + } + printf("a = %d\n",a); + return 0; +} + diff --git a/18_Seminar05/10_count_p19.c b/18_Seminar05/10_count_p19.c new file mode 100644 index 0000000..2038a7a --- /dev/null +++ b/18_Seminar05/10_count_p19.c @@ -0,0 +1,17 @@ +#include +int main() +{ + int i, count = 0; + for (i = 102; i <= 987; i++) + { + int d1 = i % 10; + int d2 = i % 100/10; + int d3 = i / 100; + if (d1!=d2 && d1!=d3 && d2!=d3) + //if (i / 100 != i % 10 && i / 100 != i % 100 / 10 && i % 100 / 10 != i % 10) + count++; + } + printf("%d", count); + return 0; +} + diff --git a/18_Seminar05/11_palindrom_p21.c b/18_Seminar05/11_palindrom_p21.c new file mode 100644 index 0000000..f4db376 --- /dev/null +++ b/18_Seminar05/11_palindrom_p21.c @@ -0,0 +1,19 @@ +#include +#include + +int main() +{ + uint32_t count=0; + for(uint32_t i=11;i<=999;i++) { + if ( i<100 && i%10 == i/10 ) { + count++; + printf("%" PRIu32 " ",i); + } else if(i>=100 && i%10 == i/100) { + count++; + printf("%" PRIu32 " ",i); + } + } + printf("Total polindroms %" PRIu32 "\n",count); + return 0; +} + diff --git a/19_Seminar06/00_float_p3.c b/19_Seminar06/00_float_p3.c new file mode 100644 index 0000000..e1c451c --- /dev/null +++ b/19_Seminar06/00_float_p3.c @@ -0,0 +1,19 @@ +#include + +int main() +{ + int X1, Y1, X2, Y2; //Объявить целочисленные переменные + float k, b; //Объявить вещественные переменные + scanf ("%d %d %d %d", &X1, &Y1, &X2, &Y2); //Считать числа и записать по адресам + //~ k=((Y1-Y2)/(float)(X1-X2)); + k=(Y1-Y2)/(X1-X2); + b=Y2-k*X2; + printf("%.2f %.2f\n", k, b); + float dX = X1-X2; + float dY = Y1-Y2; + k = dY/dX; + b=Y2-k*X2; + printf("%.2f %.2f\n", k, b); + return 0; //Завершить программу успешно +} + diff --git a/20_Seminar07/00_func_p2.c b/20_Seminar07/00_func_p2.c new file mode 100644 index 0000000..1941852 --- /dev/null +++ b/20_Seminar07/00_func_p2.c @@ -0,0 +1,15 @@ +#include + +void func(void) { + int a=5; //локальная переменная + a++; + printf("a = %d\n",a); +} + +int main(void) +{ + func(); + func(); + func(); + return 0; +} diff --git a/20_Seminar07/01_f_p4.c b/20_Seminar07/01_f_p4.c new file mode 100644 index 0000000..e0c5146 --- /dev/null +++ b/20_Seminar07/01_f_p4.c @@ -0,0 +1,17 @@ +#include + +int y=1; + +int f(int *pa) { + static int x=3; + x += y;//3+2=5//5+2=7 + return x + *pa + y;//5+10+2=17//7+10+2=19 +} + +int main(void){ + int n = 10; + y++;//2 + printf("Answer = %d\n", f(&n)); + printf("Answer = %d\n", f(&n)); +} + diff --git a/20_Seminar07/02_taylor_p9_10.c b/20_Seminar07/02_taylor_p9_10.c new file mode 100644 index 0000000..5aa3f08 --- /dev/null +++ b/20_Seminar07/02_taylor_p9_10.c @@ -0,0 +1,29 @@ +#include +#include +const float PI = 3.1415926535; + +double sinx(double x) +{ + double Xn = x; + double sum = 0.0; + int i = 1; + do + { + sum += Xn; + Xn *= -1.0 * x * x / ((2 * i) * (2 * i + 1)); + i++; + } + while (fabs(Xn) > 0.0000001); + return sum; +} + +int main() +{ + double x; + scanf("%lf",&x); + x *= PI/180.0; + printf("sinx =%lf\tlibSin =%f",sin(x),sinx(x)); + //~ printf("%.3f",sinx(x)); + return 0; +} + diff --git a/20_Seminar07/03_refact_1_p11.c b/20_Seminar07/03_refact_1_p11.c new file mode 100644 index 0000000..b0e0b37 --- /dev/null +++ b/20_Seminar07/03_refact_1_p11.c @@ -0,0 +1,32 @@ +#include +#include +#include + +float const END = 0.000001; + +double teylor(double Xn, int n, double x,double sum) +{ + if (fabs(Xn)>END) + { + n+=1; + Xn*=(-1)*x*x/(2*n*(2*n-1)); + sum+=Xn; + return teylor(Xn, n, x, sum); + } + return sum; +} + +int main() +{ +double x; + setlocale( LC_ALL,".utf-8" ); + printf("Рекурсия. Ряд Тейлора. Косинус.\n"); + printf("Введите икс в градусах:"); + scanf("%lf", &x); + const float PI = 3.1415926535; + x *= PI/180.0; + printf("Cos = %lf\n", teylor(1.0,0,x,1.0)); + printf("Cos = %lf\n", cos(x)); + return 0; +} + diff --git a/20_Seminar07/04_refact_2_p12.c b/20_Seminar07/04_refact_2_p12.c new file mode 100644 index 0000000..119dcdb --- /dev/null +++ b/20_Seminar07/04_refact_2_p12.c @@ -0,0 +1,36 @@ +#include "stdafx.h" +#include +#include +#include +#include +#include + +extern float END = 0.000001; +double teylor(double summ, double z, int n); +float x; +float VAL, LASTVAL; +long float z=1; +long float summ=1; +float d=1; +int n=0; + +int main(){ + setlocale( LC_ALL,"Russian" ); + printf("Рекурсия. Ряд Тейлора. Косинус.\n"); + printf("Введите икс:"); + scanf("%f", &x); + teylor(0,z,0); + printf("Cos = %lf\n", d); + getch(); +} + +double teylor(double summ, double z, int n){ + if (x==0) return 1; + else if (fabs(z)>END){ + n+=1; + z=(-1)*z*x*x/(2*n*(2*n-1)); + d=d+z; + return summ=teylor(summ+d, z, n); + } +} + diff --git a/20_Seminar07/05_prbs_p14.c b/20_Seminar07/05_prbs_p14.c new file mode 100644 index 0000000..4e432cd --- /dev/null +++ b/20_Seminar07/05_prbs_p14.c @@ -0,0 +1,23 @@ +#include +#include +#include + +int main(int argc, char* argv[]) +{ + uint8_t start = 0x08; + uint8_t a = start; + int i; + for (i = 1;; i++) + { + int newbit = (((a >> 6) ^ (a >> 5)) & 1); + a = ((a << 1) | newbit) & 0x7f; + printf("%x\n", a); + if (a == start) + { + printf("repetition period is %d\n", i); + break; + } + } + return 0; +} + diff --git a/21_Seminar08/00_random_p3.c b/21_Seminar08/00_random_p3.c new file mode 100644 index 0000000..f1dabd1 --- /dev/null +++ b/21_Seminar08/00_random_p3.c @@ -0,0 +1,18 @@ +#include +#include +#include + +int main() +{ + int x; + printf("MAX RANDOM = %d\n",RAND_MAX); //2147483647 + // Задать начальное значение последовательности + srand(123); // одни и те же числа, seed задан константно + //~ srand( time(NULL) ); // числа меняются при каждом запуске программы + //Случайное целое число в интервале [0, RAND_MAX] + x = rand(); + printf("x = %d\n",x); // первое случайное число + x = rand(); + printf("x = %d\n",x); // другое случайное число + return 0; +} diff --git a/21_Seminar08/01_random_func_p4.c b/21_Seminar08/01_random_func_p4.c new file mode 100644 index 0000000..1e7ba5f --- /dev/null +++ b/21_Seminar08/01_random_func_p4.c @@ -0,0 +1,22 @@ +#include +#include + +enum {SIZE = 10, SEED = 123}; + +int random_number(int n) +{ + return rand() % n; +} + +int main(void) +{ + int a[SIZE], i; + srand(SEED); + printf("Array:\n"); + for (i = 0; i < SIZE; i++ ) + { + a[i] = random_number(100) - 50; + printf("%4d", a[i]); + } + return 0; +} diff --git a/21_Seminar08/02_random_generator_p5.c b/21_Seminar08/02_random_generator_p5.c new file mode 100644 index 0000000..d8dca21 --- /dev/null +++ b/21_Seminar08/02_random_generator_p5.c @@ -0,0 +1,31 @@ +#include +#include + +enum {SIZE = 10, SEED = 123}; + +int random_number(int n) +{ + return rand() % n; +} + +void init_array(int size, int a[], int max_random) +{ + for (size_t i = 0;i +#include +#include + +#define SIZE 12 + +enum { SEED = 123}; + +int random_number(int n) +{ + return rand() % n; +} + +void init_array(int size, int a[], int max_random) +{ + for (size_t i = 0;i= i ; j-- ) + { + if ( a[j] > a[j+1] ) + { + swap(&a[j], &a[j+1]); + flag = 1; // поднять флаг если есть обмен + } + } + i++; + } + while ( flag ); // выход при flag = 0 +} + +// Сортировка выбором +void choose_sort_array(int a[], int size) +{ + int nMin=0; + for(int i = 0; i < size-1 ; i++ ) + { + nMin = i; + for (int j = i+1; j < size; j++) + { + //~ printf("i=%d,j=%d,a[j]=%d,a[nMin]=%d\n",i,j,a[j],a[nMin]); + if( a[j] < a[nMin] ) + { + nMin = j; + printf("i=%d,j=%d,a[j]=%d,a[nMin]=%d\n",i,j,a[j],a[nMin]); + } + } + if(nMin != i) + { + swap(&a[i], &a[nMin]); + printf("i=%d,nMin=%d,a[i]=%d,a[nMin]=%d\n",i,nMin,a[i],a[nMin]); + } + } +} + +int main(void) +{ + int arr[SIZE]; + //~ Input(arr,SIZE); + init_array(SIZE, arr, 100); + Print(arr,SIZE); + shift_array_left(arr,SIZE); + Print(arr,SIZE); + revers_array(arr,SIZE); + Print(arr,SIZE); + buble_sort_array(arr,SIZE); + Print(arr,SIZE); + choose_sort_array(arr,SIZE); + Print(arr,SIZE); + return 0; +} diff --git a/21_Seminar08/04_crc8_p19_20.c b/21_Seminar08/04_crc8_p19_20.c new file mode 100644 index 0000000..23b81fd --- /dev/null +++ b/21_Seminar08/04_crc8_p19_20.c @@ -0,0 +1,33 @@ +#include + +/* Name : CRC-8 +Poly : 0x31 x^8 + x^5 + x^4 + 1 +Init : 0xFF +Revert: false +XorOut: 0x00 +Check : 0xF7 ("123456789") +MaxLen: 15 байт(127 бит) - обнаружение одинарных, двойных, тройных +и всех нечетных ошибок */ +unsigned char Crc8(unsigned char*pcBlock, unsigned int len) +{ + unsigned char crc=0xFF; + unsigned int i; + while (len--) + { + crc^=*pcBlock++; + for (i =0; i <8; i++) + crc=crc&0x80? (crc<<1) ^0x31:crc<<1; + } + return crc; +} + +int main(int argc, char **argv) +{ + unsigned char arr[] = {'1','2','3','4','5','6','7','8','9',0}; + arr[9] = Crc8(arr,9); + printf("%x \n",Crc8(arr,9)); + arr[3]=7; + printf("%x \n",Crc8(arr,9)); + return 0; +} + diff --git a/21_Seminar08/05_isPrime_p23_24.c b/21_Seminar08/05_isPrime_p23_24.c new file mode 100644 index 0000000..959ae6d --- /dev/null +++ b/21_Seminar08/05_isPrime_p23_24.c @@ -0,0 +1,36 @@ +#include + +enum bool {false = 0,true = 1}; + +void Input(enum bool isPrime[],int n) +{ + for (int i = 0; i < n; i++) + isPrime[i] = true; +} + +void Print(enum bool isPrime[],int n) +{ + for (int i = 2; i < n; i++) + if (isPrime[i]) + printf("%d ",i); +} + +void Rot(enum bool isPrime[],int n) +{ + for (int i = 2; i*i < n; i++) + { + if (isPrime[i]) + for(int j=i*i;j<=n;j+=i) + isPrime[j] = false; + } +} + +int main() +{ + int n = 255; + enum bool isPrime[n]; + Input(isPrime,n); + Rot(isPrime,n); + Print(isPrime,n); + return 0; +} diff --git a/21_Seminar08/06_isPrime_refact_p25.c b/21_Seminar08/06_isPrime_refact_p25.c new file mode 100644 index 0000000..e8ec296 --- /dev/null +++ b/21_Seminar08/06_isPrime_refact_p25.c @@ -0,0 +1,23 @@ +#include + +int main(int argc, char **argv) +{ + int arr[255] = {2,3}; + int capacity = 2; + int i,j; + for(i=4;i<255;++i) + { + int isPrime=1; + for(j=0;j +#include + +int main() +{ + char s1[100]="", s2[100]=""; + //~ scanf("%s%s",s1,s2); + //~ fscanf("%d;%d;%d",a1,a2,a3); + int r = scanf("%[0-9]=%[a-z]", s1, s2); + printf("s1 = %s s2 = %s\n",s1,s2); + return 0; +} diff --git a/22_Seminar09/01_scanf_2_p5.c b/22_Seminar09/01_scanf_2_p5.c new file mode 100644 index 0000000..c0fee72 --- /dev/null +++ b/22_Seminar09/01_scanf_2_p5.c @@ -0,0 +1,12 @@ +#include +#include + +int main() +{ + char s1[100]="", s2[100]=""; + int r; + r=scanf("%[0-9]=%[a-z]",s1,s2); //prog.exe < test.txt + printf("r = %d\n",r); + printf("s1 = %s s2 = %s\n",s1,s2); + return 0; +} diff --git a/22_Seminar09/02_pointer_increase_p8.c b/22_Seminar09/02_pointer_increase_p8.c new file mode 100644 index 0000000..b9fc283 --- /dev/null +++ b/22_Seminar09/02_pointer_increase_p8.c @@ -0,0 +1,11 @@ +#include + +int main() +{ + int a[5] = {10,20,30,40,50}; + int *pa, n; + pa = a; + n = *pa+2; // a[0] + 2 + printf("n = %d\n", n); + return 0; +} diff --git a/22_Seminar09/03_pointer_difference_p10.c b/22_Seminar09/03_pointer_difference_p10.c new file mode 100644 index 0000000..843f5d1 --- /dev/null +++ b/22_Seminar09/03_pointer_difference_p10.c @@ -0,0 +1,11 @@ +#include + +int main() +{ + int a[5] = {10,20,30,40,50}; + int *pa, *qa; + pa = &a[1]; + qa = &a[3]; + printf("%p - %p = %lld\n",qa,pa, qa-pa); + return 0; +} diff --git a/22_Seminar09/04_pointer_printf_p12.c b/22_Seminar09/04_pointer_printf_p12.c new file mode 100644 index 0000000..ef1aa40 --- /dev/null +++ b/22_Seminar09/04_pointer_printf_p12.c @@ -0,0 +1,12 @@ +#include + +int main() +{ + int a[5] = {10,20,30,40,50}; + int *pa, n=10; + pa = a+2; + *pa++ = n+3; + printf("%d\n",*pa); + printf("%d %d %d %d %d\n", a[0],a[1],a[2],a[3],a[4]); + return 0; +} diff --git a/22_Seminar09/05_sum_p14.c b/22_Seminar09/05_sum_p14.c new file mode 100644 index 0000000..b103149 --- /dev/null +++ b/22_Seminar09/05_sum_p14.c @@ -0,0 +1,18 @@ +#include + +int sum(int a[], int size) +{ + int i, s=0; + for(i=0;i + +#define SIZE 5 + +int sum0(int* a0) +{ + int i, s=0; + for(i=1;i + +int main(int argc, char **argv) +{ + { + int matr[3][2]; + int *pm; + pm = (int*)matr; + //~ pm[1][1] = 123; //ТАК НЕЛЬЗЯ + *(pm+2*1+1)=123; + printf("%d\n",matr[1][1]); + } + { + + } + return 0; +} diff --git a/22_Seminar09/07_arr_printf_p22.c b/22_Seminar09/07_arr_printf_p22.c new file mode 100644 index 0000000..b3a43cd --- /dev/null +++ b/22_Seminar09/07_arr_printf_p22.c @@ -0,0 +1,12 @@ +#include + +int main(int argc, char **argv) +{ + int matr[3][2]; + //~ int *pm[2]; //массив из 2-ух указателей *int + int (*pm)[2]; //указатель на строку из 2-ух int + pm = matr; + pm[1][1] = 123; //теперь все ок + printf("%d\n",matr[1][1]); // 123 + return 0; +} diff --git a/22_Seminar09/07_arr_printf_p23.c b/22_Seminar09/07_arr_printf_p23.c new file mode 100644 index 0000000..7512500 --- /dev/null +++ b/22_Seminar09/07_arr_printf_p23.c @@ -0,0 +1,19 @@ +#include + +int main(int argc, char **argv) +{ + int m[3][3] = + { + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9} + }; + int *p1; + int (*p2)[3]; + p1 = m[1]; + p2 = m + 1; + p1++; + p2++; + printf ("%d %d\n", *p1, **p2); + return 0; +} diff --git a/22_Seminar09/08_VLA_p26.c b/22_Seminar09/08_VLA_p26.c new file mode 100644 index 0000000..44cfa56 --- /dev/null +++ b/22_Seminar09/08_VLA_p26.c @@ -0,0 +1,11 @@ +#include +#include + + +int main(int argc, char **argv) +{ + uint32_t n; + scanf("%u",&n); //вводим количество элементов + int32_t ar[n]; //создаем VLA массив + return 0; +} diff --git a/22_Seminar09/08_qsort_p31.c b/22_Seminar09/08_qsort_p31.c new file mode 100644 index 0000000..6042457 --- /dev/null +++ b/22_Seminar09/08_qsort_p31.c @@ -0,0 +1,39 @@ +#include +#include +#include +#define SIZE 5 + +int comparator (const int *, const int *); + +/* сравнение двух целых V1 */ +int comparator (const int *a, const int *b) +{ + return *a - *b; + //~ return *b - *a;//обрасный порядок +} + +/* сравнение двух целых V1 */ +//int func_name(const void *arg1, const void *arg2) +//~ int comparator (const void *a, const void *b) { + //~ return *(int*)a - *(int*)b; + //~ // return *a - *b;//ОШИБКА +//~ } + +void print(int n,int a[]) +{ + for (int i = 0; i < n; i++) + { + printf("%d,",a[i]); + } + printf("\n"); +} + +int main(void) +{ + int a[SIZE]={3,5,3,2,1}; + print(SIZE,a); + + //~ qsort(a, SIZE, sizeof(int),comparator); + qsort(a, SIZE, sizeof (int), (int(*) (const void *, const void *)) comparator); + print(SIZE,a); +} diff --git a/22_Seminar09/08_str_p28.c b/22_Seminar09/08_str_p28.c new file mode 100644 index 0000000..1b04703 --- /dev/null +++ b/22_Seminar09/08_str_p28.c @@ -0,0 +1,11 @@ +#include +#include + + +int main(int argc, char **argv) +{ + char *ps[] = {"one", "two", "three", NULL}; // NULL признак конца + for(uint32_t i=0; ps[i] ; i++)//ps[i]!=NULL + printf("%s\n", ps[i]); + return 0; +} diff --git a/23_Seminar10/00_struct_size_p3.c b/23_Seminar10/00_struct_size_p3.c new file mode 100644 index 0000000..7df729e --- /dev/null +++ b/23_Seminar10/00_struct_size_p3.c @@ -0,0 +1,28 @@ +#include +#include + +//~ #pragma pack(push, 1) +struct str1 { + uint32_t u; + uint8_t c1; + int32_t i; + uint8_t c2; +} s1; +//~ #pragma pack(pop) + + +//~ #pragma pack(push, 1) +struct str2 { + uint32_t u; + int32_t i; + uint8_t c1; + uint8_t c2; +} s2; +//~ #pragma pack(pop) + +int main() +{ + printf("Sizeof s1 = %llu\n", sizeof(s1)); + printf("Sizeof s2 = %llu\n", sizeof(s2)); + return 0; +} diff --git a/23_Seminar10/01_union_p7.c b/23_Seminar10/01_union_p7.c new file mode 100644 index 0000000..bc4d89a --- /dev/null +++ b/23_Seminar10/01_union_p7.c @@ -0,0 +1,22 @@ +#include +#include + +union intbytes { + uint32_t number; + uint8_t bytes[4]; +} d; + +int main() +{ + d.number = 0x12345678; + printf ("Number %x",d.number); + printf(" in memory is: %x %x %x %x\n", d.bytes[0], + d.bytes[1], d.bytes[2], d.bytes[3]); + // Number 12345678 in memory is: 78 56 34 12 + uint32_t number = 0x12345678; + + printf(" in memory is: %x\n",(number >> 8)&0xff); + + + return 0; +} diff --git a/23_Seminar10/02_union_pi_p8.c b/23_Seminar10/02_union_pi_p8.c new file mode 100644 index 0000000..b504bfd --- /dev/null +++ b/23_Seminar10/02_union_pi_p8.c @@ -0,0 +1,18 @@ +#include +#include + +union intbytes { + uint32_t number; + float real; + uint8_t bytes[4]; +} d; + +int main() +{ + d.real = 3.14; + printf ("Real %f\n",d.real); + printf ("Number %x",d.number); + printf(" in memory is: %x %x %x %x\n", d.bytes[0], + d.bytes[1], d.bytes[2], d.bytes[3]); + return 0; +} diff --git a/23_Seminar10/03_bit_field_p11.c b/23_Seminar10/03_bit_field_p11.c new file mode 100644 index 0000000..d6f5a7c --- /dev/null +++ b/23_Seminar10/03_bit_field_p11.c @@ -0,0 +1,15 @@ +#include + +struct point +{ + unsigned char x:5; // 0-31 + unsigned char y:3; // 0-7 +}; + +int main(void) +{ + struct point center = {0, 5}; + center.x = 2; + printf("x=%d y=%d size=%llu \n", center.x, center.y,sizeof(center)); // x=2 y=5 + return 0; +} diff --git a/23_Seminar10/04_sensor_p14_16.c b/23_Seminar10/04_sensor_p14_16.c new file mode 100644 index 0000000..f0faf74 --- /dev/null +++ b/23_Seminar10/04_sensor_p14_16.c @@ -0,0 +1,120 @@ +#include +#include +#include + +#define SIZE 30 + +struct sensor { + uint8_t day; + uint8_t month; + uint16_t year; + int8_t t; +}; + +void cgangeIJ(struct sensor* info,int i, int j){ +struct sensor temp; + temp=info[i]; + info[i]=info[j]; + info[j]=temp; +} +//упорядочивающую его по неубыванию температуры +void SortByT(struct sensor* info,int n){ + for(int i=0; i=info[j].t) + cgangeIJ(info,i,j); +} + +unsigned int DateToInt(struct sensor* info){ + return info->year << 16 | info->month << 8 | info->day; +} +//упорядочивающую его по дате +void SortByDate(struct sensor* info,int n){ + for(int i=0; i= DateToInt(info+j)) + cgangeIJ(info,i,j); +} + +void AddRecord(struct sensor* info,int number, +uint16_t year,uint8_t month,uint8_t day,int8_t t){ + info[number].year = year; + info[number].month = month; + info[number].day = day; + info[number].t = t; +} + +struct data +{ + uint32_t number; + struct sensor info[SIZE]; +} d; + +void load_bin(struct sensor* info,int number) +{ + //Проверка на открытие файла + FILE* f = fopen("sensor.bin","rb"); + //Проверка на считанные данные + fread(info,number*sizeof(struct sensor),1,f); + fclose(f); +} + +void save_bin(struct sensor* info,int number) +{ + FILE* f = fopen("sensor.bin","wb"); + fwrite(info,number*sizeof(struct sensor),1,f); + fclose(f); +} + +void load_bin_d(struct data* d) +{ + //Проверка на открытие файла + FILE* f = fopen("sensor.bin","rb"); + //Проверка на считанные данные + fread(&d->number,sizeof(d->number),1,f); + fread(d->info,d->number*sizeof(struct sensor),1,f); + fclose(f); +} + +void save_bin_d(struct data* d) +{ + FILE* f = fopen("sensor.bin","wb"); + fwrite(&d->number,sizeof(d->number),1,f); + fwrite(d->info,d->number*sizeof(struct sensor),1,f); + fclose(f); +} + +int AddInfo(struct sensor* info){ +int counter=0; + AddRecord(info,counter++,2021,9,16,9); + AddRecord(info,counter++,2022,9,2,-9); + AddRecord(info,counter++,2021,1,7,8); + AddRecord(info,counter++,2021,9,5,1); + return counter; +} + +void print(struct sensor* info,int number){ + printf("===================================\n"); + for(int i=0;i +#include +#include + +#define SIZE 30 + +struct sensor { + uint8_t day; + uint8_t month; + uint16_t year; + int8_t t; +}; + +void cgangeIJ(struct sensor* info,int i, int j){ +struct sensor temp; + temp=info[i]; + info[i]=info[j]; + info[j]=temp; +} +//упорядочивающую его по неубыванию температуры +void SortByT(struct sensor* info,int n){ + for(int i=0; i=info[j].t) + cgangeIJ(info,i,j); +} + +unsigned int DateToInt(struct sensor* info){ + return info->year << 16 | info->month << 8 | info->day; +} +//упорядочивающую его по дате +void SortByDate(struct sensor* info,int n){ + for(int i=0; i= DateToInt(info+j)) + cgangeIJ(info,i,j); +} + +void AddRecord(struct sensor* info,int number, +uint16_t year,uint8_t month,uint8_t day,int8_t t){ + info[number].year = year; + info[number].month = month; + info[number].day = day; + info[number].t = t; +} + +struct data +{ + uint32_t number; + struct sensor info[SIZE]; +} d; + +void load_bin(struct sensor* info,int number) +{ + //Проверка на открытие файла + FILE* f = fopen("sensor.bin","rb"); + //Проверка на считанные данные + fread(info,number*sizeof(struct sensor),1,f); + fclose(f); +} + +void save_bin(struct sensor* info,int number) +{ + FILE* f = fopen("sensor.bin","wb"); + fwrite(info,number*sizeof(struct sensor),1,f); + fclose(f); +} + +void load_bin_d(struct data* d) +{ + //Проверка на открытие файла + FILE* f = fopen("sensor.bin","rb"); + //Проверка на считанные данные + fread(&d->number,sizeof(d->number),1,f); + fread(d->info,d->number*sizeof(struct sensor),1,f); + fclose(f); +} + +void save_bin_d(struct data* d) +{ + FILE* f = fopen("sensor.bin","wb"); + fwrite(&d->number,sizeof(d->number),1,f); + fwrite(d->info,d->number*sizeof(struct sensor),1,f); + fclose(f); +} + +int AddInfo(struct sensor* info){ +int counter=0; + AddRecord(info,counter++,2021,9,16,9); + AddRecord(info,counter++,2022,9,2,-9); + AddRecord(info,counter++,2021,1,7,8); + AddRecord(info,counter++,2021,9,5,1); + return counter; +} + +void print(struct sensor* info,int number){ + printf("===================================\n"); + for(int i=0;ibytes,sizeof(d->_data.number),1,f); + fread(d->bytes+sizeof(d->_data.number), + d->_data.number*sizeof(struct sensor),1,f); + fclose(f); +} + +void save_bin_ser(union sensor_serdes* d) +{ + FILE* f = fopen("sensor.bin","wb"); + fwrite(d->bytes,sizeof(d->_data.number),1,f); + fwrite(d->bytes+sizeof(d->_data.number), + d->_data.number*sizeof(struct sensor),1,f); + fclose(f); +} + +int main(int argc, char **argv) +{ + struct data d; + union sensor_serdes* ds = (union sensor_serdes*)&d; + d.number=AddInfo(d.info); + print(d.info,d.number); + save_bin_ser(ds); + printf("\nSort by t\n"); + SortByT(d.info,d.number); + print(d.info,d.number); + printf("\nSort by date\n"); + SortByDate(d.info,d.number); + print(d.info,d.number); + load_bin_des(ds); + print(d.info,d.number); + return 0; +} diff --git a/23_Seminar10/test.c b/23_Seminar10/test.c new file mode 100644 index 0000000..f2fc9e1 --- /dev/null +++ b/23_Seminar10/test.c @@ -0,0 +1,149 @@ +#include +#include +#include + +#define SIZE 30 + +//~ #pragma pack(push, 1) +struct sensor +{ + uint16_t year; + uint8_t month; + uint8_t day; + int8_t t; +}; +//~ #pragma pack(pop) + +void cgangeIJ(struct sensor* info,int i, int j){ +struct sensor temp; + temp=info[i]; + info[i]=info[j]; + info[j]=temp; +} + +//упорядочивающую его по неубыванию температуры +void SortByT(struct sensor* info,int n){ + for(int i=0; i=info[j].t) + cgangeIJ(info,i,j); +} + +unsigned int DateToInt(struct sensor* info){ + return info->year << 16 | info->month << 8 | info->day; +} +//упорядочивающую его по дате +void SortByDate(struct sensor* info,int n){ + for(int i=0; i= DateToInt(info+j)) + cgangeIJ(info,i,j); +} + +void AddRecord(struct sensor info[],int number,uint16_t year,uint8_t month,uint8_t day,int8_t t){ + info[number].year = year; + info[number].month = month; + info[number].day = day; + info[number].t = t; +} + + +int AddInfo(struct sensor info[]) +{ +int counter=0; + AddRecord(info,counter++,2021,9,16,9); + AddRecord(info,counter++,2022,9,2,-9); + AddRecord(info,counter++,2021,1,7,8); + AddRecord(info,counter++,2021,9,5,1); + return counter; +} + +void print(struct sensor* info,int number){ + printf("===================================\n"); + for(int i=0;inumber;i++) + printf("%04d-%02d-%02d t=%3d\n", + d->info[i].year, + d->info[i].month, + d->info[i].day, + d->info[i].t); +} + +union sensor_serdes +{ + struct data _data; + uint8_t bytes[sizeof(struct data)]; +}; + +void load_bin_des(union sensor_serdes * d) +{ + FILE* f = fopen("sensor.bin","rb"); + fread(d->bytes,sizeof(d->_data.number),1,f); + fread(d->bytes+sizeof(d->_data.number),d->_data.number*sizeof(struct sensor),1,f); + fclose(f); +} + +void save_bin_ser(union sensor_serdes* d) +{ + FILE* f = fopen("sensor.bin","wb"); + fwrite(d->bytes,sizeof(d->_data.number),1,f); + fwrite(d->bytes+sizeof(d->_data.number),d->_data.number*sizeof(struct sensor),1,f); + fclose(f); +} + +int main(void) +{ + struct data d; + union sensor_serdes* ds = (union sensor_serdes*)&d; + d.number=AddInfo(d.info); + print(d.info,d.number); + save_bin_ser(ds); + printf("\nSort by t\n"); + SortByT(d.info,d.number); + print(d.info,d.number); + printf("\nSort by date\n"); + SortByDate(d.info,d.number); + print(d.info,d.number); + load_bin_des(ds); + print(d.info,d.number); + return 0; +} + diff --git a/24_Seminar11/00_file_p3_8.c b/24_Seminar11/00_file_p3_8.c new file mode 100644 index 0000000..e803fde --- /dev/null +++ b/24_Seminar11/00_file_p3_8.c @@ -0,0 +1,113 @@ +#include +#include +#include +#include +#include +#include +enum {PATH_LENGTH=256}; + +#define STR255 "%255s" + +void convert_path_to_full(char *full_path, const char *dir) { + if(dir[0]=='/') { + strcpy(full_path, dir); + } else if (dir[0]=='.') { + getcwd(full_path,PATH_LENGTH); + } + else { + getcwd(full_path,PATH_LENGTH); + strcat(full_path, "/"); + strcat(full_path, dir); + } + if(full_path[strlen(full_path)-1] !='/') + strcat(full_path,"/");// добавляем / в конце +} +/* +void print_filetype(int type) { + switch (type) { + case DT_BLK: printf("b "); break; + case DT_CHR: printf("c "); break; + case DT_DIR: printf("d "); break; //directory + case DT_FIFO: printf("p "); break; //fifo + case DT_LNK: printf("l "); break; //Sym link + case DT_SOCK: printf("s "); break; //Filetype isn't identified + default: printf(" "); break; + } +} +*/ +/** + Расширить строку пробелами. + @print_lenth длина до которой надо расширить +*/ +void print_space(int print_lenth, int str_lenth) { + while( (print_lenth - str_lenth)>0 ) { + putchar(' '); + str_lenth++; + } +} +void print_tab(int tab_number) { + for(int t=1; td_name[0]=='.' )// пропускаем поддиректории + continue; + char full_filename[PATH_LENGTH]={0}; + files_number++; + print_tab(tab_count);//отступы при рекурсии + printf("%4d : ",files_number); + //print_filetype(entry->d_type); + //не работает для Windows + strcpy(full_filename, full_path); + strcat(full_filename, entry->d_name); + printf("%s", entry->d_name); + print_space(20, entry->d_namlen); + if (!stat(full_filename, &file_stats)){ + print_file_size(file_stats.st_size); + printf("\n"); + } + else { + printf("stat failed for this file\n"); + perror(0); + } + } + closedir(folder); + tab_count--; +} + +int main(void) +{ + char dir[PATH_LENGTH], buf[PATH_LENGTH]; + printf("Input dir: "); + scanf(STR255,dir); + convert_path_to_full(buf, dir); + printf("ls for folder %s\n",buf); + ls(dir); + return 0; +} diff --git a/25_Seminar12/00_file_p2_5.c b/25_Seminar12/00_file_p2_5.c new file mode 100644 index 0000000..e803fde --- /dev/null +++ b/25_Seminar12/00_file_p2_5.c @@ -0,0 +1,113 @@ +#include +#include +#include +#include +#include +#include +enum {PATH_LENGTH=256}; + +#define STR255 "%255s" + +void convert_path_to_full(char *full_path, const char *dir) { + if(dir[0]=='/') { + strcpy(full_path, dir); + } else if (dir[0]=='.') { + getcwd(full_path,PATH_LENGTH); + } + else { + getcwd(full_path,PATH_LENGTH); + strcat(full_path, "/"); + strcat(full_path, dir); + } + if(full_path[strlen(full_path)-1] !='/') + strcat(full_path,"/");// добавляем / в конце +} +/* +void print_filetype(int type) { + switch (type) { + case DT_BLK: printf("b "); break; + case DT_CHR: printf("c "); break; + case DT_DIR: printf("d "); break; //directory + case DT_FIFO: printf("p "); break; //fifo + case DT_LNK: printf("l "); break; //Sym link + case DT_SOCK: printf("s "); break; //Filetype isn't identified + default: printf(" "); break; + } +} +*/ +/** + Расширить строку пробелами. + @print_lenth длина до которой надо расширить +*/ +void print_space(int print_lenth, int str_lenth) { + while( (print_lenth - str_lenth)>0 ) { + putchar(' '); + str_lenth++; + } +} +void print_tab(int tab_number) { + for(int t=1; td_name[0]=='.' )// пропускаем поддиректории + continue; + char full_filename[PATH_LENGTH]={0}; + files_number++; + print_tab(tab_count);//отступы при рекурсии + printf("%4d : ",files_number); + //print_filetype(entry->d_type); + //не работает для Windows + strcpy(full_filename, full_path); + strcat(full_filename, entry->d_name); + printf("%s", entry->d_name); + print_space(20, entry->d_namlen); + if (!stat(full_filename, &file_stats)){ + print_file_size(file_stats.st_size); + printf("\n"); + } + else { + printf("stat failed for this file\n"); + perror(0); + } + } + closedir(folder); + tab_count--; +} + +int main(void) +{ + char dir[PATH_LENGTH], buf[PATH_LENGTH]; + printf("Input dir: "); + scanf(STR255,dir); + convert_path_to_full(buf, dir); + printf("ls for folder %s\n",buf); + ls(dir); + return 0; +} diff --git a/25_Seminar12/01_macros_sum_p7.c b/25_Seminar12/01_macros_sum_p7.c new file mode 100644 index 0000000..f871777 --- /dev/null +++ b/25_Seminar12/01_macros_sum_p7.c @@ -0,0 +1,11 @@ +#include + +#define SUM(a,b) (a) + (b) + +int main(void) +{ + int a=5, b; + b = SUM(a,3) * 10 ; + printf("a = %d b = %d\n",a, b); + return 0; +} diff --git a/25_Seminar12/02_macros_sum_2_p9.c b/25_Seminar12/02_macros_sum_2_p9.c new file mode 100644 index 0000000..cc0f62d --- /dev/null +++ b/25_Seminar12/02_macros_sum_2_p9.c @@ -0,0 +1,11 @@ +#include + +#define SUM(a,b) ((a) + (b)) + +int main(void) +{ + int a=5, b; + b = SUM(a,3) * 10 ; + printf("a = %d b = %d\n",a, b); + return 0; +} diff --git a/25_Seminar12/03_macros_max_p11.c b/25_Seminar12/03_macros_max_p11.c new file mode 100644 index 0000000..efc0042 --- /dev/null +++ b/25_Seminar12/03_macros_max_p11.c @@ -0,0 +1,11 @@ +#include + +#define MAX(a,b) ((a)>=(b)?(a):(b)) + +int main(void) +{ + int a=5, b=7, c; + c = MAX(a,++b) ; + printf("c = %d\n", c); + return 0; +} diff --git a/25_Seminar12/04_macros_swap_p13.c b/25_Seminar12/04_macros_swap_p13.c new file mode 100644 index 0000000..b8e17a6 --- /dev/null +++ b/25_Seminar12/04_macros_swap_p13.c @@ -0,0 +1,14 @@ +#include + +#define SWAP(type,a,b) {type t = a; a = b; b = t;} + +int main(void) +{ + int a=5, b=7; + if (a + +#define SWAP(type,a,b) do{type t = a; a = b; b = t;}while(0) + +int main(void) +{ + int a=5, b=7; + if(a + +#define ANAME(n) a##n +#define MERGE(a,b) a##b +#define PRINT_AN(n) printf("a" #n " = %d\n", a ## n); + +int main(void) +{ + int ANAME(1) = 10; + int ANAME(2) = 22; + int ANAME(3) = 35; + PRINT_AN(1); + PRINT_AN(2); + PRINT_AN(3); + int ai=3; + PRINT_AN(i);//ai + MERGE(a1+,+); + PRINT_AN(1); + return 0; +} diff --git a/25_Seminar12/07_varg_p18.c b/25_Seminar12/07_varg_p18.c new file mode 100644 index 0000000..445f4e1 --- /dev/null +++ b/25_Seminar12/07_varg_p18.c @@ -0,0 +1,16 @@ +#include +#include +#define PR(X, ...) printf("Message " #X ": " __VA_ARGS__) + +int main(void) +{ + double x = 48; + double y; + + y = sqrt(x); + PR(1, "x = %g\n", x); + PR(2, "x = %.2f, y = %.4f\n", x, y); + PR(test, "x = %.2f, y = %.4f\n", x, y); + + return 0; +} diff --git a/25_Seminar12/08_p19.c b/25_Seminar12/08_p19.c new file mode 100644 index 0000000..2f70108 --- /dev/null +++ b/25_Seminar12/08_p19.c @@ -0,0 +1,32 @@ +#include +#include +#define PR(X, ...) printf("Message " #X ": " __VA_ARGS__) +#define DEBUGPRINT fprintf (stderr, "debug in %d line func: %s\n", __LINE__, __func__) + +int main(void) +{ + DEBUGPRINT; + printf("File: %s\n", __FILE__); +#line 100 "help.c" + DEBUGPRINT; +#line 200 + DEBUGPRINT; + + printf("File: %s\n", __FILE__); +#ifndef __APPLE__ + //~ #error This code work only in MacOs +#endif +/* + * Единственное применение, которое я могу придумать, — это приведение номеров строк в порядок + * после длинной серии многострочных макросов. + * +В основном он используется для предоставления имен файлов и номеров строк исходного файла, +из которого был создан файл C (будь то заголовок или реализация). +Учитывая это, компилятор выдаст диагностику, которая намекает на исходный файл, а не на сгенерированный файл. + +Препроцессоры также используют это для указания на включенные заголовки в предварительно обработанном файле, +в котором они расширены. +*/ + + return 0; +} diff --git a/25_Seminar12/ls.c b/25_Seminar12/ls.c new file mode 100644 index 0000000..2520412 --- /dev/null +++ b/25_Seminar12/ls.c @@ -0,0 +1,70 @@ + +//https://iq.opengenus.org/ls-command-in-c/ + +//Used for basic input/output stream +#include +//Used for handling directory files +#include +//For EXIT codes and error handling +#include +#include + +void _ls(const char *dir,int op_a,int op_l) +{ + //Here we will list the directory + struct dirent *d; + DIR *dh = opendir(dir); + if (!dh) + { + if (errno = ENOENT) + { + //If the directory is not found + perror("Directory doesn't exist"); + } + else + { + //If the directory is not readable then throw error and exit + perror("Unable to read directory"); + } + exit(EXIT_FAILURE); + } + //While the next entry is not readable we will print directory files + while ((d = readdir(dh)) != NULL) + { + //If hidden files are found we continue + if (!op_a && d->d_name[0] == '.') + continue; + printf("%s ", d->d_name); + if(op_l) printf("\n"); + } + if(!op_l) + printf("\n"); +} +int main(int argc, const char *argv[]) +{ + if (argc == 1) + { + _ls(".",0,0); + } + else if (argc == 2) + { + if (argv[1][0] == '-') + { + //Checking if option is passed + //Options supporting: a, l + int op_a = 0, op_l = 0; + char *p = (char*)(argv[1] + 1); + while(*p){ + if(*p == 'a') op_a = 1; + else if(*p == 'l') op_l = 1; + else{ + perror("Option not available"); + exit(EXIT_FAILURE); + } + p++; + } + _ls(".",op_a,op_l); + } + } + return 0; +} diff --git a/26_Seminar13/.vscode/tasks.json b/26_Seminar13/.vscode/tasks.json new file mode 100644 index 0000000..d13c845 --- /dev/null +++ b/26_Seminar13/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: gcc.exe build active file", + "command": "D:\\msys64\\ucrt64\\bin\\gcc.exe", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}\\${fileBasenameNoExtension}.exe" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/26_Seminar13/00_case_p3.c b/26_Seminar13/00_case_p3.c new file mode 100644 index 0000000..870efd5 --- /dev/null +++ b/26_Seminar13/00_case_p3.c @@ -0,0 +1,30 @@ +#include +#include + +int main(int argc, char *argv[]) +{ + int rez=0; + // printf("%d\n",argc); + if(argc==1) + printf("-h help\n"); + //opterr=0;Можно отключить вывод сообщений об ошибках, для этого надо где-то в + //программе перед вызовом функции вставить opterr=0 + while ( (rez = getopt(argc,argv,"hf:m:")) != -1) + { + switch (rez) + { + case 'h': + printf("found argument \"h\".\n"); + break; + case 'f': + printf("found argument \"f = %s\".\n",optarg); + break; + case 'm': + printf("found argument \"m = %s\".\n",optarg); + break; + case '?': + printf("Error found !\n"); + break; + }; + }; +} \ No newline at end of file diff --git a/26_Seminar13/01_errors_p6.c b/26_Seminar13/01_errors_p6.c new file mode 100644 index 0000000..1b369d3 --- /dev/null +++ b/26_Seminar13/01_errors_p6.c @@ -0,0 +1,28 @@ +#include +#include +#define N 3 + +int main(int argc, char **argv) +{ + FILE *open; + char name[] = "temperature_small1.csv"; + open = fopen(name, "r"); + if(open==NULL) + return 1; +int Y,M,D; +int r; + while((r = fscanf(open, "%d;%d;%d",&Y,&M,&D))>0) + { + printf("."); + if(r +#include +#define N 3 + +int main(int argc, char **argv) +{ + FILE *open; + char name[] = "temperature_small1.csv"; + open = fopen(name, "r"); + if(open==NULL) + return 1; +int Y,M,D; +int r; +char ch=0; + while((r = fscanf(open, "%d;%d;%d",&Y,&M,&D))>0) + { + if(r +#include +#define N 3 + +int main(int argc, char **argv) +{ + FILE *open; + char name[] = "temperature_small1.csv"; + open = fopen(name, "r"); + if(open==NULL) + return 1; +int counter = 0; +int arr[3] = {0}; +char ch; + while((ch=fgetc(open))!=EOF) + { + if(ch==';') + { + counter++; + if(counter>N) + counter = 0; + } + else if(ch=='\n') + { + if(counter == 2) + printf("%d = %d;%d;%d\n", counter, arr[0],arr[1],arr[2]); + else + printf("ERROR %d = %d;%d;%d\n", counter,arr[0],arr[1],arr[2]); + counter = 0; + arr[0]=arr[1]=arr[2]=0; + } + else if(ch>='0' && ch<='9') + arr[counter] = arr[counter]*10 + ch - '0'; + else if(ch != 0xD) + counter = 0; + } + return 0; +} diff --git a/26_Seminar13/04_file_errors_p10.c b/26_Seminar13/04_file_errors_p10.c new file mode 100644 index 0000000..7c1aacc --- /dev/null +++ b/26_Seminar13/04_file_errors_p10.c @@ -0,0 +1,24 @@ +#include + +int main(int argc, char **argv) +{ + FILE *open; + char name[] = "temperature_small2.csv"; + open = fopen(name, "r"); + if(open==NULL) + return 1; +int Y,M,D,H,m,T,n_scan; + while((n_scan = fscanf(open, "%d;%d;%d;%d;%d;%d", &Y, &M, &D, &H, &m, &T)) > 0) + { + if (n_scan < 6) + { + char s[20], c; + n_scan = fscanf(open, "%[^\n]%c", s, &c); + printf("Wrong format in line %s\n", s); + } + else + printf("%d = %d;%d;%d;%d;%d;%d\n", n_scan, Y, M, D, H, m, T); + } + fclose(open); + return 0; +} diff --git a/26_Seminar13/05_Sensor_p12_13/main.c b/26_Seminar13/05_Sensor_p12_13/main.c new file mode 100644 index 0000000..1da4142 --- /dev/null +++ b/26_Seminar13/05_Sensor_p12_13/main.c @@ -0,0 +1,18 @@ +#include +#include +#include "sensor.h" + +int main(void) +{ +struct sensor info[SIZE]; +int number=AddInfo(info); + print(info,number); + printf("\nSort by t\n"); + SortByT(info,number); + print(info,number); + printf("\nSort by date\n"); + SortByDate(info,number); + // qsort(info,number,sizeof(info[0]),CompareDate); + print(info,number); + return 0; +} \ No newline at end of file diff --git a/26_Seminar13/05_Sensor_p12_13/makefile b/26_Seminar13/05_Sensor_p12_13/makefile new file mode 100644 index 0000000..06a8f50 --- /dev/null +++ b/26_Seminar13/05_Sensor_p12_13/makefile @@ -0,0 +1,14 @@ +all: sensor_demo + +sensor_demo: main.o sensor.o + gcc -o sensor_demo main.o sensor.o + +main.o: main.c sensor.h + gcc -c -std=c99 -o main.o main.c + +sensor.o: sensor.c + gcc -c -std=c99 -o sensor.o sensor.c + +clean: + rm *.o + rm sensor_demo.exe diff --git a/26_Seminar13/05_Sensor_p12_13/sensor.c b/26_Seminar13/05_Sensor_p12_13/sensor.c new file mode 100644 index 0000000..d07ad6a --- /dev/null +++ b/26_Seminar13/05_Sensor_p12_13/sensor.c @@ -0,0 +1,79 @@ +#include +#include "sensor.h" +#include + +void cgangeIJ(struct sensor *info, int i, int j) +{ + struct sensor temp; + temp = info[i]; + info[i] = info[j]; + info[j] = temp; +} +// упорядочивающую его по неубыванию температуры +void SortByT(struct sensor *info, int n) +{ + for (int i = 0; i < n; ++i) + for (int j = i; j < n; ++j) + if (info[i].t >= info[j].t) + cgangeIJ(info, i, j); +} + +int CompareDate(const void *x,const void *y) +{ + struct sensor *a = (struct sensor *)x; + struct sensor *b = (struct sensor *)y; + if ((a->year - b->year) != 0) + return a->year - b->year; + else if ((a->month - b->month) != 0) + return a->month - b->month; + else if ((a->day - b->day) != 0) + return a->day - b->day; + else if ((a->hour - b->hour) != 0) + return a->hour - b->hour; + else if ((a->t - b->t) != 0) + return a->t - b->t; + return 0; +} + +unsigned int DateToInt(struct sensor *info) +{ + return info->year << 16 | info->month << 8 | info->day; +} +// упорядочивающую его по дате +void SortByDate(struct sensor *info, int n) +{ + for (int i = 0; i < n; ++i) + for (int j = i; j < n; ++j) + if (CompareDate(info + i, info + j) > 0) + //~ if(DateToInt(info+i)>= DateToInt(info+j)) + cgangeIJ(info, i, j); +} +void AddRecord(struct sensor *info, int number, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, int8_t t) +{ + info[number].year = year; + info[number].month = month; + info[number].day = day; + info[number].hour = hour; + info[number].t = t; +} + +int AddInfo(struct sensor *info) +{ + int counter = 0; + AddRecord(info, counter++, 2021, 9, 16, 10, 9); + AddRecord(info, counter++, 2022, 9, 2, 11, -9); + AddRecord(info, counter++, 2021, 1, 7, 23, 8); + AddRecord(info, counter++, 2021, 9, 5, 1, 1); + return counter; +} +void print(struct sensor *info, int number) +{ + printf("===================================\n"); + for (int i = 0; i < number; i++) + printf("%04d-%02d-%02d h=%02d t=%3d\n", + info[i].year, + info[i].month, + info[i].day, + info[i].hour, + info[i].t); +} \ No newline at end of file diff --git a/26_Seminar13/05_Sensor_p12_13/sensor.h b/26_Seminar13/05_Sensor_p12_13/sensor.h new file mode 100644 index 0000000..03a47a8 --- /dev/null +++ b/26_Seminar13/05_Sensor_p12_13/sensor.h @@ -0,0 +1,23 @@ +#include +#define SIZE 30 + +struct sensor +{ + uint8_t day; + uint8_t month; + uint16_t year; + uint8_t hour; + int8_t t; +}; + +void cgangeIJ(struct sensor* info,int i,int j); +//упорядочивающую его по неубыванию температуры +void SortByT(struct sensor* info,int n); +unsigned int DateToInt(struct sensor* info); +//упорядочивающую его по дате +void SortByDate(struct sensor* info,int n); +void AddRecord(struct sensor* info,int number, +uint16_t year,uint8_t month,uint8_t day,uint8_t hour,int8_t t); +int AddInfo(struct sensor* info); +void print(struct sensor* info,int number); +int CompareDate(const void *x,const void *y); \ No newline at end of file diff --git a/26_Seminar13/06_array_stack_p15.c b/26_Seminar13/06_array_stack_p15.c new file mode 100644 index 0000000..c5e328c --- /dev/null +++ b/26_Seminar13/06_array_stack_p15.c @@ -0,0 +1,24 @@ +#include +#include +#include + +#define SIZE 30000000 + +struct sensor +{ + uint8_t day; + uint8_t month; + uint16_t year; + uint8_t hour; + int8_t t; +}; + +int main(int argc, char **argv) +{ + static struct sensor info[SIZE]; + struct sensor* info1 = malloc(SIZE*sizeof(struct sensor)); + if(!info1) + return -1; + free(info1); + return 0; +} diff --git a/26_Seminar13/temperature_small1.csv b/26_Seminar13/temperature_small1.csv new file mode 100644 index 0000000..acb2d9f --- /dev/null +++ b/26_Seminar13/temperature_small1.csv @@ -0,0 +1,16 @@ +2021;01;16 +2021;01;16 +2021;01;16 +2021;01;16 +2021;02;xx +2021;02;17 +2021;aa;16 +2021;04;16 +2021;05;16 +20;06;16 +2021;07;16 +2021;08;16 +2021;09;16 +2021;10;16 +2021;11;16 +2021;12;16 diff --git a/26_Seminar13/temperature_small2.csv b/26_Seminar13/temperature_small2.csv new file mode 100644 index 0000000..4c38a2d --- /dev/null +++ b/26_Seminar13/temperature_small2.csv @@ -0,0 +1,16 @@ +2021;01;16;01;01;-47 +2021;01;16;01;03;-44 +2021;01;16;01;04;-43 +2021;01;16;01;05;-xx +2021;02;16;01;01;-25 +2021;02;17;01;01;-30 +2021;03;16;01;01;-10 +2021;04;16;01;01;0 +2021;05;16;01;01;10 +2021;06;16;01;01;25 +2021;07;16;01;01;30 +2021;08;16;01;01;20 +2021;09;16;01;01;18 +2021;10;16;01;01;2 +2021;11;16;01;01;-5 +2021;12;16;01;01;-20 diff --git a/CourseWork/temperature_data_examples (1).zip b/CourseWork/temperature_data_examples (1).zip new file mode 100644 index 0000000000000000000000000000000000000000..2f9422ac1a3619706c588e511b35807c62d2f2d8 GIT binary patch literal 1212743 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 Ob_ zTXcr@J778=@KQVu|^dJ)C^l6ihS(k*amMmW8~K zSau}rXg2Itfo#}X-C6Bab(!LR#)+U-wK;O!@HOp@x$af4HOJc=d2aX`iFabDckImU zXGPLKw^gFha9~t!2hUo}WrTY6ngVX#$xwAj-MsfR(s(OR@F4>85SJvvy`gctjB$H% z$mp``WO(Nw6GfHyCIYxh}V6xnZ6mX~WFXPfif`ritLBeQ*5Mfjw9MCS|NNx2T2SMdp%Rvnb zY|Ub8`C%h;%>rwAoe{cbg|+-OBXo_dyR&LLkKgD{Nu!AjSl&rBfsni(3A=6G+rvJt zsk}WTXpY{^czN^0%y1A|lT)pP0%u|2iIN?H4ihCi1RW+yc1Sg>BkPS2Fp}t^*NcGBMBD@r zFp5F~QBgM#4rc$72`1Ot%#_m1adQZI<Cz=*ye24uRQrxL)P zZf~GEurE*>IFJl^O;qIRxrs)s>Z0LdBY^@VrsRlUV3gd#EihtAjxKF`G_+BZg{MSU zd4mqZ5~FG;ON{o(DDllu{g9-prt=V%7#)DJ#Ha?!5~KYPmKcS6iGTyc7Y({ecMu0d zi4rW<54@!D0IsJhvF=1)!bX8znExQrfhBv(6y>JIb3@WQ;cn0gqT-~Dc9nZSJ#*T! zo2PI3*hHWH=bn{+d2;P9UOsT+vwZUp@YZ2ux3R1mZ9S- z>l0OCICaD0kLAwT^@qQ`dAQ=%Y197qtJ5BTENA*Brp*A$$A2vU>a^j1rPocHcE_|k zr)}Btr8Vom{Iw_UU%KVlr*@V;^}V8J%fI*3maX5}wzPPcW#iXpP0M}opt10rWoc0m z{8#?{ylK}>?*)GhUUS;C;=*~w+X}Z9c7N&LztKJC8$Wvdhu6P!Th8K}^Ot@0vmadd zojdIfKdk;t=WVy%I=!g6yyLpR-}B5De_r?Z>u1jV>bqCpwC=m%h6i7_KDh7n-M=~g z`aSpTyZiM&UDy2h(UKqfYpSak)h%7I?7`fvP5<;#eNo}f>))C8AD^Co_lG}w^26VJ z?wy~0bocXLf8c-S-L&q$)vL}w{kM;B(@$3X;tw0`kN+xm`n}Eo`JcZh?U(*%eQ&Js z!>TtTMNhXK3%-vXJNxJ7HU#c|{a9{0{#nxayOP4fqGxtKUAXx`DXhB`iac}pyWiOwc`_1y<{uwE{o$Xcfuou`qsqJG z!T>l5%&{Ch%D?@=*irsEcxE0r%IrhCYiH4p9is<#(@JCEd2nDm_y_l?w#RNdap%nG zZIyM8-tuwJ*WUiQ*I9e!|IBDUUHs0?wR`ksT_3x5z3d}i-dz5B-S)5bwsrjVwl}V? zxVz>X#=DKR_uYTA?WqUvd;adv{&IWaCm#61(%psIh#&vc%jW)#7fuEa#;<2S!6T2o z^wllk6EOW0{shctyAv!T=ZWx#f#*zl?>^sS(_jDIJF%PhJYjwI`1^nOtH=H6lFxn9 zQBb!W-~Wqd7qMw0VL1Ee{b9W9ee&DqPQG_&r}tO%4(I=ky>jfaukM_4*i$s%d>lV< zqNVMF_fGuxC*S>x|D6vWeC;!a6}}HnpF7p@m-e<8gHTIb!^rJk> zKW`p?EcFf8rz!K3ANlv|>YUxTihZ#{?UGnm{R9J7(P{r5oKSz1 literal 0 HcmV?d00001 diff --git a/CourseWork/Итоговое задание.pdf b/CourseWork/Итоговое задание.pdf new file mode 100644 index 0000000000000000000000000000000000000000..eefeb071843dc02c3f7e4916ae9fbca37204d838 GIT binary patch literal 49364 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 a_C7}^fR6Z6UjwKKEX+`(q{6ZyQ2!rEY@H|o literal 0 HcmV?d00001