Форум программистов, компьютерный форум CyberForum.ru

рабочая программа. но нужно ее переписать так, чтобы она была наиболее общей. - C++

Восстановить пароль Регистрация
 
geronik
0 / 0 / 0
Регистрация: 01.01.2012
Сообщений: 10
02.01.2012, 14:46     рабочая программа. но нужно ее переписать так, чтобы она была наиболее общей. #1
Задана матрица смежности размерности N*M. С помощью процедуры и матрицы меньшей размерности найти медианы и записать в виде матрицы размерности N*M, где крайние элементы равны 0.
входные данные:
6
4
-17 3 -15 6 4 -9
2 14 1 5 -7 8
-7 -13 8 -9 -11 1
2 -3 -1 3 -6 3
выходные данные:
0 0 0 0 0 0
0 1 3 1 1 0
0 1 1 -1 1 0
0 0 0 0 0 0

C++
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
74
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int sort(int **mas1,int Mx, int My, int i1 ,int j1)
{
    int p[9];
    int i,j,temp;
    for(i=0;i<Mx;i++)
    {
        for(j=0;j<My;j++)
        p[i*My+j]=mas1[i+i1][j+j1];
    }
    for (i=Mx*My;i>1;i--)
    {
        for (j=1;j<i;j++)
            if (p[j]<p[j-1])
            {
                temp=p[j];
                p[j]=p[j-1];
                p[j-1]=temp;
            }
    }
    return p[4];
}
 
int main(int argc, char *argv[])
{
    if (argc!=3) {exit (1);}
    int i,j,Nx,Ny;
    
    FILE *f1=fopen (argv[1],"r");
    fscanf (f1,"%d",&Ny);
    fscanf (f1,"%d",&Nx);
    int **mas1;
    int **mas2;
    mas1=new int*[Nx];
    for (i=0;i<Nx;i++)
    {   
        mas1[i]=new int[Ny];
        for (j=0;j<Ny;j++)
        fscanf(f1,"%d",&mas1[i][j]);
    }
    mas2=new int*[Nx];
    for (i=0;i<Nx;i++)
    {   
        mas2[i]=new int[Ny];        
    }
 
    int Mx=3,My=3;
 
    FILE *f2=fopen (argv[2],"w");
    
    for (i=0;i<=Nx-Mx;i++)
    {
        for (j=0;j<=Ny-My;j++)
        {
            mas2[i][j]=sort(mas1,Mx,My,i,j);
            fprintf(f2,"%d\t",mas2[i][j]);
        }
        fprintf (f2,"\n");
    }
 
for(i=0;i<Nx;i++)
    delete []mas1[i];
delete []mas1;
 
for(i=0;i<Nx;i++)
    delete []mas2[i];
delete []mas2;
 
fclose (f2);
printf ("\n File: out.txt");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2012, 14:46     рабочая программа. но нужно ее переписать так, чтобы она была наиболее общей.
Посмотрите здесь:

C++ Программа не воспринимает вводимый текст. Что нужно добавить чтобы она заработала?
C++ Как сделать так, чтобы программа не компилилась, хотя синтаксически была бы правильной?
Нужно сделать так, чтобы программа запускалась только если ей передать заданный аргумент. C++
Массив: Образовать новую последовательность чисел так, чтобы она тоже была неубывающей C++
Переписать функцию sqrt, чтобы она работала с большими числами C++
C++ Готовая программа, нужно переделать ее чтобы она работала с УКАЗАТЕЛЯМИ
C++ Программа работает только с одним разрешением экрана, как сделать чтобы она была универсальна
C++ Дополнить функцию, чтобы она находила наиболее встречаемое число

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.01.2012, 14:51     рабочая программа. но нужно ее переписать так, чтобы она была наиболее общей. #2
Что вы подразумеваете под "наиболее общей"?
geronik
0 / 0 / 0
Регистрация: 01.01.2012
Сообщений: 10
02.01.2012, 15:46  [ТС]     рабочая программа. но нужно ее переписать так, чтобы она была наиболее общей. #3
C++
1
2
3
4
5
6
7
8
9
10
11
FILE *f2=fopen (argv[2],"w");
        
        for (i=0;i<=Nx-Mx;i++)
        {
                for (j=0;j<=Ny-My;j++)
                {
                        mas2[i][j]=sort(mas1,Mx,My,i,j);
                        fprintf(f2,"%d\t",mas2[i][j]);
                }
                fprintf (f2,"\n");
        }
Эту часть кода необходимо совместить с процедурой.

Добавлено через 39 минут
пожалуйста помогите. как это можно сделать?
Yandex
Объявления
02.01.2012, 15:46     рабочая программа. но нужно ее переписать так, чтобы она была наиболее общей.
Ответ Создать тему
Опции темы

Текущее время: 11:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru