jppyのプロフィール

@jppy jppy
ありがとう数66
質問数1
回答数136
ベストアンサー数
14
ベストアンサー率
14%
お礼率
0%

  • 登録日2002/02/08
  • C言語のプログラムについて

    このプログラムが作れず困っています。分かる方教えてください。 data.datを入力し構造体型の配列に格納する(データ件数は50件以下,EOFになるまで入力) 次に<CTRL>Dが押されるまで学生番号をキー入力し,その氏名と得点を表示する。 学生番号の探索には二分探索法を使い構造体の配列を調べた回数も表示する。学生番号が存在しない場合は、存在しないことを 示すメッセージを表示する。 [実行例] 学生番号を入力してください ←入力要求のメッセージ(scanfの前に毎回入れる) 1012 1012番Sonoda Mari 得点=42点 探索回数=3回   ←学生番号,氏名,得点,探索回数を表示 学生番号を入力してください 1001 1001番Ando Ichiro 得点=73点  探索回数=1回 学生番号を入力してください 1016 1016番Nakai Kanji 得点=49点 探索回数=2回 学生番号を入力してください 1000 1000番なし 学生番号を入力してください(<CTRL>D=終了) <CTRL>D いちよ私が書いてみたものを載せます。 #include<stdio.h> #include<stdlib.h> int main(void) { struct GDATA { int bango; char sei[11],mei[11]; int tokuten; }; struct GDATA seiseki[50], tmp; int i,lo,hi,flg, kensuu, bango; FILE*fp; if((fp=fopen("data-a.dat","r"))==NULL) { printf("data-a.dat OPEN ERROR!\n"); exit(1); } for(kensuu=0;fscanf(fp,"%d%s%s%d",&tmp.bango, tmp.sei, tmp.mei, &tmp.tokuten)!= EOF;kensuu++) { seiseki[kensuu] = tmp; } printf("学生番号を入力してください\n"); while(scanf("%d", &bango)!= EOF) lo=0; hi=50 flg=0; while(flg==0&&lo<=hi) { i=(lo+hi)/2; if(bango!=seiseki[i].bango) { if(bango<seiseki[i])hi=i-1; elselo=i+1; } else flg=1; } if(flg==1)printf("%d番%s %s 得点=%d点\n",seiseki[i].bango,seiseki[i].sei,seiseki[i].mei,seiseki[i],tokuten); else printf("%d番なし\n",seiseki[i].bango); return 0; }

    • ksy9z
    • 回答数2
  • C言語の型変換(int~short)について

    Renesas HEWで、平均値を求める下記の様なプログラムを書いています。 unsigned short data[100] ; unsigned int total ; unsigend short avg_short ; unsigend int avg_int ; for (i=0; i<100 ; i++) {total += data[100];} avg_short = (short) (total / 100) ; avg_int = total / 100 ; とした場合、avg_intには、平均値が32bit(上位16bit=0)で格納されますが、 avg_shortは、0 が格納されます。 avg_intの下位16bitだけを格納するには、どうしたらよいのでしょうか?

    • yan_mou
    • 回答数3
  • 【アプリ開発】日本語を含むXMLファイル読み込み

    iOSアプリ開発しています。(iOS5 SDK/Xcode4.3/Objective-C) XMLファイル(日本語を含む)を読み込みそれを表示さたいのですが文字化けしてしまい困っています。 今、私が試しているのは「iPhone/iPadアプリ開発逆引き大全500の極意」という書籍のサンプルの中の「XMLファイルを読み込む」というサンプルです。サンプルだとXMLファイルで読み込む文字列はアルファベットなのでちゃんとうごいて文字化けせずに表示もされます。ですが、xmlファイルの読み込みたい文字列を日本語にすると「ÅÏ∞‰æ」のような感じで文字化けしてしまいます。 このサンプルのxmlファイル読み込みにはxmlParseFile関数、libxml2を使用していて、XMLファイル(persons.xml)を読み込んでUITextViewに表示するプログラムです。 サンプルのxmlファイル内にある文字列「masuda tomoaki」「yamada taro」「tanaka ziro」をそれぞれ「松田」「山田」「田中」と書き換えて保存してアプリを実行すると文字化けします。 他にどこか書き換えないといけないのでしょうか? ↓サンプルコードを付けています。 どうしたら日本語も読み込めるようになるか、どなたかアドバイスをお願いします。ネットで何日もかけて調べても解決できなかったのでどうか助けてください。 何卒よろしくお願いします。 ↓「iPhone/iPadアプリ開発逆引き大全500の極意」のサンプルダウンロードページ(この中のBasic195) http://www.shuwasystem.co.jp/support/7980html/3352.html 以下、サンプルのコード「ViewController.h」「ViewController.m」「persons.xml」です。 【ViewController.h】 #import <UIKit/UIKit.h> #include <libxml/parser.h> #include <libxml/xpath.h> @interface ViewController : UIViewController { IBOutlet UITextView *textView; } - (IBAction)clickRead:(id)sender; @end 【ViewController.m】 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } - (IBAction)clickRead:(id)sender { NSString *path = [[NSBundle mainBundle] pathForResource:@"persons" ofType:@"xml"]; xmlDocPtr doc = xmlParseFile([path cStringUsingEncoding:NSUTF8StringEncoding]); // XMLファイルを読み込む xmlXPathContextPtr context = xmlXPathNewContext(doc); xmlChar *xpath = (xmlChar*)[@"//person/name" cStringUsingEncoding:NSUTF8StringEncoding]; xmlXPathObjectPtr result = xmlXPathEval(xpath , context); xmlNodeSetPtr nodeset = result->nodesetval; NSMutableString *text = [NSMutableString string]; for ( int i=0; i<nodeset->nodeNr; i++ ) { xmlChar *element = xmlNodeListGetString(doc, nodeset->nodeTab[i]->children, 1); NSLog(@"element: %s", element); [text appendFormat:@"name: %s\n", element]; } xmlXPathFreeObject(result); xmlXPathFreeContext(context); textView.text = text; } @end 【persons.xml】 <?xml version="1.0" encoding="utf-8" ?> <persons> <person id="01"> <name>masuda tomoaki</name> <age>43</age> <address>tokyo</address> </person> <person id="02"> <name>yamada taro</name> <age>30</age> <address>oosaka</address> </person> <person id="03"> <name>tanaka ziro</name> <age>20</age> <address>hokkaido</address> </person> </persons>

    • niioroo
    • 回答数2
  • 春期の基本情報技術者試験の問題について

    基本情報試験の勉強の為に過去門を解いていたのですが 自分には分からない記述があったので質問しました 下記のプログラムの while(bp > base && *--bp != '/'); とは一体どのような処理をしているのか教えてください C言語は独学で勉強したのですがこのようなwhile文の 使用方法はどこにものっていなかったので・・・ よろしくお願いします。 問題は平成21年春期の基本情報技術者試験の 午後の問9です。 #include <string.h> void convert(const char*, const char*, char*); void convert(const char *path, const char *base, char *result){ const char *pp, *bp; char *rp; int length; /* pathが絶対パス表記の場合 */ if(*path == '/'){ ; return; } /* pathがカレントディレクトリの場合 */ if(!strcmp(path, ".") || !strcmp(path, "./")){ ; return; } length = strlen(base); bp = base + length; /* bpは文字列baseの終端を指す。*/ if(*(bp - 1) == '/') --bp; /* pathの先頭部にある".."又は"../"を解析することで, baseのパス表記のうち,どこまでresultと共通になるかを調べる。*/ for(pp = path; *pp != '\0' && *pp == '.';){ if(!strncmp(pp, "../", 3)){ pp += 3; while(bp > base && *--bp != '/'); }else if(!strncmp(pp, "./", 2)){ pp += 2; }else if(!strncmp(pp, "..\0", 3)){ pp += 2; while(bp > base && *--bp != '/'); }else{ break; } } /* baseのパス表記と共通な部分をresultに複写する。*/ length = ; strncpy(result, base, length); rp = ; *rp++ = '/'; /* pathの文字列のうち,先頭部分の"./"や".."を除いた残りの 部分(ppが指す文字列)を,resultの文字列に追加する。 */ strcpy(rp, pp); return; }

  • PICのピン数が違う製品での代用について

    ネット上で調べた電子工作を作成しようと思っております。 28ピンの16F876を用いたHEXのプログラムと回路図がありますが、 CPUやメモリ、クロックが同じでピン数が40ピンの18F877なら入手可能です。 この場合、データシートと見比べて回路図を配線し直し、16F877のPICに16F876のHEX形式のプログラムをプログラミングしても使用出来ますでしょうか? よろしくお願いします。

    • saway
    • 回答数2