英文の英単語を反転させる方法
Posted: 2008年8月06日(水) 22:52
入力した英文を単語ごとに区切ってその順番を逆転させるプログラムを作れという課題が出ているのですが、
さっぱりわからないし、明日までなので困っています!
どなたか助けて下さい(>_<)
さっぱりわからないし、明日までなので困っています!
どなたか助けて下さい(>_<)
#include<stdio.h>
#define STR_MAX 256
int input_str(int strnum[/url], char str[/url]){
int i,n,c,flag;
n=1;
flag=1;
for(i=0;i<STR_MAX-1;i++){
c=getchar();
if(c==' ' || c==',' || c=='.' || c=='\t'){
if(flag==0){
str=0;
strnum[n]=i+1;
flag=1;
n++;
continue;
}
else{
i--;
continue;
}
}
else if(c=='\n' || c==EOF){
str=0;
if(flag==1)
n--;
break;
}
flag=0;
str=(char)c;
}
if(i==STR_MAX-1)str=0;
return n;
}
void conv_str(int n, int strnum[/url], char str[/url], char str2[/url]){
int i,j;
j=0;
n--;
for(i=0;i<STR_MAX-1;i++){
str2=str[strnum[n]+(j++)];
if(str2==0){
str2=' ';
n--;
j=0;
if(n<0)
break;
}
}
str2=0;
}
int main(void){
int i,j,n;
int strnum[STR_MAX/2]={0,};
char str[STR_MAX],str2[STR_MAX];
n=input_str(strnum,str);
for(i=0;i<n;i++)
printf("[%2d]:%s\n",i+1,&str[strnum]);
conv_str(n,strnum,str,str2);
printf("%s\n",str2);
return 0;
}
実行例1
I can speak English
[ 1]:I
[ 2]:can
[ 3]:speak
[ 4]:English
English speak can I
実行例2
.. , I can,.. .speak., , En.glish... , , , ,,,
[ 1]:I
[ 2]:can
[ 3]:speak
[ 4]:En
[ 5]:glish
glish En speak can I