Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- typedef struct data { //struktura punkow
- int time;
- char* number=malloc(15*sizeof(char)); //tego jeszcze nie wiem czy trzeba alokowac
- } data;
- typedef struct queue {
- int start, end, size;
- data *elements;
- } queue;
- queue *new_queue(int size)
- {
- queue *q = (queue *) malloc(sizeof(queue));
- q->start=0;
- q->end=0;
- //q->counter=0;
- q->size=size;
- q->elements=(data *) malloc(size*sizeof(data));
- return q;
- }
- void put(queue *q, int time, char* number){
- if (q->end+1 < q->size) //max tyle ile punktow w tablicy
- { q->end++; //poszzerzamy kolejke
- //q->counter++;
- q->elements[q->end].time=time;
- q->elements[q->end].number=number;
- }
- else //napoczatek dodajemy
- {
- q->end=0;
- q->elements[q->end].time=time;
- q->elements[q->end].number=number;
- }
- }
- queue *get(queue *q) { //pobieramy punkt z poczatku
- if (q->start+1 < q->size)
- {
- //q->counter--;
- return &(q->elements[++q->start]); //adres, bo do wskaznika
- }
- else //przechodzimy na poczatek
- {
- q->start=0;
- return &(q->elements[q->start]);
- }
- }
- void do_get_print(queue* q, int time)
- {
- data* result = get(q);
- int time_result= time - result.time;
- printf("Wynik: %s, %d\n", data.number, time_result);
- }
- void delete_queue(queue *q)
- {
- free (q->elements);
- free (q);
- }
- int main()
- {
- int n, time;
- char type ;
- char* number = malloc(15*sizeof(char)); //tabica na numer
- for(int i=0; i<15; i++) number[i] = '\0';
- scanf(" %d", &n);
- queue* call_c= new_queue(n); //ini
- for (int i=0; i< n; i++)
- {
- stanf(" %s", &type );
- if(type == 'a')
- {
- scnaf(" %d, %s", &time, number);
- put(call_c, time,number);
- }
- else
- {
- scnaf(" %d", &time);
- do_get_print(call_c,time);
- }
- }
- delete_queue(call_c);
- free(number);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement