Advertisement
Guest User

linked ale cos popsuty

a guest
Apr 5th, 2020
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.41 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct node {
  5.   int tstart;
  6.   int num;
  7.   struct node *next;
  8. };
  9. struct node *start = NULL;
  10.  
  11. void del(int tim) { //usuwam z przodu, print z wymogow zadania
  12.   struct node *t;
  13.   int num, tstart;
  14.   num = start->num;
  15.   tstart=start->tstart;
  16.   t = start->next;
  17.  
  18.   free(start);
  19.   start = t;
  20.  
  21.   printf("%d %d", num, tim-tstart);
  22. }
  23.  
  24. void insert(int tstart, int num) { //dodaje na koncu
  25.   struct node *t, *temp;
  26.  
  27.   t = (struct node*)malloc(sizeof(struct node));
  28.   t->tstart = tstart;
  29.   t->num=num;
  30.  
  31.   if (start == NULL) {
  32.     start = t;
  33.     start->next = NULL;
  34.     return;
  35.   }
  36.  
  37.   temp = start;
  38.   while (temp->next != NULL)
  39.     temp = temp->next;
  40.  
  41.   temp->next = t;
  42.   t->next = NULL;
  43. }
  44.  
  45. void aresolve(char *input)
  46. {
  47.     int t=0;
  48.     int result=0;
  49.     int multiplier=1;
  50.     int tstart=0;
  51.     int num=0;
  52.  
  53.     for(t=2; t<60 && input[t]!=' '; t++)
  54.     {
  55.         multiplier*=10;
  56.     }
  57.     multiplier/=10;
  58.  
  59.     for(t=2; t<60 && input[t]!=' '; t++)
  60.     {
  61.         result+=(input[t]-48)*multiplier;
  62.         multiplier/=10;
  63.     }
  64.     tstart=result; // zamieniam z input na int tstart
  65.  
  66.     t++;
  67.     result=0;
  68.     multiplier=1;
  69.     int s=t;
  70.  
  71.     for(t; t<60 && input[t]!=' '; t++) // shit broke (unused wariable warning)
  72.     {
  73.         multiplier*=10;
  74.     }
  75.     multiplier/=10;
  76.  
  77.     for(t=s;t<60 && input[t]!=' ';t++)
  78.     {
  79.         result+=(input[t]-48)*multiplier;
  80.         multiplier/=10;
  81.     }
  82.     num=result; //zamieniam ze stringa na int num
  83.  
  84.     insert(tstart,num); //dodaje node z wartosciami co trzeba
  85. }
  86.  
  87. void rresolve(char *input)
  88. {
  89.     int t=0;
  90.     int result=0;
  91.     int multiplier=1;
  92.     int tim=0;
  93.  
  94.     for(t=2; t<60 && input[t]!=' '; t++)
  95.     {
  96.         multiplier*=10;
  97.     }
  98.     multiplier/=10;
  99.  
  100.     for(t=2; t<60 && input[t]!=' '; t++)
  101.     {
  102.         result+=(input[t]-48)*multiplier;
  103.         multiplier/=10;
  104.     }
  105.     tim=result; //sprawdzam tim w stringu
  106.     del(tim);   //wyrzucam element na poczatku kolejki, printuje dane
  107. }
  108. void dowork(char *input) //wywoluje do kazdego inputa
  109. {
  110.     if(input[0]=='a')
  111.     {
  112.         aresolve(input);
  113.     }
  114.     else if(input[0]=='r')
  115.     {
  116.         rresolve(input);
  117.     }
  118. }
  119.  
  120.  
  121. int main()
  122. {
  123.     int n;
  124.     scanf("%d",&n);
  125.     for(int i=0; i<n; i++)
  126.     {
  127.         char *input=malloc(60*sizeof(char));
  128.         scanf("%s",input);
  129.         dowork(input);
  130.     }
  131.     return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement