Заполнить нулями верхний правый угол матрицы - 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;
}

Объяснение кода листинга программы

В этом коде выполняется две основные задачи:

  1. Вывод на экран верхней строки фигуры, образованной символами * и -.
  2. Заполнение нулями верхней правой части двумерного массива. Пояснение к коду:
  3. Строка с #include <stdio.h> подключает к программе библиотеку stdio.h, которая содержит функции для ввода и вывода данных.
  4. Строка #define TOP 4 определяет размерность двумерного массива (в данном случае 4х4).
  5. В функции main() объявлены три переменные типа int: i, j и k. Переменная k используется для хранения количества выводимых нулей.
  6. Два вложенных цикла for используются для прохода по всем элементам матрицы. Внешний цикл выполняется для прохода по строкам, а внутренний - по столбцам.
  7. В каждой итерации внутреннего цикла выводится на экран значение printf(%d , ( j > i ) ? 0 : ++k), которое представляет собой либо ноль, либо единицу (для первой и последней строки) в зависимости от соотношения j > i. Значение k увеличивается на единицу после каждой итерации внутреннего цикла.
  8. После завершения внутреннего цикла выводится символ новой строки \n, который переводит строку на новую строку.
  9. После завершения внешнего цикла программа завершается. Таким образом, код выводит на экран последовательность из нулей и единиц, которая представляет собой верхнюю строку матрицы, образованную символами * и -.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы