Advertisement
Guest User

Untitled

a guest
May 27th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX_STRING_LENGHT 1000
  5. #define N 10
  6.  
  7. typedef struct Stack
  8. {
  9. char *name;
  10. char *type;
  11. char *CPU;
  12. int *CPUfrequency;
  13. int *videomemoryamount;
  14. int *videomemoryfrequency;
  15. int *capacity;
  16. char *connectors;
  17. char *cooling;
  18. int *nummonitors;
  19. //const char *string;
  20. struct Stack *next;
  21. } Stack;
  22.  
  23. Stack *init()
  24. {
  25. Stack *head=NULL;
  26. //head->next=NULL;
  27. return head;
  28. }
  29.  
  30. void chertochka()
  31. {
  32. printf("-----------------------------------------------------------------------------------------\n");
  33. }
  34. void zagolovok()
  35. {
  36. chertochka();
  37. printf("|%21s|%6s|%5s|%5s|%5s|%5s|%5s|%15s|%5s|%6s|\n","name","type","CPU","CPUfr","vma","vmfr","cpcty","connectors","cool","nummon");
  38. chertochka();
  39. }
  40.  
  41. void push(Stack **head,char *name,char *type,char *CPU,int *CPUfrequency,int *videomemoryamount,int *videomemoryfrequency,int *capacity,char *connectors,char *cooling,int *nummonitors)
  42. {
  43. Stack *tmp=malloc(sizeof(Stack));
  44. tmp->next=*head;
  45. tmp->name=name;
  46. tmp->type=type;
  47. tmp->CPU=CPU;
  48. tmp->CPUfrequency=CPUfrequency;
  49. tmp->videomemoryamount=videomemoryamount;
  50. tmp->videomemoryfrequency=videomemoryfrequency;
  51. tmp->capacity=capacity;
  52. tmp->connectors=connectors;
  53. tmp->cooling=cooling;
  54. tmp->nummonitors=nummonitors;
  55. *head=tmp;
  56. }
  57.  
  58. void pop(Stack **head)
  59. {
  60. Stack* prev = NULL;
  61. char *name;
  62. char *type;
  63. char *CPU;
  64. int *CPUfrequency;
  65. int *videomemoryamount;
  66. int *videomemoryfrequency;
  67. int *capacity;
  68. char *connectors;
  69. char *cooling;
  70. int *nummonitors;
  71. prev = (*head);
  72. name = prev->name;
  73. type = prev->type;
  74. CPU = prev->CPU;
  75. CPUfrequency = prev->CPUfrequency;
  76. videomemoryamount = prev->videomemoryamount;
  77. videomemoryfrequency = prev->videomemoryfrequency;
  78. capacity = prev->capacity;
  79. connectors = prev->connectors;
  80. cooling = prev->cooling;
  81. nummonitors = prev->nummonitors;
  82. (*head) = (*head)->next;
  83. free(prev);
  84. printf("|%21s|%6s|%5s|%5d|%5d|%5d|%5d|%15s|%5s|%6d|\n",name, type, CPU, CPUfrequency, videomemoryamount, videomemoryfrequency,capacity,connectors,cooling,nummonitors);
  85. }
  86. void peek(const Stack *head)
  87. {
  88. printf("|%21s|%6s|%5s|%5d|%5d|%5d|%5d|%15s|%5s|%6d|\n",head->name, head->type, head->CPU, head->CPUfrequency, head->videomemoryamount, head->videomemoryfrequency,head->capacity,head->connectors,head->cooling,head->nummonitors);
  89.  
  90. }
  91.  
  92. void printStack(const Stack *head)
  93. {
  94. zagolovok();
  95. while (head)
  96. {
  97. printf("|%21s|%6s|%5s|%5d|%5d|%5d|%5d|%15s|%5s|%6d|\n",head->name, head->type, head->CPU, head->CPUfrequency, head->videomemoryamount, head->videomemoryfrequency,head->capacity,head->connectors,head->cooling,head->nummonitors);
  98. head=head->next;
  99. }
  100. chertochka();
  101. }
  102.  
  103. void deleteStack(Stack **head)
  104. {
  105. Stack *prev=NULL;
  106. while((*head)->next)
  107. {
  108. prev=(*head);
  109. *head=(*head)->next;
  110. free(prev);
  111. }
  112. free(*head);
  113. printf("deleting success\n");
  114. }
  115.  
  116. int main()
  117. {
  118. FILE *f;
  119. int i;
  120. Stack *head;
  121. char **name=malloc(N*sizeof(char*));
  122. char **type=malloc(N*sizeof(char*));
  123. char **CPU=malloc(N*sizeof(char*));
  124. int **CPUfrequency=malloc(N*sizeof(int*));
  125. int **videomemoryamount=malloc(N*sizeof(int*));
  126. int **videomemoryfrequency=malloc(N*sizeof(int*));
  127. int **capacity=malloc(N*sizeof(int*));
  128. char **connectors=malloc(N*sizeof(char*));
  129. char **cooling=malloc(N*sizeof(char*));
  130. int **nummonitors=malloc(N*sizeof(int*));
  131. for (i=0;i<N;i++)
  132. {
  133. name[i]=(char*)malloc(MAX_STRING_LENGHT);
  134. type[i]=(char*)malloc(MAX_STRING_LENGHT);
  135. CPU[i]=(char*)malloc(MAX_STRING_LENGHT);
  136. CPUfrequency[i]=(int*)malloc(sizeof(int));
  137. videomemoryamount[i]=(int*)malloc(sizeof(int));
  138. videomemoryfrequency[i]=(int*)malloc(sizeof(int));
  139. capacity[i]=(int*)malloc(sizeof(int));
  140. connectors[i]=(char*)malloc(MAX_STRING_LENGHT);
  141. cooling[i]=(char*)malloc(MAX_STRING_LENGHT);
  142. nummonitors[i]=(int*)malloc(sizeof(int));
  143. }
  144. head=init();
  145. if ( (f = fopen("file.txt", "r")) == NULL )
  146. {
  147. printf("NULL");
  148. exit(0);
  149. }
  150. for(i=0;i<N;i++)
  151. {
  152. fscanf(f,"%s%s%s%d%d%d%d%s%s%d", name[i], type[i], CPU[i], &CPUfrequency[i], &videomemoryamount[i], &videomemoryfrequency[i],&capacity[i],connectors[i],cooling[i],&nummonitors[i]);
  153. //fgets(strf,MAX_STRING_LENGHT,f);
  154. push(&head,name[i], type[i], CPU[i], CPUfrequency[i], videomemoryamount[i], videomemoryfrequency[i],capacity[i],connectors[i],cooling[i],nummonitors[i]);
  155. //printStack(head);
  156. }
  157. printStack(head);
  158. printf("\nPEEK:");
  159. peek(head);
  160. putchar('\n');
  161. printStack(head);
  162. printf("\nPOP:");
  163. pop(&head);
  164. putchar('\n');
  165. printStack(head);
  166. putchar('\n');
  167. deleteStack(&head);
  168. return 0;
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement