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

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

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

Ошибка в программе (ввод массива через ф-ию) - C++

15.11.2010, 18:27. Просмотров 403. Ответов 3
Метки нет (Все метки)

input.h
C++
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
void in (int **x, int nx, int mx)
{
    int i, j;
    for (i = 0; i < nx; i++)
        for (j = 0; j < mx; j++)
            scanf ("%d",&x[i][j]);
}
output.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
void out (int **x, int nx, int mx)
{
    int i, j;
    for (i = 0; i < nx; i++)
    {
        printf ("\n");
        for (j = 0; j < mx; j++)
            printf ("%5d",x[i][j]);
    }
}
1.cpp
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>
#include <conio.h>
#include "input.h"
#include "output.h"
 
using namespace std;
 
void main()
{
    setlocale (LC_ALL,"Rus");
    
    int n,m,k,l,i,j;
    int **a;
    int **b;
    int maxa;
    int maxb;
    int d;
 
    cout << "\nВведите размерность массива A: "; cin >> n >> m;
 
    a = new int* [n];
    for (i = 0; i < n; i++);
    a[i] = new int [m];
 
    cout << "\nВведите массив А: ";
    in(a,n,m);
 
    cout << "\nВведенный массив:\n";
    out(a,n,m);
 
    b = new int* [k];
    for (i = 0; i < n; i++);
    b[i] = new int [l];
 
    cout << "\nВведите массив B: ";
    in(b,k,l);
 
    cout << "\nВведенный массив:\n";
    out(b,k,l);
 
    getch();
}
В программе нужно просто состряпать проект из нескольких файлов, ввести и вывести массив через ф-ии, лежащие в .h файлах. Программа компилируется, но не работает. Программа считывает размерность, но только как ввожу первый элемент, выключается с ошибкой:
Программа "[4836] 1.exe: Машинный код" завершилась с кодом -1073741819 (0xc0000005).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2010, 18:27     Ошибка в программе (ввод массива через ф-ию)
Посмотрите здесь:

Ввод массива через пробел - C++
Есть массив int С, и есть строка string S, у строки S есть длинна S.size(), следовательно кол-во элементов в массиве должно соответствовать...

Ошибка в программе с сортировкой массива - C++
Задание. 1. Получить матрицу А(m x n), образованную по закону А (ij) = (i+j)*tan(j). 2. Получить матрицу В из матрицы А, упорядочив...

Работа с динамической памятью. Ошибка в функции getline через посимвольный ввод - C++
Было дано вот такое задание: В этой задаче вам необходимо написать функцию getline, которая читает строку из стандартного потока ввода...

Ввод с клавиатуры массив из пяти целочисленных значений. Вывести их в одну строку через запятую. Получить для массива среднее арифметическое - C++
Введите с клавиатуры в массив пять целочисленных значений. Выведите их в одну строку через запятую. Получите для массива среднее...

Что сделать, чтобы размер N был не через const, а через ввод на экран - C++
Что сделать, чтобы размер N был не через const, а через ввод на экране #include &lt;iostream&gt; using namespace std; const int N = 6; ...

Одновременный ввод/вывод в программе - C++
Проблема такая: нужно одновременно и выводить и вводить в программу. Т.е. мне надо, чтобы, даже пока программа ожидает ввода от...

Как реализовать небуферизированный ввод в программе? - C++
Необходим ввод по одному символу (т.е. как в getchar()), но без необходимости ввода специального символа для завершения. Т.е. что-то...

Ввод русских букв в консольно программе - C++
Я добавил в программу #include &lt;locale.h&gt; setlocale(LC_ALL,&quot;russian&quot;); Русский язык заработал. Но только при выводе текста. А...

Как в программе запретить ввод символов и букв! - C++
Всем доброго времени) Только вот начал изучать С++. Ребят, если не сложно помогите прописать в мой программе запрет ввода букв и...

Ввод чисел через пробел - C++
Доброго времени суток! Подскажите как правильно сделать. Есть односвязный список. Нужно вводить числа через пробел, а по нажатию на Enter...

Ввод и вывод через fstream - C++
Непонятно почему не выводит в файл. Например в файле 123 &quot;аааббб&quot; а в файл 321 пустота, но если использовать разные имена потоков все ок. ...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cripton
3 / 2 / 1
Регистрация: 02.03.2010
Сообщений: 16
15.11.2010, 19:10     Ошибка в программе (ввод массива через ф-ию) #2
in.h
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
void in (int *x, int nx, int mx)
{
        x=new int[nx*mx]
        int i, j;
        for (i = 0; i < nx; i++)
                for (j = 0; j < mx; j++)
                        cin >> *(x+i*mx+j);
}
out.h
C++
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
void out (int *x, int nx, int mx)
{
        int i, j;
        for (i = 0; i < nx; i++)
        {
                cout << endl;
                for (j = 0; j < mx; j++)
                     cout << *(x+i*mx+j)<< " ";
        }
я думаю так правильнее будет, учитывая что код с++, то легче использовать cin & cout, + при вводе память под новый массив надо выделить....

Добавлено через 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 <iostream>
#include <conio.h>
#include "in.h"
#include "out.h"
 
using namespace std;
 
void main()
{
        setlocale (LC_ALL,"Rus");
        
        int n, m, k, l, *a, *b;
 
        cout << "\nВведите размерность массива A: "; cin >> n >> m;
        cout << "\nВведите массив А: ";
        in(a,n,m);
 
        cout << "\nВведенный массив:\n";
        out(a,n,m);
        
        cout << "\nВведите размерность массива B: "; cin >> k >> l;
        cout << "\nВведите массив B: ";
        in(b,k,l);
        cout << "\nВведенный массив:\n";
        out(b,k,l);
 
        getch();
}
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
15.11.2010, 19:40     Ошибка в программе (ввод массива через ф-ию) #3
Ошибка здесь:
C++
1
2
        for (i = 0; i < n; i++);
        a[i] = new int [m];
Правильно:
C++
1
2
        for (i = 0; i < n; i++)
        a[i] = new int [m];
И со вторым массивом то же самое.
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.11.2010, 13:24     Ошибка в программе (ввод массива через ф-ию) #4
C++
1
2
3
    b = new int* [k];
    for (i = 0; i < n; i++); // здесь n, а должно быть k
    b[i] = new int [l];
Добавлено через 1 минуту
Цитата Сообщение от cripton
C++
1
2
3
void in (int *x, int nx, int mx)
{
        x=new int[nx*mx]
прикинь x разрушается после работы функции, так как это локальный указатель
Yandex
Объявления
16.11.2010, 13:24     Ошибка в программе (ввод массива через ф-ию)
Ответ Создать тему
Опции темы

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