first commit
This commit is contained in:
commit
750fc1c56d
4
.depend
Normal file
4
.depend
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
foo.o: src/foo.c src/foo.h
|
||||||
|
main.o: src/main.c src/progs.h
|
||||||
|
prog1.o: src/prog1.c src/progs.h src/foo.h
|
||||||
|
prog2.o: src/prog2.c src/progs.h src/foo.h
|
54
.gitignore
vendored
Normal file
54
.gitignore
vendored
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
# ---> C
|
||||||
|
# Prerequisites
|
||||||
|
*.d
|
||||||
|
|
||||||
|
# Object files
|
||||||
|
*.o
|
||||||
|
*.ko
|
||||||
|
*.obj
|
||||||
|
*.elf
|
||||||
|
|
||||||
|
# Linker output
|
||||||
|
*.ilk
|
||||||
|
*.map
|
||||||
|
*.exp
|
||||||
|
|
||||||
|
# Precompiled Headers
|
||||||
|
*.gch
|
||||||
|
*.pch
|
||||||
|
|
||||||
|
# Libraries
|
||||||
|
*.lib
|
||||||
|
*.a
|
||||||
|
*.la
|
||||||
|
*.lo
|
||||||
|
|
||||||
|
# Shared objects (inc. Windows DLLs)
|
||||||
|
*.dll
|
||||||
|
*.so
|
||||||
|
*.so.*
|
||||||
|
*.dylib
|
||||||
|
|
||||||
|
# Executables
|
||||||
|
*.exe
|
||||||
|
*.out
|
||||||
|
*.app
|
||||||
|
*.i*86
|
||||||
|
*.x86_64
|
||||||
|
*.hex
|
||||||
|
|
||||||
|
# Debug files
|
||||||
|
*.dSYM/
|
||||||
|
*.su
|
||||||
|
*.idb
|
||||||
|
*.pdb
|
||||||
|
|
||||||
|
# Kernel Module Compile Results
|
||||||
|
*.mod*
|
||||||
|
*.cmd
|
||||||
|
.tmp_versions/
|
||||||
|
modules.order
|
||||||
|
Module.symvers
|
||||||
|
Mkfile.old
|
||||||
|
dkms.conf
|
||||||
|
|
25
Makefile
Normal file
25
Makefile
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
TARGET ?= Recurce
|
||||||
|
CC ?= gcc
|
||||||
|
|
||||||
|
PREF_SRC = ./src/
|
||||||
|
PREF_OBJ = ./obj/
|
||||||
|
|
||||||
|
SRC = $(wildcard $(PREF_SRC)*.c)
|
||||||
|
OBJ = $(patsubst $(PREF_SRC)%.c, $(PREF_OBJ)%.o, $(SRC))
|
||||||
|
|
||||||
|
$(TARGET) : $(OBJ)
|
||||||
|
$(CC) $(OBJ) -o $(TARGET)
|
||||||
|
|
||||||
|
depend: .depend
|
||||||
|
|
||||||
|
.depend: $(SRC)
|
||||||
|
rm -f "$@"
|
||||||
|
$(CC) -MM $^ > "$@"
|
||||||
|
|
||||||
|
-include .depend
|
||||||
|
|
||||||
|
$(PREF_OBJ)%.o : $(PREF_SRC)%.c
|
||||||
|
$(CC) -c $< -o $@ -D_PROG_NAME=\"$(TARGET)\"
|
||||||
|
|
||||||
|
clean :
|
||||||
|
rm $(TARGET) $(PREF_OBJ)*.o *.d
|
7
src/foo.c
Normal file
7
src/foo.c
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include "foo.h"
|
||||||
|
|
||||||
|
int foo(int n) {
|
||||||
|
if(n < 2) return 1;
|
||||||
|
if(!(n & 1)) return foo(n/2)+1;
|
||||||
|
return foo(3*n+1)+1;
|
||||||
|
}
|
6
src/foo.h
Normal file
6
src/foo.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef FOO_H_
|
||||||
|
#define FOO_H_
|
||||||
|
|
||||||
|
int foo(int n);
|
||||||
|
|
||||||
|
#endif
|
29
src/main.c
Normal file
29
src/main.c
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include "progs.h"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int prog_number;
|
||||||
|
|
||||||
|
printf("Лабораторная работа №3\n\nВариант №1, 6106, автор: Морозов Иван\n\n");
|
||||||
|
|
||||||
|
printf("Выберите программу: \n\n");
|
||||||
|
|
||||||
|
printf("1. Программа для нахождения количества значений n на отрезке [1; 100], для которых F(n) больше 100.\n");
|
||||||
|
printf("2. Программа для нахождения разности между минимальной и максимальной цифрами F(x).\n");
|
||||||
|
|
||||||
|
prog_number = getchar()-'0';
|
||||||
|
|
||||||
|
switch(prog_number) {
|
||||||
|
case 1:
|
||||||
|
prog1();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
prog2();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("Ошибка: недопустимый номер программы!\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
11
src/prog1.c
Normal file
11
src/prog1.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include "progs.h"
|
||||||
|
#include "foo.h"
|
||||||
|
|
||||||
|
void prog1() {
|
||||||
|
int counter = 0;
|
||||||
|
for(int i = 1; i <= 100; i++) {
|
||||||
|
if(foo(i) > 100) counter++;
|
||||||
|
}
|
||||||
|
printf("Количество значений n на отрезке [1; 100], для которых F(n) больше 100 равно %d\n", counter);
|
||||||
|
}
|
24
src/prog2.c
Normal file
24
src/prog2.c
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include "progs.h"
|
||||||
|
#include "foo.h"
|
||||||
|
|
||||||
|
#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y))
|
||||||
|
#define MAX(X, Y) (((X) > (Y)) ? (X) : (Y))
|
||||||
|
|
||||||
|
void prog2() {
|
||||||
|
int x, d_min, d_max;
|
||||||
|
char fx[16] = "";
|
||||||
|
printf("Программа вычисляет разность между минимальной и максимальной цифрами F(x).\n Введите данные.\n");
|
||||||
|
printf("x: "); scanf("%d", &x);
|
||||||
|
|
||||||
|
sprintf(fx, "%d", foo(x));
|
||||||
|
|
||||||
|
printf("F(%d) = %s\n", x, fx);
|
||||||
|
d_min = fx[0]-'0'; d_max = fx[0]-'0';
|
||||||
|
for(char* d_ptr = fx+1; *d_ptr != '\0'; d_ptr++) {
|
||||||
|
int d = *d_ptr - '0';
|
||||||
|
d_min = MIN(d_min, d);
|
||||||
|
d_max = MAX(d_max, d);
|
||||||
|
}
|
||||||
|
printf("Разность между максимальной и минимальной цифрами равна %d\n", d_max-d_min);
|
||||||
|
}
|
7
src/progs.h
Normal file
7
src/progs.h
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#ifndef PROGS_H_
|
||||||
|
#define PROGS_H_
|
||||||
|
|
||||||
|
void prog1();
|
||||||
|
void prog2();
|
||||||
|
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user