язык то какой хоть бы сказал? ы.
на Си примерно так:
#include <stdio.h>
void reverse_print()
{
int ch;
if ((ch = getchar())!= EOF)
{
reverse_print();
putchar(ch);
}
}
int main()
{
reverse_print();
return 0;
}
А вот мой скромный чайниковский код на С++:
#include <cstdio>
int main()
{
int in, out[255], i=0;
in = getchar();
while(in!='\n'){
out[i++]=in;
in = getchar();
}
for(int j=i-1; j>=0; j--){
putchar(out[j]);
}
printf("\n");
return 0;
}
>логику в школе ниасилил? Выражение (in != '\n' || in != EOF) всегда ложно!!
ну да, &&. С кем не бывает.
>потому что пишешь через жёпу
Стараюсь всё же писать правильно. жопа пишется через О, кстати!
>кто тебе сказал, что ввод будет оканчиваться символом '\n'
Я сказал. На enter нажми и удивись.
>и во входном потоке не более 255 символов?
Напиши как надо, прославишься в моих глазах.
Так?
#include <cstdio>
int main()
{
int in, i=0;
int* out = new int;
in = getchar();
while(in!='\n' && in!=EOF){
out[i++]=in;
in = getchar();
}
for(int j=i-1; j>=0; j--){
putchar(out[j]);
}
printf("\n");
delete [] out;
out = NULL;
return 0;
}
>Я сказал. На enter нажми и удивись
кто тебе сказал, что нужно нажимать enter (читай: что встретится
символ перевода строки). можно нажать ^D^D и ввод закончится без '\n'
>Напиши как надо, прославишься в моих глазах.
я уже приводил свой код (третье письмо в этом треде)
а тебе таки следует прочитать про new и delete, и подумать над тем
сколько памяти выделяется оператором new int; и в данном контексте
out[i++] вообще непонятно что означает.
если ты уж таки пытаешься реализовать это на ЦПП, то это, пожалуй,
следовало бы сделать примерно так:
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::string s;
std::string acc;
while (std::cin >> s)
acc += s;
reverse(acc.begin(), acc.end());
std::cout << acc << std::endl;
return 0;
}
коли ты пишешь на ЦПП, то должен по возможности использовать ЦППшные
высокоуровневые средства, а не сишные массивы ;)
напишите программу, но только с использованием простейших свойсв Си, чтоб мне было понятно. По первой главе надо написать. СПП вообще не знаю (Зря старались)
2 ban: ты тред то внимательно читал? уже приводилось правильное решение твоей задачки (см. третий пост в треде). или тебе рекурсивный вариант не понравился? тогда это твои личные половые проблемы..
А вот примитивная программа для переворачивания _очень_
длинных потоков:
#include <stdio.h>
int main()
{
int ch;
FILE *tmp=tmpfile();
while( (ch = getchar())!= EOF )
putc(ch,tmp);
fseek(tmp,-1L,SEEK_CUR);
do
putchar(getc(tmp));
while(fseek(tmp,-2L,SEEK_CUR) == 0 );
return 0;
}