入力した英文を単語ごとに区切ってその順番を逆転させるプログラムを作れという課題が出ているのですが、
さっぱりわからないし、明日までなので困っています!
どなたか助けて下さい(>_<)
英文の英単語を反転させる方法
-
kazuoni
Re:お願いします!
まずいまいち問題の意味がわかりません。。
例えば
入力:My name is kazuoni .
としたら
出力:. kazuoni is name My
こういうことですか?
例えば
入力:My name is kazuoni .
としたら
出力:. kazuoni is name My
こういうことですか?
-
管理人
Re:お願いします!
例によって締め切り間近という事なので、答えを作ってみました。
細かい仕様がよくわからなかったので勝手に決めました。
単語はコンマ、ピリオド、スペース、タブによって区切られ、
文章の最初にある場合、最後にある場合、重複している場合読み飛ばします。
こういうことであってますか?
今集中講義か何かでしょうか?
丸投げは規約違反なので、このままでは管理人自ら違反を助長してしまうので、
是非、忙しくなくなった時でいいので、注釈を書いて投稿してみて下さい。
わからない箇所があれば調べるか、聞いて下さい。
細かい仕様がよくわからなかったので勝手に決めました。
単語はコンマ、ピリオド、スペース、タブによって区切られ、
文章の最初にある場合、最後にある場合、重複している場合読み飛ばします。
#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 こういうことであってますか?
今集中講義か何かでしょうか?
丸投げは規約違反なので、このままでは管理人自ら違反を助長してしまうので、
是非、忙しくなくなった時でいいので、注釈を書いて投稿してみて下さい。
わからない箇所があれば調べるか、聞いて下さい。