Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2010, 17:30   #1
нонфактор
Новичок
Джуниор
 
Регистрация: 11.01.2010
Сообщений: 1
По умолчанию задача на с. указатели функции строки(хз как переделать)

изначально смысл задания был
Определить тип предложения. Слова внутри каждого простого предложения отсортировать в об-ратном порядке по алфавиту
а теперь мне надо чтобы слова в каждом простом предложение стояли наоборот
пример
новый год был клевый--->>>>>клевый был год новый

#include <stdio.h>
#include <string.h>
int Number;
void Print(char St1[], int W[], int Numb){
int i;
for (i=0; i < Numb; i++){
if (St1[W[i]]!=','){
printf("%s\n", & St1[W[i]]);
}
}
}
void Scan(char St1[], int W[]){
int Flag=0;
int i;
for (Numb = 0, Flag = 1, i = 0; St1[i]; i++){
if (St1[i] == ' '){
St1[i] = zerro;
Flag = 1;
}
else if (Flag){
W[Numb++] = i;
Flag = 0;
}
}
}
void Sort(char St1[], int W[], int Numb){
int i,j;
int Temp;
for (j = Numb-1; j > 0; j --)
for (i = 0; i < j; i ++){
if (strcmp(& St1[W[i]], & St1[W[i + 1]]) < 0){//в выделенном блоке вродебы надо передлывать
Temp = W[i];
W[i] = W[i + 1];
W[i + 1] = Temp;
}
}
}

void Compound(int sent, char St1[], char St[], int W[]){
int Res=0;
int ct=0;
do{
printf("\nCurrent simple sentence:\n\n");
for (ct=0; St[ct]!='\0' && St[ct]!=','; ct++){
St1[ct]=St[ct+Res];
}
Res += ct;
Scan(St1, W);
Sort(St1, W, Numb);
Print(St1, W, Numb);
sent--;
}
while (sent !=0);
}

void Simple(char St1[], char St[], int W[]){
int ct=0;
do{
St1[ct]=St[ct];
ct++;
}
while (St[ct]!='\0');
Scan(St1, W);
Sort(St1, W, Numb);
Print(St1, W, Numb);
}
int main(){
char St[512];
char St1[512];
int W[512];
int sent=0;
int i;
printf("Input string: ");
gets(St);
for (i=0; St[i]; i++){
if (St[i] == ','){
sent++;
}
}
if (sent > 0){
printf("\nCompound, include ");
sent++;
printf("%d", sent);
printf(" sentences:\n");
Compound(sent, St1, St, W);
}
else{
printf("\nSimple\n");
Simple(St1, St, W);
}
printf("\nPress key");
return 0;
}

Последний раз редактировалось нонфактор; 11.01.2010 в 17:37.
нонфактор вне форума Ответить с цитированием
Старый 12.01.2010, 16:46   #2
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

я не сильно разбирался в коде, но судя по всему тебе нужно написать чтото вроде этого

Код:
void Sort(char St1[], int W[], int Numb)
{
  int i=0;
  int j=Numb-1;
  int Temp;
  while (i<j)
  {
    Temp = W[i];
    W[i] = W[j];
    W[j] = Temp;
    i++;
    j--;
  }
}
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."
val_nnm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу ан тему: Указатели, строки, функции обработки строк Chel Общие вопросы C/C++ 3 11.10.2009 19:48
указатели на функции MeGaTpoH Общие вопросы C/C++ 2 18.06.2009 16:27
Функции и Указатели на С++ Wia Помощь студентам 3 17.04.2009 14:57
Указатели. Файлы. Функции Duleks Общие вопросы C/C++ 1 15.10.2008 13:53
Указатели в функции. _LEON_ Общие вопросы C/C++ 4 04.02.2008 10:38