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

Написать программу, в которой создается двухмерный массив, значения вводятся с клавиатуры,потом значения умножаются по строкам - access violation - C++

Восстановить пароль Регистрация
 
B3op
0 / 0 / 0
Регистрация: 22.06.2013
Сообщений: 6
22.06.2013, 17:19     Написать программу, в которой создается двухмерный массив, значения вводятся с клавиатуры,потом значения умножаются по строкам - access violation #1
Здравствуйте.
Задание написать программу в которой создается 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
33
#include <stdio.h>
#include <conio.h>
int main()
{clrscr();
int mas[10];
int m,n,i;
puts("Введите конфигурацию массива");
scanf("%d %d",&m,&n);
if((m*n)>30){puts("Кол-во эл-тов должно быть меньше 30-и");getch();return -1;}
 //По условию задачи должно быть до 30-и эл-тов
int **ptr=new int*[m];
if(ptr==NULL){puts("ERROR");return -1;};
for(i=0;i<m;i++)
{ptr[i]=new int[n];
if(ptr[i]=NULL){puts("ERROR");return -1;};
puts("\n Введите числа ");
for(i=0;i<m;i++)
{mas[i]=1;
 for(int j=0;j<n;j++)
 {scanf("%d",&ptr[i][j]);
  mas[i]=mas[i]*ptr[i][j];
 }
}
}
for(i=0;i<m;i++)
{printf("%d",mas[i]);
 
for(i=0;i<m;i++)
{delete []ptr[i];
}
delete []ptr;
}
getch(); }
Вот скрин ошибки:
Написать программу, в которой создается двухмерный массив, значения вводятся с клавиатуры,потом значения умножаются по строкам - access violation

Подскажите пожалуйста что сделал неправильно,а то сам ошибку никак не найду.(Понимаю что программа написана не грамотно).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2013, 17:19     Написать программу, в которой создается двухмерный массив, значения вводятся с клавиатуры,потом значения умножаются по строкам - access violation
Посмотрите здесь:

C++ дана матрица размером 5 на 5, содержащая вещественные числа, значения которых вводятся с клавиатуры.
Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам C++
Составить программу вычисления значения функции для значения аргумента x, вводимого с клавиатуры C++
Написать программу,которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам C++
C++ Написать программу,которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Khelleos
37 / 37 / 7
Регистрация: 13.05.2010
Сообщений: 283
Записей в блоге: 1
22.06.2013, 17:28     Написать программу, в которой создается двухмерный массив, значения вводятся с клавиатуры,потом значения умножаются по строкам - access violation #2
Цитата Сообщение от B3op Посмотреть сообщение
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
#include <stdio.h>
#include <conio.h>
int main()
{clrscr();
int mas[10];
int m,n,i;
puts("Введите конфигурацию массива");
scanf("%d %d",&m,&n);
if((m*n)>30){puts("Кол-во эл-тов должно быть меньше 30-и");getch();return -1;}
 //По условию задачи должно быть до 30-и эл-тов
int **ptr=new int*[m];
if(ptr==NULL){puts("ERROR");return -1;};
for(i=0;i<m;i++)
{ptr[i]=new int[n];
if(ptr[i]=NULL){puts("ERROR");return -1;};
puts("\n Введите числа ");
for(i=0;i<m;i++)
{mas[i]=1;
 for(int j=0;j<n;j++)
 {scanf("%d",&ptr[i][j]);
  mas[i]=mas[i]*ptr[i][j];
 }
}
}
for(i=0;i<m;i++)
{printf("%d",mas[i]);
 
for(i=0;i<m;i++)
{delete []ptr[i];
}
delete []ptr;
}
getch(); }
В 15 строке стоит знак присваивания, а должен быть знак сравнения.
B3op
0 / 0 / 0
Регистрация: 22.06.2013
Сообщений: 6
22.06.2013, 17:57  [ТС]     Написать программу, в которой создается двухмерный массив, значения вводятся с клавиатуры,потом значения умножаются по строкам - access violation #3
Спасибо большое,я и не заметил что пропустил "=".
Исправил,теперь появилась новая ошибка,уже при выводе данных массива результатов.
Написать программу, в которой создается двухмерный массив, значения вводятся с клавиатуры,потом значения умножаются по строкам - access violation
При этом если ввожу кол-во строк =1 то все работает без ошибок, при кол-ве строк большем чем 1,выводит результат от умножения первой строки,и сразу ошибка.Может я еще что-то пропустил?Или теперь ошибка в неправильном коде?
Khelleos
37 / 37 / 7
Регистрация: 13.05.2010
Сообщений: 283
Записей в блоге: 1
22.06.2013, 18:18     Написать программу, в которой создается двухмерный массив, значения вводятся с клавиатуры,потом значения умножаются по строкам - access violation #4
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
#include <conio.h>
 
int main()
{
    int mas[10];
    int m,n,i;
    
    puts("Введите конфигурацию массива");
    scanf("%d %d",&m,&n);
    
    if ((m*n) > 30)
    {
        puts("Кол-во эл-тов должно быть меньше 30-и");
        getch();
        return -1;
    }
    
    int **ptr=new int*[m];
    if (ptr == NULL)
    {
        puts("ERROR");
        return -1;
    }
 
    for(i = 0; i < m;i++)
    {
        ptr[i] = new int[n];
        if (ptr[i] == NULL)
        {
            puts("ERROR");
            return -1;
        }
    }
 
    puts("\n Введите числа ");
    for(i = 0; i < m; i++)
    {
        mas[i] = 1;
        for(int j = 0;j < n; j++)
        {
            scanf("%d", &ptr[i][j]);
            mas[i] = mas[i] * ptr[i][j];
        }
    }
    
 
    for(i = 0;i < m; i++)
        printf("%d", mas[i]);
 
    for(i = 0;i < m;i++)
        delete []ptr[i];
    
        delete []ptr;
 
    getch(); 
}
B3op
0 / 0 / 0
Регистрация: 22.06.2013
Сообщений: 6
23.06.2013, 12:21  [ТС]     Написать программу, в которой создается двухмерный массив, значения вводятся с клавиатуры,потом значения умножаются по строкам - access violation #5
Спасибо огромное за помощь.
Yandex
Объявления
23.06.2013, 12:21     Написать программу, в которой создается двухмерный массив, значения вводятся с клавиатуры,потом значения умножаются по строкам - access violation
Ответ Создать тему
Опции темы

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