home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Flop Magazin 37
/
Flop_Magazin_37_1995_05_Raster_cs_Side_A.atr
/
nervyst.c
< prev
next >
Wrap
Text File
|
2023-02-26
|
8KB
|
1 lines
/*¢verze 3.1 - zrusen tisk adresáre¢resení úlohy NERVY z çasopisu - vÿvoj¢programu byl zpracován od 12.12.1995 do 24.1.1996¢PURE C - ATARI MEGA STE¢*/¢#include <stdio.h>¢#include <ext.h>¢#include <string.h>¢¢#define HEADER "\n\t*************** NERVY *****************\n\n"¢#define OPENERR "Can't open '%s'!\n\n"¢¢void pauza(void);¢void edit(void);¢¢unsigned int mati[10][10];¢char cisla[200][2][11];¢FILE *mat,*cisl;¢¢/* çeká na stisk mezerníku - vyçistí buffer klávesnice */¢void pauza(void)¢ {¢ int a;¢ printf (" Malá pauza - stiskni mezerník\n");¢ while(1)¢ {¢ while(kbhit())¢ getch();¢ a=getch();¢ if(a==' '||a==' ')¢ return;¢ a=0;¢ }¢}¢/* -------------------------------------------------------------- */¢¢/* MENU */¢char menu(void)¢{ char c;¢printf("\n\tV - zadávání osobních çísel a vÿpoçet vÿsledku\n");¢printf("\n\tM - zápis matice\n");¢printf("\n\tR - zápis zadanÿch konstant\n");¢printf("\n\tN - vÿpis obsahu tabulky mescû\n");¢printf("\n\n\tQ - návrat\n");¢ while(kbhit())¢ getch();¢ c=getch();¢ return(c);¢} ¢/* ............................................... */¢¢/* ------------ vlastní vÿpoçetní operace ---------- */¢void kalk(void)¢{ char a[400],b[11];¢ unsigned int i,y,d,f,f1,z;¢ while(kbhit())¢ getch();¢ printf("\n\tZadávání osobních çísel a vÿpoçet vÿsledku\n\t: ");¢ gets(a);¢ d=strlen(a);¢ if(d>10||d<9)¢ { printf("\n\t¢patná délka çísla\n");¢ return;¢ }¢ if(d==9)/* moæno napsat jako aritmetickou operaci*/¢ z=0;¢ else¢ z=1;¢¢ for(y=0,f1=0;y<100;y++)¢ { f=0;¢ strcpy(b,&cisla[y][z][0]);¢¢ if(d==10)¢ { b[9] = '0';¢ b[10] = 0;¢ }¢¢ for(i=0;i<10;i++)¢ { ¢ if(a[i]==b[i])¢ { /*printf("\tSouhlasná çíslice ");*/¢ break;¢ }¢ else¢ f=f+(mati[b[i]-'0'][i]);¢ }¢ if(i==10)¢ if(f1 < f)¢ { f1 = f;¢ printf("\n\tCislo:%s\tSouçet: %u\n",b,f1);¢ }¢ if(d==10)¢ {¢ for(i=8;i>5;i--)¢ b[i+1] = b[i];¢ b[6] = '0';¢ f=0;¢ for(i=0;i<10;i++)¢ { ¢ if(a[i]==b[i])¢ { /*printf("\tSouhlasná çíslice ");*/¢ break;¢ }¢ else¢ f=f+(mati[b[i]-'0'][i]);¢ }¢ if(i==10)¢ if(f1 < f)¢ { f1 = f;¢ printf("\n\tCislo (nula na 7. pozici):%s\tSouçet: %u\n",b,f1);¢ }¢ for(i=6;i>0;i--)¢ b[i] = b[i-1];¢ b[0] = '0';¢ f=0;¢ for(i=0;i<10;i++)¢ { ¢ if(a[i]==b[i])¢ { /*printf("\tSouhlasná çíslice ");*/¢ break;¢ }¢ else¢ f=f+(mati[b[i]-'0'][i]);¢ }¢ if(i==10)¢ if(f1 < f)¢ { f1 = f;¢ printf("\n\tCislo (nula na 1. pozici):%s\tSouçet: %u\n",b,f1);¢ }¢ }¢ }¢¢ if(d==9)¢ { a[9] = '0';¢ a[10] = 0;¢ }¢¢ for(i=0,f=0;i<10;i++)¢ { ¢ f=f+(mati[a[i]-'0'][i]);¢ }¢ printf("\n Zadáno: %s\tvÿsledek: %u\n",a,f);¢ ¢ if(d==9)¢ {¢ for(i=8;i>5;i--)¢ a[i+1] = a[i];¢ a[6] = '0';¢¢ for(i=0,f=0;i<10;i++)¢ { ¢ f=f+(mati[a[i]-'0'][i]);¢ }¢ printf(" Zadáno (nula na 7. pozici): %s\tvÿsledek: %u\n",a,f);¢¢ for(i=6;i>0;i--)¢ a[i] = a[i-1];¢ a[0] = '0';¢¢ for(i=0,f=0;i<10;i++)¢ { ¢ f=f+(mati[a[i]-'0'][i]);¢ }¢ printf(" Zadáno (nula na 1. pozici): %s\tvÿsledek: %u\n\n",a,f);¢ ¢ }¢ /*printf("\n%s\ts indexy:%s\tzadáno:%s\n",b,&cisla[y][z][0],a);*/¢pauza();¢return;¢}¢¢/* vytvorení matice */¢int matice(void)¢{ unsigned int x,y,a;¢printf("\n\tZápis matice mêscû\n");¢printf("\n !! POZOR - pokraçování zniçí pûvodní soubor !!\n");¢printf("\nStisk Y pro novÿ zápis (jinak návrat)\n");¢ while(kbhit())¢ getch();¢ a=getch();¢ if(!(a=='y'||a=='Y'))¢ return(0);¢ if (!(mat = fopen("MATICE.DAT","wb") ))¢ {¢ printf(OPENERR,"MATICE.DAT");¢pauza();¢ return(-1);¢ }¢printf("\n\tzadej matici po cislech (oddêlené <ENTER>)\n");¢ for(y=0;y<10;y++)¢ for(x=0;x<10;x++)¢ { scanf("%u",&a);¢ mati[x][y]=a;¢ }¢¢ for(y=0;y<10;y++)¢ for(x=0;x<10;x++)¢ { a=mati[x][y];¢ fprintf(mat,"%u\n",a);¢ }¢ fclose(mat); ¢ return(1);¢}¢¢/* -------- tvorba rodnÿch çísel ----------- */¢void zad_cisla(void)¢{¢ printf("\n\tPostup zadávání doplñkovÿch rodnÿch çísel z magazínu:\n");¢ printf("\n Vezmi textovÿ editor v reæimu ASCII, opisuj rodná çísla, za\n");¢ printf(" kaædÿm stiskni <ENTER>!!\n");¢ printf("\n Vznikne tak text, kterÿ bude mít 400 odstavcû. Nezapomeñ");¢ printf("\n v prûbêhu práce ukládat záloæní kopie na hardisk jako"); ¢ printf("\n prevenci pred vÿpadkem elektrické energie!\n");¢}¢/* .......................... */¢¢void oprav(void)¢{ unsigned int x,y,i;¢printf("\n\tVÿpis matice\n");¢ for(y=0;y<10;y++)¢ { for(x=0;x<10;x++)¢ { i = mati[x][y];¢ printf(" %u ",i);¢ }¢ printf("\n\n");¢ } ¢ pauza();¢}¢¢/* ----------------- inicializace matice ----------- */¢int int_mat(void)¢{ unsigned int x,y,length,b;¢¢ if ((mat = fopen("MATICE.DAT","rb")) == NULL)¢ {¢ printf(OPENERR,"MATICE.DAT");¢pauza();¢ return(-1);¢ }¢ fseek(mat,0L,SEEK_END);¢ length=ftell(mat);¢ printf ("\nDélka souboru matice : %u ",length);¢ fseek(mat,0L,SEEK_SET);¢¢ for(y=0;y<10;y++)¢ { for(x=0;x<10;x++)¢ { if(fscanf(mat,"%u",&b) != 1)¢ { printf ("\nDélka souboru : %u je krátká ",length);¢ return(0);¢ }¢ mati[x][y]=b;¢/* printf("\ntisk obsahu matice: %u %u\n",mati[x][y],b);*/¢ }¢ } ¢ fclose(mat); ¢ return(1);¢}¢/*.....................*/¢¢/* inicializace rodnÿch çísel - naçtení ze souboru */ ¢int int_rc(void)¢{¢ unsigned int i,y,length;¢ char b[11];¢printf("\n\tNaçítání souboru çísel\n");¢ if (!(cisl = fopen("CISLA.DAT","rb")))¢ {¢ printf(OPENERR,"CISLA.DAT");¢pauza();¢ return(-1);¢ }¢ fseek(cisl,0L,SEEK_END);¢ length=ftell(cisl);¢ printf ("\nDéka souboru matice : %u ",length);¢ fseek(cisl,0L,SEEK_SET);¢¢ for(y=0;y<2;y++)¢ for(i=0;i<200;i++)¢ { if(fscanf(cisl,"%s",&b) != 1)¢ { printf ("\nDélka souboru : %u je krátká ",length);¢ return(0);¢ }¢ strcpy(&cisla[i][y][0],b);¢ }¢ fclose(cisl); ¢ printf("\n%s\tdruhÿ:%s\n",b,&cisla[i-1][y-1][0]);¢ printf("\n%s\tbez &:%s\n",b,cisla[i-1][y-1][0]);¢ return(1);¢}¢/* .......................... */¢¢/* ---------------- hlavní çást programu ----------------- */¢void edit(void)¢{ unsigned int mu;¢ int a;¢¢printf("\nVolána funkce inicializace matice\n");¢a = int_mat();¢ if(a<1)¢ if(a == -1)¢ printf("\nDatovÿ soubor s maticí nenalezen!\n"); ¢ else¢ printf("\nDatovÿ soubor s maticí je nêjak krátkÿ!\n");¢¢printf("\nVolána funkce inicializace rodnÿch çísel\n");¢a = int_rc();¢ if(a<1)¢ if(a == -1)¢ printf("\nDatovÿ soubor s çísly nenalezen!\n"); ¢ else¢ printf("\nDatovÿ soubor s çísly je nêjak krátkÿ!\n");¢¢ do{¢switch(menu()) {¢ case 'v':¢ case 'V':¢ kalk();¢ break;¢ case 'm':¢ case 'M':¢ matice();¢ break;¢ case 'r':¢ case 'R':¢ zad_cisla();¢ break;¢ case 'n':¢ case 'N':¢ oprav();¢ break;¢ case 'q':¢ case 'Q':¢ mu='Q';¢ printf ("\nNávrat na zaçátek\n");¢ break;¢default:¢ printf ("\n¢patná volba - opakuj\n");¢ break;¢}¢ }while(mu!='Q'); ¢ return; ¢}¢/* ------------------------------------------------------------ */¢¢void main(void)¢{ int a;¢ do {¢ printf(HEADER);¢ printf("\nVolána funkce edit\n");¢ edit();¢ printf("\nNávrat z funkce edit\n");¢ pauza();¢ while(kbhit())¢ getch();¢ printf("\nOpustêní programu - Q\n");¢ a=getch();¢ if(a=='Q')¢ a='q';¢ }while(a!='q');¢}¢¢