Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ С+

Автор: Ирин 18.05.2006 3:49

условие
Создать типизированный файл, запись которого имеет следующую структуру: фамилию и инициалы работника, должность, год поступления на работу, номер телефона. Напишите встроенную подпрограмму-функцию для организации безопасного ввода номеров телефонов – целое шестизначное число, ввода фамилии. определите сколько сотрудников не имеют телефонов.

 
#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 18.05.2006 3:54

#include <string.h>

первой строкой, и будет тебе счастье smile.gif

Автор: Ирин 18.05.2006 4:13

а вот эта строка верно написана Sotrudnik.Name[32]=0x00;
? и вот эта Sotrudnik.Name[0]=what;

и еще у меня не делает программа безопасный ввод((( игнорирует, где ошибки?

Автор: volvo 18.05.2006 4:17

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

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