1 Востаннє редагувалося andriygogol11 (08.11.2014 20:32:48)

Тема: Під час компілювання не можу додати записи . Допоможіть будь-ласка

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
#include <locale.h>
#include <windows.h>

HANDLE hConsole,hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);


void vuvid(int y);
void vvid(int u);
void del();


void sort();
void spysok();
void spysokPr();
void spysokRik();
void SetColor(int text,int background);
char menu(int nom);

void GotoXY(int X,int Y){ COORD coord={X,Y};SetConsoleCursorPosition(hStdOut,coord);}
/////////////////////////////
bool check(char c[])
{ bool ch=true;
  int j;   
     for(j=0;c[j]!=0;j++)
       if((IsCharAlpha(c[j])==0)||(isalpha(c[j])!=0)){ch=false;break;}
  return ch;
}
///////////////////////
struct sgStruct
{
        char name[10];
        char date[10];
        char type[10];
        int countEmpl;
        char mainProduct[10];
        char isNewTec[10];
        float grnPerMounth;
            int bday;
    int bmonth;
    int byear;
}
db[100],term; 
///////////////////////
int fcount(char a[])
{char c;
int count = 0;
FILE *fp = fopen(a,"r");
while (!feof(fp)) if ((c=fgetc(fp))=='\n')count++;
return count;}
////////////////////////////    
main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

char t,sw;
int nom = 1;
  system("Color 70");
  menu(nom);  
for(;;) 
    { 
if(sw == 'i') int xp;
if(sw == 72) { nom--;  }
if(sw == 80) { nom++;  }
if(nom==0)   nom=7;
if(nom==8)   nom=1;
 menu(nom);
 sw=_getch();
if(sw == 13)
    { 
switch(nom)
     {
    case 1: vuvid;   break;
    case 2:    vvid;    break;
    case 3:    del;     break;
    case 4:    sort;       break; 
        case 5:    spysok;   break;    
        case 6:    spysokPr;   break;
    case 7:    spysokRik;   break; }

   }
         }
  }    

/////




char menu(int nom)
{
    system("mode con cols=57 lines=18");
    system("cls");
    //                                   MENU
    setlocale(LC_ALL, "Ukrainian");
cout<<"========================================================\n";
cout<<"||--------------- Сiльське господарство --------------||\n";
cout<<"========================================================\n";
if(nom==1)
cout<<"||>1. BИBЕСТИ ВСI ДАНI.                            \33\33\33||\n";
else  
cout<<"|| 1. Вивести всi данi.                               ||\n";
cout<<"||----------------------------------------------------||\n";
  if(nom==2)
cout<<"||>2. ДОДАТИ НОВИЙ ЗАПИС.                          \33\33\33||\n";
else  
cout<<"|| 2. Додати новий запис.                             ||\n";
cout<<"||----------------------------------------------------||\n";
//ColorMatchToTarget(12,12,'qwqw');
 if(nom==3)
cout<<"||>3. ВИДАЛИТИ ЗАПИС.                              \33\33\33||\n";
else  
cout<<"|| 3. Видалити запис.                                 ||\n";
cout<<"||----------------------------------------------------||\n";
if(nom==4)
cout<<"||>4. СОРТУВАТИ ЗАПИСИ ПО ЗРОСТАННЮ.               \33\33\33||\n";
else  
cout<<"|| 4. Сортувати записи по зростанню.                  ||\n";
cout<<"||----------------------------------------------------||\n";
if(nom==5)
cout<<"||>5. СПИСОК ПЕРЕДОВИХ ВИДIВ ВЛАСНОСТI.            \33\33\33||\n";
else  
cout<<"|| 5. Список передових видiв власностi.               ||\n";
cout<<"||----------------------------------------------------||\n";
if(nom==6)
cout<<"||>6. СПИСОК ПРИБУТКУ.                             \33\33\33||\n";
else  
cout<<"|| 6. Список прибутку.                                ||\n";
cout<<"||----------------------------------------------------||\n";
if(nom==7)
cout<<"||>7. ПIДПРИЄМСТВA СТВОРЕНI ЦЬОГО РОКУ.            \33\33\33||\n";
else  
cout<<"|| 7. Пiдприємствa створенi цього року.               ||\n";
cout<<"========================================================\n";    
//cout<<"Info - натиснiть i      ";            

}



/////
       





    void vvid(int u)
         {
    unsigned int k,n,i,f;
        
    FILE *fp;
    system("cls");
    
    char f1; 
    char type1[8]="ДЕРЖ"; //Для введення статі
    char type2[8]="ПРИВАТ";    
    char isNewTec1[4]="ТАК"; //Для введення статі
    char isNewTec2[4]="НІ";

    
    if((fp=fopen("D:\A.txt","a"))==NULL) { //Відкриття файлу
//    puts("Cannot open file!\n");
    }
         printf(" Скiльки записiв ви бажаєте додати?\n ");
    scanf("%d",&n);
    
    for (i=1;i<=n;i++) {
        system("cls");
         
        printf(" Ведіть назву сільського господарства:\n ");
         
        scanf("%s",db[i].name);
        f=check(db[i].name);
        while(f!=0){
         
        printf("Ведіть назву сільського господарства:\n ");
         
        scanf("%s",db[i].name);
        f=check(db[i].name);
        } 
         
    
        f=0;
        while (f==0) { 
        printf(" День реєстрації?:\n ");
        scanf("%d",&db[i].bday);    
        if (db[i].bday<=0 || db[i].bday>31) {
                printf("\n ПОМИЛКА!Введено не правильне число (>31). Спробуйте знову:\n");
        }
            else f=1;
        }
        
        f=0;
        while (f==0) {
        printf(" Мiсяць реєстрації?:\n ");
        scanf("%d",&db[i].bmonth);
        if (db[i].bmonth<=0 || db[i].bmonth>12) {
            printf("\n  ПОМИЛКА!Введено не правильне число (>12 або <0). Спробуйте знову:\n");
        }
        else f=1;
    }
        f=0;
        while (f==0) {
        printf(" Рiк реєстрації?:\n ");
        scanf("%d",&db[i].byear);
        if (db[i].byear<1900) {
                printf("\n ПОМИЛКА!Введено не правильне число (<1900). Спробуйте знову:\n");
            }
        else f=1;
        }
        
        
        
            f=0;
        while (f==0){
        printf(" Виберіть тип власності:\n\n Натисніть 1 для вибору ДЕРЖАВНОЇ статі або 2 для ПРИВАТНОЇ!:\n ");
        f1=_getch();
        if (f1==49) { 
                strcpy(db[i].type,type1);
                 f=1;
 }
        else if (f1==50) {
         strcpy(db[i].type,type2);
         f=1;
            }
        else printf(" Помилка! \n");
 }
        
    printf("введiть число працівників:");
scanf("%s",db[i].countEmpl);
getchar();
    
        
        printf(" Введіть основний вид продукції:\n ");
         
        scanf("%s",db[i].mainProduct);
        f=check(db[i].mainProduct);
        while(f!=0){
         
        printf("  Введіть основний вид продукції:\n ");
         
        scanf("%s",db[i].mainProduct);
        f=check(db[i].mainProduct);
        } 
        
        
            f=0;
        while (f==0){
        printf(" Введiть чи є передовим в освоєнні нової технології:\n\n Якщо ТАК натисніть 1 , Якщо НІ натисніть 2!:\n ");
        f1=_getch();
        if (f1==49) { 
                strcpy(db[i].isNewTec,isNewTec1);
                 f=1;
 }
        else if (f1==50) {
         strcpy(db[i].isNewTec,isNewTec2);
         f=1;
            }
        else printf(" Помилка! \n");
 }
    printf("введiть прибуток:");
scanf("%s",db[i].grnPerMounth);
getchar();    
         
    
}




}
/////////////////////////////
void sort()
{
int k,i=0;
sgStruct zapus,*pst,*pst1,*pst2;
 FILE *fp;
sgStruct *mas=new sgStruct[fcount("D:\A.txt")];
  fp=fopen("D:\A.txt","r");
  while(!feof(fp))
   { 
     fscanf(fp,"%s%s%d%d%d%s%s%d\n",&mas[i].name,&mas[i].date,&mas[i].type,&mas[i].countEmpl,&mas[i].mainProduct,&mas[i].isNewTec,&mas[i].grnPerMounth);
     i++;
   } 
for(k=0;k<i;k++){
    pst1=mas; pst2=mas+1;
    for( ; pst2<mas+i-k;pst1++,pst2++)
 if((pst1->mainProduct > pst2->mainProduct)||((pst1->mainProduct == pst2->mainProduct)||(pst1->mainProduct     == pst2->mainProduct)))
 {
    
               zapus=*pst1;
               *pst1=*pst2;
               *pst2=zapus;}
               }
 // SetColor(1,15);
printf("   Назва    *   Дата реєстрації    *  Вид власності  *  К-сть працівників  *  Основний вид продукції  *  Чи є основним в освоєнні нової технології  *  Прибуток \n");
         printf("                     *               *              *                             *                     *    \n");
for(k=0,pst=mas;k<i;k++,pst++){
  if((k%2)!=0)SetColor(0,15);else SetColor(0,7);
printf("%-20s * %-10s    *  %4d/%2d/%2d  *  %-25s  *  %-19s*  %2d \n",pst->name,pst->date,pst->type,pst->countEmpl,pst->mainProduct,pst->isNewTec,pst->grnPerMounth);
             printf("                     *               *              *                             *                     *     \n");   
                              }  
  SetColor(0,15);
delete [] mas;
}
/////////////////////////////////////////////////
void del()
{
int j,k,i,kt;
bool n=false;
char name1[20];
FILE *fp;
sw:  sgStruct *z=new sgStruct[fcount("D:\A.txt")];
fp=fopen("D:\A.txt","r");
           printf("Введiть назву сільського господарства яке потрібно видалити:\n");
     while(1)  {
           scanf("%s",&name1);
           if(check(name1)==false){Beep(500,200);Beep(500,200);printf("Ви ввели невiрну назву...Повторiть ввiд: \n");}
             else break;
            }    
i=-1;
 while(!feof(fp))
{i++;
  fscanf(fp,"%s%s%d%d%d%s%s%d\n",&z[i].name,&z[i].date,&z[i].type,&z[i].countEmpl,&z[i].mainProduct,&z[i].isNewTec,&z[i].grnPerMounth);
}
for(j=0;j<=i;j++)
   if(!strcmp(z[j].name,name1))
   {n=true;
     for(k=j;k<i;k++)z[k]=z[k+1];
     break;
   } else n=false;
fclose(fp);

if(n==true){
            fp=fopen("D:\A.txt","w");
            for(k=0;k<i;k++)fprintf(fp,"%20s %10s    %04d %02d %02d    %20s    %10s    %2d\n",z[k].name,z[k].date,z[k].type,z[k].countEmpl,z[k].mainProduct,z[k].isNewTec,z[k].grnPerMounth);
            fclose(fp);
            delete [] z;
           }
else {printf("Даного сільського господарства не знайдено...Спробуйте ще раз\n");delete [] z;goto sw;}
}
////////////////////////////////////////
/*void vuvid(int y);
{                                 
int rik1,mis1,rk,den1,i=1;
sgStruct z;
  FILE *fp;
char dat[9],rik[3]="  ",mis[3]="  ",den[3]="  ";
fp=fopen("D:\A.txt","r");
_strdate(dat);
             mis[0]=dat[0]; mis[1]=dat[1];
             den[0]=dat[3]; den[1]=dat[4];
             rik[0]=dat[6]; rik[1]=dat[7];
                den1=atoi(den);
                mis1=atoi(mis);
                rik1=atoi(rik)+2000;
if(y==3){printf("Введіть вік:"); 
      while(1)
      {
      if( ((scanf("%d",&rk))!=0)&&(rk<60))break;
        else{Beep(500,200);Beep(500,200); printf("Ви ввели невiрну iнформацiю...Повторiть ввiд: \n");}
      fflush(stdin);
      }
}
  SetColor(9,15);
 printf("________________________________________________________________________________________________________________________________________________________\n"); 
printf("      Назва     /*/        /*/  Тип /*/       /*/  Основний вид продукції  /*//*/   Прибуток \n");
printf("_______________/*//*/______/*//*/__________________________/*//*/_______________\n"); 
  SetColor(0,15);

sw:while(!feof(fp))*/
 /*{ 
  fscanf(fp,"%s%s%d%d%d%s%s%d\n",&z.name,&z.date,&z.type,&z.countEmpl,&z.mainProduct,&z.isNewTec,&z.grnPerMounth);
    switch(y){    
      case 2:if(  (z.grnPerMounth>10)
  ((z.year>(rik1-45))||((z.==(rik1-45))&&(z.mounth>mis1))||((z.year==(rik1-45))&&(z.mounth==mis1)&&(z.day>den1)) ) )break;else goto sw;
case 3:if( (z.year<(rik1-rk))||((z.year==(rik1-rk))&&(z.mounth<mis1))||((z.year==(rik1-rk))&&(z.mounth==mis1)&&(z.day<den1)) )break;else goto sw;
case 4:if(!strcmp(z.,"інженер"))break;else goto sw;
    }

      i++;
      if((i%2)!=0)SetColor(0,15);else SetColor(0,7);   
         printf("%-20s * %-10s    *  %4d/%2d/%2d  *  %-25s  *  %-19s* %2d \n",z.prizv,z.name,z.year,z.mounth,z.day,z.adresa,z.spec,z.stag);
         printf("                     *               *              *                             *                     *    \n");  
 }*/

//SetColor(0,15);
//fclose(fp);
    
///////////////////////////////////////////////////////////////////

///////////////////////////////////////
void SetColor(int text,int background)
{
    
HANDLE hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdOut,(WORD)((background<<4)|text));
}

2

Re: Під час компілювання не можу додати записи . Допоможіть будь-ласка

І що це в біса таке 7

3

Re: Під час компілювання не можу додати записи . Допоможіть будь-ласка

andriygogol11 написав:

Проблема з додаванням записів

Проблема з формулюванням питання