|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.02.2010, 20:26 | #1 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
классы
добрый вечер! пишу программу по классам, написал 2 реализации причём одна работает некорректно, вторая вообще не пашет.
Код:
public void vivod()//вывод { for (int i = 0; i < dl1; i++) { for (int j = 0; j < dl2; j++) { Console.WriteLine(this.mas[i, j]); } } } ну просто судя по ошибке подумал что this нужен, но странно, зачем он нужен. не захотела компилиться. потом я подумал, что всё дело в том, что функция ввода имеет тип vioid. Ну и я подумал сделать малость иначе public int vvod()//ввод { Console.WriteLine("Введите размер массива"); dl1 = Convert.ToInt16(Console.ReadLine()) ; dl2 = Convert.ToInt16(Console.ReadLine()) ; Console.WriteLine("Введите массив"); int[,] mas = new int[dl1, dl2 ]; for (int i = 0; i < dl1; i++) { for (int j = 0; j < dl2; j++) { mas[i,j] = Convert.ToInt16(Console.ReadLine()) ; //добавил return mas[i, j]; } } //вывод //эта часть кода написана в методе vivod, но здесь она работает нормально, а в отдельном методе - нет Console.WriteLine("Вывод"); for (int i = 0; i < dl1; i++) { for (int j = 0; j < dl2; j++) { Console.WriteLine(mas[i, j]); return mas[i, j]; } } } и тут какая-то ошибка. короче бился я бился, так и не сделал по-нормальному((( |
19.02.2010, 21:27 | #2 |
Пользователь
Регистрация: 14.10.2009
Сообщений: 70
|
Потому, что глобальная переменная "mas" не инициализирована.
Ты инициализируешь в методе "vvod()" не глобальную (внутри класса "matrix") переменную "mas", а переменную внутри метода "vvod()". Решение - убери объявление переменной как массив из целых чисел из тела метода, т.е. замени строку : Код:
Код:
|
20.02.2010, 16:17 | #3 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
эээээээ... чёт я не догнал разницу для компилятора((((
|
20.02.2010, 17:00 | #4 |
Форумчанин
Регистрация: 16.02.2009
Сообщений: 555
|
что не работает?Попробуй так
Код:
|
20.02.2010, 18:04 | #5 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Раз уж пишете классы, то пишите их нормально.
Вот рабочий пример программы с матрицей Класс CMatrix Код:
Код:
|
20.02.2010, 18:52 | #6 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
а! кажется я понял почему всё работало через одно место. всё дело в конструкторе! я его коряво прописал. точнее я его пустым сделал. правильно?
|
20.02.2010, 21:24 | #7 |
Форумчанин
Регистрация: 25.04.2008
Сообщений: 476
|
я бы в конструктор передал размерность массива. в процедуре ввода, ввел бы, в процедуре вывода вывел бы. тогда не было бы такой проблемы
Life if about choices
Make the right choice Последний раз редактировалось TaTT DoGG; 20.02.2010 в 21:32. |
21.02.2010, 20:07 | #9 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
почему не понял? я недавно перешёл с с++ на шарп. вот и думаю: так как есть public int[,] mas; то по идее она должна быть видна внутри класса и даже вне его. Хотя авторы многих книг не рекомендуют пользоваться Public так как это небезопасное программирование
|
21.02.2010, 20:13 | #10 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
всё) понял в чём тут фигня! дело в том что я как в с++ просто объявлял переменные и не инициализировал их, а в C# такого делать низя)))
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Классы в С++ | Alik-Soldier | Общие вопросы C/C++ | 58 | 18.01.2011 16:32 |
Классы | honest | Помощь студентам | 5 | 21.09.2009 21:23 |
Классы в С++ | S2S | Общие вопросы C/C++ | 0 | 15.03.2009 13:25 |