Написать программу, которая: выводит текст на экран; определяет количество символов в самом коротком слове - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д