0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 2
1

Рассчитать число столбцов в которых какой либо эл. делится без остатка на другой

24.12.2013, 05:23. Показов 563. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Рассчитать число столбцов в которых какой либо эл. делится без остатка на другой.
Не пойму в чём проблема. Считает не правильно...(

#include<iostream>
using namespace std;
int main()
{
int a[3][4],i,j,k,s=0,q=0;

cout << "Enter massiv: "; //
for (i=0; i<3; i++) // Ввод массива
for (j=0; j<4; j++) //
cin >> a[i][j]; //


for (i=0; i<3; i++) //
for (j=0; j<4; j++) // вывод
cout << a[i][j]; //

for (i=0; i<4; i++) /// обработка
for (j=0; j<3; j++)
{
for (k=0; k<3; k++)
if (a[i][j] % a[i][k] == 0)
q++;
if (q>1)
{
s++;
break;
}
else
q=0;

}
cout << endl;
cout << s;
system("pause");
return 0;

}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2013, 05:23
Ответы с готовыми решениями:

Определить, делится ли число на 4 без остатка
Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N=4k (где k —...

Определить, делится ли одно число на другое без остатка
Пользователь вводит два числа. Определить, делится одно число на другое без остатка. Если нет,...

Написать подпрограмму, которая определяет, делится ли число на «3» без остатка
1)Написать подпрограмму, которая определяет, делится ли число на «3» без остатка, не используя...

Выяснить, делится ли определённое четырёхзначное число на ряд чисел без остатка
Есть такая тема. Нужно вычислить делится ли определённое четырёхзначное число на ряд чисел. Причём...

3
Продам уран 238U
125 / 124 / 127
Регистрация: 22.01.2013
Сообщений: 298
24.12.2013, 06:34 2
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
#include <iostream>
#include <cstdlib>
using namespace std;
#define n 5
 
int main(){
    int mas[n][n];
    cout<<"IN:"<<endl;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            mas[i][j] = rand()% 100 + 1;
            cout<<mas[i][j]<<" ";
        }
    cout<<endl;
    }
    
    cout<<endl<<"OUT:"<<endl;
    int count = 0, tmp = 0;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
                    for(int k = j + 1; k < n; k++ ){
            if(mas[j][i] % mas[k][i] == 0){
                cout<<endl<<"Column "<<i+1;
                count ++;
                                tmp ++;
                break;
            }
                    }
            if(tmp > 0){
                        tmp = 0;
                        break;
                    }
                }
    }
    cout<<endl<<count<<" columns";
 
return 0;
}
0
Знаток
156 / 156 / 185
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
24.12.2013, 07:12 3
У тебя в if было ошибка))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (i=0; i<4; i++) /// обработка
for (j=0; j<3; j++)
{   
for (k=0; k<3; k++)
if (a[i][j] % a[i][k] == 0)
q++;    
if (q>1)
{
s++;
break;
}
 
q=0;
 
}
Или можно сделать так
C++
1
2
3
4
5
6
7
8
9
10
for (i=0; i<4; i++) /// обработка
for (j=0; j<3; j++)
{   
for (k=0; k<3; k++)
if (a[i][j] % a[i][k] == 0)
 {
   q++;
   break;
 }
}
0
Эксперт С++
4726 / 2547 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
24.12.2013, 07:22 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
#include<iostream>
 using namespace std;
 int main()
 {
 int a[3][4],i,j,k,s=0,q=0;
 
 cout << "Enter massiv: "; //
 for (i=0; i<3; i++) // Ввод массива
 for (j=0; j<4; j++) //
 cin >> a[i][j]; //
 
 
 for (i=0; i<3; i++) //
 for (j=0; j<4; j++) // вывод
 cout << a[i][j]; //
 
 for (i=0; i<4; i++) /// обработка
 for (j=0; j<3; j++)
 { 
 for (k=0; k<3; k++)
 if (a[i][j] % a[i][k] == 0)// эта строка должна быть такой: if (a[j][i] % a[k][i] == 0)
 q++; 
 if (q>1)
 {
 s++;// вот здесь не хватает строки q=0; ведь в этой точке q>1 м вы переходите к следующему столбцу
 break;
 }
 else 
 q=0;
 
 }
 cout << endl;
 cout << s;
 system("pause");
 return 0;
 
 }
кроме того в программе нет проверки деления на 0.

Добавлено через 9 минут
Цитата Сообщение от Amandosov Посмотреть сообщение
Или можно сделать так
C++
1
2
3
4
5
6
7
8
9
10
for (i=0; i<4; i++) /// обработка
for (j=0; j<3; j++)
{ 
for (k=0; k<3; k++)
if (a[i][j] % a[i][k] == 0)
 {
 q++;
 break;
 }
}
идея у Евгений Дерепа правильная, Вы просто ее не уловили. В столбце как минимум один раз (в цикле
C++
1
for (k=0; k<3; k++)
) выполнится условие (кстати правильно это условие будет таким):
C++
1
if (a[j][i] % a[k][i] == 0)
Это проверяемое число делится без остатка на само себя. Поэтому он правильно не останавливает цикл а идет дальше. И считает, что в столбце:
Цитата Сообщение от Евгений Дерепа Посмотреть сообщение
какой либо эл. делится без остатка на другой
только когда q станет больше 1.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2013, 07:22
Помогаю со студенческими работами здесь

Проверить, делится ли без остатка заданное натуральное число на каждую из своих цифр
Мне нужно написать прогу, но нужно выполнить её без использования строк и массивов задание такое:...

Вывести на экран все числа, на которые заданное число делится без остатка
Нужно написать программу с использованием процедуры, которая выводит на экран все числа, на которые...

Делится ли одно натуральное число на другое без остатка, используя операцию вычитания
Напечатать программу через цикл while: Выяснить, делится ли одно натуральное число на другое без...

Найти ближайшее целое к первому числу, которое делится на второе число без остатка
Пользователь вводит два числа. Определить, делится одно число на второе без остатка. Если нет,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru