ページ 1 / 1
構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 13:27
by TAXIES
構造体に登録したデータを集計したいです。わたしが作成したプログラムは以下の通りです。
どなたか間違いをご指摘お願いいたします。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "csv_lib.h"
#include "csv_struct.h"
int CMP_1(const void* p, const void* q){
return strcmp((( SALSDATA * )p)->car_code , (( SALSDATA * )q)->car_code );
}
int CMP_2(const void* p, const void* q){
return (( CARSALS * )p)->car_sals , (( CARSALS * )q)->car_sals;
}
int Kind_Each_Calculate(void){
SALSDATA salsdata[1024];
CARSALS carsals[1024];
int i = 0;
int j = 0;
int DataCount = 0;
carsals[j].car_sals = 1;
qsort(salsdata, sizeof (salsdata)/sizeof(salsdata[0]),sizeof(salsdata[0]),CMP_1);//SALSDATA car_codeでクイックソート
for(DataCount=0;DataCount<sizeof(salsdata)/sizeof(salsdata[0]);DataCount++){
if(salsdata.car_code == salsdata[i+1].car_code){
carsals[j].car_sals = carsals[j].car_sals + 1;
}else
j = j+1;
}
qsort(carsals, sizeof (carsals)/sizeof(carsals[0]),sizeof(carsals[0]),CMP_2);//CARSALS car_salsでクイックソート
printf("%s\n",carsals[0].car_sals);
return 0 ;
}
SALSDATA 構造体
1800,愛須 一史,1350,c124,09/04/16
1600,青木 豪,1710,aaaf,09/04/16
2000,青野 渉,2200,c0f5,09/04/16
1600,赤渕 由紀彦,2160,b5f1,09/04/16
1100,秋元 忠史,1920,a643,09/04/16
1200,秋谷 剛志,1280,c36c,09/04/16
CARSALS 構造体には何も入っておりません。
Re: 構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 14:06
by box
「集計」の定義が不明。
main関数など、回答しようとする側でビルドするための情報が不足。
「どうなってほしいのに実際にはどうなってしまうのか」に関する説明がない。
以上の理由により、何も指摘することができません。
Re: 構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 14:23
by 新人
何度も申し訳ありません。こちらのプログラムを実行したいです。
カーコードごとに販売台数を集計したいです。
よろしくお願いします。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
typedef struct _SALSDATA{
char branche_code[4+1];
char customer_name[64+1];
char car_code[4+1];
int option;
char date[8+1];
}SALSDATA;
typedef struct _CARSALS{
char car_code[4+1];
char car_name[64+1];
long car_sals;
}CARSALS;
int Set_Struct_SalsData(void);
SALSDATA salsdata[1024]
CARSALS carsals[1024];
int CMP_1 (const void *p, const void *q)
{
return strcmp (((SALSDATA *) p)->car_code, ((SALSDATA *) q)->car_code);
}
main(void){
int i = 0;
int j = 0;
int DataCount = 0;
carsals[j].car_sals = 1;
Set_Struct_SalsData();
qsort(salsdata, sizeof (salsdata)/sizeof(salsdata[0]),sizeof(salsdata[0]),CMP_1);//SALSDATA car_codeでクイックソート
for(DataCount=0;DataCount<sizeof(salsdata)/sizeof(salsdata[0]);DataCount++){
if(salsdata.car_code == salsdata[i+1].car_code){
carsals[j].car_sals = carsals[j].car_sals + 1;
}else
j = j+1;
}
printf("%s\n",carsals[0].car_sals);
return 0 ;
}
ライブラリ
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "csv_lib.h"
#include "csv_struct.h"
char str[CSV_RECODE_SIZE_MAX];
FILE *fp;
SALSDATA salsdata[1024];
int DataCount = 0;
int Set_Struct_SalsData(void) {
fp = fopen("sale0904.csv","r");
while(fgets(str, CSV_RECODE_SIZE_MAX, fp)){
sscanf(str, "%[^,],%[^,],%[^,],%x,%s",
salsdata[DataCount].branche_code,
salsdata[DataCount].customer_name,
salsdata[DataCount].car_code,
&salsdata[DataCount].option,
salsdata[DataCount].date);
DataCount++;
}
fclose(fp);
return 0;
}
Re: 構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 15:02
by non
ご質問の意味がわかりません。
どうあるから、どうしろと仰るので?
TAXIESさんと新人さんのご関係は?
Re: 構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 15:07
by softya(ソフト屋)
新人さんとTAXIESさんはおなじ方でしょうか?
名前の統一とコードタグの利用をお願いします。
http://dixq.net/board/board.html
Re: 構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 15:09
by PSYCO
すみません、上のプログラムでは処理が落ちてしまいます。現在、その原因を探しています。
TAXIESと新人は同じ人物です。こちらの掲示板を使うのが初めてで名前を変えて投稿してしまいました。
ご迷惑をおかけしました。申し訳御座いません。
Re: 構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 15:12
by softya(ソフト屋)
このソースコードは業務機密と関係ある情報は含まれていません? データに本当の個人情報を含んでいませんか?
過去に色々あったので、まずい場合は早めに手を打ちたいです。
Re: 構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 15:16
by non
PSYCO さんが書きました:すみません、上のプログラムでは処理が落ちてしまいます。現在、その原因を探しています。
TAXIESと新人は同じ人物です。こちらの掲示板を使うのが初めてで名前を変えて投稿してしまいました。
ご迷惑をおかけしました。申し訳御座いません。
処理が落ちるというのは、コンパイルは通るけど、実行したら暴走するという意味でしょうか?
分割ファイルでしたら extern の勉強をされた方が良いかと。
Re: 構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 15:20
by PSYCO
softya(ソフト屋) さんが書きました:このソースコードは業務機密と関係ある情報は含まれていません? データに本当の個人情報を含んでいませんか?
過去に色々あったので、まずい場合は早めに手を打ちたいです。
すべて架空のデータです。よろしくお願いします。
Re: 構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 15:22
by softya(ソフト屋)
とりあえずcodeタグしてみましたが、インデントは揃えましょう。仕事なら必須です。
新人 さんが書きました:何度も申し訳ありません。こちらのプログラムを実行したいです。
カーコードごとに販売台数を集計したいです。
よろしくお願いします。
コード:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
typedef struct _SALSDATA{
char branche_code[4+1];
char customer_name[64+1];
char car_code[4+1];
int option;
char date[8+1];
}SALSDATA;
typedef struct _CARSALS{
char car_code[4+1];
char car_name[64+1];
long car_sals;
}CARSALS;
int Set_Struct_SalsData(void);
SALSDATA salsdata[1024]
CARSALS carsals[1024];
int CMP_1 (const void *p, const void *q)
{
return strcmp (((SALSDATA *) p)->car_code, ((SALSDATA *) q)->car_code);
}
main(void){
int i = 0;
int j = 0;
int DataCount = 0;
carsals[j].car_sals = 1;
Set_Struct_SalsData();
qsort(salsdata, sizeof (salsdata)/sizeof(salsdata[0]),sizeof(salsdata[0]),CMP_1);//SALSDATA car_codeでクイックソート
for(DataCount=0;DataCount<sizeof(salsdata)/sizeof(salsdata[0]);DataCount++){
if(salsdata[i].car_code == salsdata[i+1].car_code){
carsals[j].car_sals = carsals[j].car_sals + 1;
}else
j = j+1;
}
printf("%s\n",carsals[0].car_sals);
return 0 ;
}
ライブラリ
コード:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "csv_lib.h"
#include "csv_struct.h"
char str[CSV_RECODE_SIZE_MAX];
FILE *fp;
SALSDATA salsdata[1024];
int DataCount = 0;
int Set_Struct_SalsData(void) {
fp = fopen("sale0904.csv","r");
while(fgets(str, CSV_RECODE_SIZE_MAX, fp)){
sscanf(str, "%[^,],%[^,],%[^,],%x,%s",
salsdata[DataCount].branche_code,
salsdata[DataCount].customer_name,
salsdata[DataCount].car_code,
&salsdata[DataCount].option,
salsdata[DataCount].date);
DataCount++;
}
fclose(fp);
return 0;
}
Re: 構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 15:26
by softya(ソフト屋)
結局のところ、もうひとつの質問と同じで変数のスコープと寿命をちゃんと理解することに尽きると思います。
問題は、
>分割ファイルでしたら extern の勉強をされた方が良いかと。
と既に書かれている通りです。
printfデバッグ法も伝授しておきます。
「簡単RPG講座 番外編。 デバッグ入門 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/blog.php?u=114&b=982&c=2
Re: 構造体に登録したデータを集計したいです。
Posted: 2013年6月20日(木) 16:21
by PSYCO
ありがとうございます!参考になります。