Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2013, 13:12   #1
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию Кто нибудь может лучше?

Доброго чего то, что там у вас всем. Сегодня просидел пять пар, пытаясь пересдать зачет по Основам программирования. Все мои усилия пошли прахом вот на этом задании:

Цитата:
Написать функцию находящую первую нулевую строку в целочисленной квадратной матрице и возвращающую указатель на первый элемент этой строки.
Вот мое решение:

Код:
int *getNullCol(int *Array, int N)
{
    for(int x = 0; x < N; i++)
    {
        for(int y = 0; y < N && *(Array + x * N + y) == 0; y++)
        {
            if(y == N - 1)
            {
                return Array + x * N;
            }
        }
    }

    return NULL;
}
Оно было раскритиковано на чем свет стоит, а мне сказали, что никогда не быть мне программистом. (Смешно, если учесть, что я уже около шести лет живу только тем, что зарабатываю фрилансом или продажей готовых продуктов, и при том, очень даже не плохо живу).

Никогда не работал с С, по этому даже не знаю, то ли я дурак, то ли лыжи не едут...
В планах порабощение вселенной...

Последний раз редактировалось zumm; 26.02.2013 в 21:40.
zumm вне форума Ответить с цитированием
Старый 26.02.2013, 21:35   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

zumm

Оно было раскритиковано на чем свет стоит, а мне сказали, что никогда не быть мне программистом.

Рациональное зерно в этом есть (((:

во-первых, ты, видимо не в курсе, что двумерные массивы распологаются в памяти по строкам. В итоге ты ищешь не строку а столбец.
далее, ты передаешь указатель на целое по которому можно модифицировать память, хотя в самой функции этого не происходит. одно это уже говорит о многом. из той же оперы - зачем ты передаешь и использешь в качестве индексом знаковый тип? они что, могут быть меньше нуля?
внутренний цикл у тебя для того, чтобы найти первый не нулевой элемент. каждый раз внутри тела цикла ты совершаешь ненужную проверку, да еще и записью через (_|_), хотя эта проверка имеет смысл только один раз, в конце поиска. кстати сама проверка неправильная, при любом N > 1 сразу возвращается результат. который, естессно, тоже неправильный ((:

я уже около шести лет живу только тем, что зарабатываю фрилансом или продажей готовых продуктов

надеюсь, ты делаешь это с использованием более другого языка программирования :D
Rififi вне форума Ответить с цитированием
Старый 26.02.2013, 21:48   #3
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Цитата:
во-первых, ты, видимо не в курсе, что двумерные массивы распологаются в памяти по строкам. В итоге ты ищешь не строку а столбец.
Этот пункт не критичен, например я всегда использую представление по столбцам.

Цитата:
далее, ты передаешь указатель на целое по которому можно модифицировать память, хотя в самой функции этого не происходит. одно это уже говорит о многом.
я передаю указатель на первый элемент массива... можно поконкретнее о проблеме?

Цитата:
внутренний цикл у тебя для того, чтобы найти первый не нулевой элемент. каждый раз внутри тела цикла ты совершаешь ненужную проверку, да еще и записью через (_|_), хотя эта проверка имеет смысл только один раз, в конце поиска.
ты имеешь ввиду вот такую запись?

Код:
int y = 0;

for(y = 0; y < N && *(Array + x * N + y) == 0; y++);

if(y == N - 1)
{
    return Array + x * N;
}
Если это работает (я просто не очень в курсе может ли в сях в качестве итератора использоваться переменная объявленная вне цикла), то да, согласен, так будет лучше.

Цитата:
кстати сама проверка неправильная, при любом N > 1 сразу возвращается результат. который, естессно, тоже неправильный ((:
Да это я просто равно еще одно не дописал, сдавал я в нормальном виде (:

Цитата:
надеюсь, ты делаешь это с использованием более другого языка программирования :D
Дельфист я, но по большей части все таки веб разработчик (:
В планах порабощение вселенной...

Последний раз редактировалось zumm; 26.02.2013 в 21:52.
zumm вне форума Ответить с цитированием
Старый 02.03.2013, 15:25   #4
bambarbia
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 44
По умолчанию

Код:
return NULL;
ведь этим все сказано
bambarbia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где и как скачать программу Delphi. Может кто нибудь может помочь мне - без скачивания из интернета. IZOPGRAM Общие вопросы Delphi 4 16.06.2012 18:12
Может я не совсем по теме, но я надеюсь что найдется кто нибудь кто мне подскажет... xoi90 Работа с сетью в Delphi 1 23.01.2012 16:35
может кто-нибудь знает? Gerberka Паскаль, Turbo Pascal, PascalABC.NET 1 08.06.2010 19:08
может быть кто-нибудь знает??? Gerberka Помощь студентам 1 04.06.2010 14:52