Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 22
1

Напишите программу, которая переворачивает все слова в строке

03.03.2013, 20:45. Показов 4611. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Проблема в том, что программа проходит успешно только 8 из 14 тестов - в остальных пишет "ошибка выполнения". Мне посоветовали сделать массив глобальным. Но я только начала учить Си, так что понятия не имею что это. Объясните, пожалуйста, что и где нужно дописать, чтобы сделать массив глобальным и что это вообще значит. Большое спасибо.
Текст задания:
Напишите программу, которая переворачивает все слова в строке. Символы, отличные от латинских букв должны остаться на месте.
Вводится одна строка, завершающаяся символом конца строки '\n'. Длина строки менее 1000.
Моя программа:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>
#include<string.h>
//#include<conio.h>
int main()
{char p[1100],*h;
int i,g,n,u,c,k,v;
u=0;i=0;n=0;c=0;k=0;
gets(p);
u=strlen(p);
while(i<u)
  {if(p[i]==' ' || p[i] < 65 || (p[i] > 90 && p[i]< 97) || p[i]> 122 )
   {k=n;
    while(k<=(n+((i-n)/2))-1)
     {c=p[k];p[k]=p[i-1+n-k];
      p[i-1+n-k]=c;k=k+1;
     }
     n=i+1;i++;
   }
   else
    i=i+1;
  }k=n;
while(k<=(n+(u-n)/2)-1)
 {c=p[k];p[k]=p[u-1+n-k];
  p[u-1+n-k]=c;k++;
 }
for(h=p;*h<=u;h++)
printf("",&h);
puts(p);
//getch();
return 0;
}
Добавлено через 46 минут
Сейчас попробовала объявить массив как unsigned char - программа прошла на 2 теста больше, чем в прошлый раз, но в остальных по-прежнему ошибка выполнения.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2013, 20:45
Ответы с готовыми решениями:

Написать функцию , которая возвращает заданную строку, но переворачивает в обратном порядке все слова
Написать функцию spin_words, которая возвращает заданную строку, # но переворачивает в обратном...

Напишите программу, которая находит все различные цифры в символьной строке
Напишите программу, которая находит все различные цифры в символьной строке. Входные данные На...

Напишите программу, которая удаляет из слова X все буквы, которые встречаютьс в слове Z
Программа работает не правильно:( не могу понять как удалить буквы. #include &lt;stdio.h&gt;...

Напишите программу, которая заменяет в символьной строке все вхождения одной подстроки на другую
Программа именно с помощью трок Напишите программу, которая заменяет в символьной строке все...

3
...
1906 / 1326 / 965
Регистрация: 12.02.2013
Сообщений: 2,172
04.03.2013, 08:31 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
   char p[1100], *h;
   int i = 0, n = 0, u = 0, c = 0, k = 0;
 
   gets(p);
   u = strlen(p);
   while (i < u)
   {
      if (p[i] == ' ' || p[i] < 65 || (p[i] > 90 && p[i] < 97) || p[i] > 122)
      {
         k = n;
         while (k <= (n + ((i - n) / 2)) - 1)
         {
            c = p[k];
            p[k] = p[i - 1 + n - k];
            p[i - 1 + n - k] = c;
            k++;
         }
         n = i + 1;
      }
      i++;
   }
   k = n;
   while (k <= (n + (u - n) / 2) - 1)
   {
      c = p[k];
      p[k] = p[u - 1 + n - k];
      p[u - 1 + n - k] = c;
      k++;
   }
 
   for (h = p; *h; h++)
   {
      printf("%c", *h);
   }
   printf("\n");
 
   system("pause");
 
   return 0;
}
Напишите программу, которая переворачивает все слова в строке


Бинарник + исходник: program.7z
1
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 22
04.03.2013, 13:37  [ТС] 3
Огромное спасибо!!!
0
0 / 0 / 0
Регистрация: 29.11.2016
Сообщений: 3
29.11.2016, 23:05 4
anmartex, Можешь кинуть код с комментариями?
0
29.11.2016, 23:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2016, 23:05
Помогаю со студенческими работами здесь

Напишите программу, которая выводит на экран все слова, которые имеют определенный символ в определенной позиции
Здравствуйте. Препод сегодня задал решить задачу но это совсем не мой уровень, а завтра нужно...

Напишите функцию, которая переворачивает строку
1) Напишите функцию, которая переворачивает строку (массив типа char). Используйте цикл for,...

Напишите программу, которая заменяет в символьной строке все буквы a на буквы b
Как ужать этот код? Не проходит по скорости на последнем тесте var s:string; i,k,:integer; ...

Напишите программу, которая выводит все возможные слова "нового" языка
ребенок играл с карточками, на которых английские буквы. он составил слова &quot;нового&quot;языка. каждое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru