Added last three homeworks
This commit is contained in:
parent
f7b2367bc4
commit
0e3d948c9f
363 changed files with 18214 additions and 0 deletions
73
2025.02.28/2Ex/array.c
Normal file
73
2025.02.28/2Ex/array.c
Normal file
|
@ -0,0 +1,73 @@
|
|||
#include "array.h"
|
||||
|
||||
io_status read_array(char* a[], int n, const char * name)
|
||||
{
|
||||
char buf[LEN] = {0};
|
||||
FILE *fp = 0;
|
||||
int i, j;
|
||||
|
||||
if (!(fp = fopen(name, "r"))) return ERROR_OPEN;
|
||||
for (i = 0; i < n; i++) {
|
||||
if (!fgets(buf, sizeof(buf), fp))
|
||||
{
|
||||
fclose(fp);
|
||||
free_array(a, i);
|
||||
return ERROR_READ;
|
||||
}
|
||||
|
||||
for (j = 0; buf[j]; j++)
|
||||
{
|
||||
if (buf[j] == '\n')
|
||||
{
|
||||
buf[j] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
a[i] = (char *)malloc((j+1) * sizeof(char));
|
||||
if (!a[i])
|
||||
{
|
||||
fclose(fp);
|
||||
free_array(a, i);
|
||||
return ERROR_MEM;
|
||||
}
|
||||
|
||||
strcpy(a[i], buf);
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
void free_array(char ** a, int n)
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < n; ++i)
|
||||
{
|
||||
if (a[i])
|
||||
{
|
||||
free(a[i]);
|
||||
a[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void print_array(char ** a, int n, int m)
|
||||
{
|
||||
int l = (n > m ? m : n);
|
||||
int i;
|
||||
for (i = 0; i < l; ++i) printf("%s\n", a[i]);
|
||||
}
|
||||
|
||||
int check(char **a, int n, int (*cmp)(const char *, const char *))
|
||||
{
|
||||
/* Каждый элемент больше следующего */
|
||||
int i; int count = 0;
|
||||
for (i = 1; i < n; i++)
|
||||
{
|
||||
if ((*cmp)(a[i-1], a[i]) > 0)
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue