リスト構造の問題なのですが;
Posted: 2012年1月29日(日) 23:20
名前(文字列)、歳を入力したら、それまでに入力した名前と歳を昇順に表示し、次の入力を促す。CTL-d を押すと終了する。
実行例
名前と歳をスペースで区切って入力して下さい
tanaka 22
現在のリスト
tanaka 22
名前と歳をスペースで区切って入力して下さい
satou 40
現在のリスト
tanaka 22
satou 40
名前と歳をスペースで区切って入力して下さい
watanabe 35
現在のリスト
tanaka 22
watanabe 35
satou 40
名前と歳をスペースで区切って入力して下さい
abe 37
現在のリスト
tanaka 22
watanabe 35
abe 37
satou 40
名前と歳をスペースで区切って入力して下さい
[CTR-d]
上のようなプログラムを作成せよ という学校の課題なのですが、自分でやってみたところエラーがでてしまい、なにがどういけないのか、どうなおせばよいのかさっぱりわかりません;
自分は初心者で、自分の書いたプログラムをすべて説明できるレベルになく(ポインタあたりから徐々についていけなくなってきました・・)、例題などとにらめっこしつつ、なんとかやっているレベルです;
↓が自分が作ってみたものです。
そしてでたエラーメッセージ(行番号より左を省略してあります)が
(16): error C2059: 構文エラー : 'new'
(25): error C2059: 構文エラー : '='
(25): fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
です。コンパイラ?はMicrosoft Visual C++ 2010 Express というものです。
どこを直せばよいのか教えていただきたいです。よろしくお願いしますm(_ _)m
実行例
名前と歳をスペースで区切って入力して下さい
tanaka 22
現在のリスト
tanaka 22
名前と歳をスペースで区切って入力して下さい
satou 40
現在のリスト
tanaka 22
satou 40
名前と歳をスペースで区切って入力して下さい
watanabe 35
現在のリスト
tanaka 22
watanabe 35
satou 40
名前と歳をスペースで区切って入力して下さい
abe 37
現在のリスト
tanaka 22
watanabe 35
abe 37
satou 40
名前と歳をスペースで区切って入力して下さい
[CTR-d]
上のようなプログラムを作成せよ という学校の課題なのですが、自分でやってみたところエラーがでてしまい、なにがどういけないのか、どうなおせばよいのかさっぱりわかりません;
自分は初心者で、自分の書いたプログラムをすべて説明できるレベルになく(ポインタあたりから徐々についていけなくなってきました・・)、例題などとにらめっこしつつ、なんとかやっているレベルです;
↓が自分が作ってみたものです。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct list
{
char name[20];
int age;
struct list *next;
};
int main(void)
{
struct list *head;
struct list *dummy, *new, *prev, *current;
dummy=(struct list *)malloc(sizeof(struct list));
strcpy( dummy->name,"");
dummy->age=0;
dummy->next=NULL;
head=dummy;
while((new = (struct list *)malloc(sizeof(struct list)) ))
{
printf("名前と歳をスペースで区切って入力して下さい\n");
if(scanf("%s%d", new->name,&new->age)==EOF)break;
current=head;
prev=head;
while( current!=NULL %% new->age > current->age)
{
prev=current;
current=current->next; /* 次の要素へ進む */
}
new->next=current; /* 新しい要素の次の要素へのアドレスを設定 */
prev->next=new; /* 新しい要素の直前の要素のnextに、新しい要素のアドレスを設定 */
}
printf("現在のリスト\n");
while(head!=NULL)
{
printf(" %20s %d\n",head->name,head->age);
head=head->next;
}
free(dummy);
return 0;
}
そしてでたエラーメッセージ(行番号より左を省略してあります)が
(16): error C2059: 構文エラー : 'new'
(25): error C2059: 構文エラー : '='
(25): fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
です。コンパイラ?はMicrosoft Visual C++ 2010 Express というものです。
どこを直せばよいのか教えていただきたいです。よろしくお願いしますm(_ _)m