На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 29
ссылка на сообщение  Отправлено: 15.03.12 18:14. Заголовок: Задача из книжки Чуркиной по подготовке к ЕГЭ


Есть след. задача(см.текст)
(ч1)
(ч2)
Вот как я её решал:
#include<iostream> 
#include<string.h>
using namespace std;
const int M=100;
struct Trains
{ char Station[50];//станция
char times[6];//время
};
int main()
{ Trains Tr[M];
int N;//реальное кол-во поездов,уд. условиям задачи
int i,j;
int CountTr=0;//подсчёт поездов, информация о которых была занесена в структуру
char buff[50],sim;
char Rtime[6],places[4];// время текущего поезда, кол-во свободных мест в нём
int num;//число, фурмируемое из времени
scanf("%d",&N);
for(i=0;i<N;i++)
{ scanf("%s",&buff);
scanf("%c",&sim);
while(sim==' ')
scanf("%c",&sim);
Rtime[0]=sim;
j=0;
do
{ j++;
scanf("%c",&Rtime[j]);
}
while(Rtime[j]!=' ');
Rtime[j]='\0';
scanf("%c",places[0]);
j=1;
do
{ j++;
scanf("%c",&places[j]);
}
while(places[j]!='.'&&places[j]!=' ');
if(places[j]==' ')
while(places[j]!='.')
scanf("%c",&places[j]);
places[j]='\0';
//обработка данных
if(places[0]=='0')
{ num=0;
for(j=0;Rtime[j]!='\0';j++)
if(Rtime[j]>='0'&&Rtime[j]<='9')
num=num*10+(Rtime[j]-48);
if(num<=1410)
{ strcpy(Tr[CountTr].Station,buff);
strcpy(Tr[CountTr].times,Rtime);
CountTr++;
}

}
}
if(CountTr==0)printf("no\n");
else
for(i=0;i<CountTr;i++)
printf("%s %s\n",Tr.Station,Tr.times);
return 0;
}

Программа, к сожалению не работает. Хотелось бы узнать в чём же проблема и можно ли решить данную задачу более оптимальным способом?
Заранее спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]


Администратор




Сообщение: 173
ссылка на сообщение  Отправлено: 15.03.12 19:20. Заголовок: PavelG пишет: Програ..


PavelG пишет:
 цитата:
Программа, к сожалению не работает. Хотелось бы узнать в чём же проблема и можно ли решить данную задачу более оптимальным способом?

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

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 30
ссылка на сообщение  Отправлено: 15.03.12 21:04. Заголовок: Это ясно, меня более..


Это ясно, меня более итересовал оптимальный способ решения, а особенно как лучше считывать подаваемую информацию: в строку или читать посимвольно?
А ошибка у меня, я думаю,в логике решения(грубая и неявная только для меня).

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 174
ссылка на сообщение  Отправлено: 15.03.12 21:10. Заголовок: PavelG пишет: как лу..


PavelG пишет:
 цитата:
как лучше считывать подаваемую информацию: в строку или читать посимвольно?

Тут сложность вот в чем: во многих демо-вариантах ЕГЭ прошлых лет, где разбирались задачи с символьными переменными, рекомендовалось считывать посимвольно. В то же время, по моей статистике, большинство профессиональных программистов будут читать сразу строку, а потом ее разбирать. Оба варианта с точки зрения оценивания решения задачи на ЕГЭ равноценны, так что выбирайте, что вам удобнее.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 173
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет