すみません。課題についてです
Posted: 2007年2月06日(火) 01:19
大学の宿題で「キーボードから10個の文字列を入力させ、次に、検索する文字列を入力し、その文字列が先に入力した文字列にあるかどうか検索するプログラムを作成せよ。」という問題が出されたのですが、何度やっても同じ答えしか出てくれません(探索に失敗しました)。どこか不適切な点を教えてください。
正解の解答例 私の解答例
文字列1:Hello 文字列[0]:hello
文字列2:Apple 文字列[1]:apple
文字列3:dog 文字列[2]:dog
文字列4:cat 文字列[3]:cat
文字列5:house 文字列[4]:house
文字列6:drive 文字列[5]:drive
文字列7:year 文字列[6]:year
文字列8:child 文字列[7]:child
文字列9:animals 文字列[8]:animal
文字列10:name 文字列[9]:name
検索する文字列を入力してください:house 検索する文字列を入力してください:house
houseは5番目にあります。 探索に失敗しました。
プログラムは
#include <stdio.h>
#define NUMBER 10
#define FAILED -1
int search(int vc[/url],int key,int no)
{
int i=0;
vc[no]=key;
while(1){
if(vc=key)
break;
i++;
}
return (i=no?FAILED:i);
}
int main(void)
{
int i,ky,idx;
int vx[NUMBER+1];
for(i=0;i<NUMBER;i++){
printf("文字列[%d]:",i);
scanf("%s",&vx);
}
printf("検索する文字列を入力してください:");
scanf("%s",&ky);
idx=search(vx,ky,NUMBER);
if(idx=FAILED)
puts("\a探索に失敗しました。");
else
printf("%dは%d番目にあります。\n",ky,idx+1);
return (0);
}
正解の解答例 私の解答例
文字列1:Hello 文字列[0]:hello
文字列2:Apple 文字列[1]:apple
文字列3:dog 文字列[2]:dog
文字列4:cat 文字列[3]:cat
文字列5:house 文字列[4]:house
文字列6:drive 文字列[5]:drive
文字列7:year 文字列[6]:year
文字列8:child 文字列[7]:child
文字列9:animals 文字列[8]:animal
文字列10:name 文字列[9]:name
検索する文字列を入力してください:house 検索する文字列を入力してください:house
houseは5番目にあります。 探索に失敗しました。
プログラムは
#include <stdio.h>
#define NUMBER 10
#define FAILED -1
int search(int vc[/url],int key,int no)
{
int i=0;
vc[no]=key;
while(1){
if(vc=key)
break;
i++;
}
return (i=no?FAILED:i);
}
int main(void)
{
int i,ky,idx;
int vx[NUMBER+1];
for(i=0;i<NUMBER;i++){
printf("文字列[%d]:",i);
scanf("%s",&vx);
}
printf("検索する文字列を入力してください:");
scanf("%s",&ky);
idx=search(vx,ky,NUMBER);
if(idx=FAILED)
puts("\a探索に失敗しました。");
else
printf("%dは%d番目にあります。\n",ky,idx+1);
return (0);
}