commit e9bbac8249d06a30b34b807bc534e956568cde2a Author: Artur Tamborski Date: Fri Jun 14 20:12:18 2019 +0200 ... diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/input b/input new file mode 100644 index 0000000..af6acd7 --- /dev/null +++ b/input @@ -0,0 +1,7 @@ +6 +1 2 3 4 5 6 +4 +1 3 +2 4 +4 4 +1 6 diff --git a/main.c b/main.c new file mode 100644 index 0000000..0718d65 --- /dev/null +++ b/main.c @@ -0,0 +1,98 @@ +/* + * Kolokwium: Algorytmy i Struktury Danych + * + * Zadanie: Pudełeczka + * + * Autor: Artur Tamborski + * Numer Indeksu: 449376 + * Numer Grupy: 7 + */ + +#include + +int main(void) +{ + /* zmienne chwilowe, tylko dla pętli */ + int i, j; + + /* zmienne wejściowe */ + int num_pudelka; + int num_pytania; + int lewe, prawe; + int liczba_skarbow; + int pudelka[1000]; + + /* liczba pudełek */ + scanf("%d", &num_pudelka); + + /* sprawdzanie wartości */ + if (num_pudelka < 1) + { + puts("Za mało pudełek!"); + return -1; + } + + if (num_pudelka > 1000) + { + puts("Za dużo pudełek!"); + return -1; + } + + /* ile skarbów jest w danym pudełku */ + for (i = 0; i < num_pudelka; i++) + scanf("%d", &pudelka[i]); + + /* liczba pytań Zosi */ + scanf("%d", &num_pytania); + + /* sprawdzanie wartości */ + if (num_pytania < 1) + { + puts("Za mało pytań!"); + return -1; + } + + if (num_pytania > 1000) + { + puts("Za dużo pytań!"); + return -1; + } + + /* Zosia wskazuje pudelka */ + /* a my jednoczesnie odpowiadamy */ + for (i = 0; i < num_pytania; i++) + { + /* zeruję bo z każdym wskazaniem ta wartość jest inna */ + liczba_skarbow = 0; + + /* wczytaj wskazanie Zosi */ + scanf("%d %d", &lewe, &prawe); + + /* sprawdzanie wartości */ + if (lewe < 1) + { + puts("pierwsze wskazanie jest za małe!"); + return -1; + } + + if (lewe > prawe) + { + puts("wskazanie jest niepoprawne!"); + return -1; + } + + if (prawe > num_pudelka) + { + puts("drugie wskazanie jest za duże!"); + return -1; + } + + /* - 1 bo zosia wskazuje indekując od jeden a + * tablice są indeksowane od zera */ + for (j = lewe - 1; j <= prawe - 1; j++) + liczba_skarbow += pudelka[j]; + + /* wyjście */ + printf("%d\n", liczba_skarbow); + } +}