Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 3 [4] 5 6 7 8   Вниз
  Печать  
Автор Тема: ПОМОГИТЕ НАУЧИТЬСЯ 3  (Прочитано 203784 раз)
0 Пользователей и 8 Гостей смотрят эту тему.
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #90 : 07-01-2008 20:36 » 

Вад, Спасибо за подсказки,
P.S. как толка говорю что завтра напишу ответ в теме или по воюю с кодом, сразу что то мешать, в этот раз комп сломался Жаль, вот починил решил на форум зайти.   

Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #91 : 07-01-2008 20:40 » 

Люсь, Это я знаю.
Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #92 : 07-01-2008 21:14 » 

Вад, Проинициализировал вот так
Код:
	int Maciv[5],i,max=Maciv[0],j,min=0;
Выдало предупреждение об ошибки, но работает так как мне надо.
Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #93 : 07-01-2008 21:18 » 

а сделай так:
Код:
int Maciv[5];
int i,j;
int max=Maciv[0];
int min=0;

и, главное, сразу видно, что массив не инициализирован Улыбаюсь
Записан

Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #94 : 07-01-2008 21:33 » new

Diskriptor, ты с инициализацией-то не торопись Улыбаюсь Ты сначала массив заполни, а там уже и устанавливай значения, а то мусор какой-нибудь в max попадёт ещё... Ага
Записан
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #95 : 07-01-2008 21:43 » 

Алексей1153++, Спасибо за  подсказку, а то перепад всегда говорить, что программы писал не я, потому что код мудреный по синтаксису.
Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #96 : 07-01-2008 22:14 » 

Алексей1153++, Если объявить переменные и массив, так как ты говоришь, то при води всех положительных переменных max работает, так как надо а вот min=0 
Запутался я если иницолизирую как подсказал Влад то все работает как надо, если как ты, то  min=0 если ввести все положительные элементы массива  
Записан

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

ru
Offline Offline
Пол: Мужской

« Ответ #97 : 07-01-2008 22:24 » 

Diskriptor, ну так всё логично. Ты же 0 присваиваешь переменной, а потом присваиваешь ей другое значение только в том случае, когда оно меньше, чем текущее (то есть, изначально - 0). Никакого волшебства, при выполнении программы никто за тебя не подумает, что ты хочешь минимальное именно из тех значений, что в массиве - поэтому ты сам должен "объяснить" это в твоём алгоритме. Добиться однозначного результата для любых вводимых значений массива. А для этого тебе нужно либо присваивать min минимально возможное значение для типа int (что ненадёжно, поскольку это значение зависит всё-таки от конкретной платформы), либо инициализировать min любым значением из уже заполненного массива - тогда уж точно значение min не будет меньше, чем минимальное из значений в массиве. То же самое и для max.
« Последнее редактирование: 07-01-2008 22:28 от Вад » Записан
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #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;
}

Завтра за второе возьмусь, Я ужас, летящий на крыльях ночи хотя праведней сказать сегодня днем.  Улыбаюсь





 
Записан

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

ru
Offline Offline
Пол: Мужской

« Ответ #99 : 07-01-2008 22:57 » 

Всё-таки, считаю, ты не всё учёл Улыбаюсь Возвращаемся к тому, с чего начинали: начальное значение для max нужно устанавливать так же, как и min, уже после ввода массива пользователем. Иначе неизвестно, с чем ты там будешь сравнивать и будет ли у тебя в массиве хоть один элемент больше начального значения max. Как вариант, устанавливать значение max и min можно в процессе ввода массива - это уже вопрос вкуса.
« Последнее редактирование: 07-01-2008 23:00 от Вад » Записан
Люсь
Команда клуба

ru
Offline Offline
Пол: Женский

« Ответ #100 : 08-01-2008 06:09 » 

Вообще, есть отличный (я считаю) способ проверить свою программу без компьютера.
Когда у нас в школе компьютеры были труднодоступны, а средств долговременного хранения программ не было, приходилось заранее проверять свою программу на наличие ошибок, чтобы не тратить на это время на уроке. Это касается таких простеньких процедурных программ.

Рисуется таблица, в одной графе несколько вариантов переченей вводимых тестовых данных (в твоём случае значения массива)/нужно учесть нулевые значения, отрицательные, положительные, слишком большие, слишком малые, попытка ввода текста и т.д./. В другой графе - промежуточные результаты пошагового исполнения программы /как её понимает человек/, в последней - окончательный результат /что пользователь ожидает получить/.

Это поможет, во-первых, разобраться в логике вашей программы, а во-вторых, проверить затем программу на компьютере - всё ли работает так, как вы ожидаете, не было ли допущено каких-то неточностей?
Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #101 : 08-01-2008 09:31 » 

Рисуется таблица, в одной графе несколько вариантов переченей вводимых тестовых данных (в твоём случае значения массива)/нужно учесть нулевые значения, отрицательные, положительные, слишком большие, слишком малые, попытка ввода текста и т.д./. В другой графе - промежуточные результаты пошагового исполнения программы /как её понимает человек/, в последней - окончательный результат /что пользователь ожидает получить/.

Это поможет, во-первых, разобраться в логике вашей программы, а во-вторых, проверить затем программу на компьютере - всё ли работает так, как вы ожидаете, не было ли допущено каких-то неточностей?
У нас этому обучают студентов даже при наличии компьютеров. Написал сортировку Хоара и отлаживай в тетрадочке... Улыбаюсь Зато после такой процедуры у студента мозги начинают работать как компьютер Улыбаюсь И через то студент постигает таинства программирования и "железной" логики машины.
« Последнее редактирование: 08-01-2008 09:32 от dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Люсь
Команда клуба

ru
Offline Offline
Пол: Женский

« Ответ #102 : 08-01-2008 11:30 » 

Ну тогда вот заданьице нашему Дискриптору Улыбаюсь
Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #103 : 08-01-2008 12:09 » 

Цитата
Рисуется таблица, в одной графе несколько вариантов переченей вводимых тестовых данных (в твоём случае значения массива)/нужно учесть нулевые значения, отрицательные, положительные, слишком большие, слишком малые, попытка ввода текста и т.д./. В другой графе - промежуточные результаты пошагового исполнения программы /как её понимает человек/, в последней - окончательный результат /что пользователь ожидает получить/.

Люсь, Приведи пример, от начала и до конца, так лучше пойму как праведней записывать алгоритмы в тетрадку.
« Последнее редактирование: 08-01-2008 12:11 от Diskriptor » Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Люсь
Команда клуба

ru
Offline Offline
Пол: Женский

« Ответ #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
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #105 : 09-01-2008 13:10 » 

Люсь, Спасибо попробую
Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #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.
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #107 : 09-01-2008 15:03 » 

McZim, собственно, мы тут и пытались навести Diskriptor-а на мысль о присваивании max и min значений из введённого массива перед циклом Улыбаюсь Только в более обтекаемой форме, чтобы сам догадался, как это сделать в коде Улыбаюсь
Записан
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #108 : 09-01-2008 15:05 » 

блин, fixed.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Люсь
Команда клуба

ru
Offline Offline
Пол: Женский

« Ответ #109 : 10-01-2008 03:55 » 

блин, я треугольник когда вычисляла - неправильно в таблице просчитала верные треугольники - считала гипотенуза=катет+катет, а надо было гипотенуза^2=катет^2+катет^2 Улыбаюсь
Ну да некритично наверное, главное - мысль передать Улыбаюсь Кому надо - понял Улыбаюсь
Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #110 : 10-01-2008 23:59 » 

Вад, я поныл какая у меня ошибка, просто у меня ест еще домашки над которыми надо подумать, ту ошибку я исправлю главное что я понял  смысл ошибки.
Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #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
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #112 : 11-01-2008 00:37 » 

Программа не доработана, если вести все 5 значений одинаковыми, или два числа рядом стоящи, выдаст что массив упорядочен ОШИБКА надо до работать. 
Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #113 : 11-01-2008 01:36 » 

 или не ошибка подскажите ,ну тоесть я запутался в понятии что считает, упорядочи  массивом?
Записан

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

ua
Offline Offline
Пол: Мужской

« Ответ #114 : 11-01-2008 01:44 » 

Цитата
По второй, подсказка: раз массив упорядочен по возрастанию, то каждый элемент должен быть больше предыдущего или равен ему. Тебе нужно проверить, выполняется ли это условие для всех элементов в твоём массиве

Если так то все правильно, короче подскажите  Я ужас, летящий на крыльях ночи
Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #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
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #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.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #117 : 11-01-2008 04:37 » 

McZim, он тег просто не поставил
Записан

Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #118 : 11-01-2008 06:50 » 

Программа не доработана, если вести все 5 значений одинаковыми, или два числа рядом стоящи, выдаст что массив упорядочен ОШИБКА надо до работать. 
Diskriptor, ты ж сам меня процитировал: для упорядоченного по возрастанию массива "каждый элемент должен быть больше предыдущего или равен ему." Так что в смысле проверки у тебя правильно сделано: это условие нарушается только в том случае, когда предыдущий элемент строго больше текущего, ты это правильно проверяешь.
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #119 : 11-01-2008 07:09 » 

Программа не доработана, если вести все 5 значений одинаковыми, или два числа рядом стоящи, выдаст что массив упорядочен ОШИБКА надо до работать. 

В чем ошибка то? пример тестовых данных приведи на которых у тебя "ошибка"

я бы вот так изменил цикл
Код:
for (i=0; i != 4 && up; ++i)
{
if ( Maciv[i+1] < Maciv[i] )
up=false;
}
Записан

Странно всё это....
Страниц: 1 2 3 [4] 5 6 7 8   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines