Строки и массивы в языке С. Написание консольной программы в среде Visual C++. Отладка С-программы, страница 2

  printf ("Результат: %s\n",s);

}

----------------------------------------------------------------

     Вариант 4.  Выполнить обработку текста из внешнего текстового файла, созданного в редакторе. Результаты обработки поместить во внешний файл. Определить количество строк в исходном тексте. Удалить в каждой строке все четырехбуквенные слова.

Текст программы:

#include <stdio.h>

#include <string.h>

void main()

{

  FILE *f=fopen("data.txt","r");  //f - файл для чтения

  FILE *f1=fopen("res.res","r");  //f1 - файл для записи

  char s[80];                     // исходная строка

  char res[80];                   // результат обработки

  char *p;                        // указатель на слово

  int n=0;                        // счетчик строк

  while (!feof(f1));              // пока не конец файла

  {

    n++;                           увеличили счетчик строк

    *res=0;                       //Очистили строку-результат

    fgets(f,80,s);                //Читаем очередную строку

    p=strtok(s," ");              //Бьем строку на слова

    while (*p)

    {

      if (strlen(p)=4) strcat(res,p); //Если  длина  слова  равна 4

                                      //добавляем его в результат

      strcat(res," "); p=strtok(NULL,"  ");

    }  fputs(s,f1); //Записали результат в файл

   }

   fprintf(f1,"\nСтрок в файле %d",n);

   fclose(f);  //Закрыли файл

}

----------------------------------------------------------------

Вариант 5. Ввести двумерный массив вещественных чисел.  Разделить элементы каждой строки матрицы на максимальный элемент этой строки.

     Текст программы:

#include <stdio.h> //Библиотека функций ввода-вывода

#include <stdlib.h> //Библиотека стандартных функций

#define n 4        //Число строк массива

#define m 6        //Число столбцов

float a[n][m];     //Массив

//Генерация элементов массива

void genar(int n,m)

{

  int i,j;

  for (i=0;i<n;i++)

   for (j=0;j<m; i++) a[i][j]=random(100); //Элементу присваивается

                                           //случайное значение

}

//Печать массива

void printar()

{

  int i;

  for (i=0;i<n;i++)

  {

   for (j=0;j<n; j++) printf ("%5.2d ",a[i,j]);

   printf ("\n);

  }

}

float divtomax(int *s) //Функция поиска максимального в строке s

                     //и деления строки на max

{

  int i;

  float max=s[0];

  for (i=1;i<n;i++);

       if (s[i]>max) max=s[i];

  for (i=0;i<n;i++) a[s][i]/=max;

  return max;

}

//Главная функция

void main()

{

  int i;   //Счетчик столбцов

  float res[n]; //Результат

  genar(); //Генерируется массив

  printf("\nИсходный массив \n"); printar(); //Печать исходного массива

  for (i=0;i<n;i++) divtomax[i];   //Обработка массива

  printf("\nРезультат \n); printar();   //Печать результата

}

----------------------------------------------------------------

Вариант 6. Выполнить обработку текста из внешнего текстового файла, созданного в редакторе. Результаты обработки поместить во внешний файл. Определить количество слов в каждой строке, сжать  каждую строку, удалив лишние пробелы.

Текст программы:

#include <stdio.h>

#include <string.h>

void main()

{

  FILE f=fopen("data.txt","r");  //Открыли файл f для чтения

  FILE f1=fopen("res.res","r"); //Открыли файл f для записи

  char *s;    //Буфер ввода

  char *res;  //Буфер вывода

  char *p;       //Указатель на текущее слово

  while (!feof(f))

  {

    *res=0;     //Инициализация буфера вывода

    k=0;        //Инициализация счетчика слов

    fgets(f,80,s);    //Читать строку из файла

    p=strtok(s,' ')   //Бьем ее на слова, разделенные " "

    while (*p)         //Пока есть еще слова

    {

      k++;             //Увеличиваем счетчик

      strcat(res,p);   //Добавили слово в буфер вывода

      p=strtok(s,' ');  //Ищем новое слово

    }

    fputs(res,f1);   //Записали результат в файл

    fprintf(f1,"В предыдущей строке %s слов\n",k); //Напечатали сколько

                                                  //слов в строке

  }

  fclose(f);   //Закрыли файлы

}