- Цель работы
Получение практических навыков по разработке Си-программ, в которых используются массивы, операторы цикла, форматированный и потоковый ввод/вывод.
Результат работы программы TEST9A.EXE
Введённые значения:
3O2E1R0 7.58 1OM9 ?
Результат работы программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
'EXAMPLE 2 Номеp=302E1R0 7.58 10M9 I=302 Знач.= C=E 'EXAMPLE 2 Номеp= I=1 Знач.= C=R 'ERAMPLE 2 Номеp= I=0 Знач.= C= ' RAMPLE 2 Номеp= I=7 Знач.= C=. ' RAMPLE.2 Номеp= I=58 Знач.= C= ' RAMPLE.2 Номеp= I=10 Знач.= C=MM' RAMPLE.2 Номеp= I=9 Знач.= C= |
Объяснение работы программы.
Сначала в переменную i считывается число типа integer. Это число=302. Затем в переменную С считывается 1 символ. Это Е. И элементу массива с номером i присваивается значение переменной С. Это продолжатся пока i не равно 9. В результате получается такой результат.
Перечень ошибок в программе TEST9B.CPP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
5: Undefined symbol ‘n’ 8: Expression syntax 9: Undefined symbol 'M' 9: Expression syntax 10: Function 'scanf' should have a prototype 13: While statement missing ( 15: Expression syntax 18: if statement missing { 18: Possibly incorrect assignment 19: if statement missing ( 21: Statement missing ; 22: Expression syntax 23: Statement missing ; 24: Expression syntax 25: Underfined symbol ‘end’ 25: Illegal character ‘▼’ (0xif) 26: do statement must have while 26: Illegal use of floating point 27: Expression syntax 27: Cannot convert ‘float[5] *’ to ‘int’ |
По этим сообщениям был исправлен текст программы TEST9B.CPP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
#include <iostream.h> #include <stdio.h> void main() { int a[6][6]; int b[6][6]; int n=0; int m=0; while (n<5) { while (m<5) { cout <<"Введите элемент "<<n+1<<"-й строки "<<m+1<<"-го столбца: "; cin >> a[n][m]; m++; } m=0; n++; } n=0; m=0; cout << "Начальная матрица:\n"; do { //if (n==-1) // { // cout <<"\n\t1 \t 2\t3\t4\t5\t\n"; // n++; // } do { cout <<a[n][m]<<'\t'; m++; } while (m<5); m=0; cout <<"\n"; n++; } while (n<5); for (n=0;n<5;n++) { for (m=0;m<5;m++) { if ((m>0)&&(n>=5-m)) b[n][m]=a[n][m]; else b[n][m]=0; } } n=0; m=0; cout << "Результат:\n"; do { //if (n==-1) // { // cout <<"\n\t1 \t 2\t3\t4\t5\t\n"; // n++; // } do { cout <<b[n][m]<<'\t'; m++; } while (m<5); m=0; cout <<"\n"; n++; } while (n<5); } |
Индивидуальное задание. Вариант 9.
Дана матрицы размером 5х5, содеpжащая вещественные числа, значения котоpых вводятся с клавиатуpы. Необходимо по этой матрице А сформировать другую матрицу В размером 5х5 согласно номеру задания (рис. 1), в которой элементы, отмеченные знаком «v», равны соответствующим элементам исходной матрицы А, а остальные элементы равны нулю.
Предусмотреть ввод исходной матрицы А с нумеpацией стpок, ее контрольный вывод, пеpедачу в матpицу В, обработку В, вывод результирующей матрицы В. Пpи выводе отобpазить нумеpацию стpок и столбцов, начиная с единицы, в виде заголовков стpок и столбцов. Для ввода использовать цикл с пpедусловием, для вывода — цикл с постусловием, для пеpедачи и обpаботки итеpационные циклы.
1 2 3 4 5 6 7 |
┌───────────┐ │ │ │ v │ │ v v │ │ v v v │ │ v v v v │ └───────────┘ |
По этому заданию был составлен следующий алгоритм:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
НАЧАЛО Пока n<5 Пока m<5 Считать элемент a(n,m) Изменяя n от 0 до 4 Изменяя m от 0 до 4 Если ((m>0)и(n>=5-m)) то b(n<m):=a(n,m) иначе b(n,m):=0; N:=0 M:=0; Делать Делать Вывести A(n,m) Пока m<5 Перевести строку Пока n<5 Делать Делать Вывести B(n,m) Пока m<5 Перевести строку Пока n<5 КОНЕЦ |
По этому алгоритму была составлена следующая программа:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#include <iostream.h> #include <stdio.h> void main() { int a[6][6]; int b[6][6]; int n=0; int m=0; while (n<5) { while (m<5) { cout <<"Введите элемент "<<n+1<<"-й строки "<<m+1<<"-ого столбца: "; a[n][m]=1; m++; } m=0; n++; } for (n=0;n<5;n++) { for (m=0;m<5;m++) { if ((m>0)&&(n>=5-m)) b[n][m]=a[n][m]; else b[n][m]=0; } } n=0; m=0; do { do { cout <<b[n][m]<<'\t'; m++; } while (m<5); m=0; cout <<"\n"; n++; } while (n<5); } |
Графическое изображение структуры данных: