Diskriptor
|
|
« Ответ #90 : 07-01-2008 20:36 » |
|
Вад, Спасибо за подсказки, P.S. как толка говорю что завтра напишу ответ в теме или по воюю с кодом, сразу что то мешать, в этот раз комп сломался , вот починил решил на форум зайти.
|
|
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
Diskriptor
|
|
« Ответ #91 : 07-01-2008 20:40 » |
|
Люсь, Это я знаю.
|
|
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
Diskriptor
|
|
« Ответ #92 : 07-01-2008 21:14 » |
|
Вад, Проинициализировал вот так int Maciv[5],i,max=Maciv[0],j,min=0; Выдало предупреждение об ошибки, но работает так как мне надо.
|
|
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #93 : 07-01-2008 21:18 » |
|
а сделай так: int Maciv[5]; int i,j; int max=Maciv[0]; int min=0;
и, главное, сразу видно, что массив не инициализирован
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #94 : 07-01-2008 21:33 » |
|
Diskriptor, ты с инициализацией-то не торопись Ты сначала массив заполни, а там уже и устанавливай значения, а то мусор какой-нибудь в max попадёт ещё...
|
|
|
Записан
|
|
|
|
Diskriptor
|
|
« Ответ #95 : 07-01-2008 21:43 » |
|
Алексей1153++, Спасибо за подсказку, а то перепад всегда говорить, что программы писал не я, потому что код мудреный по синтаксису.
|
|
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
Diskriptor
|
|
« Ответ #96 : 07-01-2008 22:14 » |
|
Алексей1153++, Если объявить переменные и массив, так как ты говоришь, то при води всех положительных переменных max работает, так как надо а вот min=0 Запутался я если иницолизирую как подсказал Влад то все работает как надо, если как ты, то min=0 если ввести все положительные элементы массива
|
|
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
Вад
|
|
« Ответ #97 : 07-01-2008 22:24 » |
|
Diskriptor, ну так всё логично. Ты же 0 присваиваешь переменной, а потом присваиваешь ей другое значение только в том случае, когда оно меньше, чем текущее (то есть, изначально - 0). Никакого волшебства, при выполнении программы никто за тебя не подумает, что ты хочешь минимальное именно из тех значений, что в массиве - поэтому ты сам должен "объяснить" это в твоём алгоритме. Добиться однозначного результата для любых вводимых значений массива. А для этого тебе нужно либо присваивать min минимально возможное значение для типа int (что ненадёжно, поскольку это значение зависит всё-таки от конкретной платформы), либо инициализировать min любым значением из уже заполненного массива - тогда уж точно значение min не будет меньше, чем минимальное из значений в массиве. То же самое и для max.
|
|
« Последнее редактирование: 07-01-2008 22:28 от Вад »
|
Записан
|
|
|
|
Diskriptor
|
|
« Ответ #98 : 07-01-2008 22:43 » |
|
Вад, Спасибо еще раз за подсказку, все понял все учел, конечный результат по первому заданию такой. #include "iostream.h"
int main() {
int Maciv[5],i,max,j,min=0;
for(i=0;i<5;i++) { cout<<"Vedite macciv iz 5 ilimentov ["<<i<<"]: "; cin>>Maciv[i]; }
for(i=0;i<5;i++) if(Maciv[i]>max) max=Maciv[i]; cout<<"max= "<<max; cout<<"\n";
min=Maciv[0];
for(j=0;j<5;j++) if(Maciv[j]<min) min=Maciv[j];
cout<<"min= "<<min; cout<<"\n"; char response; cin>>response;
return 0; } Завтра за второе возьмусь, хотя праведней сказать сегодня днем.
|
|
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
Вад
|
|
« Ответ #99 : 07-01-2008 22:57 » |
|
Всё-таки, считаю, ты не всё учёл Возвращаемся к тому, с чего начинали: начальное значение для max нужно устанавливать так же, как и min, уже после ввода массива пользователем. Иначе неизвестно, с чем ты там будешь сравнивать и будет ли у тебя в массиве хоть один элемент больше начального значения max. Как вариант, устанавливать значение max и min можно в процессе ввода массива - это уже вопрос вкуса.
|
|
« Последнее редактирование: 07-01-2008 23:00 от Вад »
|
Записан
|
|
|
|
Люсь
|
|
« Ответ #100 : 08-01-2008 06:09 » |
|
Вообще, есть отличный (я считаю) способ проверить свою программу без компьютера. Когда у нас в школе компьютеры были труднодоступны, а средств долговременного хранения программ не было, приходилось заранее проверять свою программу на наличие ошибок, чтобы не тратить на это время на уроке. Это касается таких простеньких процедурных программ.
Рисуется таблица, в одной графе несколько вариантов переченей вводимых тестовых данных (в твоём случае значения массива)/нужно учесть нулевые значения, отрицательные, положительные, слишком большие, слишком малые, попытка ввода текста и т.д./. В другой графе - промежуточные результаты пошагового исполнения программы /как её понимает человек/, в последней - окончательный результат /что пользователь ожидает получить/.
Это поможет, во-первых, разобраться в логике вашей программы, а во-вторых, проверить затем программу на компьютере - всё ли работает так, как вы ожидаете, не было ли допущено каких-то неточностей?
|
|
|
Записан
|
Посторонним просьба не беспокоить! ------------------------------------------------- O (I) Rh +
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #101 : 08-01-2008 09:31 » |
|
Рисуется таблица, в одной графе несколько вариантов переченей вводимых тестовых данных (в твоём случае значения массива)/нужно учесть нулевые значения, отрицательные, положительные, слишком большие, слишком малые, попытка ввода текста и т.д./. В другой графе - промежуточные результаты пошагового исполнения программы /как её понимает человек/, в последней - окончательный результат /что пользователь ожидает получить/.
Это поможет, во-первых, разобраться в логике вашей программы, а во-вторых, проверить затем программу на компьютере - всё ли работает так, как вы ожидаете, не было ли допущено каких-то неточностей?
У нас этому обучают студентов даже при наличии компьютеров. Написал сортировку Хоара и отлаживай в тетрадочке... Зато после такой процедуры у студента мозги начинают работать как компьютер И через то студент постигает таинства программирования и "железной" логики машины.
|
|
« Последнее редактирование: 08-01-2008 09:32 от dimka »
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Люсь
|
|
« Ответ #102 : 08-01-2008 11:30 » |
|
Ну тогда вот заданьице нашему Дискриптору
|
|
|
Записан
|
Посторонним просьба не беспокоить! ------------------------------------------------- O (I) Rh +
|
|
|
Diskriptor
|
|
« Ответ #103 : 08-01-2008 12:09 » |
|
Рисуется таблица, в одной графе несколько вариантов переченей вводимых тестовых данных (в твоём случае значения массива)/нужно учесть нулевые значения, отрицательные, положительные, слишком большие, слишком малые, попытка ввода текста и т.д./. В другой графе - промежуточные результаты пошагового исполнения программы /как её понимает человек/, в последней - окончательный результат /что пользователь ожидает получить/. Люсь, Приведи пример, от начала и до конца, так лучше пойму как праведней записывать алгоритмы в тетрадку.
|
|
« Последнее редактирование: 08-01-2008 12:11 от Diskriptor »
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
Люсь
|
|
« Ответ #104 : 08-01-2008 13:13 » |
|
ну например задача из школы (самое простое и что запомнилось): определить, может ли существовать прямоугольный треугольник с заданными сторонами?
Определяем условия: 1. по школьному курсу известно, что в прямоугольном треугольнике гипотенуза имеет самое большое числовое значение. 2. есть формула: квадрат гипотенузы равен сумме квадратов катетов.
Определяем невозможные вводимые значения (называется защита от дурака): вводимые данные не могут быть отрицательными, равными нулю.
Определяем переменные: пусть стороны треугольника будут обозначены a, b, c
Придумываем тесты.
значения_____а_____b_____c_____max(a, b, c)_____да/нет (выполнение задачи)
_____________2_____3_____4__________4___________4<>2+3 (нет) _____________3_____4_____7__________7___________7=3+4 (да) _____________1_____-1____8__________8___________некорректно _____________0_____5_____1__________5___________некорректно
и т.д.
Вообще, насколько я помню, после этих действий пишется алгоритм словесный (или блок-схема), потом программа, в которую мы и забиваем подготовленные тесты и смотрим - делает она то, что нам надо или нет? А до компиляции можно программу проверить вручную (с твоим уровнем владения информатикой это вообще обязательно для последующего понимания логики программ). При более сложных программах при проверке вручную полезно просчитывать более подробные промежуточные данные.
|
|
|
Записан
|
Посторонним просьба не беспокоить! ------------------------------------------------- O (I) Rh +
|
|
|
Diskriptor
|
|
« Ответ #105 : 09-01-2008 13:10 » |
|
Люсь, Спасибо попробую
|
|
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
McZim
|
|
« Ответ #106 : 09-01-2008 14:32 » |
|
работать будет, но с ошибками попробуй ввести: - : 1
[1] : 2 [2] : 3 [3] : 4 [4] : 5
- : -1
[1] : -2 [2] : -3 [3] : -4 [4] : -5
|
|
« Последнее редактирование: 09-01-2008 15:09 от McZim »
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Вад
|
|
« Ответ #107 : 09-01-2008 15:03 » |
|
McZim, собственно, мы тут и пытались навести Diskriptor-а на мысль о присваивании max и min значений из введённого массива перед циклом Только в более обтекаемой форме, чтобы сам догадался, как это сделать в коде
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #108 : 09-01-2008 15:05 » |
|
блин, fixed.
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Люсь
|
|
« Ответ #109 : 10-01-2008 03:55 » |
|
блин, я треугольник когда вычисляла - неправильно в таблице просчитала верные треугольники - считала гипотенуза=катет+катет, а надо было гипотенуза^2=катет^2+катет^2 Ну да некритично наверное, главное - мысль передать Кому надо - понял
|
|
|
Записан
|
Посторонним просьба не беспокоить! ------------------------------------------------- O (I) Rh +
|
|
|
Diskriptor
|
|
« Ответ #110 : 10-01-2008 23:59 » |
|
Вад, я поныл какая у меня ошибка, просто у меня ест еще домашки над которыми надо подумать, ту ошибку я исправлю главное что я понял смысл ошибки.
|
|
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
Diskriptor
|
|
« Ответ #111 : 11-01-2008 00:08 » |
|
Вот код моего второго задания Правда тут у меня была проблема с вот этой строкой if (Maciv[i-1]>Maciv[i]) , я ее писал типа такого if (Maciv[i1]>Maciv[i0] я не мог показать вот это действие \\на 1 больше (проблемы с синтаксисом)
Друг подсказал как строчку исправить. #include "iostream.h"
int main() {
int Maciv[5],i; bool up=true;
for(i=0;i<5;i++) { cout<<"\n";
cout<<"Vedite macciv iz 5 ilimentov ["<<i<<"]: "; cin>>Maciv[i]; }
for (i=1; i<5; i++) { if (Maciv[i-1]>Maciv[i]) up=false; } if (up) {
cout << "\t\t\t\t\t\tDA\n"; }
else { cout << "\t\t\t\t\t\tNET\n"; } char response; cin>>response; return 0; }
|
|
« Последнее редактирование: 11-01-2008 04:36 от Алексей1153++ »
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
Diskriptor
|
|
« Ответ #112 : 11-01-2008 00:37 » |
|
Программа не доработана, если вести все 5 значений одинаковыми, или два числа рядом стоящи, выдаст что массив упорядочен ОШИБКА надо до работать.
|
|
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
Diskriptor
|
|
« Ответ #113 : 11-01-2008 01:36 » |
|
или не ошибка подскажите ,ну тоесть я запутался в понятии что считает, упорядочи массивом?
|
|
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
Diskriptor
|
|
« Ответ #114 : 11-01-2008 01:44 » |
|
По второй, подсказка: раз массив упорядочен по возрастанию, то каждый элемент должен быть больше предыдущего или равен ему. Тебе нужно проверить, выполняется ли это условие для всех элементов в твоём массиве Если так то все правильно, короче подскажите
|
|
|
Записан
|
Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
|
|
|
McZim
|
|
« Ответ #115 : 11-01-2008 01:48 » |
|
1. думаю что все нужно доводить до логического конца, а то понять то ты понял, но мы то не поняли что ты понял, а потом опять будут вопросы! 2. http://www.codenet.ru/progr/cpp/1/h22.php
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
McZim
|
|
« Ответ #116 : 11-01-2008 01:51 » |
|
а у тебя компилятор вот на это cin>>Maciv; и на это if(Maciv[i-1]>Maciv) не ругается?
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #117 : 11-01-2008 04:37 » |
|
McZim, он тег просто не поставил
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #118 : 11-01-2008 06:50 » |
|
Программа не доработана, если вести все 5 значений одинаковыми, или два числа рядом стоящи, выдаст что массив упорядочен ОШИБКА надо до работать.
Diskriptor, ты ж сам меня процитировал: для упорядоченного по возрастанию массива "каждый элемент должен быть больше предыдущего или равен ему." Так что в смысле проверки у тебя правильно сделано: это условие нарушается только в том случае, когда предыдущий элемент строго больше текущего, ты это правильно проверяешь.
|
|
|
Записан
|
|
|
|
Антон (LogRus)
|
|
« Ответ #119 : 11-01-2008 07:09 » |
|
Программа не доработана, если вести все 5 значений одинаковыми, или два числа рядом стоящи, выдаст что массив упорядочен ОШИБКА надо до работать.
В чем ошибка то? пример тестовых данных приведи на которых у тебя "ошибка" я бы вот так изменил цикл for (i=0; i != 4 && up; ++i) { if ( Maciv[i+1] < Maciv[i] ) up=false; }
|
|
|
Записан
|
Странно всё это....
|
|
|
|