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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Газмяс
0 / 0 / 0
Регистрация: 04.03.2009
Сообщений: 93
#1

двумерный массив - C++

13.04.2009, 13:28. Просмотров 665. Ответов 4
Метки нет (Все метки)

Дан целочисленный массив A[N][M]. Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента.

написал, не работает! посмотрите пожалуйста где ошибки?


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
#include "stdio.h"
#include"math.h"
#define N 2
#define M 4
 
 
int main ()
{
int a[N][M],k;
 
for (k=0;k<2;k++)
{printf("wedite element nomer %d",  k);
scanf("%d",&a[k]);}
for (k=0;k<4;k++)
{printf("wedite element nomer %d",  k);
scanf("%d",&a[k]);}
 
 
 
int i,j,imax,imin,ix,iy;
imax=a[0][0];
imin=a[0][0];
for ( i=0;i<N;i++)
for ( j=0;j<M;j++)
{
    if ( a[i][j]>=imax)
{
        imax=a[i][j];
 
        ix=i,j;}
 
    if(a[i][j]<=imin)
{
        imin=a[i][j];
 
        iy=i,j;}
}
 
int x1,x2,x3,sum;
x1=imin/100;
x2=(imin-x1*100)/10;
x3=(imin-x1*100-x2*10);
 
sum=x1+x2+x3;
a[ix]=sum;
for ( i=0;i<N;i++)
for(j=0;j<M;j++)
printf("%d" , a[i][j]);
 
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2009, 13:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос двумерный массив (C++):

Как можно вложить двумерный массив в двумерный? - C++
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с...

Массив: Как скопировать двумерный массив в другой массив? - C++
Как скопировать двумерный массив в другой массив?

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька - C++
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Чем отличаются двумерный символьный массив и массив указателей на строки - C++
Двумерный символьный массив и массив указателей на строки. Собственно чем они отличаются? Заранее спасибо.

Массив: Как можно задать и вывести симметричный двумерный массив? - C++
как можно задать и вывести симметричный массив

Дан двумерный массив 3х3. Получить одномерный массив из из отрицательных элементов матрицы. - C++
Пожалуйста, помогите решить простым методом задачку, просто не могу понять смысл ее выполнения. Дан двумерный массив 3х3.Получить...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
VorobeY1326
Ученик 11 класса)
4 / 4 / 0
Регистрация: 11.04.2009
Сообщений: 67
13.04.2009, 14:04 #2
Не понял выражение
C++
1
ix=i,j
??
int = int , int - это как?
Наверное, надо завести переменные x1,y1,x2,y2 , куда заносить местоположение минимального (x1,y1) и минимального (x2,y2) элементов!
Соответственно выражения
C++
1
a[ix]=...
надо заменять на
C++
1
a[x1,y1]=...
И еще, наверное, может быть несколько максимальных элементов!
Газмяс
0 / 0 / 0
Регистрация: 04.03.2009
Сообщений: 93
13.04.2009, 14:37  [ТС] #3
не! так не надо! слишком запутано! для одномерного массива этот код работает! а для двумерного нет! Народ, посмотрите плиз, может я что то напутал с обьявление двумерного массива? Или когда искал макс и мин в двумрном массиве! потому что с одномерным массивом все работает
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
13.04.2009, 14:51 #4
Так надо:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define MAXSTR 128
#define M 5
#define N 6
 
main()
{
    int i, j, A[M][N], min, max, minsum;
    char s[MAXSTR];
    
    srand((unsigned)time(NULL));
    for(i = 0; i < M; i++) {
       for(j = 0; j < N; j++) {
          A[i][j] = rand()%50+15;
          printf("%3d", A[i][j]);
       }
       printf("\n");
    }
    
    min = max = A[0][0];
    for(i = 0; i < M; i++)
       for(j = 0; j < N; j++) {
          if(A[i][j] < min)
             min = A[i][j];
          if(A[i][j] > max)
             max = A[i][j];
       }
    
    itoa(min, s, 10);
    for(i = minsum = 0; s[i] != '\0'; i++)
       minsum += s[i] - '0';
    
    printf("\n\n");
    for(i = 0; i < M; i++) {
       for(j = 0; j < N; j++) {
          if(A[i][j] == max)
             A[i][j] = minsum;
          printf("%3d", A[i][j]);
       }
       printf("\n");
    }
    getch();
    return 0;
}
Evg
Эксперт CАвтор FAQ
17619 / 5843 / 375
Регистрация: 30.03.2009
Сообщений: 16,118
Записей в блоге: 26
13.04.2009, 15:07 #5
Можно по-другому. Распишу список косяков, которые зацепил глазами, а ты попробуешь их исправить.

1. В строках 11-16 ты напрямую используешь числа 2 и 4, хотя ты специально заводил M и N. Т.е., поменяв M и N у тебя данное место придётся править дополнительно
2. В тех же строках при попытке заполнить двумерный массив у тебя два одномерных цикла, которые пишут в общем случае хрен знает куда. Для контроля поставь после ввода данных печать своего двумерного массива - будешь глазами видеть, что же ты туда ввёл
3. Про конструкции типа "ix=i,j" тебе уже написали. Что ты этим имел ввиду? Интуитивно я конечно догадываюсь, что ты хочешь запомнить положения в массиве, где потом надо будет заменять значения, но ведь в условии сказано "заменить ВСЕ элементы", а ты запоминаешь только один, да и то неправильно
4. Нахождение суммы цифр. А если у тебя число 7-значное, а не трёхзначное? Хотя на начальных порах сойдёт и тот код, что ты написал. Но правильно было бы в цикле делить на 10 и складывать остаток. До тех пор пока после очередного деления на 10 частное не станет равным нулю
5. a[ix]=sum; это видимо в продолжение пункта 3. Честно говоря, удивляет, почему компилятор тебя в этом месте в лес не послал

Если хочешь чему-то научиться - попробуй исправить сам. Если тебе оно не надо - воспользуйся готовым кодом, который тебе выложили в посте #4
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2009, 15:07
Привет! Вот еще темы с ответами:

Дан двумерный массив размерностью 4*5. Сформировать одномерный массив - C++
Дан двумерный массив размерностью 4*5, заполненный целыми числами с клавиатуры. Сформировать одномерный массив каждый элемент которого...

Дан двумерный массив, создать другой массив, строками которого будут диагонали первого массива - C++
Дан двумерный массив , создать другой массив ,строками которого будут диагонали первого массива, решить с помощью классов . Класс...

Дан двумерный массив. Сформировать одномерный массив из элементов заданного массива, расположенных под побочной диагональю. - C++
Дан двумерный массив размером n x n. Сформировать: Одномерный массив из элементов заданного массива, расположенных под побочной...

Двумерный массив (поменять статический массив на динамический) - C++
Нужно поменять статический массив на динамический с выделением памяти #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.04.2009, 15:07
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru