Заполнить нулями верхний правый угол матрицы - C (СИ)
Формулировка задачи:
Люди, помогите пожалуйста с таким вопросом. Как сделать, что бы так же выводило и обнуляемые элементы, тоесть:
Сейчас выводит в таком виде:
1
2 3
4 5 1
7 8 6 9
7 4 3 5
А нужно:
1 0 0 0 0 0
2 3 0 0 0 0
4 5 1 0 0 0
7 8 6 9 0 0
7 4 3 5 0 0
Спасибо.
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <dos.h> int position(int i, int j) { int poz=0; for(int k=0; k<=i; k++) poz+=k; poz+=j; return poz; } void pos_matr(int poz, int *i, int *j, int n, int m) { for(int a=0; a<n; a++) for(int b=0; b<m; b++) { int dop=position(a,b); if (dop==poz) { *i=a; *j=b; } } } void main() { int i, j, poz, dpoz, max=-1000, n,m, dop, di, ch; int *A; clrscr(); printf("Vvedite razmery matricy: n= "); scanf("%d",&n); printf(" m = "); scanf("%d",&m); clrscr(); dpoz=0; for(i=0;i<n;i++) for(j=0; j<m;j++) if(i>=j) dpoz++; A=new int[2*dpoz]; for(i=0; i<dpoz; i++) *(A+i)=random(100); for(;;) { clrscr(); printf("0) Pechat matricy\n"); printf("1) Preobrazovat index matricy v index vektora\n"); printf("2) Poluchit znachenie elementa matricy iz ee upakovannogo predstavleniya\n"); printf("3) Zapisat znachenie elementa matricy v ee upakovannoe predstavlenie\n"); printf("4) Najti maximum i ego posiciyu v matrice\n"); printf("5) Vyhod\n"); ch = getch(); if(ch==49) { clrscr(); printf("Vvedite koordinaty elementa v matrice: i= "); scanf("%d",&i); printf(", j = "); scanf("%d",&j); clrscr(); if(j > i) { printf("Dannyj element matricy yavlyaetse fonovym, povtorite operaciyu"); getch(); clrscr(); } else { poz = position(i,j); printf("Tekushaya poziciya dannogo elementa v vectore = %d", poz); getch(); clrscr(); } } else if(ch==50) { clrscr(); printf("Vvedite koordinaty elementa v matrice: i= "); scanf("%d",&i); printf(", j = "); scanf("%d",&j); clrscr(); if(j > i) { printf("Dannyj element matricy yavlyaetse fonovym, povtorite operaciyu"); getch(); clrscr(); } else { poz = position(i,j); printf("Element s dannymi koordinatami = %d", *(A+poz)); getch(); clrscr(); } } else if(ch==51) { clrscr(); printf("Vvedite koordinaty elementa v matrice: i= "); scanf("%d",&i); printf(", j = "); scanf("%d",&j); clrscr(); if(j > i) { printf("Dannyj element matricy yavlyaetse fonovym, povtorite operaciyu"); getch(); clrscr(); } else { poz = position(i, j); printf("Vvedite znachenie elementa: "); scanf("%d",&dop); *(A+poz) = dop; clrscr(); } } else if(ch==52) { clrscr(); for(i=0; i<dpoz; i++) if(*(A+i)>max) { max=*(A+i); di=i; } pos_matr(di,&i,&j,n,m); printf("Maximalnyj element = %d, posiciya: i = %d, j = %d\n",max,i,j); getch(); clrscr(); } else if(ch==48) { clrscr(); printf("Matrica: \n"); for(i=0; i<n; i++) { printf("\n"); for(j=0; j<m && i>=j; j++) { poz=position(i,j); printf("%d ", *(A+poz)); } } getch(); } else if(ch==53) { exit(1); } } delete []A; }
Решение задачи: «Заполнить нулями верхний правый угол матрицы»
textual
Листинг программы
#include <stdio.h> #define TOP 4 int main(void){ int i, j, k; k = 0; for ( i = 0; i < TOP; ++i ) { for ( j = 0; j < TOP; ++j ) printf("%d ", ( j > i ) ? 0 : ++k); printf("\n"); } return 0; }
Объяснение кода листинга программы
В этом коде выполняется две основные задачи:
- Вывод на экран верхней строки фигуры, образованной символами
*
и-
. - Заполнение нулями верхней правой части двумерного массива. Пояснение к коду:
- Строка с
#include <stdio.h>
подключает к программе библиотекуstdio.h
, которая содержит функции для ввода и вывода данных. - Строка
#define TOP 4
определяет размерность двумерного массива (в данном случае 4х4). - В функции
main()
объявлены три переменные типаint
:i
,j
иk
. Переменнаяk
используется для хранения количества выводимых нулей. - Два вложенных цикла
for
используются для прохода по всем элементам матрицы. Внешний цикл выполняется для прохода по строкам, а внутренний - по столбцам. - В каждой итерации внутреннего цикла выводится на экран значение
printf(
%d, ( j > i ) ? 0 : ++k)
, которое представляет собой либо ноль, либо единицу (для первой и последней строки) в зависимости от соотношенияj > i
. Значениеk
увеличивается на единицу после каждой итерации внутреннего цикла. - После завершения внутреннего цикла выводится символ новой строки
\n
, который переводит строку на новую строку. - После завершения внешнего цикла программа завершается.
Таким образом, код выводит на экран последовательность из нулей и единиц, которая представляет собой верхнюю строку матрицы, образованную символами
*
и-
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д