Приветствую Вас Гость | RSS

Язык программирования С

Суббота, 04.05.2024, 10:08
Главная » 2010 » Апрель » 17 » 1.9. Массивы символов. Упражнение 1.19.
23:39
1.9. Массивы символов. Упражнение 1.19.

Упражнение 1.19. Напишите функцию reverse(s), которая переписывает свой строковый аргумент s в обратном порядке. Воспользуйтесь ею для написания программы, которая бы выполняла такое обращение над каждой строкой входного потока по очереди.

/* программа, переписывающая строку в обратном порядке */

#include "stdafx.h"
#define MAXLINE 1000 /* максимальная длина строки в потоке */

void reverse(char s[]);

int main()
{

char line[MAXLINE]; /* текущая введенная строка */
char c;
int i;

i = 0;
while ((c = getchar()) != EOF) {

line[i] = c;
++i;
if (c == '\n'){

line[i] = '\0';
i = 0;
reverse(line);
printf("%s", line);

}

}

return 0;

}

void reverse(char s[])
{

int i, j, n;
char temp[MAXLINE];

j = 0;
i = 0;
while (s[j] != '\n') /* считаем количество символов в строке */

++j;

n = j;

/* переписываем строку в обратном порядке в вспомогательный массив */
for (i = 0; j != 0; ++i) {

temp[j - 1] = s[i];
--j;

}
/* переписываем строку в основной массив */
for (i = 0; n != 0; ++i) {

s[i] = temp[i];
--n;

}

}

Результат выполнения:

Строка наоборот
Просмотров: 3669 | Добавил: brainfrog | Теги: строка, функция, программа, упражнение, reverse | Рейтинг: 5.0/1
Всего комментариев: 3
3 lionsay  
0
возвращаюсь посмотреть код как я раньше делал копирую, компилирую не работает! Уха-ха. Тупой редактор этого сайта, мало того, что удаляет табуляцию, так еще и меняет код. Пусть катится впизду(редактор).

2 lionsay  
0
Сохраню ка я свои примеры на этом сайте, чтобы подглядывать :).

Упражнение 1.20

Код

#include <stdio.h>
#define MAXLINE 1000

main()
{
  int c, i = 0, count = 0, space = 4;
  char str[MAXLINE];

  while((c = getchar()) != EOF){
  if(c == ' ')
  ++count;
  else{
  if(count) {
  for(count *= space; count; --count){
  str[i] = ' ';
  ++i;
  }
  }

  str[i] = c;
  ++i;
  count = 0;
  }
  }
  str[i] = '\0';

  if(i > 0)
  printf("\n");
  printf("%s\n", str);

  return 0;
}

1 klolik  
0
Code
[font=Courier New]void reverse( char s[] )
{
  int i = -1;
  while ( (s[++i] != '\n') && (s[i] != '\0') ) ;

  for ( int temp, end = i - 1, j = 0; j < i/2; ++j ) {
  temp  = s[j];
  s[j]  = s[end - j];
  s[end - j] = temp;
  };
};[/font]

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]