Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

не могу найти ошибку в своём коде

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> не могу найти ошибку в своём коде
Имя
Сообщение << Старые топики   Новые топики >>
не могу найти ошибку в своём коде - 2008-11-18 15:52:32.900000   
keeper321

Сообщений: 13
Оценки: 0
Присоединился: 2008-11-13 12:27:14.990000
Здрасти всем!
Задание такое: Упражнение 1-10
—————–
Напишите программу, которая будет печатать слова из фай-
ла ввода, причем по одному на строку.

…поможите разобраться хто могёт плиз….
не выводит слова на экран…


#define eof 0
#define yes 1
#define no 0
main()
{
int inword;
char c;
inword=no;
c=getchar();
while(c!=eof);
{
if(c!=' ' || c!='\n' || c!='\t')
{
printf ("%s",c);
inword=yes;
}
else
if(inword==yes)
{
printf ("\n");
inword=no;
}
c=getchar();
}
}
Post #: 1
RE: не могу найти ошибку в своём коде - 2008-11-18 16:45:21.046666   
tt_andrey

Сообщений: 213
Оценки: 0
Присоединился: 2007-07-03 13:54:36.440000
Проблема в том, что код уродливый.
Вот алгоритм короче, делает то, что ты хочешь.

int c=getchar(); &nbsp;&nbsp; while(!feof(stdin)) &nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(c==' ' || c=='\n' || c=='\t') &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("\n"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%c", (char)c); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=getchar(); &nbsp;&nbsp; }
Post #: 2
RE: не могу найти ошибку в своём коде - 2008-11-18 16:49:05.860000   
tt_andrey

Сообщений: 213
Оценки: 0
Присоединился: 2007-07-03 13:54:36.440000
а еще у тебя спецификатор неправильно указан в printf ("%s",c);
надо %c, а %s для строк
Post #: 3
RE: не могу найти ошибку в своём коде - 2008-11-18 16:51:19.733333   
keeper321

Сообщений: 13
Оценки: 0
Присоединился: 2008-11-13 12:27:14.990000
спасибо за помошь….
знаю, что код параличный )))
только начал заниматься по книге….
а можно если не трудно в каком месте моего кода я в принципе неправ….если это возможно конечно…
заранее спасибо
Post #: 4
RE: не могу найти ошибку в своём коде - 2008-11-18 16:53:42.830000   
Archivarius

Сообщений: 164
Оценки: 0
Присоединился: 2008-10-26 00:16:25.630000

Вот, лови, за пять минут накалякал. Усебя на винте файлег C:\\1.txt сделай с текстом, который выводить.
#include &lt;stdio.h&gt; int main() {  FILE *fl;  size_t a;  char buf[2]=" ";  fl=fopen("C:\\1.txt","rb");  while((a=fread(buf,1,1,fl))&gt;0)    printf("%c",(buf[0]==' ')?"\n":buf); fclose(fl);  return 0; }
Post #: 5
RE: не могу найти ошибку в своём коде - 2008-11-18 16:59:01.706666   
googy

Сообщений: 5
Оценки: 0
Присоединился: 2008-07-30 18:10:37.426666
тут много что не правильно..
 
while (!f.eof())
{
}

вот тебе пример:
 

ifstream file("file.txt");
std::string buf;
getline(file, buf);
cout &lt;&lt; buf &lt;&lt; endl;
file.close();

 
Post #: 6
RE: не могу найти ошибку в своём коде - 2008-11-18 23:39:27.546666   
tеstеr

Сообщений: 377
Оценки: -46
Присоединился: 2008-02-08 17:56:40.563333
Вариант посложнее
Несколько разделителей обрабатываюся как 1, начальные и конечные разделители не будут вызывать переводы строк.
(основано на варианте от tt_andrey)
// C, Ansi-style #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main(void) { char c; int factor=1; c=getchar(); while(!feof(stdin)) { if(c==' ' || c=='\n' || c=='\t') factor=0; else { if(factor==0) { factor=1; puts(""); } putchar(c); } c=getchar(); } return EXIT_SUCCESS; }
А нет, начальные разделиели всё же вызовут 1 перевод строки.
Post #: 7
RE: не могу найти ошибку в своём коде - 2008-11-19 08:22:32.586666   
keeper321

Сообщений: 13
Оценки: 0
Присоединился: 2008-11-13 12:27:14.990000
так понимаю что во всех вариантах если будет 100 пробелов подряд или 100Тtab будет 100 новых строк?
хочу сделать чтоб с кажддой новой строки начиналось только слово, чтоб не было пустых новых строк…
что я и пытался сделать…с помощью int inword
Post #: 8
RE: не могу найти ошибку в своём коде - 2008-11-19 22:46:19.930000   
Archivarius

Сообщений: 164
Оценки: 0
Присоединился: 2008-10-26 00:16:25.630000
Немного твою программу переделал: #include &lt;fstream&gt; int main()  {  char c; bool inword; std::ifstream is("C:\\1.txt"); while(!is.eof())  {  c=is.get(); if (c!=' ' &amp;&amp; c!='\n' &amp;&amp; c!='\t') {  printf ("%c",c);  inword=true; }  else {  if (inword) printf ("\n");  inword=false; } } return 0; }

Post #: 9
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> не могу найти ошибку в своём коде







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.