Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - помогите написать программу на C++

Ответить
Настройки темы
C/C++ - помогите написать программу на C++

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Моя домашняя работа.jpg
(22.5 Kb, 17 просмотров)
Тип файла: jpg Моя домашняя работа (помощь).jpg
(8.2 Kb, 9 просмотров)
помогите пожалуйста решить задачку, очень нужно((((((

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

сам размер матрицы (количество строк и столбцов) не задан, но имеет ограничения как по X так и по Y. Но они как-то связаны, к примеру если взять что ∆X = 1 и ∆Y = 1, то кол-во строк = 11, а кол-во столбцов = 9, а может быть и наоборот (они могут и отличаться, к примеру ∆X = 0,01 и ∆Y = 0,01); даже сами значения ∆X и ∆Y могут отличаться друг от друга, но они связаны с границами Xϵ[0;8] и Yϵ[0;10].

а вот и вторая проблема в этой же задаче:

• к примеру, как показано на рисунке значение в массиве при X = 0, а Y =10 будет = 0, затем при изменяющемся X и постоянном Y значение будет расти и в точке массива при X = 6, а Y =10 значение будет = 10, а далее будет падать до 0 в точке матрицы X = 8 и Y =10;
• также, как видно из рисунка значения в массиве при X = 0, а Y изменяющемся в диапазоне [0;2] будет = 5;
• все остальные граничные значения = 0.

И третья проблема: это расчет внутренних значений матрицы
Если ∆X = ∆Y, то внутренние значения каждой точки матрицы рассчитываются по формуле U[i][j]=(U[i-1][j]+ U[i+1][j]+ U[i][j-1]+ U[i][j+1])/4
Если ∆X ≠ ∆Y, то внутренние значения каждой точки матрицы рассчитываются по формуле U[i][j]=(U[i-1][j]+ U[i+1][j]+ ((∆X²/∆Y²)*(U[i][j-1]+ U[i][j+1])))/(2*(1+(∆X²/∆Y²)))

Отправлено: 16:34, 06-04-2011

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


feytan, ааа а что спросить то хотел? Условий много, а их цель и смысл не ясны. В чем возникла проблема? Что ты не знаешь "Как сделать?"?
Описав проблему, ты не задал ни одного вопроса, поэтому помочь тебе пока сложно.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 16:59, 06-04-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 154
Благодарности: 39

Профиль | Отправить PM | Цитировать


ты бы для начала сам понял что от тебя хотят в этой задаче а не у нас спрашивал.. это не мы тебе задали эту задачу. чесно.
тебе правильно говорят - задай вопрос. он состоит обычно из нескольких частей: 1. условие, т.е. то что имеется, 2. желаемый ответ, т.е. то что предполагается сделать и получить., и 3. фраза - "вот я тут набросал [ссылка_на_наброски], но не пойму как сделать [непонятная_штука]" .

Отправлено: 17:46, 06-04-2011 | #3


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
#include <iostream>
#include<time.h>
using namespace std;
 
int main ()
{
        srand (time(NULL));
        float h, k;
        int a, b, n, m, i, j;
        cout<<"Enter a: "; //a - конечное значение на графике по оси Y
        cin>>a;
        cout<<"\nEnter h: "; //h - расстояние одной строки по оси Y
        cin>>h; 
        n=(int)(a/h)+1; //расчитываем количество строк в массиве
        cout<<"\n n="<<n; //n - количество строк в массиве
        cout<<"\nEnter b: "; //b - конечное значение на графике по оси X
        cin>>b;
        cout<<"\nEnter k: "; //k - расстояние одного столбца по оси X
        cin>>k; 
        m=(int)(b/k)+1; //расчитываем количество столбцов в массиве
        cout<<"\n m="<<m; //m - количество столбцов в массиве
        int** U = NULL;
 
/* Выделяем память под матрицу */
/* Выделяем память под массив строк матрицы */
        U = new int*[n];
/* Выделяем память под каждую строку матрицы */
        for(i = 0; i < n; ++i)
                U[i] = new int[m];
        //заполнение матрицы
        for (i = 0; i < n; ++i)
        {
                for (j = 0; j < m; ++j)
                {
                        U[i][j]=rand()%20;
                        cout<<U[i][j]<<"\t";
                }
                cout<<endl;
        }
 
/* Удаление матрицы */
/* Удаление каждой строки матрицы */
for(i = 0; i < n; ++i)
    delete[] U[i];
 
/* Удаление массива строк матрицы */
delete[] U;

    system("pause");
    
        return 0;
}

Отправлено: 13:31, 16-04-2011 | #4


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Безымянный.jpg
(132.3 Kb, 6 просмотров)
Тип файла: jpg Безымянный2.jpg
(65.9 Kb, 4 просмотров)

Задачу я решил. Я изменил код программы, взяв за основу, что ∆X = 1 и ∆Y = 1, т.о. кол-во строк = 11, а кол-во столбцов = 9. Вот код программы:

Код: Выделить весь код
#include <iostream>
 
using namespace std;
 
int main ()
{
        int i, j, n1, m1,k;
        float e=0.000001, max_pogr, d1, d2, next;
        int const n=11; //задаем количество строк в массиве
        int const m=9; //задаем количество столбцов в массиве
        float mas_U[n][m];
        d1=10.0/6.0;
        d2=5.0;
        n1=n-1;
        m1=m-1;
        cout<<"===Zadanie nulei===" << endl;
        cout<<"\n";
        for(i = 0; i < n; i ++) 
        {
              for(j = 0; j < m; j ++) 
              {
              mas_U[i][j] = 0;
              }
        }
        for(i = 0; i < n; i ++)
        {
            for(j = 0; j < m; j ++)
            {
              cout << mas_U[i][j] << "\t";
            }
              cout << endl;
        }
        
        cout<<"\n===Pervie granichnie usloviya===" << endl;
        cout<<"\n";
        for(i = 8; i < n; i++)
        {
        mas_U[i][0]=5;
        }
        for(i = 0; i < n; i ++)
        {
            for(j = 0; j < m; j ++)
            {
              cout << mas_U[i][j] << "\t";
            }
              cout << endl;
        }
        cout<<"\n===Vtorie granichnie usloviya===" << endl;
        cout<<"\n";        
        for(j = 1; j <= 7; j ++)
        {
              mas_U[0][j] = mas_U[0][j-1] + d1;
              }
        for(j = 7; j < m ; j ++)
                {
              mas_U[0][j] = mas_U[0][j-1] - d2;
              }
        for(i = 0; i < n; i ++)
        {
            for(j = 0; j < m; j ++)
            {
              cout << mas_U[i][j] << "\t";
            }
              cout << endl;
        }
        cout<<"\n===Podschet massiva===" << endl;
        cout<<"\n";         
        for(k=0;;k++)
        {
                max_pogr=0;
               for(i = 1; i < n1; i ++)
                       {
                            for(j = 1; j < m1; j ++)
                                  {
                                       next = (mas_U[i+1][j] + mas_U[i-1][j] + mas_U[i][j+1] + mas_U[i][j-1])/4;
                                       if((mas_U[i][j] - next) > max_pogr) max_pogr=(mas_U[i][j] - next);
                       else mas_U[i][j] = next;
                                  }
                        }
                        if(max_pogr<=e||k>=10000)break;
        }
        for(i = 0; i < n; i ++)
        {
              for(j = 0; j < m; j ++)
              printf("%7.4f\t",mas_U[i][j]);
              printf("\n\n");
        }
 
    system("pause");
    
        return 0;
}
Так же выкладываю результат и примерную блок-схему

Отправлено: 16:22, 07-06-2011 | #5


Новый участник


Сообщения: 3
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Фото0753.jpg
(346.0 Kb, 15 просмотров)

Помогите написать программу.

Отправлено: 19:24, 25-09-2011 | #6


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Студенты... ммм я по ним скучал :)
Tanya_93, Выпиши пожалуйста
Определения переменных - т.е. имя переменной, ее тип (логическая, вещественная, целая и т.п.) и, если надо, размерность.
Формулы вычисления на каждом участке
Ответь, как переменной присвоить значение введенное с клавиатуры, как вывести значение на экран.
Привели конструкцию цикла for или цикла while.

Не связывая эти блоки с собой. Мне просто нужны "кирпичики" - ответы на заданные вопросы, даже если тебе не видна полная картина, ничего страшного, все равно ответь, дальше я покажу, как все это удобно между собой складывается и получается решение задачи.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 21:19, 25-09-2011 | #7


Новый участник


Сообщения: 3
Благодарности: 1

Профиль | Отправить PM | Цитировать


#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;

void main()
{

double a,b,c,x,x1,x2,d;
cout<< "vvesti a: \n";
cin>> a;
cout <<"vvesti b: \n";
cin>> b;
cout <<"vvesti c: \n";
cin>>c;

cout <<"vvesti x1: \n";
cin>>x1;
cout <<"vvesti x2: \n";
cin>>x2;
cout <<"vvesti d: \n";
cin>>d;

cout<<" -------------------------- \n";
cout<<"| X |";
cout<<" F |";
for(x=x1;x<x2)
{
if ((x<0)&&(b!=0))
{printf("\n| %10.1lf ",x);
printf("| %10.1lf |",a*x*x*x+b*x*x);
}
else
if ((x>0)&&(b==0))
{printf ("\n| %10.1lf ",x);
printf ("| %10.1lf |",(x-a)/(x-c));
}
else
{printf ("\n| %10.1lf ",x);
printf ("| %10.1lf |",(x+5.0)/c*(x-10.0));
}
printf("\n -------------------------- ");
}
getch();
}

Отправлено: 22:47, 25-09-2011 | #8


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Tanya_93, Первый и самый злой комментарий : "Комментарии !"
Расставляй комментарии к коду, даже к такому простейшему.
Цитата Tanya_93:
Подключаем библиотеки, определяем пространство:
Код: Выделить весь код
#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;
»
Цитата Tanya_93:
определяем переменные, присваиваем им начальные значения:
Код: Выделить весь код
double a,b,c,x,x1,x2,d;
cout<< "vvesti a: \n";
cin>> a;
cout <<"vvesti b: \n";
cin>> b;
cout <<"vvesti c: \n";
cin>>c;
cout <<"vvesti x1: \n";
cin>>x1;
cout <<"vvesti x2: \n";
cin>>x2;
cout <<"vvesti d: \n";
cin>>d;
»
Формулы проверять не буду, поверю на слово:
Цитата Tanya_93:
Код: Выделить весь код
for(x=x1;x<x2)
{
if ((x<0)&&(b!=0))
{printf("\n| %10.1lf ",x);
printf("| %10.1lf |",a*x*x*x+b*x*x);
}
else
if ((x>0)&&(b==0))
{printf ("\n| %10.1lf ",x);
printf ("| %10.1lf |",(x-a)/(x-c));
}
else
{printf ("\n| %10.1lf ",x);
printf ("| %10.1lf |",(x+5.0)/c*(x-10.0));
}
»
К этому коду у меня есть один единственный вопрос: ты уверена в том, что здесь правильно применен цикл for ?
Ведь в задании, насколько я помню, был указан шаг dX, в существующем варианте шаг будет равен единице.
Т.е. тебе либо надо выправлять условия цикла for, либо использовать цикл while.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 09:27, 26-09-2011 | #9


Новый участник


Сообщения: 3
Благодарности: 1

Профиль | Отправить PM | Цитировать


да я for подправила,
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:31, 26-09-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - помогите написать программу на C++

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Помогите написать программу! Turbo Pascal 7.0 MeeF Тест-форум 2 08-12-2011 01:02
Разное - [Pascal] помогите написать программу rom6520 Программирование и базы данных 6 22-01-2011 19:54
Разное - Pascal помогите пожалуйста написать программу Azamt Программирование и базы данных 1 21-01-2011 17:49
C/C++ - Помогите пожалуста. Нужно написать программу на С. Oganes Программирование и базы данных 1 20-12-2010 12:29
C/C++ - Помогите написать программу на С++ rivz2007 Программирование и базы данных 4 05-09-2010 16:54




 
Переход