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

Страницы работы

6 страниц (Word-файл)

Содержание работы

Задание на лабораторный практикум по курсу «Программирование на языках высокого уровня» (часть вторая, 2 семестр)

Лабораторная работа № 6

Строки и массивы в языке С

            Написать в среде Visual C++ консольную программу сортировки массива  строк методом прямого обмена (пузырьковая сортировка). Сортировку оформить в виде функции, ввод данных в технологической части организовать с клавиатуры, вывод результата – на экран.

Лабораторная работа № 7

Отладка С-программы

     Согласно варианту задания выбрать задачу и текст программы к ней. Имея в виду, что в текст программы внесены синтаксические и  семантические ошибки, используя средства отладки и просмотра  переменных в среде Visual C++, довести исходный текст до рабочего состояния консольной программы.

Вариант 1.  Ввести двумерный массив чисел, содержащий N строк и  М столбцов. Сформировать одномерный  массив,  состоящий  из  максимальных чисел каждого столбца.

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

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

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

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

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

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

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

void genar(int n, int m)   //n,m - размерность массива

{

  int i,j;

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

   for (j=0;j<m; j++) 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 findmax(int s) //Функция поиска максимального в столбце s

{

  int i;

  float max:=a[s][0];

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

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

  return max;

}

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

void main()

{

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

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

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

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

  for (i=0;i<m;i++) res[i]=findmax(i);

  printf("\nРезультат \n");

  for (i=0,i<m;i++) printf("%5.2f ",res[i]);//Печать результата

}

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

     Вариант 2.Ввести двумерный массив вещественных чисел. Упорядочить каждую строку массива по убыванию.

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

#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);

  }

}

void sortstr(float *s) //Функция сортировки строки. Метод вставки

                       //s-указатель на первый элемент строки

{

  int i,j;

  for (i:=0;i<m-1;i++)

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

       if (s[i]>s[j])

       {

         float buf;

         buf=s[j];

         s[i]=s[j];

         s[j]=buf;

       }

}

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

void main()

{

  int i;   //Счетчик строк

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

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

  for (i=0;i<n;i++) sortstr(a[i]);

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

}

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

     Вариант 3. Ввести текст. Слова разделены пробелами, предложения заканчиваются точкой. Стереть, т.е. заменить пробелами, все слова КОРОЧЕ.

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

#include <stdio.h>

#include <string.h>

void main ()

{

  char death = "короче";  // Слово для поиска

  char *s="Сессия короче бывает два раза короче в год, а учиться короче надо в семестре."; //Строка

  char *p; //Указатель на вхождение death в s

  printf ("Дано: %а /n",s);

  while (p==strstr(s,death))  // Пока в s есть death

    for (;p<p+strlen(death);p++); *p=" ";    //Забиваем death

Похожие материалы

Информация о работе