Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на языке высокого уровня. Методические указания и варианты заданий для студентов 1-го курса направления подготовки 09.03.01 Информати

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
ВАРИАНТЫ ЗАДАНИЯ № 4-Б
1. s=(Ap+q,q)
2. s=(Aq+p,Aq)
3. s=(B(p-r),r)
4. s=(ABr+p,Br)
5. s=(Aq-Bp,r)
6. s=(AAp,q)
7. s=(Aq+AAq,q)
8. s=(r+BBr,p)
9. s=(A(p-q),B(p-q))
10. s=(r,A(r-q))
11. s=(q,Aq+Bp)
12. s=(r+ABr,q)
13. s=(q-ABq,q)
14. s=(A(p+r+q),p)
15. s=(B(r-q),p)
16. s=(A(q-p),p)
17. s=(B(q-p-r),q)
18. s=(ABp-r,q)
19. s=(Ar-Bq,p)
20. s=(Ap,B(r-p))
21. s=(B(p-q),r)
22. s=(AAp+q,p)
23. s=(Br-Ap,q-p)
24. s=(Ar+p,p+q)
25. s=(B(r-q),p-r)
26. s=(Bq-Ar,Ar)
27. s=(B(r+q+r),AAp)
28. s=(A(p+q+r),AAr)
29. s=(B(r-p),BBr)
30. s=(BBr,Aq)
31. s=(Ap,B(q+r))
A B p q r
  
  
  
  
  
  
  
  
  
  
1 2 3
1 2 1
3 2 0
4 1 2
0 4 3
1 1 1
01
17
15
16
0 8
11
0 7
13
0 2
.
.
.
.
.
.
.
.
.
Вычислить скалярное произведение s.
Исходные данные.
Примечание. При вычислении выражения вида y=ABx рекоменду-
ется последовательно вычислить z=Bx, y=Az, что в общем случае при­водит к существенному уменьшению количества арифметических опе­раций (по сравнению с умножением матриц C=AB).
#include <stdio.h> #include <conio.h> #include <alloc.h> /* <malloc.h> для C++ */
ПРИМЕР ВЫПОЛНЕНИЯ ЗАДАНИЯ
s=(Ar-Bq,p)
31
void Umnmv(int n, int m, float **a, float *x, float *y)
{ int i,j;
for (i=0;i<n;i++)
{ y[i]=0;
for (j=0;j<m;j++) y[i]+=a[i][j]*x[j];
}
return; }
void Linv(int n, float alpha, float*x,
float beta, float*y, float*z) {
int i;
for (i=0;i<n;i++) z[i]=alpha*x[i]+beta*y[i];
return; }
float Scal(int n, float*x, float*y)
{ int i;
float s=0;
for (i=0;i<n;i++) s+=x[i]*y[i];
return s; }
32
main() { int i,j,n=3; float **a,**b,*p,*q,*r,*x,*y,*z; FILE *in; clrscr(); if((in=fopen("Linalg.dat ","r"))==NULL) { printf("\nФайл Linalg.dat не открыт !"); getch(); exit(1); } fscanf(in,"%d",&n);
a=(float**)malloc(n*sizeof(float*)); b=(float**)malloc(n*sizeof(float*));
p=(float*)malloc(n*sizeof(float)); q=(float*)malloc(n*sizeof(float)); r=(float*)malloc(n*sizeof(float)); x=(float*)malloc(n*sizeof(float)); y=(float*)malloc(n*sizeof(float)); z=(float*)malloc(n*sizeof(float));
for(i=0;i<n;i++) { a[i]=(float*)malloc(n*sizeof(float)); b[i]=(float*)malloc(n*sizeof(float)); } for(i=0;i<n;i++) for(j=0;j<n;j++) fscanf(in,"%f",&a[i][j]); for(i=0;i<n;i++) for(j=0;j<n;j++) fscanf(in,"%f",&b[i][j]); for(i=0;i<n;i++) fscanf(in,"%f",&p[i]);
33
for(i=0;i<n;i++) fscanf(in,"%f",&q[i]); for(i=0;i<n;i++) fscanf(in,"%f",&r[i]);
printf("\nМатрица A:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%5.1f",a[i][j]); printf("\n"); } printf("\nМатрица B:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%5.1f",b[i][j]); printf("\n"); }
printf("\nВектор P:\n"); for(i=0;i<n;i++) printf("%5.1f",p[i]); printf("\nВектор Q:\n"); for(i=0;i<n;i++) printf("%5.1f",q[i]); printf("\nВектор R:\n"); for(i=0;i<n;i++) printf("%5.1f",r[i]);
Umnmv(n,n,a,r,x); Umnmv(n,n,b,q,y); Linv(n,1,x,-1,y,z);
printf("\nОтвет S=%1.2f\n",Scal(n,z,p)); getch(); }
34
LINALG.DAT ==========
3
1 2 3 1 2 1 3 2 0 4 1 2 0 4 3 1 1 1
0.1 1.7 -1.5
-1.6 0.8 1.1
-0.7 1.3 0.2
==========
Ответ S=-7.19
35
ВАРИАНТЫ ЗАДАНИЯ № 5
1. В файле хранится список участников соревнования в виде: Фа­милия/Год_рождения (например, Иванов/1985). Кто из них самый мо­лодой?
2. В файле хранится список участников соревнования в виде: Фа­милия/Год_рождения (например, Иванов/1985). Кто из них самый старший?
3. В файле хранится список участников соревнования в виде: ФА­МИЛИЯ/Страна (например, ИВАНОВ/Россия, ФАМИЛИЯ — в верх­нем регистре). Количество записей не ограничено. Найти все фамилии из данной страны, которые представляют собой слово-палиндром (т.е. читаются одинаково в прямом и обратном направлении).
4. В файле хранится список участников экзамена в виде: Фами­лия(факультет) (например, Иванов(ИСТАС)). Количество записей не ограничено. Найти все фамилии с данного факультета, которые пред­ставляют собой слово-палиндром.
5. Дана символьная строка, в которой слова перечислены через точку с запятой, а общая длина 80. Найти самое длинное слово в предложении.
6. Дана символьная строка, в которой слова перечислены через точку с запятой, а общая длина 80. Найти самое короткое слово в предложении.
7. Дана символьная строка, в которой слова перечислены через точку с запятой, а общая длина 80. Найти и напечатать все слова, ко­торые начинаются и оканчиваются на одинаковую букву.
8. Дана символьная строка, в которой слова перечислены через точку с запятой, а общая длина 80. Найти и напечатать все слова, ко­торые представляют собой слово-палиндром.
9. Дана символьная строка, в которой слова перечислены через точку с запятой, а общая длина 80. Найти и напечатать все слова, ко­торые начинаются на заданную букву.
10. Дана символьная строка, в которой слова перечислены через точку с запятой, а общая длина 80. Найти и напечатать все слова, ко­торые оканчиваются на заданную букву.
36
11. Дана символьная строка, в которой слова перечислены через точку с запятой, а общая длина 80. Найти и напечатать все слова, ко­торые содержат в себе заданную букву.
12. Дана символьная строка, в которой слова перечислены через точку с запятой, а общая длина 80. Распечатать все слова в столбик — по одному слову на каждой строчке.
13. Дано предложение, в котором слова разделены запятой или про­белом, а общая длина 80. Найти самое длинное слово в предложении.
14. Дано предложение, в котором слова разделены запятой или про­белом, а общая длина 80. Найти самое короткое слово в предложении.
15. Дано предложение, в котором слова разделены запятой или пробелом, а общая длина 80. Найти и напечатать все слова, которые начинаются и оканчиваются на одинаковую букву.
16. Дано предложение, в котором слова разделены запятой или пробелом, а общая длина 80. Найти и напечатать все слова, которые представляют собой слово-палиндром.
17. Дано предложение, в котором слова разделены запятой или пробелом, а общая длина 80. Найти и напечатать все слова, которые начинаются на заданную букву.
18. Дано предложение, в котором слова разделены запятой или пробелом, а общая длина 80. Найти и напечатать все слова, которые оканчиваются на заданную букву.
19. Дано предложение, в котором слова разделены запятой или пробелом, а общая длина 80. Найти и напечатать все слова, которые содержат в себе заданную букву.
20. Дано предложение, в котором слова разделены запятой или пробелом, а общая длина 80. Распечатать все слова в столбик — по одному слову на каждой строчке.
21. В файле хранится список поездов в виде: Пункт_отправления— Пункт_назначения (например, Москва—Сочи). Количество записей не ограничено. Определить, сколько поездов идут до заданного пунк­та.Вывести их на экран.
22. В файле хранится список поездов в виде: Пункт_отправления— Пункт_назначения (например, Москва—Сочи). Количество записей не ограничено. Определить, сколько поездов идут от заданного пункта. Вывести их на экран.
37
23. В файле хранится список поездов в виде: Пункт_отправления— Пункт_назначения(например, Москва—Сочи). Количество записей не ограничено. Вывести на экран все пункты назначения, которые соот­ветствуют заданному пункту отправления.
24. В файле хранится список поездов в виде: Пункт_отправления— Пункт_назначения (например, Москва—Сочи). Количество записей не ограничено. Вывести на экран все пункты отправления, которые соот­ветствуют заданному пункту назначения.
25. В файле хранится список участников соревнования в виде: Фа­милия/Страна (например, Иванов/Россия). Количество записей не огра­ничено. Сколько человек представляют данную страну? Вывести их фамилии на экран.
26. В файле хранится список участников экзамена в виде: Фами­лия(факультет) (например, Иванов(ИСТАС)). Количество записей не ограничено. Сколько человек представляют данный факультет? Выве­сти их фамилии на экран.
27. В файле хранится список участников соревнования в виде: Фа­милия/Страна (например, Иванов/Россия). Количество записей не огра­ничено. Найти самую длинную фамилию из данной страны.
28. В файле хранится список участников экзамена в виде: Фами­лия(факультет) (например, Иванов(ИСТАС)). Количество записей не ограничено. Найти самую длинную фамилию на данном факультете.
29. В файле хранится список участников соревнования в виде: Фа­милия/Страна (например, Иванов/Россия). Количество записей не огра­ничено. Найти самую короткую фамилию из данной страны.
30. В файле хранится список участников экзамена в виде: Фами­лия(факультет) (например, Иванов(ИСТАС)). Количество записей не ограничено. Найти самую короткую фамилию на данном факультете.
31. В файле хранится список участников соревнования в виде: ФАМИЛИЯ/Страна (например, ИВАНОВ/Россия, ФАМИЛИЯ— в верхнем регистре). Количество записей не ограничено. Найти все фа­милии из данной страны, которые начинаются и оканчиваются на оди­наковую букву.
32. В файле хранится список участников экзамена в виде: ФАМИ­ЛИЯ(факультет) (например, ИВАНОВ(ИСТАС), ФАМИЛИЯ— в верх­нем регистре). Количество записей не ограничено. Найти все фамилии, которые начинаются и оканчиваются на одинаковую букву.
38
ПРИМЕР ВЫПОЛНЕНИЯ ЗАДАНИЯ
Примечание для MSVC-2008
Для корректного ввода русского текста с клавиатуры рекомендуется применять следующий прием!
Пример 1: Выбрать из файла слова, которые начинаются и оканчива- ются на одинаковую букву. Найти их количество.
#include <stdio.h> #include <conio.h> #include <string.h> int test(char* s) { int n=0,i; n=strlen(s)-1; if(s[0]==s[n]) return 1; return 0; } main() { FILE *in; char s[80]; int k=0; clrscr(); in=fopen("str.dat","r"); while(fscanf(in,"%s",s)!=EOF) if(test(s)) { printf(s); printf("\n"); k++; } printf("\n k=%d",k); getch(); fclose(in); }
Пример 2: Разобрать строку-предложение на отдельные слова.
39
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include <clocale>
#include <windows.h>
using namespace std; int main() { char s[80]; setlocale(LC_CTYPE,"Russian"); printf("введите S\n");
SetConsoleCP(1251);
/*Установить страницу кодировкиWindows (рус)*/
gets(s); SetConsoleCP(866);
/* Установить страницу кодировкиMS-DOS (рус)*/
printf(s); _getch(); }
Если нужно узнать, какая страница кодировки является в данный момент активной, применяйте функцию
GetConsoleCP()
#include <stdio.h> #include <conio.h> #include <string.h> main() { char s[80]; char Znak[]=" ,.()"; char *Temp; clrscr(); printf("Введите предложение:"); gets(s); Temp=strtok(s,Znak);
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]