IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Динамические массивы С ++
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Олег

Репутация: -  0  +


Нужно решить простинькую задачку о массивах
вычислить массив Z=sgrt(1+X) где X - положительные корни уравнения Ах+Вcos£, при А=0.75,
£=-1.5+i*h£,
i=0,n,
h£=0.5,
n=10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


А где твое решение?)
И если проблема какая, то где вопрос?

Я не думаю что здесь кто то будет решать твою задачу за тебя)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Олег

Репутация: -  0  +


Как я могу написать мой свой вариант решения если С++ я начну учить только в сентебре а летнюю практику нужно написать на этом языке. :-(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






blink.gif Как же ты будешь сдавать решение на языке, который еще не начинал учить?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Олег

Репутация: -  0  +


Цитата(volvo @ 21.07.2009 21:20) *

blink.gif Как же ты будешь сдавать решение на языке, который еще не начинал учить?

мне сказали что прога должна быть на С++ а на первом курсе мы учили только Паскаль, вот я и прошу вас о помощи
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


а B чему равно перед косинусом ?

Вот что накидал

#include <vector>
#include <iostream>
#include <math.h>

using namespace std;

int main()
{ vector <double> z;
double x,a=0.75,b=0.5/*Здесь значение B*/; int n=10;
system("cls");
for(int i=0;i<=n;i++)
{
x=-(b*cos(-1.5+(i*0.5)))/a; //нахождение корня
if (x>0) z.push_back(sqrt(1+x));//проверка корня и если что
} // вычисление очередного э-та вектора Z
for(int i=0;i<z.size();i++)
cout<<"Z["<<i+1<<"]= "<<z[i]<<endl; //вывод содержимого вектора Z
getchar();
cout<<"Bay! Bay! \n";
return 0;
}


Но здесь вектор так сказать не опустошается, что наверное не есть гуд...

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Account
Во-первых, будет Warning, потому что размер vector-а - это unsigned int, а не просто int... Не надо смешивать знаковые и беззнаковые типы.

А во-вторых - не надо "освобождать" вектор. Сам удалится, как только выйдет из области видимости.

А вообще, скорее всего, речь шла не об STL. А о "ручном" выделении памяти через new. Они ж даже не начали изучать язык пока...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 22.07.2009 1:53) *

Account
Во-первых, будет Warning, потому что размер vector-а - это unsigned int, а не просто int... Не надо смешивать знаковые и беззнаковые типы.



А поконкретней можно пожалуйста, чтоб взять на заметку в будущем.

У меня вроде не показывает предупреждений, вот скрин

Сообщение отредактировано: Account -


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Включи ВСЕ Warning-и: Project -> Build options -> скрин...

Прикрепленное изображение
Результат компиляции видно там же.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Включил, только в настройках, чтоб во всех проектах показывались все варнинги))

Тогда можно решить эту проблему во так
for(unsigned int i=0;i<z.size();i++)





Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской
Реальное имя: Олег

Репутация: -  0  +


Вы спрашивали чему ровно В в условии ничего нету значит вводится с клавиатуры. И писать наверно нужно через nеw (хотя я не знаю что это) так как по ходу прога не должна быть сложной, на подготовления был только месяц за это время врятли много выучиш
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Вот переделал под new, и B вводится, но мне кажется что у этой переменной тоже наверное какоето ограничение должно быть...
#include <vector>
#include <iostream>
#include <math.h>

using namespace std;

int main()
{ double* z;
double x,a=0.75,b; int n=10,j=0;
system("cls");
cout<<"Vvedite B: ";
(cin>>b).get();
z = new double [n+1];
for(int i=0;i<=n;i++)
{
x=-(b*cos(-1.5+(i*0.5)))/a; //нахождение корня
if (x>0) {z[j]=sqrt(1+x);j++;}//проверка корня и если что
} // вычисление очередного э-та массива Z
for(int i=0;i<j;i++)
cout<<"Z["<<i<<"]= "<<z[i]<<endl; //вывод содержимого массива Z
getchar();
delete [] z ;

cout<<"Bay! Bay! \n";

return 0;
}


Хотел сделать выделение только под нужное количество положительных только корней, но это тогда приходится высчитывать их колличество, т.е. предворительно находить корень, а после выделения опять высчитывать для присвоения, как сделать это все вместе одновременно пока не додумался, может volvo подскажет более оптимальный вариант

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Цитата
более оптимальный вариант
Написать в С-шном стиле, через realloc. Пример - здесь: http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/

Я, если честно, до сих пор не совсем понимаю смысла задания. Написать летом на С++, но учить мы его будем только осенью. Это такая завуалированная форма стёба? Учим за лето язык сами? Смысл-то какой в написании программы? Человек же объяснить не сможет ни одной строки. Тем более, если сделать вот так:
    for(int i=0;i<=n;i++) {
if ((x=-(b*cos(-1.5+(i*0.5)))/a)>0) z[j++]=sqrt(1+x); // вычисление и проверка корня и если что
} // вычисление очередного э-а вектора Z

P.S. <vector> убери из программы, не нужен он...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


ок убрал <vector> и подправил вычисления условия


#include <iostream>
#include <math.h>

using namespace std;

int main()
{ double* z;
double x,a=0.75,b; int n=10,j=0;
system("cls");
cout<<"Vvedite B: ";
(cin>>b).get();
z = new double [n+1];
for(int i=0;i<=n;i++)
if ((x=-(b*cos(-1.5+(i*0.5)))/a)>0) {z[j]=sqrt(1+x);j++;}//вычисление и проверка корня и если что
// вычисление очередного э-та массива Z

for(int i=0;i<j;i++)
cout<<"Z["<<i<<"]= "<<z[i]<<endl; //вывод содержимого массива Z
getchar();
delete [] z ;

cout<<"Bay! Bay! \n";

return 0;
}


Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.04.2024 5:45
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name