2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3, 4  След.
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение01.08.2012, 22:41 
Аватара пользователя
Я его не изучаю в данный момент. Я давно ознакомился с темами, достаточными для решения олимпиадных задач(различные циклы, условия и так далее) и все. Нет, ну год назад проходил еще функции, классы, но это уже забылось из-за неиспользования.

У меня возникают проблемы с чтением из файлов и записью. Раньше я только с readln/writeln/cin/cout решал. Сейчас, из-за того, что не понимаю это, пытаюсь понять методом проб и ошибок.
Задачи решаю(алгоритмы придумываю) достаточно успешно для задач, что предлагает тот сайт, но много времени может уходить на исправление ошибок в чтении/записи.

Задачи из темы циклических алгоритмов уже все решил, осталась только эта. Правда, как мне кажется, она решена(найдена идея решения), но не реализована правильно.
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
#include <stdio.h>

int main(){ int a,b=0,c=0,;

  freopen("input.txt","r",stdin);
  freopen("output.txt","w",stdout);
 

while ((a = getchar()) != EOF)
{     if (a=='0') c++;
      if (a=='1'){if (c>b){b=c;}}
      c=0;                   }
                       
     
   
  if (b>c) printf("%ld",b);    
  else printf("%ld",c);
  return 0;
                                 }

 
 

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение01.08.2012, 23:04 
Аватара пользователя
Ubermensch в сообщении #602065 писал(а):
Я его не изучаю в данный момент. Я давно ознакомился с темами, достаточными для решения олимпиадных задач

Программирование - это навык, и знакомством с темами не исчерпывается. Увы. Для него нужна практика, тренировка и опыт.

Ubermensch в сообщении #602065 писал(а):
У меня возникают проблемы с чтением из файлов и записью.

Не только. У вас проблемы с тем, чтобы вообще формулировать свои мысли на языке программирования, в достаточно строгом и связном виде, чтобы бездушная бездумная машина это кушала.

Например, кто за вас будет в строке
лишнюю запятую убирать? Или, почему у вас
стоит в неправильном месте? Это всё ко вводу-выводу не имеет ни малейшего отношения, это расхлябанность и неаккуратность в мыслях и действиях, которая удаляется только практикой.

На всякий случай: у вас на вашем личном компьютере компилятор стоит? Или вы компилируете программы, только отсылая их на онлайновые олимпиадные сайты? Тесное личное общение с компилятором, его выдачей, и специализированным текстовым редактором не в последнюю очередь, многому бы вас научило.

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение01.08.2012, 23:10 
Аватара пользователя
Munin, спасибо. Наконец-то задача сдалась.
Впредь буду более внимателен, ибо обидно, когда вроде бы идея решения есть и она правильная, а реализовать не могу.
Компилятор есть. DevCpp, только он эти 2 ошибки не нашёл.

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение01.08.2012, 23:30 
Аватара пользователя
Одну из них должен найти любой компилятор, потому что она синтаксическая. А другую должны были найти вы сами, потому что она смысловая. Для этого надо отлаживать, уметь отлаживать, и учиться отлаживать.

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение02.08.2012, 13:14 
Аватара пользователя
Ubermensch в сообщении #602078 писал(а):
Наконец-то задача сдалась.

У вас последний код не работал правильно опять-таки из-за неаккуратности. Вы скобки фигурные ставите всё равно там, где не надо, поэтому пропустили, там, где надо.
Да и if-if режет глаза. Лучше использовать в данном случае if-else.

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение02.08.2012, 15:27 
Аватара пользователя
Mathusic в сообщении #602297 писал(а):
Да и if-if режет глаза. Лучше использовать в данном случае if-else.

Тоже неоднозначный совет. В условиях не оговорено, что программа должна делать, если встретится не '0' и не '1', и в условиях олимпиады такого теста не встретится. А значит, пускай автор пишет логику так, как ему удобней, это опять же сэкономит секунды.

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение02.08.2012, 15:55 
Аватара пользователя
Ну работать будет и то будет понятное дело. Зато с элсом будет работать для произвольного файла, где ищем цепочки нулей.

Munin в сообщении #602336 писал(а):
А значит, пускай автор пишет логику так, как ему удобней, это опять же сэкономит секунды.

И всегда писать if-if? По-моему тут не логика, а недостаток практики. Если ТС потренируется еще месяцок, то сам в подобном случае напишет else :|

Munin в сообщении #602336 писал(а):
...сэкономит секунды.

А лишнее сравнивание в случае единицы тоже время забирает :D

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение02.08.2012, 18:25 
Аватара пользователя
Цитата:
В условиях не оговорено, что программа должна делать, если встретится не '0' и не '1',

Ай-яяй. Проверка вводных данных это обязанность программиста. А то потом долго ошибки будешь искать, отлаживая программу.

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение02.08.2012, 18:38 
Аватара пользователя
Pavia в сообщении #602389 писал(а):
Ай-яяй. Проверка вводных данных это обязанность программиста. А то потом долго ошибки будешь искать, отлаживая программу.

Ну, вообще, формулировка задачи подразумевает, что входные данные корректны. Так что на олимпиаде, когда нужно экономить секунды, над этим можно не париться :D

 
 
 
 Posted automatically
Сообщение02.08.2012, 18:42 
Аватара пользователя
 i  Тема перемещена из форума «Computer Science» в форум «Программирование»

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение02.08.2012, 19:21 
Аватара пользователя
Mathusic в сообщении #602346 писал(а):
Зато с элсом будет работать для произвольного файла, где ищем цепочки нулей.

Я уже сказал, здесь - не значимо.

Pavia в сообщении #602389 писал(а):
Проверка вводных данных это обязанность программиста.

Да, в обычном программировании (как я уже и говорил). А здесь обсуждается олимпиадное. В олимпиадных тестах могут подсунуть файл, в котором будет 0 символов (или чисел, или строк - на что задача), но не подсовывают файл, который некорректен, не соответствует условиям задания. Это просто принятый стиль. Смысл олимпиады - решить задачу, которую, подразумевается, саму по себе решить сложно, а вовсе не заклеить все дыры, по нормам промышленного программирования.

Mathusic в сообщении #602346 писал(а):
И всегда писать if-if?

Где я такое сказал? Писать надо так, как проще всего придумывается. Для Ubermensch на данный момент - if-if. Для вас - if-else. Главное, чтобы это быстро придумывалось, быстро в уме проверялось на правильность, и быстро записывалось. А считать, что это такой важный вопрос, как именно тут будут оформлены нюансы - это ошибка, которая как раз и повлечёт за собой потери времени, критичные на олимпиаде.

Mathusic в сообщении #602346 писал(а):
А лишнее сравнивание в случае единицы тоже время забирает

В данном случае некритично мало. На олимпиадах вообще обычно не встречаются задания с критичностью требований к объёму памяти или времени выполнения (хотя бывают и исключения). Если вы вышли за пределы - значит, у вас в идее решения что-то не так.

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение02.08.2012, 20:04 
Аватара пользователя

(Оффтоп)

Цитата:
, но не подсовывают файл, который некорректен, не соответствует условиям задания.

Во-первых вы сами себе противоречите. Во-вторых и не такое бывает (из личного опыта олимпиад, "торт" с английской буквой "p").


По поводу того что писать if if или if else то лучше писать так как вам проще. Тоже на одной олимпиад решил только 1 задачу. На две других физически времени не хватила искал элегантное решения, а задачи были на перебор плюс ручками надо было написание 20 условий. Сложными они небыли, просто требовали много ручками написать и меньше думать.
Тогда многие решили по 1 задачи.

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение02.08.2012, 20:12 
Аватара пользователя
Pavia в сообщении #602442 писал(а):
Во-первых вы сами себе противоречите.

Где?

Pavia в сообщении #602442 писал(а):
Во-вторых и не такое бывает

Вообще, бывает, но обычно судей за это потом пинают долго и больно (а результаты иногда аннулируют). Принято все условия оговаривать в правилах конкретной олимпиады, и в условиях конкретной задачи, и не подсовывать некорректных тестов. Другое дело, если в условиях (или правилах) явно сказано, как программа должна реагировать на некорректный ввод - тогда, действительно, можно её помучить.

-- 02.08.2012 21:24:10 --

Munin в сообщении #602405 писал(а):
В олимпиадных тестах могут подсунуть файл, в котором будет 0 символов (или чисел, или строк - на что задача), но не подсовывают файл, который некорректен, не соответствует условиям задания.

Поясняю.
Задача http://acmp.ru/index.asp?main=task&id_task=43
    Цитата:
    Входные данные
    В единственной строке входного файла INPUT.TXT записана последовательность нулей и единиц (без пробелов). Суммарное количество цифр не превышает 100.
Файл может не содержать ни одного нуля или единицы, а сразу заканчиваться концом файла. По условиям, подразумеваемый результат выполнения - 0.

Задача http://acmp.ru/index.asp?main=task&id_task=106
    Цитата:
    Входные данные
    В первой строке входного файла INPUT.TXT записано натуральное число N (1 <= N <= 100) – число монеток. В каждой из последующих N строк содержится одно целое число – 1 если монетка лежит решкой вверх и 0 если вверх гербом.
Файл не может содержать меньше двух строк, и общее число строк всегда равно $N+1.$ Программа может не рассчитывать на структуру файла, отклоняющуюся от этих условий.

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение07.08.2012, 09:28 
Удивляют участники олимпиады!, у которых непреодолимые затруднения вызывают запись-чтение в файл. Я уж не говорю про хотя-бы попытку отладить неверно работающую программу.

Если я правильно понял - удачное участие в олимпиаде позволяет поступить в ВУЗ без экзаменов. Господа преподаватели - готовьтесь к встрече нового студента. :D

 
 
 
 Re: Помогите разобраться, как работать с файлами на C++
Сообщение07.08.2012, 14:00 
Аватара пользователя
Alexu007 в сообщении #603691 писал(а):
Удивляют участники олимпиады!, у которых непреодолимые затруднения вызывают запись-чтение в файл. Я уж не говорю про хотя-бы попытку отладить неверно работающую программу.

Если я правильно понял - удачное участие в олимпиаде позволяет поступить в ВУЗ без экзаменов. Господа преподаватели - готовьтесь к встрече нового студента. :D

Вы тему даже не читали. Нечего здесь умничать.

 
 
 [ Сообщений: 47 ]  На страницу Пред.  1, 2, 3, 4  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group