С++: Первые шаги Mafin-а

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

Сообщение Mafin » Вт май 20, 2003 9:57 am

2Scalder<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->как программа будет различать текст это или код<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd--> Вот в этом-то и вся фенечка! <!--emo&:o-->Изображение<!--endemo--> <!--emo&:blink:-->Изображение<!--endemo-->
Как сделать остальное, мне понятно. Т.е. код и буковки я в поле или структуру засобачу, а потом простенько так буду знаки сверять. Но вот как сделать так, чтоб прога сама различала, что ей подсовывают!? <!--emo&:ph34r:-->Изображение<!--endemo-->
Последний раз редактировалось Mafin Вт май 20, 2003 9:58 am, всего редактировалось 1 раз.
<span style='color:green'>Я здесь, я везде, я всегда...</span>
Mafin
Полковник
 
Сообщений: 1585
Зарегистрирован: Пт мар 29, 2002 9:53 am
Откуда: Центральная Чехия
Пункты репутации: 0

Сообщение Lynn » Вт май 20, 2003 10:13 am

Если в строке есть буквы, значит это текст, а если нет ничего кроме точек, тире и пробелов, то код.
Where were you while we were getting high? — Oasis, Champagne Supernova
Lynn
Капитан
 
Сообщений: 267
Зарегистрирован: Пн апр 07, 2003 1:09 pm
Откуда: Москва
Пункты репутации: 0

Сообщение Mafin » Вт май 20, 2003 10:19 am

2Lynn
Слушай, какая простая идея! <!--emo&:o-->Изображение<!--endemo--> <!--emo&:)-->Изображение<!--endemo-->
Спасибо, буду пробовать! <!--emo&;)-->Изображение<!--endemo-->
<span style='color:green'>Я здесь, я везде, я всегда...</span>
Mafin
Полковник
 
Сообщений: 1585
Зарегистрирован: Пт мар 29, 2002 9:53 am
Откуда: Центральная Чехия
Пункты репутации: 0

Сообщение Mafin » Вс май 25, 2003 1:04 pm

Слушайте, глупость какая-то получается! <!--emo&:o-->Изображение<!--endemo-->
Хочу, чтоб в случае, если не задан правильный знак, программа возвращалась на начало. Она-то возвращается, но почему-то выписывает одну лишнюю строчку.

Код: выделить все
int main(void)
{
   char c;
   
a:   printf("Открыть файл? A/N  ");
   scanf("%c", &c);
   if ((c=='a') || (c=='A')) {
 zapisi_fajl();  
   } else if ((c=='n') || (c=='N')) {  
 zapisi_string();
   } else {
 printf("Неизвестная команда! Попробуй еще раз!\n");
 goto a;
   }
               ....
               return 0;
}


Где ошибка? Или что-то иначе мона сделать?! <!--emo&:huh:-->Изображение<!--endemo-->
Последний раз редактировалось Mafin Вс май 25, 2003 6:18 pm, всего редактировалось 1 раз.
<span style='color:green'>Я здесь, я везде, я всегда...</span>
Mafin
Полковник
 
Сообщений: 1585
Зарегистрирован: Пт мар 29, 2002 9:53 am
Откуда: Центральная Чехия
Пункты репутации: 0

Сообщение dAnIK SeNT » Вс май 25, 2003 6:10 pm

во-первых - ради бога, не используй goto! <!--emo&:)-->Изображение<!--endemo-->
во-вторых - команда пишется с одной "м" <!--emo&:)-->Изображение<!--endemo-->
в-третьих - какая у тебя лишняя строчка вписывается? вроде не должна...
в-четвертых, я бы этот код записал так:
Код: выделить все
int main( void ){
 char c = 0;
 do {
   printf("Открыть файл? A/N  ");
   scanf("%c", &c);
   switch ( tolower(c) ) {
     case 'a':
       zapisi_fajl();  
       break;
     case 'n':
       zapisi_string();
       break;
     default:
       printf("Неизвестная команда! Попробуй еще раз!\n");
       с = 0;
   }
 } while ( c == 0 );
return 0;
}
яНЯЕД ОН СОПЪФЙЕ: Athlon 64 X2 5200+ @2,86GHz / nF 570 SLI (ASUS M2N SLI Deluxe) / 4 Gb RAM (4x1Gb Kingston) / 2,9Tb SATAII (0,50+0,64+0,75+1,00Tb WD) / ASUS 8800 GTS512 / 2x NEC-Optiarc AD-7173 / Thermaltake ToughPower 650W / 2x30W Microlab Solo-2 / 20" LCD Benq FP202W (wide) / openSUSE 11.1 / KDE 4.2.1
<!--coloro:Navy--><span style="color:Navy"><!--/coloro-->оН БЯЕЛ БНОПНЯЮЛ - Б email. б ICQ ОНЪБКЪЧЯЭ ПЮГ Б ОНКЦНДЮ.<!--colorc--></span><!--/colorc-->
dAnIK SeNT
Маршал
 
Сообщений: 5101
Зарегистрирован: Чт мар 28, 2002 7:48 pm
Откуда: яяяп
Пункты репутации: 0

Сообщение Mafin » Вс май 25, 2003 6:18 pm

2dAnIK SeNT
В ожидании ответа, я все решил сам. Спасибо за поддержку! <!--emo&;)-->Изображение<!--endemo-->
А строчка выскакивала<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->"Неизвестная команда! Попробуй еще раз!<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd--> т.к знак ввода в буфере клавы оставался. Исправил! <!--emo&B)-->Изображение<!--endemo-->
<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->во-первых - ради бога, не используй goto!<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
сие из книжек мне известно. Но, т.к. прога мелкая, думаю ничего страшного не произойдет. Ведь, работает! <!--emo&:)-->Изображение<!--endemo-->
<span style='color:green'>Я здесь, я везде, я всегда...</span>
Mafin
Полковник
 
Сообщений: 1585
Зарегистрирован: Пт мар 29, 2002 9:53 am
Откуда: Центральная Чехия
Пункты репутации: 0

Сообщение dAnIK SeNT » Вс май 25, 2003 6:32 pm

2Mafin
Надо с самого начала вырабатывать хороший стиль.
яНЯЕД ОН СОПЪФЙЕ: Athlon 64 X2 5200+ @2,86GHz / nF 570 SLI (ASUS M2N SLI Deluxe) / 4 Gb RAM (4x1Gb Kingston) / 2,9Tb SATAII (0,50+0,64+0,75+1,00Tb WD) / ASUS 8800 GTS512 / 2x NEC-Optiarc AD-7173 / Thermaltake ToughPower 650W / 2x30W Microlab Solo-2 / 20" LCD Benq FP202W (wide) / openSUSE 11.1 / KDE 4.2.1
<!--coloro:Navy--><span style="color:Navy"><!--/coloro-->оН БЯЕЛ БНОПНЯЮЛ - Б email. б ICQ ОНЪБКЪЧЯЭ ПЮГ Б ОНКЦНДЮ.<!--colorc--></span><!--/colorc-->
dAnIK SeNT
Маршал
 
Сообщений: 5101
Зарегистрирован: Чт мар 28, 2002 7:48 pm
Откуда: яяяп
Пункты репутации: 0

Сообщение Mafin » Вс май 25, 2003 6:47 pm

2dAnIK SeNT
<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Надо с самого начала вырабатывать хороший стиль.<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
Полностью тебя поддерживаю! Я переписал main(), отлично! <!--emo&;)-->Изображение<!--endemo--> Но как человеку выработать хороший стиль?! <!--emo&:huh:-->Изображение<!--endemo-->
Да, вот такой еще вопрос, зачем тогда команда goto, когда ее все отвергают? <!--emo&:o-->Изображение<!--endemo-->
<span style='color:green'>Я здесь, я везде, я всегда...</span>
Mafin
Полковник
 
Сообщений: 1585
Зарегистрирован: Пт мар 29, 2002 9:53 am
Откуда: Центральная Чехия
Пункты репутации: 0

Сообщение dAnIK SeNT » Вс май 25, 2003 7:22 pm

2Mafin
Как выработать стиль?
Не знаю... Книжки всякие читай. Я вот недавно Алена Голуба прочитал - "Веревка достаточной длины... чтобы выстрелить себе в ногу". Хорошо, хотя я с половиной пунктов не согласен <!--emo&:)-->Изображение<!--endemo-->.
Зачем нужна?
1. Для совместимости.
2. Бывают исключения, когда она действительно помогает сделать код красивым и понятным (как ни странно). Но это бывает _крайне_ редко.
яНЯЕД ОН СОПЪФЙЕ: Athlon 64 X2 5200+ @2,86GHz / nF 570 SLI (ASUS M2N SLI Deluxe) / 4 Gb RAM (4x1Gb Kingston) / 2,9Tb SATAII (0,50+0,64+0,75+1,00Tb WD) / ASUS 8800 GTS512 / 2x NEC-Optiarc AD-7173 / Thermaltake ToughPower 650W / 2x30W Microlab Solo-2 / 20" LCD Benq FP202W (wide) / openSUSE 11.1 / KDE 4.2.1
<!--coloro:Navy--><span style="color:Navy"><!--/coloro-->оН БЯЕЛ БНОПНЯЮЛ - Б email. б ICQ ОНЪБКЪЧЯЭ ПЮГ Б ОНКЦНДЮ.<!--colorc--></span><!--/colorc-->
dAnIK SeNT
Маршал
 
Сообщений: 5101
Зарегистрирован: Чт мар 28, 2002 7:48 pm
Откуда: яяяп
Пункты репутации: 0

Сообщение Mafin » Вс май 25, 2003 7:40 pm

2dAnIK SeNT
Ясно, а скажи что быстрее (эффективней) поиск через поле или структуру.
Дело такое, програмку пытаю, которая переводит текст в азбуку Морза. Есть 2 поля, в одном буквы, а в другом соответственно морзянка. Так вот, что выйдет быстрее, если я буду по полям бегать или создам список структур. <!--emo&:huh:-->Изображение<!--endemo-->
<span style='color:green'>Я здесь, я везде, я всегда...</span>
Mafin
Полковник
 
Сообщений: 1585
Зарегистрирован: Пт мар 29, 2002 9:53 am
Откуда: Центральная Чехия
Пункты репутации: 0

Сообщение dAnIK SeNT » Вс май 25, 2003 7:44 pm

2Mafinне знаю, не мерил. попробуй сам измерить. сгенерируй случайным образом большое кол-во данных и мерь секундомером сколько будет обрабатываться так и сяк.
яНЯЕД ОН СОПЪФЙЕ: Athlon 64 X2 5200+ @2,86GHz / nF 570 SLI (ASUS M2N SLI Deluxe) / 4 Gb RAM (4x1Gb Kingston) / 2,9Tb SATAII (0,50+0,64+0,75+1,00Tb WD) / ASUS 8800 GTS512 / 2x NEC-Optiarc AD-7173 / Thermaltake ToughPower 650W / 2x30W Microlab Solo-2 / 20" LCD Benq FP202W (wide) / openSUSE 11.1 / KDE 4.2.1
<!--coloro:Navy--><span style="color:Navy"><!--/coloro-->оН БЯЕЛ БНОПНЯЮЛ - Б email. б ICQ ОНЪБКЪЧЯЭ ПЮГ Б ОНКЦНДЮ.<!--colorc--></span><!--/colorc-->
dAnIK SeNT
Маршал
 
Сообщений: 5101
Зарегистрирован: Чт мар 28, 2002 7:48 pm
Откуда: яяяп
Пункты репутации: 0

Сообщение Mafin » Вс май 25, 2003 7:55 pm

2dAnIK SeNT
В глазах двоится от твоих слов! <!--emo&:P-->Изображение<!--endemo-->
Я думал, ты гденть читал об этом... <!--emo&:(-->Изображение<!--endemo-->
<span style='color:green'>Я здесь, я везде, я всегда...</span>
Mafin
Полковник
 
Сообщений: 1585
Зарегистрирован: Пт мар 29, 2002 9:53 am
Откуда: Центральная Чехия
Пункты репутации: 0

Сообщение ssm » Пн май 26, 2003 9:01 am

2dAnIK SeNT
<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Я вот недавно Алена Голуба прочитал - "Веревка достаточной длины... чтобы выстрелить себе в ногу". Хорошо, хотя я с половиной пунктов не согласен <!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
ну давай тогда обсудим в новой ветке

<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->секундомером<!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
да уж... а профайлер свой кусок хлеба будет даром жрать?

2Mafin
<!--QuoteBegin--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Есть 2 поля, в одном буквы, а в другом соответственно морзянка. Так вот, что выйдет быстрее, если я буду по полям бегать или создам список структур. <!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
Эх... ну ты о чем? какой же список структур? это будет тормоз еще тот. Сортированный вектор(массив) еще туда не шло. ИМХО самым эффективным подходом в данной ситуации будет использования _разреженного_ вектора(массива) строк:
std::vector<const char*> или std::vector<std::string>
где в качестве содержимого контейнера хранится последовательность закорючек морзе, а в качестве индекса будет использоваться ASCI код символа.
Вся программа реально будет состоять из 5-10 строк, не врубишся сам - помогу
матюкаться - плохо
ssm
Старшина
 
Сообщений: 46
Зарегистрирован: Ср апр 23, 2003 4:49 pm
Откуда: гоновер, германия
Пункты репутации: 0

Сообщение Mafin » Пн май 26, 2003 10:19 am

2ssm
Я эту прогу на С пишу, поэтому и спрашивал, как лучше. <!--emo&:huh:-->Изображение<!--endemo-->
Не в службу, а в дружбу, напиши как ты себе это представляешь, пускай даже и на С++. <!--emo&:unsure:-->Изображение<!--endemo-->
Потом просто остальное перепишу сам... <!--emo&B)-->Изображение<!--endemo-->
<span style='color:green'>Я здесь, я везде, я всегда...</span>
Mafin
Полковник
 
Сообщений: 1585
Зарегистрирован: Пт мар 29, 2002 9:53 am
Откуда: Центральная Чехия
Пункты репутации: 0

Сообщение ssm » Пн май 26, 2003 11:39 am

#include <vector>
#include <vector>
#include <string>
#include <fstream>

bool fill_vector(MyVec &v){
v.resize(255);
v['A'] = "--.--..";
v['B'] = ".-..";
//...
return true;
}

int main(int argc, char* argv[]){

std::ifstream is("c:\\temp\\input_stream.txt");
if(!is){
std::cout << "cant open input stream" << std::endl;
return 1;
}

std::ofstream os("c:\\temp\\output_stream.txt");

MyVec v;
fill_vector(v);

char ch = 0;
while((is.get(ch)) && (os << v[ch]))
;
return 0;
}
матюкаться - плохо
ssm
Старшина
 
Сообщений: 46
Зарегистрирован: Ср апр 23, 2003 4:49 pm
Откуда: гоновер, германия
Пункты репутации: 0

Пред.След.

Вернуться в Программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron