Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа
.CPP#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <stdlib.h>
void dynamic_memory (void);
void output (void);
int detect (char ch, int *index);
FILE *f;
int i, index, word = 0, real = 0, integer = 0,
letter, max = 0, *int_array;
char ch, **char_array;
float *float_array;
void main ()
{ clrscr ();
if ((f = fopen ("array.dat", "w+")) == NULL)
{ puts (" ЌҐ ¬®Јг ®вЄалвм д ©«");
exit (1);
}
puts (" ‚ўҐ¤ЁвҐ «оЎлҐ бЁ¬ў®«л. „«п § ўҐаиҐЁп ¦¬ЁвҐ ESC");
while (ch != 27)
{
letter = 0;
do {
ch = getch ();
if (ch == 13) printf ("\n");
if (ch != 9 && ch != 27) printf ("%c", ch);
else printf ("\t");
}
while (ch == 9 || ch == 13 || ch == 32);
index = 3;
if (ch >= '0' && ch <= '9') index = 1;
if (ch == '-' || ch == '+') index = 1;
if (ch == '.') index = 2;
if (ch == 27) break;
if (ch != 27) fprintf (f, "%c", ch);
letter ++;
ch = getch ();
if (ch == 13) printf ("\n");
if (ch != 9 && ch != 27) printf ("%c", ch);
else printf ("\t");
do {
switch (index)
{
case 1:
if (ch >= '0' && ch <= '9') index = 1;
else if (ch == '.') index = 2; else index = 3;
break;
case 2:
if (ch >= '0' && ch <= '9') index = 2; else index = 3;
break;
default:
index = 3;
}
if (ch != 27) fprintf (f, "%c", ch);
letter ++;
ch = getch ();
if (ch == 13) printf ("\n");
if (ch != 9 && ch != 27) printf ("%c", ch);
else printf ("\t");
}
while (ch != 9 && ch != 13 && ch != 27 && ch != 32);
if (index == 1) integer ++;
if (index == 2) real ++;
if (index == 3) word ++;
fseek (f, -letter, SEEK_CUR);
dynamic_memory ();
}
printf ("\n");
output ();
fclose (f);
puts ("\n Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг");
ch = getch ();
}
void dynamic_memory (void)
{if (index == 1)
{if (integer == 1)
int_array = (int*) malloc (sizeof (int));
if (integer > 1)
int_array = (int*) realloc (int_array, integer * sizeof (int));
if (!int_array)
{puts (" ЌҐ¤®бв в®з® Ї ¬пвЁ");
exit (1);
}
fscanf (f, "%d", &int_array [integer-1]);
}
if (index == 2)
{if (real == 1)
float_array = (float*) malloc (sizeof (float));
if (real > 1)
float_array = (float*) realloc (float_array, real * sizeof (float));
if (!float_array)
{puts (" ЌҐ¤®бв в®з® Ї ¬пвЁ");
exit (1);
}
fscanf (f, "%f", &float_array [real-1]);
}
if (index == 3)
{if (word == 1)
char_array = (char**) malloc (sizeof (char*));
if (word > 1)
char_array = (char**) realloc (char_array, word * sizeof (char*));
char_array [word-1] = (char*) malloc ((max+1) * sizeof (char));
if (letter > max)
{max = letter;
for (i = 0; i < word; i++)
char_array [i] = (char*) realloc (char_array [i], (max+1) * sizeof (char));
}
if (!char_array [word-1])
{puts (" ЌҐ¤®бв в®з® Ї ¬пвЁ");
exit (1);
}
fscanf (f, "%s", char_array [word-1]);
}
fprintf (f, " ");
}
void output (void)
{printf ("\n");
if (integer > 0)
{puts (" Њ ббЁў 楫ле зЁбҐ«:");
fprintf (f, "\n Њ ббЁў 楫ле зЁбҐ«:\n");
for (i = 0; i < integer; i++)
{printf ("%d ", *(int_array+i));
fprintf (f, "%d ", *(int_array+i));
}
printf ("\n");
}
if (real > 0)
{puts (" Њ ббЁў ¤Ґ©б⢨⥫мле зЁбҐ«:");
fprintf (f, "\n Њ ббЁў ¤Ґ©б⢨⥫мле зЁбҐ«:\n");
for (i = 0; i < real; i++)
{printf ("%f ", *(float_array+i));
fprintf (f, "%f ", *(float_array+i));
}
printf ("\n");
}
if (word > 0)
{puts (" Њ ббЁў б«®ў:");
fprintf (f, "\n Њ ббЁў б«®ў:\n");
for (i = 0; i < word; i++)
{printf ("%s ", char_array [i]);
fprintf (f, "%s ", char_array [i]);
}
printf ("\n");
}
free (int_array);
free (float_array);
free (char_array);
}
Соседние файлы в предмете Программирование