"ABC" в "BCA"
#1
Отправлено 03 мая 2005 - 20:13
Мое решение:
Создаем 2 массива. 1) он сохраняет значения вводимые с клавиатуры в массив
2) последнее значение 1го массива присваивается первому значению, предпоследнее значение 1го массива второму своему значению и т.д
возвращает 2ой массив.
помогите реализовать.
#3
Отправлено 03 мая 2005 - 20:40
getchar() возвращает один int, а не строку (массив char c нулем на конце).задача (язык СИ): надо вводимые символы выводить задом на перед. Если getchar = "АБВ" то putchar должен быть "ВБА".
Мое решение:
Создаем 2 массива. 1) он сохраняет значения вводимые с клавиатуры в массив
2) последнее значение 1го массива присваивается первому значению, предпоследнее значение 1го массива второму своему значению и т.д
возвращает 2ой массив.
помогите реализовать.
int reverse(int c) -- функция принимает и возвращает int. получается ты будешь менять местами одно и то же значение ??
я предполагаю, что ты хотел это: считать ввод в строку, и печатать строку с конца.
тогда очень просто решается: читай fgets()'ом, а дальше в цикле от i = strlen(s) -1; до i >= 0; печатай.
#6
Отправлено 04 мая 2005 - 13:10
#include <stdio.h> #define ISIZE 25 // сюда ставь размер какой те нужен void main () { char astring [ISIZE]; char *pc; int icountar; pc = astring; for (icountar = 0; icountar<ISIZE; icountar++){ *pc = getchar(); pc++; } pc = astring + (ISIZE-1); for (icountar = 0; icountar<ISIZE; icountar++){ putchar(*pc); pc--; } }
как вариант если длина не фиксированная то типа так
int len; //lenght of Solution char cSolution[25]; // размер len =strlen(cSolution); while (len>=0){ printf ("%c\n",cSolution[len]); len--; }
Сообщение изменено: Ничего не боится (04 мая 2005 - 13:12 )
#7
Отправлено 04 мая 2005 - 15:29
1. char buf[1024];#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char buf[1024]. fgets(stdin, buf); for(int i = strlen(buf); i >= 0; i--) { fputc(buf[i]); } return 0; }
2. функции fgets() не хватает аргументов:
char *fgets(char *s, int size, FILE *stream);
3. for(int i = strlen(buf); i >= 0; i--)
в C нельзя обьявлять переменную в цикле, в отличии от C++.
4. int fputc(int c, FILE *stream);
Добавлено в [mergetime]1115213378[/mergetime]
Вариант void main () недопустим.навскидку написал но не тестил
#include <stdio.h> #define ISIZE 25 // сюда ставь размер какой те нужен void main () { char astring [ISIZE]; char *pc; int icountar; pc = astring; for (icountar = 0; icountar<ISIZE; icountar++){ *pc = getchar(); pc++; } pc = astring + (ISIZE-1); for (icountar = 0; icountar<ISIZE; icountar++){ putchar(*pc); pc--; } }
int main(void)
#define ISIZE 25 // сюда ставь размер какой те нужен
Юзер должен обязательно вводить 25 символов?? а еслли хочет меньше/больше то надо заново компилировать программу...
#8
Отправлено 04 мая 2005 - 16:07
1. char buf[1024];
2. функции fgets() не хватает аргументов:
char *fgets(char *s, int size, FILE *stream);
3. for(int i = strlen(buf); i >= 0; i--)
в C нельзя обьявлять переменную в цикле, в отличии от C++.
4. int fputc(int c, FILE *stream);
Добавлено в [mergetime]1115213378[/mergetime]
Я не проверял ее, "на коленке" написал. =) Так что я не удивлен замечаниями... Я надеюсь, не будете сильно смеяться из-за того, что я всех функций (с их аргументами и особенностями) из стандартной библиотеки С наизусть не знаю? =)
3. В ANSI C нельзя объявлять, да, но, если не ошибаюсь, в последней редакции ISO C от 1999-го года -- можно... Этот фрагмент скомпилится с GCC при указании опции: -std=c99...
#9
Отправлено 04 мая 2005 - 20:45
http://david.tribble...m#C90-cond-exprЯ не проверял ее, "на коленке" написал. =) Так что я не удивлен замечаниями... Я надеюсь, не будете сильно смеяться из-за того, что я всех функций (с их аргументами и особенностями) из стандартной библиотеки С наизусть не знаю? =)
3. В ANSI C нельзя объявлять, да, но, если не ошибаюсь, в последней редакции ISO C от 1999-го года -- можно... Этот фрагмент скомпилится с GCC при указании опции: -std=c99...
Conditional expression declarations
C++ allows local variable declarations within conditional expressions (which appear within for, if, while, and switch statements). The scope of the variables declared in this context extends to the end of the statement containing the conditional expression. For example:
for (int i = 0; i < SIZE; i++)
a[i] = i + 1;
C90 does not allow this feature.
C99 allows this feature, but only within for statements.
[C99: §6.8.5]
[C++98: §3.3.2, 6.4, 6.5]