|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.01.2012, 22:08 | #1 | |
Пользователь
Регистрация: 02.01.2012
Сообщений: 19
|
Сдвиг элементов массива и вопрос о strcpy
Ситуация такая: вроде как полностью написал решение задачи, но на этапе поиска одинаковых строк в массиве строк и попытке сдвинуть элементы массива так, чтобы скрыть одну из повторяющихся строк, что-то идет не так, хотя с моей точки зрения все написано верно.
Вот пример входного и выходного файла. И само условие задачи: У меня же выхлоп получается такой: Цитата:
Код:
Подскажите в какую сторону думать? Последний раз редактировалось neonakaneya; 07.01.2012 в 22:26. |
|
07.01.2012, 22:54 | #2 | |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
аааа... ппц
Цитата:
по остальному: код плохо читаем, править другому человеку довольно сложно. если совсем хочется так делать - то юзай дебаг... про сдвиги какие-то ваще не понял. я бы сделал так: структура из 2 полей - номер и суммарный штраф. и массив структур соотв-но. а если разрешено юзать СТЛ то вообще std::map и решение будет в 6 раз короче. |
|
08.01.2012, 00:13 | #3 | |
Пользователь
Регистрация: 02.01.2012
Сообщений: 19
|
onewho%) Вы меня морально уничтожили как новичка количеством новой информации.
По порядку: про atoi только от вас узнал, я так понимаю она берет массив char и конвертит его в int? А есть какие-то гайды как сделать код читабельным? Еще раз повторюсь - я с++ начал изучать чуть больше недели назад , так что еще новичок как в самом с++, так и в программировании вообще. Про сдвиг : Мне нужно найти повторяющиеся элементы массива , и удалить их все, оставив только один. Сообственно само "удаление" я делал с помощью сдвига(может это не так называется, но я так это обозвал) последующих элементов массива на одну позицию назад. пример было {2,3,4,5,2,6,7,5} , а стало {3,4,2,6,7,5} Цитата:
Последний раз редактировалось neonakaneya; 08.01.2012 в 00:22. |
|
08.01.2012, 00:23 | #4 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
neonakaneya
А есть какие-то гайды как сделать код читабельным? Самый главный гайд - "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете" (c) Стив Макконнелл еще - гоогле по этому имени и "оформление кода" Мне нужно найти повторяющиеся элементы массива , и удалить их все, оставив только один для этого достаточно скопировать все элементы массива в стандартный контейнер std::set, который не допускает повторений. например: Код:
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
08.01.2012, 00:50 | #5 | |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
понял вас, да не всё нормально для новичка.
atoi - да, запомни на будущее. а вообще я чёт сглупил можно вообще просто написать. Код:
Цитата:
про сдвиги - понял тебя. да, такое иногда бывает нужно, но в данной ситуации это довольно некрасиво и неудобно. реально забей на это щас. ты всё я смотрю читаешь как строки и потом их переводишь... ну здесь это излишне. структуры знаешь? хотел набросать код кратко примерный, в итоге написал всё, т.к просто довольно вышло. Код:
выводит всегда N штрафников в файл независимо от реального числа их (<=N) и штраф я не рассчитывал из скорости а просто суммировал 2-ое поле. предлагаю тебе исправить 1ый баг и написать функцию которая принимает скорость и возвращает штраф за нарушение. |
|
08.01.2012, 13:49 | #6 | |
Пользователь
Регистрация: 02.01.2012
Сообщений: 19
|
Переделал с использованием atoi , получилось покороче, и выхлоп теперь другой, но все равно не верный
Цитата:
Код:
Последний раз редактировалось neonakaneya; 08.01.2012 в 13:53. |
|
08.01.2012, 13:55 | #7 | |
Пользователь
Регистрация: 02.01.2012
Сообщений: 19
|
Цитата:
|
|
08.01.2012, 14:21 | #8 |
Пользователь
Регистрация: 02.01.2012
Сообщений: 19
|
Номер a111aa78 во входном файле первый(и повторяется на четвертом месте), т.е. в массиве arrays он под индексом [0] (и повторяющийся под индексом [3]). В двух вложенных циклах for условие if(strcmp(Arrays[first],Arrays[second+1])==1)
то бишь при first=0 и second=2 if(strcmp(Arrays[0],Arrays[2+1])==1) должно быть истинно(т.к. эти две строки одинаковы) , но судя по выводу это не так. Непонятно почему |
08.01.2012, 15:11 | #9 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
neonakaneya
что-то я совсем не понял как поступить с set Х_Х Ничего страшного. Для вашего уровня это нормально. Читайте книге и да придет к вам просветление.
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
09.01.2012, 00:27 | #10 |
Пользователь
Регистрация: 02.01.2012
Сообщений: 19
|
кажется я допетрил почему у меня были проблемы
http://www.cplusplus.com/reference/c...string/strcmp/ "A zero value indicates that both strings are equal." а я почему-то считал что когда строки равны , то она возвращает единицу(поэтому в if'e сравнивал ее с единицей), а оказалось что она возвращает 0 , когда строки равны. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
циклический сдвиг элементов массива | Carter | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 19.12.2011 19:54 |
Сдвиг элементов массива на 1 влево. Вывести матрицу в Memo | Abrokadawr | Помощь студентам | 3 | 04.11.2011 23:13 |
Удаление элементов массива и сдвиг | Alex11223 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 12.01.2011 20:01 |
Описать процедуру,осуществляющую циклический сдвиг элементов массива на k позиций | Bloodpoisoning | Общие вопросы C/C++ | 0 | 29.11.2010 15:50 |
Вопрос про циклический сдвиг массива С++ | Юлия12 | Общие вопросы C/C++ | 4 | 08.02.2010 08:52 |