Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 06.03.2008, 23:05   #21
Ceprey
Пользователь
 
Регистрация: 01.03.2008
Сообщений: 47
По умолчанию

Кстати, насчет рациональности массива я замечание понял. Просто, как мне вдолбили, в объектно-ориентированном программировании нужно предусмотреть вариант использования программы и для других задач. Если изначально заданы будут элементы не от 1 до 10, а любые, массив все же понадобится...
Ceprey вне форума
Старый 20.03.2008, 21:57   #22
OIOI
Пользователь
 
Регистрация: 06.03.2008
Сообщений: 20
Сообщение

НУ-С.. спасибо за помошшш, а если ктото может ишо так воот мне всунули ишо задачу - " способом деления отрезка пополам с точностью до е>0 получить корни уравнения f (x)= x + ln (x + 0.5) - 0.5 = 0 на пределе [ 0, 2] "
OIOI вне форума
Старый 21.03.2008, 14:50   #23
alexx777
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 75
По умолчанию

Программа по введённому значению e вычисляет корень уравнения x+ln(x+0.5)-0.5 методом дихотомии на промежутке [MIN, MAX].
Код:
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
#include <conio.h>

#define MIN 0
#define MAX 2

double func(double x);

int main(){
 double e;
 cout << "Enter e: ";
 cin >> e;
 double a, b, c;
 a = MIN;
 c = MAX;
 while((c-a) > e){
  b = (a+c)/2;
  if(func(b) == 0) break;
  if(func(a)*func(b) < 0){
   c = b;
  }else{
   a = b;
  }
 }
 cout << "Result: " << setprecision(17) << (a+c)/2;
 getch();
}

double func(double x){
 return x + log(x + 0.5) - 0.5;
}
alexx777 вне форума
Старый 23.03.2008, 21:06   #24
OIOI
Пользователь
 
Регистрация: 06.03.2008
Сообщений: 20
По умолчанию

слушай а оно пишет ошибку - Function should have return a value, мож ето я чтото непереписал? хотя походу верно...
OIOI вне форума
Старый 23.03.2008, 21:27   #25
alexx777
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 75
По умолчанию

Цитата:
Сообщение от OIOI Посмотреть сообщение
слушай а оно пишет ошибку - Function should have return a value, мож ето я чтото непереписал? хотя походу верно...
Добавь после строки

Код:
getch();
строку

Код:
return 0;
alexx777 вне форума
Старый 23.03.2008, 21:32   #26
OIOI
Пользователь
 
Регистрация: 06.03.2008
Сообщений: 20
Сообщение

Цитата:
Сообщение от Ceprey Посмотреть сообщение
Вот я поставил прерыватель, которые позволяет посмотреть результаты постепенно, за 10 приемов.
Код:
#include <iostream.h>   
  
int main ()   
{  
    int a[10] = {1,2,3,4,5,6,7,8,9,10};   
  int f = 0;
       
  
    for (int i=0; i<10; i++)   
        {for (int j=0; j<10; j++)  
            {for (int h=0; h<10; h++)  
                {for(int k=0; k<10; k++)  
                cout<<a[i]<<" "<<a[j]<<" "<<a[h]<<" "<<a[k]<<"        ";} 

                }   
        	cout<<"Prodolzhit? (1 - da, 2 - net)";
	cin>>f;
	if (f==2) break;    }   
           
           
  
  
return 1;   
}
вот нашот етого, Ceprey все работает но мне сказали немного переделать ну вот вышло чтото вроде етого.... так у миня вопрос, там выходит результаты не все на екране, тоесть начинаетса с 1 - 6 - 2 - 10, а как зделать чтоб с 1-1-1-1 и т.д.

Код:
 #include <iostream.h>

int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
  int f=0;

   for(int i=0; i<10; i++)
 {
  for (int j=0; j<10 ; j++)
 {
  for(int h=0; h<10; h++)
  {
  for(int k=0; k<10; k++)

 if(a[i]==a[j]|| a[i]==a[h]|| a[i]==a[k]||
  a[j]==a[h]||a[j]==a[k]|| a[h]==a[k])

 continue;


  cout<<a[i]<<" - "<<a[j]<<" - "<<a[h]<<" - "<<a[k]<<" "<<endl;}

   }
  cout<<"Prodovjit? (1 - da, 2 - ni)";
  cin>>f;
  if(f==2)break;
  }
  return 0;
  }
OIOI вне форума
Старый 23.03.2008, 21:36   #27
OIOI
Пользователь
 
Регистрация: 06.03.2008
Сообщений: 20
По умолчанию

Цитата:
Сообщение от alexx777 Посмотреть сообщение
Добавь после строки

Код:
getch();
строку

Код:
return 0;
роботает! слушай а если мне скажут чтоб не вводить "е" а чтоб само дало какойто результат..тогда что? кстати а почему несмотря не е ответ - "1"??

Последний раз редактировалось OIOI; 23.03.2008 в 21:39.
OIOI вне форума
Старый 23.03.2008, 21:38   #28
alexx777
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 75
По умолчанию

Код:
 if(a[i]==a[j]|| a[i]==a[h]|| a[i]==a[k]||  
  a[j]==a[h]||a[j]==a[k]|| a[h]==a[k])  
 
 continue;
Зачем это нужно?
------------------------
Цитата:
слушай а если мне скажут чтоб не вводить "е" а чтоб само дало какойто результат..тогда что?
Откуда брать значение e?
alexx777 вне форума
Старый 23.03.2008, 21:44   #29
OIOI
Пользователь
 
Регистрация: 06.03.2008
Сообщений: 20
По умолчанию

Цитата:
Сообщение от alexx777 Посмотреть сообщение
Код:
 if(a[i]==a[j]|| a[i]==a[h]|| a[i]==a[k]||  
  a[j]==a[h]||a[j]==a[k]|| a[h]==a[k])  
 
 continue;
Зачем это нужно?
------------------------


Откуда брать значение e?
как мне "уважаемый" учитель сказал - что моя программа дает много одинаковых чисел и их нужно укоротить) а нашот 2 то у нас же ест предел от 0 до 2..от туда нельзя ничо вынести?
OIOI вне форума
Старый 23.03.2008, 21:47   #30
alexx777
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 75
По умолчанию

На счёт второго задания:

Код:
#include <iostream.h>   
#include <iomanip.h>   
#include <math.h>   
#include <conio.h>   
  
#define MIN 0  
#define MAX 2  
  
double func(double x);   
  
int main(){  
 double e = 1e-10;
 double a, b, c;  
 a = MIN;  
 c = MAX;  
 while((c-a) > e){  
  b = (a+c)/2;  
  if(func(b) == 0) break;  
  if(func(a)*func(b) < 0){  
   c = b;  
  }else{  
   a = b;  
  }  
 }   
 cout << "Result: " << setprecision(17) << (a+c)/2;   
 getch();   
 return 0;
}   
  
double func(double x){  
 return x + log(x + 0.5) - 0.5;  
}
alexx777 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц