Примерни задания за  контролна работа и поправителен изпит
 ПИК2
29.05.2014

1. Напишете какво точно ще изведе програмата:
#include <stdio.h>
typedef struct { int num; char name[20]; } inf;
int main(int argc, char *argv[]){
char m[]="samsxdcfv",*p=m; int x,y;
char *ar[]= {"sabcKesen","ksdefNercev","ksghiiphop"};
inf st[] = {{12,"esabce"}, {17,"refLe"},{211,”rghiji”},{23,”qsmriKap”}};
x=0x35;y=0xD;x<<=1;y>>=1;printf("1:%x %x\n",x,y);
x=0x33;y=3 ;printf("2:%x %x %x\n",x|y,x&y,x^y);
x=0xE; y=8;printf("3:%x\n", x&(~y));
printf("4: %c %c %s\n", *(m+1), *m+2, m+1);
printf ("5: %c %s\n", p[1],p+1);
printf ("6: %s %s \n", *(ar+1), *ar+2);
printf("7: %c %c\n", **(ar+1), *(*ar+2));
printf("8: %d %s \n",st[3].num, st[1].name+1);
printf("9: %d %s \n",(st+2)->num,st->name+1);
printf("10:%c %c %c\n",*(st->name),*((st+1)->name),*(st->name+1));
return 0;
}

Отговори на примерния тест
2. Целта е С програма, която обработва информация за стоки.Всяка стока се представя като структура с три полета -текст (до 24 символа), int и float число. Напишете функциите:
а)lst* fn1(FILE *, lst *); за четене на структурите записани в бинарен файл в едносвързан списък; Функцията връща указател към списъка;
б) int wfn( lst *, FILE *); за запис на информацията от списъка в текстов файл (всяка стока е на 3 реда – за по един за всяко поле, функцията връща 0 при успешен запис и 17 при грешка);
в) int c(lst *); за преброяване на възлите на списъка с четни стойности в int полето.
Напишете int main(), която ги извиква за бинарен файл зададен от потребителя и за текстов файл“C:\data\f32.txt”.

===============================================================================================
1. Опишете съвсем точно какво ще изведе следната програма:
I пример:
#include <stdio.h>
#include <string.h>
#define N 4
typedef struct el {
int inf; char name[15];struct el * next;
}unit;
int main(){
unit lst[N], *lstp[N+1];
char p[]="Kolumbia", x,y;
x=8; y=4; printf("1: %x %x\n",x<<2,y>>1);
x=0x80; y=1; x<<=1; y>>=1;printf("2: %x %x\n",x,y);
x=0x9;printf("3:%x %x %x\n",x|3,x&3,x^3);
x=0x9;printf("4:%x %x %x\n",x|4,x&4,x^4);
x=1; do{x<<=1;printf("5:%x\n",x);}while(!(x&0x10));
x=0x10; while(x){printf("6:%x \n",x); x>>=2;}
for(x=0; x<N; x++){
lst[x].inf=x+2; lst[x].next=lst+(x+1)%N;
strcpy(lst[x].name,p); (*(p+x))++;
printf("7: %s\n",lst[x].name+1);
lstp[x]=lst+x;
}
lstp[N]=lstp[0];lstp[0]=lstp[1];lstp[1]=lstp[N];
for(x=0; x<N; x++){
printf(" 9:%d %s\n",lstp[x]->inf, lstp[x]->name);
printf("10:%d %s\n", lst[x].next->inf,lst[x].next->name);

return 0;
}


2 пример
#include <stdio.h>
typedef struct {  int  num;  char name[20]; } inf;
int main(int argc, char *argv[]){
   char m[]="wrtdxsxdcfvgb",*p=m;      int x,y; 
   char *ar[]= {"wrtKesen","wrfNerocev","wsHiphop"};
   inf st[] = {{42,"emotwSel"}, {71,"skironLo"},{21,"kjsFi"},{53,"smri"}};
   x=0x75;y=0xD;x<<=1;y>>=1;printf("1:%x %x\n",x,y);
   x=0x55;y=3 ;printf("2:%x %x %x\n",x|y,x&y,x^y);   
   x=0xE; y=8;printf("3:%x\n", x&(~y));
   printf("4: %c %c %s\n", *(m+1), *m+2, m+1);
   printf ("5: %c %s\n", p[1],p+1);  
   printf ("6: %s  %s \n", *(ar+1), *ar+2);
   printf("7: %c %c\n", **(ar+1), *(*ar+2));
   printf("8: %d  %s \n",st[3].num, st[1].name+1);
   printf("9: %d  %s \n",(st+2)->num,st->name+1);
   printf("10:%c %c %c\n",*(st->name),*((st+1)->name),*(st->name+1));      
   return 0;
}


2. Напишете на езика С програма, която обработва информация за клиенти.Всеки клиент
се представя като структура с две полета - адрес (50 байта) и година на раждане
(цяло число). Програмата да съдържа следните функции: а)за въвеждане на нов клиент от
клавиатурата в едносвързан линеен списък, б) за записване на информацията от списъка
в бинарен файл, в)за четене от файла в едносвързан линеен списък, г)за извеждане на адресите
на клиентите от списъка подредени по годината на раждане в текстов файл като се записва по
един адрес на ред. Напишете фунция main(), която показва работоспособността на функциите.


2 - Втори вариант

2. Целта е С програма, която обработва информация за стоки.Всяка стока се представя като структура с две полета -текст (до 71 символа), и int число. Напишете функциите:  
а)lst* rdt(FILE *, lst *); за четене на структурите записани в бинарен файл в едносвързан списък; Функцията връща указател към списъка;
б)  int  wrt( lst *, FILE *);  за запис на информацията от списъка в текстов файл (всяка стока е на два реда – за текстовото и за числовото поле, функцията връща 0 при успешен запис и 3 при грешка);  
в) int  cnt(lst *); за преброяване на възлите на списъка с четни стойности в числовото поле.
Напишете int main(), която ги извиква за бинарен файл зададен от потребителя и за текстов файл“C:\second\f3.txt”.