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

обмен элементов в массиве - C++

Восстановить пароль Регистрация
 
Kseny
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 8
23.05.2010, 17:19     обмен элементов в массиве #1
помогите исправить ошибки в коде
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
/*programma reshaet zadachu:sosedom elementa  Aij матрицы называется другой элемент Alk этой же  матрицы, если каждый из его индексов l и k
отличается от соответственно i и j  не более чем на 1. Дана веществ. матрица размером MxN. построить матрицу В такого же размераб чтобы каждый элемент
bij этой матрицы был равен наименьшему значению среди соседей элемента Aij.*/
#include <studio.h>
#include <moth.h>
#include <conio.h>
#define m 5
#define n 4
void main()
{
  float a[m][n];  // матрица а
  float b[m][n];  // матрица б
  
  int i,j;     //индексы массива
  printf("\n введите маcсив\n");
  printf("после ввода элементов строки нажмите <enter>\n">);
  
  for (i=0;i<m;i++)  // m строк
  {
      printf("->");
      for (j=0; j<n;j++)
        scanf("%f", &a[i][j]);
  }     
  printf("\n введенный массив\n");
  
  for (i=1; i<m; i++)
    for (j=1; j<n; j++)
    {
      int  p=i-1;
      int  t=i+1;
      int  p1=j-1;
      int  t1=j+1;
      float min = maxint;
        for (k=p; k<t; k++)
          for (l=p1; l<t1; l++)
          if ((k>=1)&&(k<=m))&&((l>=1)&&(l<=n))&&((i<>k)||(j<>l))
          {
            if ( a[k][l]<min)&&(a[k][l]<>a[i][j])&&(a[k][l]<>a[p,p1])&&(a[k][l]<>a[t][p1] )&&(a[k][l]<>a[p][t1] )&&(a[k][l] <> a[t][t1] )                                                
            {
                 min=a[k][l];
      
            }
            b[i][j]=min;
         }
     }
     for (i=1;i<m; i++)
       for (j=1;j<n; j++)
       scanf ("%f", b[i][j]);
       printf ("\n массив полученный из наименьших значений среди соседей элемента Aij\n");
  {
код на паскале
Pascal
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
{program prog411k;
Џа®Ја*¬¬* аҐи*Ґв б«Ґ¤гойго §*¤*зг:
  б®бҐ¤®¬ н«Ґ¬Ґ*в* aij ¬*ваЁжл **§лў*Ґвбп ¤агЈ®© н«Ґ¬Ґ*в alk
  нв®© ¦Ґ ¬*ваЁжл,Ґб«Ё Є*¦¤л© Ё§ ҐЈ® Ё*¤ҐЄб®ў l Ё k ®в«Ёз*Ґвбп
  ®в ᮮ⢥вб⢥**® iЁj *Ґ Ў®«ҐҐ 祬 ** 1.„*** ўҐйҐб⢥***п ¬*ваЁж*
  а*§¬Ґа®¬ mxn.Џ®бва®Ёвм ¬*ваЁжг B в*Є®Ј® ¦Ґ а*§¬Ґа*,зв®Ўл Є*¦¤л© н«Ґ¬Ґ*в
  bij нв®© ¬*ваЁжл Ўл« а*ўҐ* **Ё¬Ґ*м襬㠧**зҐ*Ёо б।Ё б®бҐ¤Ґ© н«Ґ¬Ґ*в* aij
 
Ђўв®а:‡*¬пвЁ** Љ.Ќ.Ја.39-11
„*в*:8 .12.09}
program PROGMatrix;
uses crt;
const n=4;m=5;
var a,b:array[1..m,1..n] of real;
    min:real;
    i,j,k,l,p,t,p1,t1:integer;
Begin
  clrscr;
 
{ᮧ¤*Ґ¬ ¬*ббЁў зЁбҐ«}
{  randomize; }
  writeln('Ishodnii massiv');
  for i:=1 to m do
   begin
    for j:=1 to n do
      begin
        a[i,j]:=random(50)/11;
        write(a[i,j]:0:2,'  ');
      end;
       writeln;
   end;
   i:=1;
   j:=1;
 
 
   for i:=1 to m do
    for j:=1 to n do
     begin
     p:=i-1;
     t:=i+1;
     p1:=j-1;
     t1:=j+1;
     min:=maxint;
    for k:=p to t do
      for l:=p1 to t1 do
 
    if ((k>=1) and (k<=m)) and ((l>=1)and (l<=n)) and ((i<>k) or (j<>l))then
         begin
           if (a[k,l]<min) and (a[k,l]<>a[i,j])and (a[k,l]<>a[p,p1]) and (a[k,l]<>a[t,p1])
            and (a[k,l]<>a[p,t1]) and (a[k,l]<>a[t,t1])then
             begin
               min:=a[k,l];
             end;
           b[i,j]:=min;
           end;
      end;
 
 
 
 
 
         writeln;
         writeln('Ї®«гзҐ**л© ¬*ббЁў');
         for i:=1 to m do
           begin
             for j:=1 to n do write(b[i,j]:0:2,'  ');
             writeln;
           end;
         readln;
 
end.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2010, 17:19     обмен элементов в массиве
Посмотрите здесь:

Обмен элементов двумерного массива C++
C++ В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов.
Обмен положительных элементов в массиве C++
C++ В одномерном массиве, состоящем из вещественных элементов вычислить номер минимального элемента в массиве, сумму элементов массива
обмен элементов двух массивов. В чем ошибка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
23.05.2010, 23:07     обмен элементов в массиве #2
Исправьте
C
1
2
#include <stdio.h>
#include <math.h>
Индексация начинается с 0, а не 1
Цитата Сообщение от Kseny Посмотреть сообщение
C
1
2
for (i=1; i<m; i++)
    for (j=1; j<n; j++)
Не равно записывается так !=, а не как в паскале <>

А вообще вы привели только часть кода
Kseny
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 8
25.05.2010, 22:36  [ТС]     обмен элементов в массиве #3
часть? а какой части не хватает?
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
25.05.2010, 22:43     обмен элементов в массиве #4
Kseny, у вас в конце скобка открывается(непонятно зачем) и не закрывается, логично что там должен быть код
Kseny
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 8
27.05.2010, 23:24  [ТС]     обмен элементов в массиве #5
вот и еще одна ошибка нашлась,там скобка закрывающая должна стоять.В паскалевском коде это и есть конец программы.. пыталась убирать ошибки все равно не работает программа на с++.Позже выложу то что сейчас получается. подскажите пожалуйста,почему в месте if (a[k,l]<min) && (a[k,l]!=a[i,j])&& (a[k,l]!=a[p,p1]) && (a[k,l]!=a[t,p1])
&& (a[k,l]!=a[p,t1]) && (a[k,l]!=a[t,t1])then
кампилятор выдает must take address of a memory location. Как это возможно исправить?
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
28.05.2010, 08:42     обмен элементов в массиве #6
индексация в С++ такая a[][], а не как в C# a[,]
Yandex
Объявления
28.05.2010, 08:42     обмен элементов в массиве
Ответ Создать тему
Опции темы

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