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

Считает элементы в строках а не столбцах. Что не так? - C++

Восстановить пароль Регистрация
 
eee696
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 10
02.02.2014, 12:03     Считает элементы в строках а не столбцах. Что не так? #1
Определить двумерный массив A[n][m], заполнить его случайными целыми числами от -1000 до 1000. Размер массива задается с клавиатуры, но 4=<n=<10, 4=<m=<10, n!=m. Найти сумму отрицательных элементов кратных 4,5,7 в каждом столбце. Результаты внести в новый массив.
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 <conio.h>
#include <stdlib.h>
int main()
{clrscr();
randomize();
int i,j,n,m,sum=0;
puts("Vveite kolvo radkov\n");
scanf("%d",&n);
while(n<4&&n<10)
{printf("vvedite chislo ot 4 do 10\n");
scanf("%d",&n);
}
puts("Vvedite kolvo stolbzov\n");
scanf("%d",&m);
while(m<4&&m<10&&n==m)
{puts("vvedite chislo ot 4 do 10 i ne ravnoe chislu strok\n");
scanf("%d",&m);}
int **A=new int*[n];
for(i=0;i<n;i++)
A[i]=new int[m];
int *sum_A=new int[m];
for(i=0;i<m;i++)
{sum_A[i]=0;
}
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
{A[i][j]=random(2000)-1000;
}
}
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
{printf(" %d ",A[i][j]);
}
printf("\n");
}
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
{
if(A[i][j]<0 && (A[i][j]%4==0||A[i][j]%5==0||A[i][j]%7==0))
{sum+=A[i][j];
}
sum_A[i]=sum;
}
sum=0;}
for(i=0;i<m;i++)
{if(sum_A[i]==0)
printf("Stolbzi %d\n",i);
else printf("Stolbez %d sum: %d\n",i,sum_A[i]);
}
getch();
return 0;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2014, 12:03     Считает элементы в строках а не столбцах. Что не так?
Посмотрите здесь:

Написать функцию, которая переставляет элементы массива типа int так, что все положительные элементы предшествуют отрицательным. C++
Изменить матрицу так, чтобы в строках остались элементы, которые встречаются более одного раза, а другие заменить нулями C++
C++ Определить, верно ли, что максимальные элементы всех строк А находятся в разных столбцах
C++ В матрице выбрать n элементов в разных строках и разных столбцах так, чтобы их сумма была минимальной
В каких столбцах и строках находиться элемент ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
02.02.2014, 12:45     Считает элементы в строках а не столбцах. Что не так? #2
Цитата Сообщение от eee696 Посмотреть сообщение
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
{
if(A[i][j]<0 && (A[i][j]%4==0||A[i][j]%5==0||A[i][j]%7==0))
{sum+=A[i][j];
}
sum_A[i]=sum;
}
Подозреваю, что надо
C++
1
2
3
4
5
6
7
8
for(j=0;j<m;j++)
{for(i=0;i<n;i++)
{
if(A[i][j]<0 && (A[i][j]%4==0||A[i][j]%5==0||A[i][j]%7==0))
{sum+=A[i][j];
}
sum_A[j]=sum;
}
Xopecc
33 / 28 / 2
Регистрация: 13.09.2013
Сообщений: 246
02.02.2014, 12:57     Считает элементы в строках а не столбцах. Что не так? #3
nexen, правильно подозреваешь
eee696
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 10
02.02.2014, 13:23  [ТС]     Считает элементы в строках а не столбцах. Что не так? #4
nexen, еще вопрос есть, почему при вводе числа n и m >10 не работает цикл, а продолжается прога дальше? где ошибка?
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
02.02.2014, 13:34     Считает элементы в строках а не столбцах. Что не так? #5
Цитата Сообщение от eee696 Посмотреть сообщение
while(n<4&&n<10)
при вводе цикл проверки со странным условием. Ставь:
C++
1
while(n<4&&n>10)
то же самое с M, только там ещё условие на равенство (оно верно у тебя)
Yandex
Объявления
02.02.2014, 13:34     Считает элементы в строках а не столбцах. Что не так?
Ответ Создать тему
Опции темы

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