Форум программистов, компьютерный форум CyberForum.ru

Pascal to C++ - C++

Восстановить пароль Регистрация
 
FahrenheitIndi
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 8
13.01.2011, 19:21     Pascal to C++ #1
Доброго времени суток.Есть код на паскале.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
program program7;
const a=-3.02; b=0.01; c =-1.1; d=0.2; m=10;
var max,q:real;
f:array[1..m,1..m] of real;
x,y:array[1..m] of real;
k,n:byte;
begin
writeln('Задание матрицы F:' );
for k:=1 to m do begin
  x[k]:=a+b*k;
  for n:=1 to m do begin
    y[n]:=c+d*n;
    F[k,n]:=7*cos(x[k])*(sin(sqr(x[k])*y[n])-sqr(y[n])/8)   ;
    write(F[k,n]:7:3)  
    end;
  writeln
end;
max:=F[1,1];
for k:=1 to m do
  for n:=1 to m do
    if F[k,n]>max then max:=F[k,n];
writeln('Максимальный элемент в матрице=',max:7:3);
write('Введи действительное число->');
readln(q);
for k:=1 to m do
  for n:=1 to m do
    if F[k,n]>=max-q then writeln('в матрице F элемент стоит на ' ,k,' и ',n, ' месте с х=',x[k]:6:2,' и с у=',y[n]:6:2);
end.
Хотел перевести в C++. И встрял. То заполняет матрицу числом -8012. То выводит +NaN(Not-a-Number).
А застрял вот с этой строки F[k,n]:=7*cos(x[k])*(sin(sqr(x[k])*y[n])-sqr(y[n])/8) ;
Помогите пожалуйста.

Добавлено через 19 минут
ну а само условие задачи звучит как:
Составить блок схему алгоритма и программы на языке C++ заполнения массива F(M, M) значениями функции f(x, y) так, что F(k, n) = f(xk, yn), где xk = a + bk, yn = c + dn; k, n = 1, 2,…, M. Результат вывести на монитор в виде матрицы.

Найти все пары значений (xk, yn), при которых значения функции f(x, y) отличаются от максимального элемента массива не более чем на заданную величину δ.
f(x, y) = 7cosx•(sin (x2 y) – y2/8); a = -3.02; b = 0.01; c = -1.1; d = 0.2; M = 10
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2011, 19:21     Pascal to C++
Посмотрите здесь:

C Pascal'я на С++ C++
C Pascal на C++ C++
Из Pascal в С C++
Pascal to С++ C++
C++ Из Pascal в C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TAVulator
3943 / 1101 / 69
Регистрация: 27.07.2009
Сообщений: 3,443
13.01.2011, 19:29     Pascal to C++ #2
Цитата Сообщение от FahrenheitIndi Посмотреть сообщение
Хотел перевести в C++. И встрял.
покажи как перевел - может найдем ошибку.
FahrenheitIndi
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 8
13.01.2011, 19:31  [ТС]     Pascal to C++ #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// ---------------------------------------------------------------------------
 
#include <vcl.h>
#include <iostream.h>
#include <stdlib.h>
#include <ctime>
#include <stdio.h>
#include <math.h>
// ---------------------------------------------------------------------------
 
#pragma argsused
 
int main() {
    const a = -3.02;
    const b = 0.01;
    const c = -1.1;
    const d = 0.2;
    const m = 10;
    double max,q;
    unsigned int k,n;
    double f[m][m];
    double x[m];
    double y[m];
    std :: cout << "Assignment matrix F: \n";
    for (k = 1; k <= m; k++)
    {
      x[k] = a + (b * k);
    }
    for (n = 1; n <= m; n++)
    {
      y[n] = c + (d * n);
      f[k][n] = (7 * cos(x[k]) * sin(sqrt(x[k])) * y[n]) - (sqrt(y[n])/8);//вот отсюда запарка
      std::cout << f[k][n];
    }
    system("Pause");
    return 0;
}
// ---------------------------------------------------------------------------
TAVulator
3943 / 1101 / 69
Регистрация: 27.07.2009
Сообщений: 3,443
13.01.2011, 19:38     Pascal to C++ #4
Цитата Сообщение от FahrenheitIndi Посмотреть сообщение
for (k = 1; k <= m; k++)
Цитата Сообщение от FahrenheitIndi Посмотреть сообщение
for (n = 1; n <= m; n++)
в С++ массивы начинаются не с 1 индекса, а с 0...
FahrenheitIndi
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 8
13.01.2011, 19:44  [ТС]     Pascal to C++ #5
Так сделал с 0. Но проблема не в этом.А при расчёте вот это части:

f[k][n] = (7 * cos(x[k]) * sin(sqrt(x[k])) * y[n]) - (sqrt(y[n])/8);

Начинается белеберда.
Первое sqrt error.Как понимаю деление либо на ноль либо на отрицательное число.И второе это +NaN(не число).
Увы.Я знаю только Pascal. Код что на паскале писал я. С++ начал читать только сегодня по книге Джесси Либерти.И вот на массивах встрял.Покажите хоть как это должно быть.
TAVulator
3943 / 1101 / 69
Регистрация: 27.07.2009
Сообщений: 3,443
13.01.2011, 19:47     Pascal to C++ #6
Цитата Сообщение от FahrenheitIndi Посмотреть сообщение
Но проблема не в этом.А при расчёте вот это части
проблема в том, что у тебя это не вложенные циклы, как в варианте на паскале, а два отдельных цикла. вложи второй цикл в первый.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
13.01.2011, 19:50     Pascal to C++ #7
Цитата Сообщение от TAVulator Посмотреть сообщение
в С++ массивы начинаются не с 1 индекса, а с 0...
Это как бы фиолетово. Единственное - при объявлении массива надо указывать размер на 1 больше (при этом нулевой элемент попросту не будет использоваться)

Добавлено через 1 минуту
Вместо "const a = -3.02;" надо "const double a = -3.02;"
TAVulator
3943 / 1101 / 69
Регистрация: 27.07.2009
Сообщений: 3,443
13.01.2011, 19:51     Pascal to C++ #8
Цитата Сообщение от Evg Посмотреть сообщение
Это как бы фиолетово. Единственное - при объявлении массива надо указывать размер на 1 больше (при этом нулевой элемент попросту не будет использоваться)
согласен, но все-же решил упомянуть об этом, чтобы ТС был в курсе.
FahrenheitIndi
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 8
13.01.2011, 19:52  [ТС]     Pascal to C++ #9
Те ошибки пропали.Появилось Access Violation (нарушение доступа)
TAVulator
3943 / 1101 / 69
Регистрация: 27.07.2009
Сообщений: 3,443
13.01.2011, 19:55     Pascal to C++ #10
Цитата Сообщение от FahrenheitIndi Посмотреть сообщение
Те ошибки пропали.Появилось Access Violation (нарушение доступа)
в какой строке?
FahrenheitIndi
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 8
13.01.2011, 19:56  [ТС]     Pascal to C++ #11
Так..тоже разобрался..выход за пределы массива))
Забавно..если добавить double к константе а то начинается таже ошибка.
TAVulator
3943 / 1101 / 69
Регистрация: 27.07.2009
Сообщений: 3,443
13.01.2011, 19:59     Pascal to C++ #12
Цитата Сообщение от FahrenheitIndi Посмотреть сообщение
выход за пределы массива
замени еще в циклах <= на <
FahrenheitIndi
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 8
13.01.2011, 20:05  [ТС]     Pascal to C++ #13
Ответы различаются между C++ и Pascal
Миниатюры
Pascal to C++   Pascal to C++  
FahrenheitIndi
0 / 0 / 0
Регистрация: 13.01.2011
Сообщений: 8
13.01.2011, 20:20  [ТС]     Pascal to C++ #14
ну вот и тут стало ясно))sqrt на abs поменял))
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
13.01.2011, 21:28     Pascal to C++ #15
Цитата Сообщение от TAVulator Посмотреть сообщение
замени еще в циклах <= на <
Если в коде работа идёт с единицы, то надо <=, чтобы осталось по-паскалевски
TAVulator
3943 / 1101 / 69
Регистрация: 27.07.2009
Сообщений: 3,443
13.01.2011, 21:33     Pascal to C++ #16
Цитата Сообщение от Evg Посмотреть сообщение
Если в коде работа идёт с единицы, то надо <=, чтобы осталось по-паскалевски
и тут я с тобой согласен. Но, как я понял, ТС уже сменил единицу на ноль, поэтому я ему это и порекомендовал
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2011, 21:46     Pascal to C++
Еще ссылки по теме:

из Pascal в C++ C++
C++ Pascal -> C++
C++ Из Pascal в C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
13.01.2011, 21:46     Pascal to C++ #17
Цитата Сообщение от TAVulator Посмотреть сообщение
Но, как я понял, ТС уже сменил единицу на ноль
ТС вообще на всех забил и тихо сам с собой беседу ведёт
Yandex
Объявления
13.01.2011, 21:46     Pascal to C++
Ответ Создать тему
Опции темы

Текущее время: 01:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru