Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
K2rusH
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 7
#1

Различные типы данных в динамическом массиве - C++

14.04.2009, 09:15. Просмотров 1015. Ответов 4
Метки нет (Все метки)

error C2297: '*' : illegal, right operand has type 'float [3]'
Получаю вот такую ошибку. В связи с небольшим опытом, понять в чём дело не могу.
А вот само задание:Написать процедуру заполнения динамического массива размера (10х10) целыми случайными числами определяемыми выражением у=20*cos(8*Ci+3)+10*cos(5*Cj+7) , где ci, cj – случайные числа из диапазона [-2Пи - 2Пи]. С помощью определить элемент массива, имеющий наибольшее значение. Результат вывести на экран.

Последнее задание не делал, так как с основой проблемы.


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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define N 10
 
int main()
{
    float  **a;
    float Cj[N],Ci[N];
    int i, j;
    srand(time(0));
    a = (float**)malloc(N * sizeof(float));
    for(i=0; i<N; i++)
       a[i] = (float*)malloc(N * sizeof(float));  
    printf("A = \n");
    for(i=0; i<N; i++) {
        Ci[i]=rand()%3-3;
        Cj[i]=rand()%3-3;
       for(j=0; j<N; j++) {
          a[i][j]=20*cos(8*Ci+3)+10*cos(5*Cj+7);
          printf("%f   ", a[i][j]);
       }
       printf("\n");
    }
    for(i=0; i<N; i++)
       free(a[i]);   
    free(a);
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2009, 09:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Различные типы данных в динамическом массиве (C++):

Вычислить значение выражения, используя различные вещественные типы данных. (есть код) - C++
Доброго времени суток. Есть задание и есть код к задачам. Не могу довести до финального завершения. Помогите решить пожалуйста. 2. ...

Типы данных: есть ли универсальный тип, который может заменить все типы данных в Си? - C++
Добрый вечер! Был бы очень признателен, если бы Вы помогли бы мне понять нижеследующие вопросы: 1. Можете ли на понятным для...

Не могу найти ошибку с подсчетом суммы элементов в интервале[a,b] в динамическом одномерном массиве массиве. - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt; #include &lt;stdio.h&gt; #include...

Ошибка C2371 int32_t: переопределение, различные базовые типы - C++
Разбираюсь в чужем проекте. Проект работал в Qt и возможно на Linux. Хочу запустить его в VS2015. От всех ошибок кроме одной смог...

Сдвиг в динамическом массиве - C++
Добрый день) Сразу оговорюсь что честно пользовался поиском. Если у меня проблемы со зрением - прошу указать соответствующую тему. Спасибо....

Ошибка в динамическом массиве - C++
Проблема при добавлении сотрудника. Первый сотрудник добавляется просто прекрасно, а вот при записи второго сотрудника выдает ошибку и...

4
RazorQ
581 / 348 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
14.04.2009, 09:26 #2
Цитата Сообщение от K2rusH Посмотреть сообщение
C++
1
float ***a;
Здесь указатель на указатель. Убери одну звёздочку
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.04.2009, 09:56 #3
Код
    float Cj[N],Ci[N];
Код
    float C[N][N];
Код
    a = (float**) malloc(N*sizeof(float));
Код
    a = (float**) malloc(N*sizeof(float *));
Код
    20*cos(8*Ci+3)+10*cos(5*Cj+7);
Код
    20*cos(8*C[i]+3)+10*cos(5*C[j]+7);
вообще конечно
Код
    float Cj[N],Ci[N];
Код
    float C[N][N];
Код
    float ci, cj;
это же просто числа

кстати в math.h определена константа M_PI - число пи
0
K2rusH
0 / 0 / 0
Регистрация: 10.04.2009
Сообщений: 7
14.04.2009, 20:31  [ТС] #4
Не смог осознать направление действия в твоём коде. Можно немного поподробнее?
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.04.2009, 23:08 #5
смысл в том, что вместо Ci[N] и Сj[N] юзаются просто переменные ci и cj, можно их заранее заполнить, тогда подойдёт одна таблица c[N][N], вместо двух массивов

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

дальше, когда для a выделяешь память, у тебя выделяется массив указателей для строк конечной таблицы, а потом к ним подключаются выделенные массивы, функция malloc возвращает указатель на значение void'ового типа, такой указатель можно писать без приведения, так как, начиная со стандарта ANSI C89, void'овые указатели можно присваивать как в ту, так и в обратную сторону (то есть их можно присваивать любым указателям и им можно присваивать любые указатели), но некоторые компиляторы пишут, что это неправильно (может для C++ неправильно, они вводят там новые правила свои и когда компилишь для C++ могут правила C++ накладывать на сишный код), поэтому приведение пишут явно
когда ты выделяешь память под масив указателей на строки, malloc возвращает указатель на массив указателей, поэтому его явно нужно привести к типу float **, потому что она вернула указатель на указатель на значение, а вот когда ты уже выделил память под массив указателей на строки, ты уже создаёшь эти строки и malloc возвращает указатель на первый элемент строки и его явно нужно привести к типу float *, потому что она вернула указатель на значение типа float

когда будешь юзать просто переменные, которые генерятся прямо в цикле, то и в формуле нужно юзать не Ci или C[i], а просто ci для левого слагаемого и cj для правого

Код
rand()%3-3;
Код
rand()%(2*M_PI+0.1);
Код
rand()%(2*M_PI+0.1)-2*M_PI;
0.1 - потому что включает и -2PI и 2PI
1
14.04.2009, 23:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2009, 23:08
Привет! Вот еще темы с ответами:

Преобразование типов в динамическом массиве - C++
Имеется динамический массив unsigned char * buffer = new unsigned char ; size - это размер массива вычисляется отдельно ...

Реализация стека в динамическом массиве - C++
Условие такое: Помогите для начала хотя бы разобраться, как реализуется стек в динамическом массиве, а то чет совсем не могу въехать с...

Ошибка в одноиерном динамическом массиве - C++
Здравствуйте, программа не правильно выводит на экран обработанный массив. Пункт 1 выполняется, пункт 2 выполняется, пункт 3 выполняется,...

Музыкальная картотека в динамическом массиве - C++
Написать программу, которая позволяет хранить музыкальную картотеку в динамическом массиве. Каждая запись должна содержать: Тип...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru