Skip to content
Snippets Groups Projects
Commit 4d5db955 authored by Florian Burgener's avatar Florian Burgener
Browse files

Ex 4

parent 12ab84a9
Branches
No related tags found
No related merge requests found
......@@ -13,8 +13,8 @@ default: $(TARGET)
run: $(TARGET)
./$<
$(TARGET): main.o
$(CC) main.o $(CFLAGS) $(LIBS) -o $@
$(TARGET): main.o stack.o
$(CC) main.o stack.o $(CFLAGS) $(LIBS) -o $@
clean:
-rm -f *.o
......
......@@ -16,29 +16,53 @@
#include <stdlib.h>
#include <string.h>
#include "stack.h"
int main() {
// int32_t values_length = 5;
// double values[values_length];
int32_t tab_length = 7;
double tab[tab_length];
for (int32_t i = 0; i < tab_length; i += 1) {
double number;
scanf("%lf", &number);
tab[i] = number;
}
int32_t interv[tab_length];
interv[0] = 1;
stack s;
stack_init(&s, 1000);
stack_push(&s, 0);
for (int32_t i = 0; i < tab_length; i += 1) {
while (true) {
int32_t top_value;
stack_peek(s, &top_value);
if (stack_is_empty(s) || tab[top_value] > tab[i]) {
break;
}
stack_pop(&s, &top_value);
}
// for (int32_t i = 0; i < values_length; i += 1) {
// double value;
// scanf("%lf", &value);
// values[i] = value;
// }
if (stack_is_empty(s)) {
interv[i] = i + 1;
} else {
int32_t top_value;
stack_peek(s, &top_value);
interv[i] = i - top_value;
}
// int32_t values_length = 5;
// int32_t values[values_length];
stack_push(&s, i);
}
// for (int32_t i = 0; i < values_length; i += 1) {
// int32_t value;
// scanf("%d", &value);
// values[i] = value;
// }
printf("\n");
// char a[100];
// int32_t b;
// scanf("%s %d", a, &b);
// printf("%s %d\n", a, b);
for (int32_t i = 0; i < tab_length; i += 1) {
printf("%d\n", interv[i]);
}
stack_destroy(&s);
return EXIT_SUCCESS;
}
\ No newline at end of file
/**
* @file stack.c
* @author Florian Burgener (florian.burgener@etu.hesge.ch)
* @brief Implémentation de la librairie stack.
* @version 1.0
* @date 2021-12-07
*
* @copyright Copyright (c) 2021
*
*/
#include "stack.h"
#include <stdbool.h>
#include <stdlib.h>
void stack_init(stack *s, int size) {
s->size = size;
s->top = -1;
s->data = (int *)malloc(sizeof(int) * s->size);
}
bool stack_is_empty(stack s) {
return s.top == -1;
}
void stack_push(stack *s, int val) {
if (s->size == s->top + 1) {
return;
}
s->top += 1;
s->data[s->top] = val;
}
void stack_pop(stack *s, int *val) {
if (stack_is_empty(*s)) {
return;
}
stack_peek(*s, val);
s->top -= 1;
}
void stack_peek(stack s, int *val) {
if (stack_is_empty(s)) {
return;
}
*val = s.data[s.top];
}
void stack_destroy(stack *s) {
s->size = -1;
s->top = -1;
free(s->data);
s->data = NULL;
}
/**
* @file stack.h
* @author Florian Burgener (florian.burgener@etu.hesge.ch)
* @brief Header de librairie stack.
* @version 1.0
* @date 2021-12-07
*
* @copyright Copyright (c) 2021
*
*/
#ifndef STACK_H
#define STACK_H
#include <stdbool.h>
typedef struct _stack {
int size;
int top;
int *data;
} stack;
void stack_init(stack *s, int size);
bool stack_is_empty(stack s);
void stack_push(stack *s, int val);
void stack_pop(stack *s, int *val);
void stack_peek(stack s, int *val);
void stack_destroy(stack *s);
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment