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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
OverDozero
99 / 99 / 6
Регистрация: 07.04.2011
Сообщений: 523
#1

Двумерный динамический массив вещественных чисел - C++

25.06.2014, 19:55. Просмотров 3258. Ответов 7
Метки нет (Все метки)

Набросал код:
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
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <alloc.h>
 int m=0,n=0,V=0;//n ñòðîê n-ñòîáöîâ
 float mas=0; 
 int i,j;
 int main ()
  {
    printf("Vvedite razmernost massiva(strok):");
     scanf("%d",&n);
    printf("Vvedite razmernost massiva(stolbcov):");
     scanf("%d",&m);
    printf("Vyberete tip zapolneniya massiva\n");
    printf("'1'-avtomati4esloe zapolnenie massiva\n");
    printf("'2'-ru4noe zapolnenie massiva\n");
    printf("Tip:");
    scanf("%d",&V);//ГІГЁГЇ Г§Г*ïîëГ*ГҐГ*ГЁГї Г¬Г*Г±Г±ГЁГўГ*
    float**arr=(float**)malloc(n*m*sizeof(float));
    srand(time(NULL));
    if (V==1)
        for (i=0;i<n;i++)
        for (j=0;i<m;i++){
    arr[i,j]=random()%99-25);
     printf("%f\n ",arr[i,j]);    }
  getch();
  return 0;}
Нужно создать массив вещественных числе.Не выходит именно заполнение массива рандомными вещественными числами.
Подскажите как заполнить динамический массив рандомными вещественными числам(не обязательно положительными)
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2014, 19:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двумерный динамический массив вещественных чисел (C++):

Динамический массив из вещественных чисел - C++
Добрый день! Как заполнить динамический массив вещственными числами, учитывая что пользователь должен вводить их сам или по выбору...

Создать динамический массив вещественных чисел. - C++
Создать динамический массив вещественных чисел. (С++) На каждый вопрос создавайте по одной теме - это помогает избежать путаницы в...

Вывести на экран двумерный массив вещественных чисел - C++
вот такой кодик...числа в массиве - произвольные...выбивает такие ошибки error LNK2019: unresolved external symbol _main referenced in...

построить двумерный массив вещественных чисел. (Нужно написать программу!) - C++
Нужно построить двумерный массив вещественных чисел. Определить местоположение максимальных чисел.(Необходимо использовать функции)...

Задан двумерный массив вещественных чисел размерностью (M+1)x(N+1). В строку m+1 записать суммы элементов по с - C++
Задан двумерный массив вещественных чисел размерностью (M+1)x(N+1). В строку m+1 записать суммы элементов по столбцам, в столбец n+1...

Создать динамический двумерный массив типа int. Ввести таблицу из 5x5 чисел. Полсчитать количество положительн - C++
Создать динамический двумерный массив типа int. Ввести таблицу из 5x5 чисел. Полсчитать количество положительных чисел в каждой строке.

7
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
25.06.2014, 20:01 #2
OverDozero, Случайные ВЕЩЕСТВЕННЫЕ числа
1
OverDozero
99 / 99 / 6
Регистрация: 07.04.2011
Сообщений: 523
25.06.2014, 20:40  [ТС] #3
Проблема была не в генерации чисел,а именно их записи в массив.Не так поставил вопрос.
Сделал такую генерацию:
C++
1
mas=(float)(rand()%512)/(float)(rand()%256);
записываю в массив
C++
1
2
3
4
5
6
7
for (i=0;i<n;i++){
        for (j=0;j<m;j++)
        {
        mas=(float)(rand()%512)/(float)(rand()%256);
        printf("%.2f ",mas);
        arr[i,j]=mas;//запись в массив      }
        printf("\n");}
Ругается на строку записи:cannot convert `float' to `float*' in assignment
Что не правильно я сделал?
При ручном заполнении массива тоже ошибки.Вручную не могу заполнить.
У меня проблема с заполнением массива,или с самим динамическим выделением памяти?

Спасибо за ответ
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
25.06.2014, 20:43 #4
Цитата Сообщение от OverDozero Посмотреть сообщение
float**arr=(float**)malloc(n*m*sizeof(float));
расскажи что ты хотел сделать этой строчкой? и как ты её понимаешь?
0
OverDozero
99 / 99 / 6
Регистрация: 07.04.2011
Сообщений: 523
25.06.2014, 21:05  [ТС] #5
Цитата Сообщение от ValeryS Посмотреть сообщение
расскажи что ты хотел сделать этой строчкой? и как ты её понимаешь?
выделить под двумерный массив память)))
Вещественный двумерный массив=выделение памяти размерностью (заданное m*заданное n*размер типа флоат)
Допустим размерность 5 на 5
Память=5*5*4 байта=100 байт мне надо памяти
Или так нельзя сделать?как правильно будет?
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
25.06.2014, 21:41 #6
Цитата Сообщение от OverDozero Посмотреть сообщение
выделить под двумерный массив память)))
двумерных массивов не бывает, это все обманка, память линейна
и посему или выделяй память под одномерный массив(что ты и делаешь) или делай массив указателей на указатели
C++
1
2
3
 float**arr=(float**)malloc(n*sizeof( float*));
   for(int i=0;i<n;i++)
      arr[i]=(float*)malloc(m*sizeof( float));
удалять в цикле указатели, потом указатель на указатель
но поелику мы в плюсах, то лучше воспользоваться new

C++
1
2
3
 float**arr=new float* [n];
   for(int i=0;i<n;i++)
      arr[i]=new float[m];
удалять так
C++
1
2
3
4
 
   for(int i=0;i<n;i++)
     delete[] arr[i];
   delete [] arr;
вот теперь сможешь пользоваться конструкцией
arr[i][j]

Добавлено через 2 минуты
Цитата Сообщение от OverDozero Посмотреть сообщение
arr[i,j]=mas;
правильно так
C++
1
arr[i][j]=mas;
1
OverDozero
99 / 99 / 6
Регистрация: 07.04.2011
Сообщений: 523
25.06.2014, 21:44  [ТС] #7
Цитата Сообщение от ValeryS Посмотреть сообщение
правильно так
C++
1
arr[i][j]=mas;
Да я уже понял что Си это не паскаль)И не Дельфи.
А что означает в коде
C++
1
float**arr=(float**)malloc(n*sizeof( float*))
* в последнем флоат?
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
25.06.2014, 21:57 #8
Цитата Сообщение от OverDozero Посмотреть сообщение
* в последнем флоат
Правильный вопрос
вот в этом то и есть тонкости работы с памятью в Си и сила и слабость одновременно
float* означает указатель на данные типа float

давай по шагам
Цитата Сообщение от ValeryS Посмотреть сообщение
float**arr=(float**)malloc(n*sizeof( float*));
выделим память под массив указателей
т.е в первой ячейке будет лежать адрес первой строчки во второй второй и так далее
сам float** означает указатель на указатель т.е в ней будет лежать адрес массива в котором лежат указатели
Цитата Сообщение от ValeryS Посмотреть сообщение
for(int i=0;i<n;i++)
arr[i]=(float*)malloc(m*sizeof( float));
выделяем память для каждой строчки и адрес выделенной памяти присваиваем ячейке массива указателей
при обращении допустим arr[1][3] происходит следующее
в переменной arr лежит адрес массива указателей допустим 100
мы идем по адресу 100 добавляем к этому адресу 4(размер указателя, в других системах может и по другому)
и попадаем во вторую ячейку(массивы в Си начинаются с 0)
там считываем адрес второй строчки допустим 200
переходим по адресу 200 добавляем к этому адресу 12( 3 элемент *4 размер float)
и считываем значение четвертого элемента второй строчки
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2014, 21:57
Привет! Вот еще темы с ответами:

Двумерный динамический массив - C++
Необходимо ввести с клавиатуры количество строк и столбцов массива(матрица размером N*M), ввести исходные данные. Удалить столбец матрицы,...

Динамический двумерный массив - C++
Если число находится в интервале от 100 до 110, то используя подпрограмму, в матрицах Р(N,M), Q(N1,M1) и R(N2,M2) найти и отпечатать L -...

Двумерный динамический массив - C++
Здравствуйте, задание такое: &quot;Описать двумерный массив R целых чисел, размерностью NхM элементов, заполнять массив случайными числами по...

Двумерный Динамический массив - C++
Здравствуйте, такая проблема: не могу задать int** и char**...проблема в том что в функцию передются их размеры , но они не константы и...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
25.06.2014, 21:57
Ответ Создать тему
Опции темы

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