Титла: програмка на С Публикувано от: cRuSh3r в Jan 29, 2010, 14:33 Здр.,
тука се боря с една програма ,която трбва да брои - нов ред,дума и символи ,които са въведени.Това е кода Цитат #include <stdio.h> Проблема е ,че неиска да брои думите.Винаги изкарва 0. ??? Титла: Re: програмка на С Публикувано от: lkr в Jan 29, 2010, 14:50 if (c == ' ', c == '\n', c = '\t') Код: if (c == ' ' || c == '\n' || c == '\t') Титла: Re: програмка на С Публикувано от: cRuSh3r в Jan 29, 2010, 14:54 Ами дава ми грешка компилатора (lcc-win32) :
Цитат the left side of the assignment can't be assigned to pp || - значи "или" ? Титла: Re: програмка на С Публикувано от: lkr в Jan 29, 2010, 15:00 Дава ти, защото пак имаш: c = '\t', а не c == '\t'
Титла: Re: програмка на С Публикувано от: tyuio в Jan 29, 2010, 15:10 "=" присвояване
"==" равенство Моно грешки има или поне много неща които са ненужни: nl = nw = nc = 0; това е не нужно щом си ги дефинирал те са си 0. После коя дума ти брои? аз дума не виждам както и функция за въвеждане Аз този компилатор не го знам поддържа ли АНСИ стандарта? Почни от начало с езика С този пример е почти безсмислен! Титла: Re: програмка на С Публикувано от: cRuSh3r в Jan 29, 2010, 15:29 Дава ти, защото пак имаш: c = '\t', а не c == '\t'Oправи се :) @tyuio Аз почнах от начало.В момент ачета Kernighan & Ritchie - The C Programming Language. Просто такъв е примера в книгата. А това ,че като са си дефинирани ,значи са 0 не го знех или поне още не съм стигнал до там :P pp http://en.wikipedia.org/wiki/LCC_(compiler) Титла: Re: програмка на С Публикувано от: lkr в Jan 29, 2010, 15:44 nl = nw = nc = 0;Пълни глупости, 0 са само, ако са static. После коя дума ти брои? аз дума не виждам както и функция за въвеждане Ми как да видиш, то чете от stdin. Титла: Re: програмка на С Публикувано от: cRuSh3r в Jan 29, 2010, 15:55 Цитат E getchar не е ли за въвеждане ?Нали то чете това което въвеждаш от клавиатурата или тука става дума за хедър файла ? Титла: Re: програмка на С Публикувано от: tyuio в Jan 29, 2010, 15:56 Аз не знам в С да има статик поправиме?nl = nw = nc = 0;Пълни глупости, 0 са само, ако са static. stdin също не видях само getchar w while Не съм го компилирал но така на пръв поглед не ми изглежда работеща коректно С програма даже и да не плюе грешки Титла: Re: програмка на С Публикувано от: tyuio в Jan 29, 2010, 15:57 щом е в while това е условие за цикъла незнам как ще вземи променливата когато е в () а не в {}
Титла: Re: програмка на С Публикувано от: lkr в Jan 29, 2010, 16:03 Цитат Аз не знам в С да има статик поправиме? http://wiki.answers.com/Q/What_is_a_static_identifier_in_C Цитат E getchar не е ли за въвеждане ?Нали то чете това което въвеждаш от клавиатурата или тука става дума за хедър файла ? Код: laker@dg:~$ echo "bla bla bla" | ./a.out Код: laker@dg:~$ ./a.out < bla.txt Титла: Re: програмка на С Публикувано от: tyuio в Jan 29, 2010, 16:38 Прав си има статик, никога не съм я ползвал! Въпреки това не смятам че програмата е написана коректно особенно като за начинаещ има много "но"
Титла: Re: програмка на С Публикувано от: hyankov в Jan 31, 2010, 13:18 @crusher: Реализирал си един от най-неприятните бъгове в С,С++ (поне според мен) и то още в самото начало. "Което е добре!" (Б.Турбото). В книгата Expert C Programming именно с това започват и са дали един полезен съвет, който се опитвам да спазвам. Когато имаш проверка за равенство (a.k.a оператор ==) може да слагаш константния израз (ако има такъв) от лявата страна. Тогава дори да си допуснал грешка (= вместо ==) компилатора ще те наплюе с грешка от рода lvalue нещо си.
@tyuio: Всъщност най-вероятно си използвал static променливи, без обаче изрично да си го заявил. Например - всички глобални променливи, които дефинираш, са по същество статични, дори без да използваш ключовата дума static. За тях е вярно, че можеш напълно убедено да вярваш, че са инициализирани и то с нула. (Ех, този Весо Компилатора - голям идиот, ама хубави неща ни научи) Поздрави, Ицо Титла: Re: програмка на С Публикувано от: tyuio в Jan 31, 2010, 13:36 Цитат (Ех, този Весо Компилатора - голям идиот, ама хубави неща ни научи)Ама той ли ти е преподавал :) Легендарна личност ! Титла: Re: програмка на С Публикувано от: task_struct в Jan 31, 2010, 14:30 nl = nw = nc = 0; Имахме си един джава програмист в офиса дето беше на същото мнение. Бая работа ми съзададе да му оправя мизериите. Та от тогава вече наистина вярвам на приказката, че Джавата поврежда мозъка ;D (сигурно и джава програмистите мислят така за C :D ) Има една интересна книжка - Writing Solid Code ( http://www.cs.brown.edu/courses/cs190/2008/documents/restricted/Writing%20Solid%20Code.pdf ), която дава някои съвети и напътствия как е добре да се пише на С. Писана е от микромек, и то доста отдавна, но е добра :) Титла: Re: програмка на С Публикувано от: lkr в Jan 31, 2010, 15:41 Цитат Има една интересна книжка - Writing Solid Code ( http://www.cs.brown.edu/courses/cs190/2008/documents/restricted/Writing%20Solid%20Code.pdf ), която дава някои съвети и напътствия как е добре да се пише на С. Писана е от микромек, и то доста отдавна, но е добра :) Ето нещо малко по-ново: http://acts.creatronic.com/docs/Write%20Great%20Code%20-%20Volume%20I%20-%20Understanding%20The%20Machine/ http://acts.creatronic.com/docs/Write%20Great%20Code%20-%20Volume%20II%20-%20Thinking%20Low-Level,%20Writing%20High-Level%20%282006%29/ |