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