Написать программу, которая: выводит текст на экран; определяет количество символов в самом коротком слове - C (СИ)
Формулировка задачи:
С помощью текстового редактора БЛОКНОТ создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки текста не должна превышать 70 символов).
Файл должен иметь расширение DAT.
Написать программу, которая:
- выводит текст на экран дисплея;
- определяет количество символов в самом коротком слове.
(На языке C, не С++)
------------
Вот тут получилось: вывести текст на экран и посчитать кол-во слов.
А определить количество символов в самом коротком слове никак не получается. Помогите пожалуйста со вторым заданием
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- #include <locale.h>
- #include <process.h>
- #include <string.h>
- #include <Windows.h>
- void menu(); //
- FILE* openFile(char*);
- void readAndWriteword();
- void main()
- {
- setlocale(LC_CTYPE, "Russian");
- system("cls");
- fflush(stdin);
- menu(); //вызов функции
- }
- //Меню программы
- void menu()
- {
- int n = 0; //инициализация переменной
- puts("Выберите следующее действие:\n 1 - Вывод текста из файла на экран. Вывод количества слов в файле. \n 2 - Выход");//вывод сообщения на экран
- scanf_s("%d", &n);//ввод номера команды
- switch (n)//выбор введенной программы
- {
- case 1: {readAndWriteword(); break; } //вывод текста и подсчет слов
- case 2: {return; }//выход
- default: menu(); //возвращение в меню
- }
- }
- // Функция считывает и выводит содержание файла, а так же выводит количество слов
- void readAndWriteword()
- {
- fflush(stdin);
- char word; //объявление переменной
- int count = 1; //инициализация переменной
- char symble[70] = " "; //массив с пробелом
- char *name = new char[80]; // массив символов
- FILE *f; // объявление переменной
- char *str = new char[70]; //массив символов
- puts("\n Введите имя файла:"); //вывод на экран
- gets_s(name, 79);//ввод имени файла
- f = openFile(name); //вызов функции для открытия файла
- puts("\n Содержимое файла \n"); //вывод на экран
- if (!feof(f)) //если конец файла
- {
- word = fgetc(f); //считывание символа из файла
- if (strchr(symble, word) != NULL) //если есть символ "пробел"
- {
- count++; //+1
- }
- while (!feof(f)) //пока не конец файла
- {
- printf("%c", word); //вывод символа
- {
- if (!feof(f)) //если не конец файла
- {
- word = fgetc(f); //считывание теста из файла
- if (strchr(symble, word) != NULL) //если символ пробел
- {
- count++; //+1
- }
- }
- }
- }
- puts("\n"); //вывод на экран
- printf("%s", "Количество слов:"); //вывод на экран
- printf("%d", count); //вывод на экран
- puts("\n"); //вывод на экран
- }
- else
- {
- puts("Файл пуст!"); //вывод на экран
- }
- fclose(f); //закрытие документа
- delete[]str; //удаление массива
- menu(); //переход в меню
- }
- // Функция открытия файла
- FILE* openFile(char* name)
- {
- setlocale(LC_CTYPE, "Russian");
- system("cls");
- fflush(stdin);
- FILE* f; // объявление переменной
- if ((fopen_s(&f, name, "r")) != 0) //если не удалось открыть файл
- {
- printf("Ошибка открытия файла\n"); //вывод на экран
- menu(); //переход в меню
- }
- else
- {
- return f; //возвращение переменной с сылкой на открываемый файл
- }
- }
Решение задачи: «Написать программу, которая: выводит текст на экран; определяет количество символов в самом коротком слове»
textual
Листинг программы
- #include <stdio.h>
- #include <errno.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_LEN 70
- int main(int argc, const char *argv[])
- {
- FILE *fd;
- char buff[MAX_LEN];
- char *token, *delim = " \n\0";
- unsigned int min_len, tmp;
- if ((fd = fopen("./input.DAT", "r+")) == NULL) {
- fprintf(stderr, "Open failed: %s\n", strerror(errno));
- exit(EXIT_FAILURE);
- }
- min_len = MAX_LEN;
- while (fgets(buff, sizeof(buff), fd) != NULL) {
- printf("%sn", buff);
- token = strtok(buff, delim);
- while (token != NULL) {
- min_len = min_len > strlen(token) ? strlen(token) : min_len;
- token = strtok(NULL, delim);
- }
- }
- printf("min_len = %d\n", min_len);
- fclose(fd);
- exit(EXIT_SUCCESS);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д