19
.. -21 ______________________. . | . . . ______________________. . |
2012 .
()
3
.. -21 ______________________. . | . . . ______________________. . |
2012 .
1) . 2
2) . 2
a) . 2
b) . 2
c) . 3
d) . 3
3) . 3
4) . 3
.
.
.
A) .
:
;
;
, :
) ;
) ;
, ;
;
:
(, )
.
B) .
, , . .
C) .
|
|
IBM( ) .
D) .
C MS DOS Windows.
.
:
a) .
b) .
.
/ | ||
1) 2) 3) 4) | I . | 25.03.2012 |
. | 04.04.2012 | |
. | 10.04.2012 | |
20.04.2012 | ||
1) 2) 3) 4) | II . | 25.04.2012 |
. | 10.05.2012 | |
15.05.2012 | ||
III | 25.05.2012 04.06.2012 |
1) . .. 2) . .. 2.1) ...... 2.2) .. 3) .. 3.1) 充. 3.2) 充.. 3.3) . 4) .. 5) .. 6) . 7) .. 8) 9) . 10) .. 11) 充. | .6 .6 .6 .6 .6 .6 .6 .7 .8 .8 .9 ...14 ...19 ...22 ...23 ...23 |
1) .
, :
, EGA-.
2) .
2.1) :
fin .
fout , .
2.2) :
< >.txt
3) .
3.1) :
: < >
: < >
. . ( .. ) :
<> <> <.> <.> < .> <> <. > <. > < >
|
|
3.2) :
, , , , . .
:
----- ishodnaya structura imeet vid: -----
Marka: < 1- >
Cena: < 1- > pyb
Proiz-l: <- 1- >
Proc-r: < 1- >
Oper: < 1- >
HDD: <. 1- > Gb
Takt: <. 1- > GHz
Monitor: < 1- >
Marka: < 2- >
Cena: < 2- > pyb
Proiz-l: <- 2- >
Proc-r: < 2- >
Oper: < 1- >
HDD: <. 2- > Gb
Takt: <. 2- > GHz
Monitor: < 2- >
_______________
----- otsortirovannaya i sokrashennaya structura imeet vid: -----
Marka: < >
Cena: < > pyb
Proiz-l: < - >
Proc-r: < >
Oper: < >
HDD: < . > Gb
Takt: < . > GHz
Monitor: < >
3.3) :
:
-------------------------------------------------------------------------------
Napisat' programmy kotoraya vvodit iz faila strukturi,
razmeshaet ih v dvunapravlenniy lineyniy spisok
i vipolnyaet obrabotku spiska, a rezultat vivodit v fail.
Otsortirovat' spisok po cene i udalit' mashini s EGA-monitorom
-------------------------------------------------------------------------------
:
Vvedite nazvanie faila ishodnih dannih:
:
Vvedite nazvanie faila s rezul'tatami:
, :
BHUMAHUE! Fail ishodnih dannih ne nayden! Rabota programmi zavershena..
, :
BHUMAHUE! Fail ishodnih dannih pustoy! Rabota programmi zavershena..
( ), :
BHUMAHUE! Ishodnie dannie nevernogo formata.. Rabota programmi zavershena..
:
..Ydalyaem element: Marka: < >
Cena: < >
Monitor: < >
:
Rabota so structurami zakonchena, rezul'tat zapisan v fail "< >"
4) .
, .
.
, .
EGA EGA. , , .
|
|
, , .
5) .
5 :
) main. , , , .
b) input. , , , .
) out. , .
d) sort. .
e) del. , . - .
6) .
main():
input():
sort():
del():
out():
7) .
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define CONFIG struct configuration
CONFIG // Podstructura adresov zavodov
{
char proc_type[15]; //
float ram, //
hdd, //
takt; //
char monit_type[10];
};
#define RECORD struct record
RECORD //
{
char mark[20]; //
float price; //
char proiz[25]; //
CONFIG config; //
RECORD *prev,
*next;
};
RECORD *input(char fin[30]) // podprogramma schitivaniya ishodnih dannih
{
RECORD *head = NULL, // ukazatel' na 1-y element
*curr = 0, // ukazatel' na tekushiy element
*prev =0; // ukazatel' na predidushiy element
FILE *f; // failovaya peremennaya
if((f = fopen(fin, "rt")) == 0) // Proverka otkritiya faila dlya chteniya
{
printf("\n\n BHUMAHUE! Fail ishodnih dannih ne nayden!\n Rabota programmi zavershena..");
getch();
exit(1);
}
else
if(getc(f) == -1) //Proverka na nalishie dannih v faile
{
printf("\n\n BHUMAHUE! Fail ishodnih dannih pustoy!\n Rabota programmi zavershena..");
getch();
exit(1);
}
else
{
// Chtenie pervoy EVM-ki
head = (RECORD*) malloc(sizeof(RECORD));
// Proverka na korrektnost' ishodmih dannih
if(fscanf(f, "%s%f%s%s%f%f%f%s", &head->mark, &head->price, &head->proiz, &head->config.proc_type, &head->config.ram, &head->config.hdd, &head->config.takt, &head->config.monit_type)!= 8)
{
printf("\n\n BHUMAHUE! Ishodnie dannie nevernogo formata..\n Rabota programmi zavershena.");
getch();
exit(1);
}
head->prev = NULL;
head->next = NULL;
prev = head;
while(!feof(f)) // Chtenie ostal'nih EVM-ok
{
curr = (RECORD*) malloc(sizeof(RECORD));
if(fscanf(f, "%s%f%s%s%f%f%f%s", &curr->mark, &curr->price, &curr->proiz, &curr->config.proc_type, &curr->config.ram, &curr->config.hdd, &curr->config.takt, &curr->config.monit_type)!= 8)
{
printf("\n\n BHUMAHUE! Ishodnie dannie nevernogo formata..\n Rabota programmi zavershena.");
|
|
getch();
exit(1);
}
curr->prev = prev;
curr->next = NULL;
prev->next = curr;
prev = curr;
}
}
fclose(f);
return head;
} // end input();
void out(RECORD *head, int flag, char fout[30]) // podprogramma vivoda dannih v fail s rezul'tatami
{
RECORD *out = 0;
FILE *f; // failovaya peremennaya dlya zapisi v rezul'tiryushiy fail
//Vivod ishodmoy structuri v fail
switch(flag)
{
case 0:
{
f = fopen(fout, "w"); // Otkrivaem fail dlya zapisi
if(!f) // esli fail ne nayden
{
printf("\n\n BHUMAHUE! Oshibka otkritiya faila s resul'tatami!\n Rabota programmi zavershena.");
getch();
exit(1);
}
else
{
fprintf(f, "\n ----- ishodnaya structura imeet vid: -----\n\n");
out = head;
while(out) // Vivod spiska na
{
fprintf(f, " Marka: %s\n Cena: %.0f pyb\n Proiz-l: %s\n Proc-r: %s\n Oper: %.1f Gb\n HDD: %.0f Gb\n Takt: %.2f GHz\n Monitor: %s\n\n", out->mark, out->price, out->proiz, out->config.proc_type, out->config.ram, out->config.hdd, out->config.takt, out->config.monit_type);
out = out->next;
}
}
fprintf(f, "_______________\n\n");
fprintf(f, " ----- otsortirovannaya i sokrashennaya structura imeet vid: -----\n\n");
fclose(f); // zakritie faila s resul'tatami
break;
} // end case 0
case 1:
{
// dozapis' rezultiryushey structuri v fail
f = fopen(fout, "a"); // Otkrivaem fail dlya DOzapisi
if(!f) // esli fail ne nayden
{
printf("\n\n BHUMAHUE! Oshibka otkritiya faila s resul'tatami!\n Rabota programmi zavershena.");
getch();
exit(1);
}
else
{
out = head;
while(out) // Vivod spiska na
{
fprintf(f, " Marka: %s\n Cena: %.0f pyb\n Proiz-l: %s\n Proc-r: %s\n Oper: %.1f Gb\n HDD: %.0f Gb\n Takt: %.2f GHz\n Monitor: %s\n\n", out->mark, out->price, out->proiz, out->config.proc_type, out->config.ram, out->config.hdd, out->config.takt, out->config.monit_type);
out = out->next;
}
}
fclose(f); // zakritie faila s resul'tatami
break;
} // end case 1
} // end switch
} // end out();
void sort(RECORD *p) // Podprogramma sortirovki i sokrasheniya structuri
{
RECORD *curr = NULL; // tekushiy
char mark_temp[20], // peremennaya dlya zameni marki
proizv_temp[25]; // peremennaya dlya zameni proiazvoditelya
float price_temp; // peremennaya dlya zameni ceni
CONFIG config_temp; // peremennaya dlya zameni configuraciy
int flag = 1, // flag dlya puzir'ka
i = 0; // schetchik dlya sort;
// sortirovka po cene
while(flag)
{
curr = p->next;
while(curr)
{
if (curr->price < curr->prev->price) // elsi ydalyaemiy yavlyaetsya poslednim v spiske
{
// zapis' tekushih znacheniy vo vremennie peremennie
strcpy(mark_temp, curr->mark);
price_temp = curr->price;
strcpy(proizv_temp,curr->proiz);
config_temp = curr->config;
// meniyaem znacheniya poley
strcpy(curr->mark, curr->prev->mark);
strcpy(curr->proiz, curr->prev->proiz);
curr->price = curr->prev->price;
curr->config = curr->prev->config;
// meniyaem znacheniya poley
strcpy(curr->prev->mark, mark_temp);
curr->prev->price = price_temp;
strcpy(curr->prev->proiz, proizv_temp);
curr->prev->config = config_temp;
i = 1;
}
curr = curr->next;
}
if (i == 0) flag = 0;
else i = 0;
}
} // end sort();
RECORD *del(RECORD *p, char fout[30])
{
RECORD *curr = NULL,
*left = NULL,
*right = NULL,
*temp = NULL,
*head = p;
FILE *f;
// Ydalenie mashin s EGA-monitorom
curr = p;
while(curr)
{
if(strcmp(curr->config.monit_type, "EGA") == 0)
{
printf("\n..Ydalyaem element: Marka: %s\n Cena: %.0f pyb\n Monitor: %s\n", curr->mark, curr->price, curr->config.monit_type);
if(curr->next == NULL && curr->prev == NULL)
{
f = fopen(fout, "a"); // Otkrivaem fail dlya dozapisi
if(!f) // esli fail ne nayden
{
printf("\n\n BHUMAHUE! Oshibka otkritiya faila s resul'tatami!\n Rabota programmi zavershena.");
getch();
exit(1);
}
else
{
fprintf(f, " V structure vse mashini s EGA-monitorom. Spisok EVM pust.. \n\n");
}
fclose(f); // zakritie faila s resul'tatami
printf("\n\n Rabota so structuroy zakonchena, rezul'tat zapisan v fail \"%s\"\n", fout);
|
|
getch();
exit(1);
}
else
if (curr->next == NULL) // elsi ydalyaemiy element posledniy
{
temp = curr->prev;
curr->prev->next = NULL;
free(curr);
curr = temp;
}
else
if (curr->prev == NULL) // elsi ydalyaemiy element perviy
{
head = curr->next;
curr->next->prev = NULL;
free(curr);
curr = head;
}
else
{
left = curr->prev;
right = curr->next;
left->next = right;
right->prev = left;
free(curr);
curr = left;
}
} // end if
else
curr = curr->next;
} // end while
return(head); // Vozvrashaem ykazatel' na structuru
} // end del();
void main()
{
char fin[30],
fout[30];
RECORD *p,
*deleted;
clrscr(); // ochistka ekrana
printf("\n Gryppa SVBS-21 Solodov D.S. Korsovoy proekt Variant 19 \n");
printf("\n ----------------------------------------------------------------\n");
printf(" Napisat' programmy kotoraya vvodit iz faila strukturi, \n");
printf(" razmeshaet ih v dvunapravlenniy lineyniy spisok \n");
printf(" i vipolnyaet obrabotku spiska, a rezultat vivodit v fail. \n");
printf(" Otsortirovat' spisok po cene i udalit' mashini s EGA-monitorom ");
printf("\n ----------------------------------------------------------------\n");
printf("\n Vvedite put' i nazvanie faila ishodnih dannih: ");
scanf("%s", &fin);
printf("\n Vvedite put' i nazvanie faila s rezul'tatami: ");
scanf("%s", &fout);
p = input(fin); // Vizov podprogrammi chteniya dannih iz faila
out(p, 0, fout); // Vizov podprogrammi zapisi ishodnoy strukturi v fail
sort(p); // Vizov podprogrammi sortirovki spiska
deleted = del(p, fout); // Vizov podprogrammi ydaleniya mashin s EGA-monitorom
out(deleted, 1, fout); // Vizov podprogrammi zapisi rezul'tatov v fail
printf("\n\n Rabota so structurami zakonchena, rezul'tat zapisan v fail \"%s\"\n", fout);
getch();
};
8) .
1
:
NT 30000 Intel Celeron 1.5 200 3.00 EGA
MacBook 18700 Apple MacOS 2 350 2.7 LCD
DP 15000 AMD Celeron 1.7 250 2.3 EGA
LenBook 17200 Lenovo Intel 4 220 2.5 Lamp
C870 25000 Toshiba Intel 1.8 300 2.7 EGA
:
----- ishodnaya structura imeet vid: -----
Marka: NT
Cena: 30000 pyb
Proiz-l: Intel
Proc-r: Celeron
Oper: 1.5 Gb
HDD: 200 Gb
Takt: 3.00 GHz
Monitor: EGA
Marka: MacBook
Cena: 18700 pyb
Proiz-l: Apple
Proc-r: MacOS
Oper: 2.0 Gb
HDD: 350 Gb
Takt: 2.70 GHz
Monitor: LCD
Marka: DP
Cena: 15000 pyb
Proiz-l: AMD
Proc-r: Celeron
Oper: 1.7 Gb
HDD: 250 Gb
Takt: 2.30 GHz
Monitor: EGA
Marka: LenBook
Cena: 17200 pyb
Proiz-l: Lenovo
Proc-r: Intel
Oper: 4.0 Gb
HDD: 220 Gb
Takt: 2.50 GHz
Monitor: Lamp
Marka: C870
Cena: 25000 pyb
Proiz-l: Toshiba
Proc-r: Intel
Oper: 1.8 Gb
HDD: 300 Gb
Takt: 2.70 GHz
Monitor: EGA
_______________
----- otsortirovannaya i sokrashennaya structura imeet vid: -----
Marka: LenBook
Cena: 17200 pyb
Proiz-l: Lenovo
Proc-r: Intel
Oper: 4.0 Gb
HDD: 220 Gb
Takt: 2.50 GHz
Monitor: Lamp
Marka: MacBook
Cena: 18700 pyb
Proiz-l: Apple
Proc-r: MacOS
Oper: 2.0 Gb
HDD: 350 Gb
Takt: 2.70 GHz
Monitor: LCD
2
:
NT 30000 Intel Celeron qqq 200 3.00 EGA
MacBook qwewetreryrty Apple MacOS 2 350 2.7 LCD
:
Vvedite put' i nazvanie faila ishodnih dannih: error.txt
Vvedite put' i nazvanie faila s rezul'tatami: res.txt
BHUMAHUE! Ishodnie dannie nevernogo formata..
Rabota programmi zavershena.
3
:
:
Vvedite put' i nazvanie faila ishodnih dannih: null.txt
Vvedite put' i nazvanie faila s rezul'tatami: res.txt
BHUMAHUE! Fail ishodnih dannih pustoy!
Rabota programmi zavershena..
4
:
NT 30000 Intel Celeron 1.5 200 3.00 EGA
MacBook 18700 Apple MacOS 2 350 2.7 EGA
DP 15000 AMD Celeron 1.7 250 2.3 EGA
LenBook 17200 Lenovo Intel 4 220 2.5 EGA
C870 25000 Toshiba Intel 1.8 300 2.7 EGA
:
----- ishodnaya structura imeet vid: -----
Marka: NT
Cena: 30000 pyb
Proiz-l: Intel
Proc-r: Celeron
Oper: 1.5 Gb
HDD: 200 Gb
Takt: 3.00 GHz
Monitor: EGA
Marka: MacBook
Cena: 18700 pyb
Proiz-l: Apple
Proc-r: MacOS
Oper: 2.0 Gb
HDD: 350 Gb
Takt: 2.70 GHz
Monitor: EGA
Marka: DP
Cena: 15000 pyb
Proiz-l: AMD
Proc-r: Celeron
Oper: 1.7 Gb
HDD: 250 Gb
Takt: 2.30 GHz
Monitor: EGA
Marka: LenBook
Cena: 17200 pyb
Proiz-l: Lenovo
Proc-r: Intel
Oper: 4.0 Gb
HDD: 220 Gb
Takt: 2.50 GHz
Monitor: EGA
Marka: C870
Cena: 25000 pyb
Proiz-l: Toshiba
Proc-r: Intel
Oper: 1.8 Gb
HDD: 300 Gb
Takt: 2.70 GHz
Monitor: EGA
_______________
----- otsortirovannaya i sokrashennaya structura imeet vid: -----
V structure vse mashini s EGA-monitorom. Spisok EVM pust..
9) .
, , . , , , EGA-.
10) .
1. .. , /++ , , 2006 .
2. .., .., , -Ȼ, 2007 .
11) .
.
()
2
2012 .
, , EGA-.
.
, .