Задание на лабораторный практикум по курсу «Программирование на языках высокого уровня» (часть вторая, 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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.