Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
foxsc
1 / 0 / 4
Регистрация: 30.06.2015
Сообщений: 46
#1

Объявить и заполнить двумерный динамический массив случайными числами от 10 до 50 - исправить ошибки в коде - C++

30.08.2015, 21:26. Просмотров 874. Ответов 13
Метки нет (Все метки)

Здравствуйте есть задача 3:http://http://purecodecpp.com/archives/1284
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
39
40
41
42
#include<iostream>
using namespace std;
int ny,my,i,n,rez,qwa;
void zap(int *num,int z,int x)
{
    for(int i=0;i<z;i++)
    {
        num[i]=(10+rand()%50);
        for(int j=0;j<x;j++)
        {
        num[j]=(10+rand()%50);  
        }
    }
}
 void viv(int *zaq,int z,int x)
{
    for(int i=0;i<z;i++)
    {
        cout<<zaq[i];
        for(int j=0;j<x;j++)
        {
            cout<<zaq[j]<<endl;
        }
    }
}
int main()
{
    cout<<"vvedite kol-vo strok=";
    cin>>ny;
    cout<<"vvedite kol-vo ctolbo";
    cin>>my;
    int**mtr;
    mtr=new int *[ny];
    for (int i=0; i<n; i++)
  mtr[i] = new int [my];
    zap(mtr,ny,my);
    viv(mtr,ny,my);
    delete mtr [];
    delete [] mtr;
    return 0;
    system("pause");
}
При компиляции выдает ошибку:
Кликните здесь для просмотра всего текста
c:\users\тимур балдин\documents\visual studio 2008\projects\4\4\kod.cpp(38) : error C2664: zap: невозможно преобразовать параметр 1 из 'int **' в 'int *'
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\тимур балдин\documents\visual studio 2008\projects\4\4\kod.cpp(39) : error C2664: viv: невозможно преобразовать параметр 1 из 'int **' в 'int *'
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции

Очень прошу помочь ,смотрел в гугле и в яндексе,подробной информации по этой ошибке не нашел.Спасибо всем кто откликнулся !
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2015, 21:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Объявить и заполнить двумерный динамический массив случайными числами от 10 до 50 - исправить ошибки в коде (C++):

Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать
Все привет!Прошу помочь,на примере этой задачи нужно сформировать динамический...

Найти причины возникновения ошибок в коде и исправить эти ошибки (динамический двумерный массив)
Подскажите пожалуйста,что я упустила, где шибка? #include &lt;iostream&gt; using...

Заполнить двумерный массив случайными числами
Заполнить двумерный массив с++ случайными числами

Заполнить одномерный динамический массив случайными числами в заданном диапазоне
как заполнить одномерный динамический массив случайными числами от -100 до +100...

Заполнить двумерный массив случайными числами от 10 до 100
Заполнить двумерный массив случайными числами от 10 до 100. Посчитать сумму...

Заполнить двумерный массив случайными числами, а диагонали - нулями
Заполнить двумерный массив случайными числами. И в массиве заполнить диагонали...

13
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
30.08.2015, 21:28 #2
foxsc, выложите задание в виде текста, а не кривой ссылки.
0
foxsc
1 / 0 / 4
Регистрация: 30.06.2015
Сообщений: 46
30.08.2015, 21:30  [ТС] #3
простите:Объявить и заполнить двумерный динамический массив случайными числами от 10 до 50. Показать его на экран. Для заполнения и показа на экран написать отдельные функции. (подсказка: функции должны принимать три параметра – указатель на динамический массив, количество строк, количество столбцов). Количество строк и столбцов выбирает пользователь.
0
shmkv
652 / 371 / 57
Регистрация: 21.07.2015
Сообщений: 1,059
30.08.2015, 21:33 #4
Цитата Сообщение от foxsc Посмотреть сообщение
При компиляции выдает ошибку:
Тебе компилятор черным по белому пишет проблему и строку.
Цитата Сообщение от foxsc Посмотреть сообщение
zap(mtr,ny,my);
viv(mtr,ny,my);
void viv(int **zaq,int z,int x)
void zap(int **num,int z,int x)
Цитата Сообщение от foxsc Посмотреть сообщение
delete mtr [];
delete [] mtr;
Это что за шаманство?
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
30.08.2015, 21:34 #5
Цитата Сообщение от foxsc Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
void zap(int *num,int z,int x)
{
    for(int i=0;i<z;i++)
    {
        num[i]=(10+rand()%50);
        for(int j=0;j<x;j++)
        {
        num[j]=(10+rand()%50);  
        }
    }
}
нужно
C++
1
2
3
4
5
6
7
void zap(int **num,int z,int x)
{
    for(int i=0;i<z;i++)
        for(int j=0;j<x;j++)
            num[i][j]=(10+rand()%50);  
    }
}
Цитата Сообщение от foxsc Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
void viv(int *zaq,int z,int x)
{
    for(int i=0;i<z;i++)
    {
        cout<<zaq[i];
        for(int j=0;j<x;j++)
        {
            cout<<zaq[j]<<endl;
        }
    }
}
C++
1
2
3
4
5
6
7
8
9
void viv(int **zaq,int z,int x)
{
    for(int i=0;i<z;i++)
    {
        for(int j=0;j<x;j++)
            cout<<zaq[i][j]<<' ';
        cout << endl;
    }
}
0
foxsc
1 / 0 / 4
Регистрация: 30.06.2015
Сообщений: 46
30.08.2015, 21:36  [ТС] #6
Внес изменения.Выдает туже самую ошибку
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
30.08.2015, 21:37 #7
Цитата Сообщение от foxsc Посмотреть сообщение
C++
1
for (int i=0; i<n; i++)
C++
1
for (int i=0; i<ny; i++)
0
shmkv
652 / 371 / 57
Регистрация: 21.07.2015
Сообщений: 1,059
30.08.2015, 21:37 #8
Цитата Сообщение от foxsc Посмотреть сообщение
Выдает туже самую ошибку
Не верю.
0
foxsc
1 / 0 / 4
Регистрация: 30.06.2015
Сообщений: 46
30.08.2015, 21:40  [ТС] #9
Заработало!Спасибо)Обьясните пожалуйста из за чего у меня возникала такая ошибка?почему мой вариант не верен?
0
shmkv
652 / 371 / 57
Регистрация: 21.07.2015
Сообщений: 1,059
30.08.2015, 21:46 #10
Цитата Сообщение от foxsc Посмотреть сообщение
почему мой вариант не верен?
Тебе компилятор вроде как написал, причем даже русским языком. int * и int ** - разные типы.
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
30.08.2015, 21:46 #11
Лучший ответ Сообщение было отмечено foxsc как решение

Решение

foxsc, сравните свой вариант с рабочим.
"Всё познаётся в сравнении" © Вроде как Ницше
1
Eva Rosalene
Male-to-Female
4049 / 1587 / 301
Регистрация: 06.01.2013
Сообщений: 4,176
Завершенные тесты: 2
30.08.2015, 21:55 #12
Вообще, после выхода прекрасного стандарта C++11 лучше выкидывать библиотеку чистых сей из C++ программ.
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
#include <iostream>
#include <random>
 
std::default_random_engine engine;
std::uniform_int_distribution<int> distr(10, 50);
 
void fill (int **array, size_t rows, size_t columns) {
    for (size_t i = 0; i < rows; ++i)
        for (size_t j = 0; j < columns; ++j)
            array[i][j] = distr(engine);
}
 
void print(int **array, size_t rows, size_t columns) {
    for (size_t i = 0; i < rows; ++i) {
        for (size_t j = 0; j < columns; ++j)
            std::cout << array[i][j] << ' ';
        std::cout << std::endl;
    }
}
 
int main ( ) {
    size_t rows, columns;
    std::cout << "Type counts of rows and columns separated with space: ";
    std::cin >> rows >> columns;
    
    int **arr = new int* [rows];
    for (size_t i = 0; i < rows; ++i)
        arr[i] = new int [columns];
    
    fill(arr, rows, columns);
    print(arr, rows, columns);
    
    for (size_t i = 0; i < rows; ++i)
        delete[] arr[i];
    delete[] arr;
}
0
foxsc
1 / 0 / 4
Регистрация: 30.06.2015
Сообщений: 46
30.08.2015, 21:56  [ТС] #13
получается двумерные массивыми нельзя рассматривать отдельно как массив i и j,вывод и заполнение должно происходить вместе:
C++
1
2
3
4
5
6
7
8
for(int i=0;i<z;i++)
    {
        num[i]=(10+rand()%50);
        for(int j=0;j<x;j++)
        {
        num[j]=(10+rand()%50);  
        }
    }
0
Eva Rosalene
Male-to-Female
4049 / 1587 / 301
Регистрация: 06.01.2013
Сообщений: 4,176
Завершенные тесты: 2
30.08.2015, 22:25 #14
Цитата Сообщение от foxsc Посмотреть сообщение
нельзя рассматривать отдельно как массив i и j
Да.
0
30.08.2015, 22:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2015, 22:25
Привет! Вот еще темы с решениями:

Заполнить двумерный массив случайными числами из заданного диапазона
Привет всем. Выручайте... Нужно заполнить случайным образом целыми числами из...

Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать
1. Сформировать динамический одномерный массив, заполнить его случайными...

Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать
3. Постановка задачи 1. Сформировать динамический одномерный массив, заполнить...

Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать
Помогите найти ошибку. Сформировать динамический одномерный массив, заполнить...


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

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

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