Помощь - Поиск - Пользователи - Календарь
Полная версия: С+
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
Ирин
условие
Создать типизированный файл, запись которого имеет следующую структуру: фамилию и инициалы работника, должность, год поступления на работу, номер телефона. Напишите встроенную подпрограмму-функцию для организации безопасного ввода номеров телефонов – целое шестизначное число, ввода фамилии. определите сколько сотрудников не имеют телефонов.

 
#include <stdio.h>
#include <conio.h>

int col;
int bez_tel;
FILE * file;

struct One{
  char  Name[20];
  char  post[20];
  int  god;
  char  Phone_num[7];
};

One Sotrudnik;

void SafeName()
{

 char w[32], passw[]={'А','б','в','г','д','е','ж','з','и','к','л','м','н','о',
					   'п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ы','ъ','э','ю','я'};
 int j, fl;
 char what;
 Sotrudnik.Name[0]=what;
 fl=1;
 for (j=0; !fl && j< 30; j++)
 {
 printf("\n Name  ");
 gets(w);

 if (strstr(w,passw))fl=0;   //сравение строк
}
 if (fl)
 printf("\nПовторитее ввод");

else
  Sotrudnik.Name[32]=0x00;
//printf("\nВвели верно");
 }
void SafePhone()
{
  char norm = 0;
  char ch;
  int i=0;

  printf("\n Phone number  ");
  while(norm == 0)
  {
	 ch = getch();
	 if(i == 0 && ch == 13)
	 {
		Sotrudnik.Phone_num[0] = 0x00;
		norm = 1;
	 }
	 else
	 {
		if(ch >= 48 && ch <= 57)
		{
			printf("%c", ch);
			Sotrudnik.Phone_num[i] = ch;
			i++;
		}
		if(i == 6)
			norm = 1;
	 }
  }

  Sotrudnik.Phone_num[6] = 0x00;
}


void Out()
{
  bez_tel = 0;
  fprintf(file, "%s\n", Sotrudnik.Name);
  fprintf(file, "%s\n", Sotrudnik.post);
  fprintf(file, "%d\n", Sotrudnik.god);
  if(Sotrudnik.Phone_num[0] == 0x00)
  {
	 fprintf(file, "no\n");
	 bez_tel ++;
  }
  else
	 fprintf(file, "%s\n", Sotrudnik.Phone_num);
}


void main()
{
  file = fopen("Out.txt", "w");

  clrscr();
  printf("\n\n  Vvedite kolichestvo sotrudnikov v faile ");
  scanf("%u", &col);
  for(int i=0;i<col;i++)
  {
	 printf("\n Name  ");
	 scanf("%s", Sotrudnik.Name);
	 printf("\n post  ");
	 scanf("%s", Sotrudnik.post);

	 printf("\n god  ");
	 scanf("%d", &Sotrudnik.god);
	 SafePhone();
	 Out();
  }
  printf("\n\n Informacia bila zapisana v fail  <Out.txt>  ");
  printf("\n\n  Sotrudnikov, y kotoryh net telefonov  %d", bez_tel);
  getch();
  fclose(file);
}



в программа выдает при компиляции одну ошибку не пойму почему( не могли бы вы проверить.. верно ли тут все написано?
volvo
#include <string.h>

первой строкой, и будет тебе счастье smile.gif
Ирин
а вот эта строка верно написана Sotrudnik.Name[32]=0x00;
? и вот эта Sotrudnik.Name[0]=what;

и еще у меня не делает программа безопасный ввод((( игнорирует, где ошибки?
volvo
Откуда я знаю? С точки зрения компилятора претензий нет... Я же тебе показал, что надо сделать, чтобы программа компилировалась... Теперь ходи по ней в пошаговом режиме, и смотри, что именно она делает, и правильно ли это...

Решать тебе. Можно считать программу правильной, если она выполняет поставленную задачу, а можно - если программа не только работает, а написана эффективно и красиво...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.