Написать программу, которая: выводит текст на экран; определяет количество символов в самом коротком слове - C (СИ)

Узнай цену своей работы

Формулировка задачи:

С помощью текстового редактора БЛОКНОТ создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки текста не должна превышать 70 символов). Файл должен иметь расширение DAT. Написать программу, которая: - выводит текст на экран дисплея; - определяет количество символов в самом коротком слове. (На языке C, не С++) ------------ Вот тут получилось: вывести текст на экран и посчитать кол-во слов.
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <locale.h>
  4. #include <process.h>
  5. #include <string.h>
  6. #include <Windows.h>
  7. void menu(); //
  8. FILE* openFile(char*);
  9. void readAndWriteword();
  10. void main()
  11. {
  12. setlocale(LC_CTYPE, "Russian");
  13. system("cls");
  14. fflush(stdin);
  15. menu(); //вызов функции
  16. }
  17. //Меню программы
  18. void menu()
  19. {
  20. int n = 0; //инициализация переменной
  21. puts("Выберите следующее действие:\n 1 - Вывод текста из файла на экран. Вывод количества слов в файле. \n 2 - Выход");//вывод сообщения на экран
  22. scanf_s("%d", &n);//ввод номера команды
  23. switch (n)//выбор введенной программы
  24. {
  25. case 1: {readAndWriteword(); break; } //вывод текста и подсчет слов
  26. case 2: {return; }//выход
  27. default: menu(); //возвращение в меню
  28. }
  29. }
  30. // Функция считывает и выводит содержание файла, а так же выводит количество слов
  31. void readAndWriteword()
  32. {
  33. fflush(stdin);
  34. char word; //объявление переменной
  35. int count = 1; //инициализация переменной
  36. char symble[70] = " "; //массив с пробелом
  37. char *name = new char[80]; // массив символов
  38. FILE *f; // объявление переменной
  39. char *str = new char[70]; //массив символов
  40. puts("\n Введите имя файла:"); //вывод на экран
  41. gets_s(name, 79);//ввод имени файла
  42. f = openFile(name); //вызов функции для открытия файла
  43. puts("\n Содержимое файла \n"); //вывод на экран
  44. if (!feof(f)) //если конец файла
  45. {
  46. word = fgetc(f); //считывание символа из файла
  47. if (strchr(symble, word) != NULL) //если есть символ "пробел"
  48. {
  49. count++; //+1
  50. }
  51. while (!feof(f)) //пока не конец файла
  52. {
  53. printf("%c", word); //вывод символа
  54. {
  55. if (!feof(f)) //если не конец файла
  56. {
  57. word = fgetc(f); //считывание теста из файла
  58. if (strchr(symble, word) != NULL) //если символ пробел
  59. {
  60. count++; //+1
  61. }
  62. }
  63. }
  64. }
  65. puts("\n"); //вывод на экран
  66. printf("%s", "Количество слов:"); //вывод на экран
  67. printf("%d", count); //вывод на экран
  68. puts("\n"); //вывод на экран
  69. }
  70. else
  71. {
  72. puts("Файл пуст!"); //вывод на экран
  73. }
  74. fclose(f); //закрытие документа
  75. delete[]str; //удаление массива
  76. menu(); //переход в меню
  77. }
  78. // Функция открытия файла
  79. FILE* openFile(char* name)
  80. {
  81. setlocale(LC_CTYPE, "Russian");
  82. system("cls");
  83. fflush(stdin);
  84. FILE* f; // объявление переменной
  85. if ((fopen_s(&f, name, "r")) != 0) //если не удалось открыть файл
  86. {
  87. printf("Ошибка открытия файла\n"); //вывод на экран
  88. menu(); //переход в меню
  89. }
  90. else
  91. {
  92. return f; //возвращение переменной с сылкой на открываемый файл
  93. }
  94. }
А определить количество символов в самом коротком слове никак не получается. Помогите пожалуйста со вторым заданием

Решение задачи: «Написать программу, которая: выводит текст на экран; определяет количество символов в самом коротком слове»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <errno.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. #define MAX_LEN 70
  7.  
  8. int main(int argc, const char *argv[])
  9. {
  10.     FILE *fd;
  11.     char buff[MAX_LEN];
  12.     char *token, *delim = " \n\0";
  13.     unsigned int min_len, tmp;
  14.  
  15.     if ((fd = fopen("./input.DAT", "r+")) == NULL) {
  16.         fprintf(stderr, "Open failed: %s\n", strerror(errno));
  17.         exit(EXIT_FAILURE);
  18.     }
  19.  
  20.     min_len = MAX_LEN;
  21.     while (fgets(buff, sizeof(buff), fd) != NULL) {
  22.         printf("%sn", buff);
  23.  
  24.         token = strtok(buff, delim);
  25.         while (token != NULL) {
  26.             min_len = min_len > strlen(token) ? strlen(token) : min_len;
  27.             token = strtok(NULL, delim);
  28.         }
  29.     }
  30.  
  31.     printf("min_len = %d\n", min_len);
  32.  
  33.     fclose(fd);
  34.  
  35.     exit(EXIT_SUCCESS);
  36. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы