PDA

Просмотр полной версии : [Помогите!] подскажите как доработать программу на С


Evgen2sat
24.11.2011, 13:36
В общем нужно написать программу на С:
Дана строка S. Строка S должна содержать несколько слов. Разбить строку на две
строки S1 и S2. Строка S1 должна содержать четные слова из строки S, а строка S2 –
нечетные слова из строки S. Сформировать строки S1 и S2 двумя способами:
- с использованием функций библиотеки string.h
- работая со строками как с массивами.

С библиотекой string.h у меня вот что получилось
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main(void)
{
char s[] ="V etom predlozhenii mnogo chetnyh i nechetnyh slov";
char *i;
int b;
i = strtok (s," ");
printf("Stroka s chetnymi slovami:\n");
while (i!= NULL)
{
b=strlen(i);
if(b%2==0) printf("%s ",i);
i = strtok (NULL, " ");
}
i = strtok (s," ");
printf("\nStroka s nechetnymi slovami:\n");
while (i!= NULL)
{
b=strlen(i);
if(b%2==1) printf("%s ",i);
i = strtok (NULL, " ");
}

getch();
}

Только она немного не так получилась. В этой программе считает если длина слова четная то в одной строке выводит,если нечетная то в другой,а нужно если порядок слова четный то в одной строке выводит, если нечетный, то соответственно в другой строке. Помогите пожалуйста исправить и доработать.
Вот вариант через массивы:
#include <stdio.h>
#include <conio.h>
void main()
{
char s[]="qwerty unb jkrwgf wjkegfjwe jgewfjkwegf";
char s1[100],s2[400];
int i,b,a,c;
i=b=c=0;
while(i<100)
{
if(s[i]!=' ')
{
while(i<100 && s[i]!=' ')
{
s1[b]=s[i];
i++;
b++;
}
s1[b]=" ";
}
else
{
a=i+1;
while(a<100 && s[a]!=' ')
{
s2[c]=s[a];
a++;
c++;
}
s2[c]=' ';
i=a+1;

}
printf("s1:%s\n",s1);
}

printf("s2:%s\n",s2);
getch();
}



Опять же есть недоработка в программе, она выводит все правильно, но не ставит пробелы между словами. Как сделать так чтобы слова отделялись пробелами. Помогите пожалуйста очень нужно. Заранее благодарен.