Отчет по выполнению семинаров 1-3 семестра 2 (1168192), страница 2
Текст из файла (страница 2)
Требования к подпрограммам: каждая подпрограмма является функционально завершенной и должнавызываться более одного раза с разными фактическими параметрами; подпрограмма обработки не должна содержать ввод (вывод)данных; в подпрограммах не рекомендуется использовать глобальныепеременные.Проверить, является ли каждая из последовательностей А, В, С десятичнойзаписью целого числа.Состав данныхИмяAТекстСмыслТипИсходные данныесимвольныйBТекстсимвольныйCТекстсимвольныйaВыходные данныецелыйЯвляется ли текст Адесятичной записью целогочислаЯвляется ли текст Bдесятичной записью целогочислаЯвляется ли текст Cдесятичной записью целогочислаbcСтруктураодномерныймассиводномерныймассиводномерныймассивпростая переменнаяцелыйпростая переменнаяцелыйпростая переменнаяint is_number(char* s):ИмяСмыслТипИсходные данныесимвольныйsТекстiПромежуточные переменныецелыйСчетчик символовСтруктураодномерныймассивпростая переменнаяБлок-схема программыНачалоВвод A, B, C;a = is_number(A)a = is_number(B)a = is_number(C)Вывод a, b, cКонецБлок-схема алгоритма подпрограммыНачалоi=0s[i] == -ДаНетi++s[i] != \0Даs[i] < 0 || s[i] > 9НетНетi++Возврат 1ДаВозврат 0Программа на СИ#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#endif#include <stdio.h>#include <conio.h>#define NMAX 81 /*максимальная длина стpоки*/int is_number(char* s) {int i = 0;if (s[i] == '-') i++;while (s[i] != '\0') {if (s[i] < '0' || s[i] > '9') {return 0;}i++;}return 1;}int main(void) {char A[NMAX], B[NMAX], C[NMAX];puts("A:"); gets(A); int a = is_number(A);puts("B:"); gets(B); int b = is_number(B);puts("C:"); gets(C); int c = is_number(C);printf("a: %s\n", a ? "true" : "false");printf("b: %s\n", b ? "true" : "false");printf("c: %s\n", c ? "true" : "false");return 0;}Пример выводаA: 40124B: фC: -55a: trueb: falsec: trueОбработка последовательности символовЗАДАНИЕ 6 (ЗАДАЧА 8 РАЗДЕЛА 2 СЕМИНАРА 3)УсловиеРазработайте и отладьте два варианта программы:a.
каждая строка входного файла считывается в переменную-строку;b. каждая строка текстового файла считывается в переменную-структуру.Вывод результатов должен осуществляться в текстовый файл.Имеются сведения о химических веществах: название, удельная масса,проводимость (проводник, полупроводник, изолятор). Вывести названияполупроводников.Программа на СИ (Вариант A)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#endif#include <stdio.h>#include <string.h>#define NMAX 81int main(){char s[NMAX];FILE* input = fopen("sem3_2-8.txt", "r");if (input == NULL) { printf("Error reading sem3_2-8.txt"); return 1; }FILE* output = fopen("sem3_2-8_out.txt", "w");if (output == NULL) { printf("Error writing sem3_2-8.txt"); return 2; }if (feof(input)) { printf("File sem3_2-8.txt is empty"); return 3; }char* filter = "полупроводник";while(fgets(s, NMAX + 1, input) != NULL) {int slen = strlen(s);if(s[slen - 1] == '\n') s[slen - 1] = '\0';slen = strlen(s);if (!strcmp(s + (strlen(s) - strlen(filter)), filter)) {sscanf(s, "%s", s);fprintf(output, "%s\n", s);}}fclose(input); fclose(output); printf("ok");return 0;}Программа на СИ (Вариант B)#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#endif#include <stdio.h>#include <string.h>#define NMAX 81typedef struct Substance {char name[32];float mass;char conductivity[16];} Substance;int main(){char s[NMAX];FILE* input = fopen("sem3_2-8.txt", "r");if (input == NULL) { printf("Error reading sem3_2-8.txt"); return 1; }FILE* output = fopen("sem3_2-8_out.txt", "w");if (output == NULL) { printf("Error writing sem3_2-8.txt"); return 2; }if (feof(input)) { printf("File sem3_2-8.txt is empty"); return 3; }char* filter = "полупроводник";Substance element;while(fscanf(input, "%s %f %s",&element.name, &element.mass, &element.conductivity) != EOF){if (!strcmp(element.conductivity, filter)) {fprintf(output, "%s\n", element.name);}}fclose(input); fclose(output); printf("ok");return 0;}Входной файлназвание1 123.4 полупроводникназвание2 45.6 изоляторназвание3 123.3 проводникназвание4 5.6 полупроводникназвание5 4.4 полупроводникназвание6 2.2 проводникназвание7 42.4123 изоляторВыходной файлназвание 1название 4название 5.