error C4703: используется потенциально неинициализированная локальная переменная-указатель "mas"c:\users\ramesses\documents\c++ пм-13-1д\maccub poct xapaktepuctuk\maccub poct xapaktepuctuk\maccub poct xapaktepuctuk.cpp22
#include "stdafx.h"
#include "iostream"
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <windows.h>
using namespace std;
int main(){
int **mas, n, m, i, j, j1, temp, temp1, sum;
bool fl;
cout << ("Введите количество строк матрицы: ") << endl;
cin >> n;
if (n<0) cout << ("Ошибка") << endl;
else
cout << ("\nВведите количество столбцов матрицы: ") << endl;
cin >> m;
if (m<0) cout << ("Ошибка") << endl;
else
mas = new int*[n]; ТУТ РУГАЕТСЯ НА mas
for (i = 0; i<n; i++)
mas[i] = new int[m];
cout << ("\nВведите элементы матрицы: ") << endl;
for (i = 0; i<n; i++)
for (j = 0; j<m; j++)
{
cout << "[" << i + 1 << "][" << j + 1 << "]= ";
cin >> mas[i][j];
}
cout << ("\nИсходная матрица") << endl;
for (i = 0; i<n; i++)
{
for (j = 0; j<m; j++)
{
cout.width(4);
cout << mas[i][j];
}
cout << endl;
}
for (j = 0; j<m - 1; j++)
for (j1 = 0; j1<m - 1 - j; j1++)
{
temp1 = temp = 0;
for (i = 0; i<n; i++)
{
if (mas[i][j1]<0 && abs(mas[i][j1]) % 2 == 1)
temp += abs(mas[i][j1]);
if (mas[i][j1 + 1]<0 && abs(mas[i][j1 + 1]) % 2 == 1)
temp1 += abs(mas[i][j1 + 1]);
}
if (temp>temp1)
for (i = 0; i<n; i++)
{
temp = mas[i][j1];
mas[i][j1] = mas[i][j1 + 1];
mas[i][j1 + 1] = temp;
}
}
cout << ("\nПолученная матрица") << endl;
for (i = 0; i<n; i++)
{
for (j = 0; j<m; j++)
{
cout.width(4);
cout << mas[i][j];
}
cout << endl;
}
cout << endl;
for (i = 0; i<m; i++)
{
sum = 0;
fl = true;
for (j = 0; j<n; j++)
{
sum += mas[j][i];
if (mas[j][i]<0)
fl = false;
}
cout << ("в столбце ") << i + 1;
if (!fl)
cout << (" есть орицательный элемент и сумма его элементов равна ") << sum << endl;
else
cout << (" нет отрицательного элемента") << endl;
}
cout << endl;
system("pause");
return 0;
}
Другие языки программирования и технологии
Почему ругается на mas в 22 строке . Код ошибки С4703 (копия внутри) . Как исправить? С++
в цикле n на m поменяй
Расул Баужанов
все-равно ругается, что она потенциально не инициализирована.
// Решайте задачи по мере их поступления
#include <iostream>
using namespace std;
int** create_matrix(const size_t, const size_t);
int* create_vector(const size_t);
void fill_zero(int**, const size_t, const size_t);
void fill_zero(int*, const size_t);
void print(int**, const size_t, const size_t);
void print(int*, const size_t);
void destroy(int**, const size_t);
int main() {
cout << "Rows: "; size_t rows; cin >> rows;
cout << "Cols: "; size_t cols; cin >> cols;
int** matrix = nullptr;
if (matrix = create_matrix(rows, cols)) { // создали матрицу, выделив под неё память
fill_zero(matrix, rows, cols); // заполнили её нулями
print(matrix, rows, cols); // полюбовались результатом
destroy(matrix, rows); // освободили ресурсы памяти
matrix = nullptr;
} else cout << "Memory error!\n";
cin.sync();
cin.get();
}
int** create_matrix(const size_t rows, const size_t cols) {
int** matrix = nullptr;
if (matrix = new(nothrow) int*[rows]) {
for (size_t row = 0; row < rows; ++row) {
if (matrix[row] = create_vector(cols));
else { // а вдруг, где-то в процессе выделения, закончится оперативная память?
for (size_t r = 0; r < row; ++r) delete[] matrix[r];
delete[] matrix;
matrix = nullptr;
break;
}
}
}
return matrix;
}
int* create_vector(const size_t size) { return new(nothrow) int[size]; }
void fill_zero(int** matrix, const size_t rows, const size_t cols) { for (size_t r = 0; r < rows; ++r) fill_zero(matrix[r], cols); }
void fill_zero(int* vector, const size_t size) { for (size_t i = 0; i < size; ++i) vector[i] = 0; }
void print(int** matrix, const size_t rows, const size_t cols) { for (size_t r = 0; r < rows; ++r) print(matrix[r], cols); }
void print(int* vector, const size_t size) { for (size_t i = 0; i < size; ++i) cout << ' ' << vector[i]; cout << '\n'; }
void destroy(int** matrix, size_t row) {
if (matrix && row) {
for (size_t r = 0; r < row; ++r) delete[] matrix[r];
delete[] matrix;
}
}
#include <iostream>
using namespace std;
int** create_matrix(const size_t, const size_t);
int* create_vector(const size_t);
void fill_zero(int**, const size_t, const size_t);
void fill_zero(int*, const size_t);
void print(int**, const size_t, const size_t);
void print(int*, const size_t);
void destroy(int**, const size_t);
int main() {
cout << "Rows: "; size_t rows; cin >> rows;
cout << "Cols: "; size_t cols; cin >> cols;
int** matrix = nullptr;
if (matrix = create_matrix(rows, cols)) { // создали матрицу, выделив под неё память
fill_zero(matrix, rows, cols); // заполнили её нулями
print(matrix, rows, cols); // полюбовались результатом
destroy(matrix, rows); // освободили ресурсы памяти
matrix = nullptr;
} else cout << "Memory error!\n";
cin.sync();
cin.get();
}
int** create_matrix(const size_t rows, const size_t cols) {
int** matrix = nullptr;
if (matrix = new(nothrow) int*[rows]) {
for (size_t row = 0; row < rows; ++row) {
if (matrix[row] = create_vector(cols));
else { // а вдруг, где-то в процессе выделения, закончится оперативная память?
for (size_t r = 0; r < row; ++r) delete[] matrix[r];
delete[] matrix;
matrix = nullptr;
break;
}
}
}
return matrix;
}
int* create_vector(const size_t size) { return new(nothrow) int[size]; }
void fill_zero(int** matrix, const size_t rows, const size_t cols) { for (size_t r = 0; r < rows; ++r) fill_zero(matrix[r], cols); }
void fill_zero(int* vector, const size_t size) { for (size_t i = 0; i < size; ++i) vector[i] = 0; }
void print(int** matrix, const size_t rows, const size_t cols) { for (size_t r = 0; r < rows; ++r) print(matrix[r], cols); }
void print(int* vector, const size_t size) { for (size_t i = 0; i < size; ++i) cout << ' ' << vector[i]; cout << '\n'; }
void destroy(int** matrix, size_t row) {
if (matrix && row) {
for (size_t r = 0; r < row; ++r) delete[] matrix[r];
delete[] matrix;
}
}
Расул Баужанов
Спасибо, но с таким решением меня препод пошлет очень далеко ибо знает что сделал не я )
Похожие вопросы
- С++ Перенос длиной строки кода на другую.
- Плиииз кто поможет по коду ошибки и синему экрану????
- Ошибка при запуске защитника У меня защитник выключен не могу включить выскакивает код ошибки 0x800704ec
- Помогите разобраться с кодом. Ошибка в строчке for (int i = 0, i > 100, i++) {
- Вопрос для программистов - сколько строк кода вы можете запомнить с первого раза,
- хороший результат написать 500 строк кода для
- Вылезает синий экран смерти)код ошибки 0х000000D1
- VK CMS Engine 1.0 Cms типа "вконтакте". ошибка при установке шаблона. Как исправить?
- Почему Delphi многие недолюбливают? Отличная среда, быстрый код, понятные инструкции.
- почему в технических средствах информатики используется двоичный код?