Тема: Масив. Модуль різниці має найменше значення
Прошу вибачення за мою тупість, але на задачці заклинило.
Задано одновимірний масив. Знайти два серед його елементів, модуль різниці яких має найменше значення.
Дякую
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Масив. Модуль різниці має найменше значення
Для відправлення відповіді ви повинні увійти або зареєструватися
Прошу вибачення за мою тупість, але на задачці заклинило.
Задано одновимірний масив. Знайти два серед його елементів, модуль різниці яких має найменше значення.
Дякую
В подвійному циклі перебираєте всі елементи по два рази і шукаєте потрібні. Не забудьте тільки виключити випадок, коли це той самий елемент.
В принципі, можна і оптимальніше, але складніше (спершу відсортувати).
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "russian");
const int size = 5;
int mas[size];
int tmp;
// Введення даних у масив користувачем
for (int i = 0; i < size; i++){
cout << "Введіть " << i << " елемент масиву ";
cin >> mas[i];
}
// обробка
int x = 32000;
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
if (abs(i - j) < x & (i != j))
{
x = abs(i - j);
}
}
}
cout << " Найменший модуль різниці двох елементів має значення " << x << endl;
system("pause");
return 0;
}
Що не так?
Мені вже набридло це повторювати, але: ідеального коду не існує. В будь-якому коді можна вказати, що "не так". Це ви скажіть, що вас не влаштовує в цьому коді.
koala прошу, не гнівайтесь. Я не програміст, лише учитель у середній школі. Намагаюся розібратися з цією задачею. Розумію, що не добре, коли учитель на такому елементарному "обламується", але мені потрібна ваша допомога, щоб наші діти росли на "чистому молоці, без води". Мені легше дати їм погратися на компі, але хочу чомусь їх навчити. Вибачте, що у нас в Україні такі вчителі.
Я більше скажу, я погодився б платити комусь за те, щоб мене підучили програмуванню
Вибачте, якщо сприйняли мій тон як агресію; я просто хочу сказати, що аби щось зробити, треба розібратися в тому, що саме треба зробити. Власне, все програмування - про те, як якомога точніше висловити свої думки. Тому без вашої думки, що саме ви хотіли б покращити, ми вам не допоможемо.
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "russian");
const int size = 5;
int mas[size];
int tmp;
int x = 32000;
// Введення даних у масив користувачем
for (int i = 0; i < size; i++){
cout << "Введіть " << i << " елемент масиву ";
cin >> mas[i];
}
// обробка
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
if (i != j)
{
if (abs(i - j) < x)
{
x = abs(i - j);
}
}
}
}
cout << "Найменший модуль різниці двох елементів має значення " << x << endl;
system("pause");
return 0;
}
Ось трішки відкорегований код, але я все одно не розумію чому мені програма викидає результат одиницю
Ось трішки відкорегований код, але я все одно не розумію чому мені програма викидає результат одиницю
А це вже абсолютно коректне і прийнятне питання. Одиниця там виходить тому, що вам треба знайти мінімум із abs( mas[ i ] - mas[ j ] ), а ви шукаєте його серед abs( i - j ).
вибачте. дякую
вкотре я переконуюся, що просто не уважний
// mas.cpp : main project file.
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "russian");
const int size = 5;
int mas[size];
int tmp;
int x = 32000;
// Введення даних у масив користувачем
for (int i = 0; i < size; i++){
cout << "Введіть " << i << " елемент масиву ";
cin >> mas[i];
}
// обробка
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
if (i != j)
{
if (abs(mas[i] - mas[j]) < x)
{
x = abs(mas[i] - mas[j]);
}
}
}
}
cout << "Найменший модуль різниці двох елементів має значення " << x << endl;
system("pause");
return 0;
}
От і все
вибачте. дякую
Тут не варто вибачатися, це абсолютно нормальна частина процесу. Всі туплять над програмами.
А, власне, нащо вам ця програма? Збираєтеся вчити учнів у школі C++? Перебирайтесь на Python чи JavaScript, вони значно простіші і зрозуміліші для новачків.
мені казали, що головне навчитися програмувати, типу будь-яка мова програмування підійде чи то Basic, Pascal, C, C++ байдуже, головне — вміти програмувати. Я спочатку вчився на Pascal потім на С++ (цей перехід для мене був дуже важким, дітям мабуть теж буде складно). Вважаю, що С++ це мова програмування з перспективою, тому і викладаю її дітям, а що таке Pascal? З Python-ом не знайомий, а JavaScript це ж мова програмування скриптів, вона, здається, не дозволена програмою міністерства
Roma_Kononenko, вибачте, а вчитель якої дисципліни Ви?
Соромно признатися, але інформатики
Соромно признатися, але інформатики
В нас вже є вчитель, який не розуміє як WriteLn в паскалі працює, ви не соромтеся, всі вчителя такі - інших нема.
Шкода, але це правда. Ті,хто вміє програмувати, у школі не сидять
Для відправлення відповіді ви повинні увійти або зареєструватися