Ejemplo n.º 1
0
void sort_array(int *a, int n) {
	char c;
	int success;

	do {
		printf("\n\nSorting algorithms: ");
		printf("\n[1].-Bubble\n[2].-Selection\n[3].-Insertion\n[4].-No-Sorting");
		printf("\nChoose:\t");
		if(!(success = is_single_char(&c)))
			fflushstdin();
		if(c < 49 || c > 52)
			printf("Please give a valid option\n");
	} while(!success || c < 49 || c > 52);

	switch (c)
	{
		case '1':
			bubble_sort (a, n);
			break;
		case '2':
			selection_sort(a, n);
			break;
		case '3':
			insertion_sort (a, 0, n);
			break;
		case '4':
			printf("\nDATA STAYS THE SAME\n");
			break;
		default:
			break;
	}
}
Ejemplo n.º 2
0
char prompt(char *pass)
{
	printf("Password: "******"%24s", pass);
	fflushstdin();
	
	// Length ok?
	if(strlen(pass) > 20)
		return 0;
	
	// Check each character is in [a-zA-Z0-9]
	char *c = pass;
	while(*c != 0)
	{
		if((*c >= '0' && *c <= '9')
			||
			(*c >= 'A' && *c <= 'Z')
			||
			(*c >= 'a' && *c <= 'z')
			)
		{
			// Valid character, go to the next one
			c++;
		}
		else
		{
			// Invalid
			return 0;
		}
	}
	
	// Passed all the tests, the password is clean
	return 1;
}
Ejemplo n.º 3
0
void validate_int_read(int *num, char *s){
	int success;
	do {
		printf("\n%s\t", s);
		if(!(success = is_number(num))) {
			printf("Please give a number\n");
			fflushstdin();
		}
	} while(!success);
}
Ejemplo n.º 4
0
void validate_single_char_read(char *c){
	int success;
	do {
		printf("\nNUMBER:\t");
		if(!(success = is_single_char(c))) {
			printf("Please give valid option\n");
			fflushstdin();
		}
	} while(!success);
}
Ejemplo n.º 5
0
float EnterRouteLength()
{
	printf("Длина маршрута(км): ");
	float routeLength = 0.0;
	fflushstdin();
	if (scanf("%f", &routeLength) != 1)
	{
		puts("Ошибка формата входных данных.");
		return EnterRouteLength();
	}
	else
	{
		return routeLength;
	}
}
Ejemplo n.º 6
0
int EnterCarsCount()
{
	printf("Единиц транспорта: ");
	unsigned int carsCount;
	fflushstdin();
	if (scanf("%d", &carsCount) != 1)
	{
		puts("Ошибка формата входных данных.");
		return EnterCarsCount();
	}
	else
	{
		return carsCount;
	}
}
Ejemplo n.º 7
0
void prompt(char *enteredPass)
{
	printf("Password: "******"%24s", enteredPass);
	fflushstdin();
}
Ejemplo n.º 8
0
int f_print(int x)
{
	int sh = 0, a = 0, l = 0, i = 0;
	struct str *s;
	FILE *file;

	file = fopen("file.txt", "r");
	if (!file)
	{
		printf("\nОшибка файла\n\n");
		return 1;
	}

	puts("\nВведите количество строчек, которой хотите вывести на экран (если не знайте содержимое файла, введите 100 или более)");
	do
	{
		if (sh == 1)
		{
			fflushstdin();
		}
		if (!scanf("%d", &a) || (a < 1) || (a > 1000))
		{
			puts("Ошибка ввода. Введите заново");
		}
		sh = 1;
	} while (!a || (a < 1) || (a > 1000));
	sh = 0; a += P;

	puts("\nВведите max символьную длину имя, фамилии, отчества или группы (min 15)(если не знайте содержимое файла, введите 30 или более)");
	do
	{
		if (sh == 1)
		{
			fflushstdin();
		}
		if (!scanf("%d", &l) || (l < 15) || (l > 1000))
		{
			puts("Ошибка ввода. Введите заново");
		}
		sh = 1;
	} while (!l || (l < 15) || (l > 1000));
	sh = 0;

	//Выделение памяти
	s = (struct str *)malloc(a * sizeof(struct str));
	if (s == NULL)
	{
		printf("\nОшибка памяти\n");
		return 1;
	}
	memory(a, l, s);

	for (i = 0; i < a; i++)
	{
		fscanf(file, "%s %s %s %s", s[i].name, s[i].sname, s[i].lname, s[i].gr);
		if (!*s[i].name)
		{
			if (x == 1)
			{
				printf("\nВсего в файле обнаружено %d строчка(ек) данных\n\n", i);
			}
			break;
		}
		if (x != 1)
		{
			printf("\n%s %s %s %s\n", s[i].name, s[i].sname, s[i].lname, s[i].gr);
		}
	}

	fclose(file);

	//Очищение памяти
	fmemory(a, l, s);
	free(s);

	return 0;
}
Ejemplo n.º 9
0
int f_add()
{
	int sh = 0, a = 0, l = 0, y = 0, x = -1, z = 0, i;
	struct str *s;
	FILE *file;
	char proverka[11] = "0123456789";

	file = fopen("file.txt", "rb+");
	if (!file)
	{
		printf("\nОшибка файла\n\n");
		return 1;
	}

	puts("\nВведите количество строк, которые хотите добавить");
	do
	{
		if (sh == 1)
		{
			fflushstdin();
		}
		if (!scanf("%d", &a) || (a < 1) || (a > 1000))
		{
			puts("Ошибка ввода. Введите заново");
		}
		sh = 1;
	} while (!a || (a < 1) || (a > 1000));
	sh = 0;

	puts("\nВведите max символьную длину имя, фамилии, отчества или группы (min 15)");
	do
	{
		if (sh == 1)
		{
			fflushstdin();
		}
		if (!scanf("%d", &l) || (l < 15) || (l > 1000))
		{
			puts("Ошибка ввода. Введите заново");
		}
		sh = 1;
	} while (!l || (l < 15) || (l > 1000));
	sh = 0; l += 30;

	//Выделение памяти
	s = (struct str *)malloc(a * sizeof(struct str));
	if (s == NULL)
	{
		printf("\nОшибка памяти\n");
		return 1;
	}
	memory(a, l, s);

	fseek(file, 0, 2);

	for (y = 0; y < a; y++)
	{
		fflushstdin();

		do
		{
			printf("\nВведите имя %d-го человека\n", y + 1);
			sh = 0;
			fgets(s[y].name, l, stdin);
			for (z = 0; z < 10; z++)
			{
				for (i = 0; i < l; i++)
				{
					if (proverka[z] == s[y].name[i])
					{
						puts("Ошибка ввода. Введите заново");
						sh = 1;
						free(s[y].name);
						s[y].name = (char *)calloc(l, sizeof(char));
					}
				}
			}
		}while (sh == 1);

		do
		{
			printf("\nВведите фамилию %d-го человека\n", y + 1);
			sh = 0;
			fgets(s[y].sname, l, stdin);
			for (z = 0; z < 10; z++)
			{
				for (i = 0; i < l; i++)
				{
					if (proverka[z] == s[y].sname[i])
					{
						puts("Ошибка ввода. Введите заново");
						sh = 1;
						free(s[y].sname);
						s[y].sname = (char *)calloc(l, sizeof(char));
					}
				}
			}
		}while (sh == 1);

		do
		{
			printf("\nВведите отчество %d-го человека\n", y + 1);
			sh = 0;
			fgets(s[y].lname, l, stdin);
			for (z = 0; z < 10; z++)
			{
				for (i = 0; i < l; i++)
				{
					if (proverka[z] == s[y].lname[i])
					{
						puts("Ошибка ввода. Введите заново");
						sh = 1;
						free(s[y].lname);
						s[y].lname = (char *)calloc(l, sizeof(char));
					}
				}
			}
		}while (sh == 1);

		printf("\nВведите группу %d-го человека\n", y + 1);
		fgets(s[y].gr, l, stdin);

		fprintf(file, "%s %s %s %s", s[y].name, s[y].sname, s[y].lname, s[y].gr);
	}

	fclose(file);

	//Очищение памяти
	fmemory(a, l, s);
	free(s);

	f_sort(x);

	return 0;
}
Ejemplo n.º 10
0
int f_remov()
{
	int sh = 0, a = 0, l = 0, i = 0, ct;
	struct str *s;
	FILE *file;

	file = fopen("file.txt", "rb+");
	if (!file)
	{
		printf("\nОшибка файла\n\n");
		return 1;
	}

	puts("\nВведите количество строчек в файле (если не знайте содержимое файла, введите 100 или более)");
	do
	{
		if (sh == 1)
		{
			fflushstdin();
		}
		if (!scanf("%d", &a) || (a < 1) || (a > 1000))
		{
			puts("Ошибка ввода. Введите заново");
		}
		sh = 1;
	} while (!a || (a < 1) || (a > 1000));
	sh = 0; a += P;

	puts("\nВведите max символьную длину имя, фамилии, отчества или группы (min 15)(если не знайте содержимое файла, введите 30 или более)");
	do
	{
		if (sh == 1)
		{
			fflushstdin();
		}
		if (!scanf("%d", &l) || (l < 15) || (l > 1000))
		{
			puts("Ошибка ввода. Введите заново");
		}
		sh = 1;
	} while (!l || (l < 15) || (l > 1000));
	sh = 0;

	puts("\nВведите номер строки, которую хотите удалить");
	do
	{
		if (sh == 1)
		{
			fflushstdin();
		}
		if (!scanf("%d", &ct) || (ct < 1) || (ct > a))
		{
			puts("Ошибка ввода. Введите заново");
		}
		sh = 1;
	} while (!ct || (ct < 1) || (ct > a));
	sh = 0;

	//Выделение памяти
	s = (struct str *)malloc(a * sizeof(struct str));
	if (s == NULL)
	{
		printf("\nОшибка памяти\n");
		return 1;
	}
	memory(a, l, s);

	for (i = 0; i < a; i++)
	{
		fscanf(file, "%s %s %s %s", s[i].name, s[i].sname, s[i].lname, s[i].gr);
		if (!*s[i].name)
		{
			break;
		}
	}

	fclose(file);

	f_removeall();

	FILE *file1;
	file1 = fopen("file.txt", "rb+");
	if (!file1)
	{
		printf("\nОшибка файла\n\n");
		return 1;
	}

	for (i = 0; i < a; i++)
	{
		if (ct - 1 == i)
		{
			i++;
		}
		if (!*s[i].name)
		{
			break;
		}
		fprintf(file1, "%s %s %s %s\r\n", s[i].name, s[i].sname, s[i].lname, s[i].gr);
	}
	fclose(file1);

	//Очищение памяти
	fmemory(a, l, s);
	free(s);

	return 0;
}
Ejemplo n.º 11
0
int f_find(int x)
{
	int sh = 0, a = 0, l = 0, i = 0, u = 0;
	struct str *s;
	char *im;
	FILE *file;

	file = fopen("file.txt", "rb+");
	if (!file)
	{
		printf("\nОшибка файла\n\n");
		return 1;
	}

	puts("\nВведите количество строчек в файле (если не знайте содержимое файла, введите 100 или более)");
	do
	{
		if (sh == 1)
		{
			fflushstdin();
		}
		if (!scanf("%d", &a) || (a < 1) || (a > 1000))
		{
			puts("Ошибка ввода. Введите заново");
		}
		sh = 1;
	} while (!a || (a < 1) || (a > 1000));
	sh = 0; a += P;

	puts("\nВведите max символьную длину имя, фамилии, отчества или группы (min 15)(если не знайте содержимое файла, введите 30 или более)");
	do
	{
		if (sh == 1)
		{
			fflushstdin();
		}
		if (!scanf("%d", &l) || (l < 15) || (l > 1000))
		{
			puts("Ошибка ввода. Введите заново");
		}
		sh = 1;
	} while (!l || (l < 15) || (l > 1000));
	sh = 0;

	if (x == 0)
	{
		puts("\nВведите количество букв в имени, которое хотите найти");
	}
	if (x == 1)
	{
		puts("\nВведите количество букв в фамилии, которую хотите найти");
	}
	if (x == 2)
	{
		puts("\nВведите количество букв в отчестве, которое хотите найти");
	}
	if (x == 3)
	{
		puts("\nВведите количество цифр в группе, которую хотите найти");
	}
	do
	{
		if (sh == 1)
		{
			fflushstdin();
		}
		if (!scanf("%d", &u) || (u < 1) || (u > 100))
		{
			puts("Ошибка ввода. Введите заново");
		}
		sh = 1;
	} while (!u || (u < 1) || (u > 100));
	sh = 0;

	if (x != 3)
	{
		u *= 2;
	}

	im = (char *)malloc((u + 1) * sizeof(char));
	fflushstdin();
	puts("\nВведите информацию для поиска");
	fgets(im, u + 1, stdin);

	//Выделение памяти
	s = (struct str *)malloc(a * sizeof(struct str));
	if (s == NULL)
	{
		printf("\nОшибка памяти\n");
		return 1;
	}
	memory(a, l, s);

	for (i = 0; i < a; i++)
	{
		fscanf(file, "%s %s %s %s", s[i].name, s[i].sname, s[i].lname, s[i].gr);
		if (!*s[i].name)
		{
			break;
		}

		if (strcmp(s[i].name, im) == 0 && x == 0)
		{
			printf("\n%s %s %s %s\n", s[i].name, s[i].sname, s[i].lname, s[i].gr);
			sh = 2;
		}
		if (strcmp(s[i].sname, im) == 0 && x == 1)
		{
			printf("\n%s %s %s %s\n", s[i].name, s[i].sname, s[i].lname, s[i].gr);
			sh = 2;
		}
		if (strcmp(s[i].lname, im) == 0 && x == 2)
		{
			printf("\n%s %s %s %s\n", s[i].name, s[i].sname, s[i].lname, s[i].gr);
			sh = 2;
		}
		if (strcmp(s[i].gr, im) == 0 && x == 3)
		{
			printf("\n%s %s %s %s\n", s[i].name, s[i].sname, s[i].lname, s[i].gr);
			sh = 2;
		}
	}
	if (sh != 2)
	{
		puts("\nДанных нет. Либо вы ввели не верное количество букв или цифр\n");
	}

	fclose(file);

	//Очищение памяти
	fmemory(a, l, s);
	free(im);
	free(s);

	return 0;
}
Ejemplo n.º 12
0
int f_sort(int x)
{
	int sh = 0, a = 0, l = 0, i = 0, y = 0, j = 0;
	struct str *s;
	char *str;
	FILE *file;

	file = fopen("file.txt", "r");
	if (!file)
	{
		printf("\nОшибка файла\n\n");
		return 1;
	}

	puts("\nВведите количество строчек в файле (если не знайте содержимое файла, введите 100 или более)");
	do
	{
		if (sh == 1)
		{
			fflushstdin();
		}
		if (!scanf("%d", &a) || (a < 1) || (a > 1000))
		{
			puts("Ошибка ввода. Введите заново");
		}
		sh = 1;
	} while (!a || (a < 1) || (a > 1000));
	sh = 0; a += P;

	if (x != -1)
	{
		puts("\nВведите max символьную длину имя, фамилии, отчества или группы (min 15)(если не знайте содержимое файла, введите 30 или более)");
		do
		{
			if (sh == 1)
			{
				fflushstdin();
			}
			if (!scanf("%d", &l) || (l < 15) || (l > 1000))
			{
				puts("Ошибка ввода. Введите заново");
			}
			sh = 1;
		} while (!l || (l < 15) || (l > 1000));
		sh = 0;
	}
	else
	{
		l = P;
	}

	str = (char *)calloc((l + H), sizeof(char));
	//Выделение памяти
	s = (struct str *)malloc(a * sizeof(struct str));
	if (s == NULL)
	{
		printf("\nОшибка памяти\n");
		return 1;
	}
	memory(a, l, s);

	for (i = 0; i < a; i++)
	{
		fscanf(file, "%s %s %s %s", s[i].name, s[i].sname, s[i].lname, s[i].gr);
		if (!*s[i].name)
		{
			y = i;
			break;
		}
	}

	if (x == 1)
	{
		for (i = 1; i < y; i++)
		{
			for (j = 0; j < y - i; j++)
			{
				if (strcmp(s[j].name, s[j + 1].name) > 0)
				{
					sort(s, j, str);
				}
			}
		}
	}
	if (x == 2)
	{
		for (i = 1; i < y; i++)
		{
			for (j = 0; j < y - i; j++)
			{
				if (strcmp(s[j].sname, s[j + 1].sname) > 0)
				{
					sort(s, j, str);
				}
			}
		}
	}
	if (x == 3)
	{
		for (i = 1; i < y; i++)
		{
			for (j = 0; j < y - i; j++)
			{
				if (strcmp(s[j].lname, s[j + 1].lname) > 0)
				{
					sort(s, j, str);
				}
			}
		}
	}
	if (x == 4)
	{
		for (i = 1; i < y; i++)
		{
			for (j = 0; j < y - i; j++)
			{
				if (strcmp(s[j].gr, s[j + 1].gr) > 0)
				{
					sort(s, j, str);
				}
			}
		}
	}

	fclose(file);

	f_removeall();

	FILE *file1;
	file1 = fopen("file.txt", "rb+");
	if (!file1)
	{
		printf("\nОшибка файла\n\n");
		return 1;
	}

	for (i = 0; i < y; i++)
	{
		fprintf(file1, "%s %s %s %s\r\n", s[i].name, s[i].sname, s[i].lname, s[i].gr);
	}
	fclose(file1);

	//Очищение памяти
	fmemory(a, l, s);
	free(str);
	free(s);

	return 0;
}