Даная матрица Задача 1. Дана матрица X[0:n-1][0:m-1] и массив Y[0:k-1]. Написать программу, которая вычисляет массив Z, состоящий из элементов X, расположенных между первым четным и максимальным нечетным элементами каждого столбца, если все эти элементы присутствуют в массиве Y. Ввод данных и вычисления оформить в виде отдельных функций.
#include void input_mass(int b[], int *k) //k передаём по адресу {int i; puts("Input k"); scanf("%d",k); puts("Input array"); for(i=0;i
void count (int k, int Y[], int n, int m, int X[][10], int Z[], int *nz) { int i,j,t,nch,nmax,flag; *nz=0; //длина нового массива for(j=0;j X[nmax][j]) nmax=i; /* если не первый – сравниваем с максимумом */ }
if (nch!=-1&&nmax!=-1) //если оба найдены { if (nch>nmax) //упорядочиваем чтобы nmax >= nch t=nmax, nmax=nch, nch=t; if (nmax-nch>1) //между ними есть элементы { flag=1; //признак присутствия всех for(i=nch+1; i
void output_c(int nc, int c[]) { int i; if (nc==0) puts("No array c"); else { puts("array c"); for(i=0;i
Задача 2. Дана символьная строка. Заменить каждую подстроку, заключенную в круглые скобки и состоящую из цифр, звездочками. Количество звездочек равно первой цифре в подстроке. Преобразование строки оформить как отдельную функцию. #include #define maxln 81 int zamena(char s[]) { char *s1,*s2; int i,n,f=0; while (*s) //пока не конец строки if (*s=='(') //найдено начало подстроки, этот адрес заносим в s1 { s1=++s; while (*s&&isdigit(*s))s++; //пропускаем цифры if (*s==')'&&s1!=s) //если за цифрами скобка и скобки не рядом
{ f=1; //строка преобразовывалась n=*s1-'0'; //вычисляем количество цифр for(s2=s1;*s;*s2++=*s++); //удаляем подстроку *s2='\0'; for(;s1
int main () { char str[maxln]; int f; puts("input string"); gets(str); f=zamena(str); if (f==0) puts("No changes"); else { puts("Modified string "); puts(str); } return 0; }
Задача 1. Дана символьная строка. Написать функцию для выделения подстрок, заключенных в комментарии /* … */ и содержащих только латинские буквы. Привести вызов функции. Вывести полученные подстроки на экран. Ввод данных и вывод результата осуществить в главной функции. Выделение подстрок оформить как отдельную функцию с параметрами. Задача 2. Дана символьная строка. Написать функцию для выделения подстрок, содержащих только латинские буквы и/или цифры и имеющих чётную длину. Привести вызов функции. Вывести полученные подстроки на экран. Домашнее задание (0.3 балла) Задачу 1 решают студенты с нечётными номерами вариантов по лабораторным, задачу 2 - с чётными. Сдача д/з на ближайшей лекции.
Структуры Задача 2. Даны структуры вида Ввести структуры в массив и найти в нем самую дорогую книгу. Ввод данных и поиск оформить как отдельные функции. Функция поиска вернет указатель на самую дорогую книгу. Книга ГодНазваниеАвторЦена
Рассмотрим два варианта ввода 1) Книга # 1 Автор Название Год издания Цена Продолжаете ввод? (y/n)... 2) Число книг в каталоге = Книга # 1 Автор Название Год издания..... Цена Книга # 2... Будем использовать 1-й вариант ввода.
#include #define lmax 200 //пропуск символов до конца строки #define CLR while (getchar()!='\n') struct book { char author[20], name[60]; int year, price; };
//Функция ввода массива структур (каталога) void readcat(int *kol, book cat[]) { char ch; *kol=0; do {printf("Book # %d\n", ++(*kol)); printf("Author "); gets(cat->author); printf("Title "); gets(cat->name); printf("Publishing year.."); scanf("%d", &cat->year); printf("Price "); scanf("%d", &cat->price); CLR; printf("Continue ? (y/n) "); ch=getchar(); CLR; cat++; } while ((ch=='Y' || ch=='y')&&*kol
//Функция поиска самой дорогой книги book *dorog(int kol, book cat[]) {int i, max=0; book *dorkn; for (i=0; iprice>max) max=cat->price, dorkn=cat; return (dorkn);} int main() { int kolknig; book catalog[200], *dorkniga; readcat(&kolknig, catalog); dorkniga=dorog(kolknig, catalog); printf("Most expensive book:\n"); printf("Author %s\n", dorkniga->author); printf("Title %s\n", dorkniga->name); printf("Publishing year..%d\n", dorkniga->year); printf("Price %d\n", dorkniga->price); return 0;}