.


:




:

































 

 

 

 


.




 

 

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-.

 

.

, .

 





:


: 2016-12-18; !; : 255 |


:

:

: , , , , .
==> ...

1525 - | 1392 -


© 2015-2024 lektsii.org - -

: 0.37 .