fork download
  1. //Программа для подсчета слов.V1.b
  2.  
  3. #include <stdio.h>
  4. #include <limits.h>
  5. #include <stdlib.h>
  6.  
  7. #define IN 1
  8. #define OUT 0
  9. #define LINE_MAX 4096
  10. int flonw (char s1[],char w[],int *max); //Нахождение длиннейшего слова в строке s1.
  11.  
  12. int gline (char str[],int lim); //Ввод строки
  13.  
  14. void copy (char s1[],char s2[]); //Копирование строк
  15.  
  16. int main(void)
  17. {
  18. char strin[LINE_MAX],lword[LINE_MAX],out[LINE_MAX];
  19. int k,nword = 0,len = 0,max = 0;
  20. do
  21. {
  22. if ((k=gline(strin,LINE_MAX)) == -2)
  23. {printf("ОШИБКА!!!\n");exit(0);}
  24. nword+=flonw(strin,lword,&len);
  25. if (len>max){
  26. max=len;
  27. copy(lword,out);
  28. }
  29. len=0;
  30. }
  31. while (k!=-1);
  32. printf ("\nКонец ввода\nКоличество слов:%d\nСамое длинное слово:%d Символов\n<%s>\n",nword,max,out);
  33. }
  34.  
  35. int gline (char str[],int lim){ //Ввод строки
  36. int c,i;
  37. for (i=0;i<lim && (c=getchar())!=EOF && c!='\n';++i){
  38. str[i]=c;
  39. }
  40. if(i<lim){ //Проверка на переполенеие
  41. if (c=='\n')
  42. str[i]='\0'; //Добавление символа окончания строки
  43. if (c==EOF){
  44. str[i]='\0'; //Добавление символа окончания строки
  45. return -1; //Код конца ввода
  46. }
  47. return i;
  48. }
  49. return -2; //Код переполнения
  50. }
  51.  
  52. int flonw (char s1[],char w[],int *maxl){ //Нахождение длиннейшего слова в строке s1.
  53. int c,i=0,j=0,n=0,l=0,ind=OUT;
  54. char t[LINE_MAX];
  55. do
  56. {
  57. c = s1[i++];
  58. if (c==' ' || c=='\t' || c=='\n' || c== ',' || c=='.' || c=='!' || c=='?' || c==';' || c == '\0'){
  59. ind=OUT;
  60. if (l>*maxl){
  61. *maxl=l;
  62. t[j]='\0';
  63. copy(t,w);
  64. }
  65. l=0;j=0;
  66. }
  67. else if(isdigit(c))
  68. {
  69. t[j++]=c; //Запись слова
  70. if(ind==OUT){
  71. ind=IN;
  72. ++n; //Счетчик кол-ва слов
  73. }
  74. ++l; //Счетчик длины слов
  75. }
  76. }
  77. while (c != '\0');
  78. return n;
  79. }
  80.  
  81. void copy (char s1[],char s2[]){ //Копирование строк
  82. int i;
  83. for (i=0;s1[i]!='\0';++i)
  84. s2[i]=s1[i];
  85. s2[i]='\0';
  86. }
  87.  
Runtime error #stdin #stdout 0s 2252KB
stdin
Standard input is empty
stdout
Конец ввода
Количество слов:0
Самое длинное слово:0 Символов
<>