音楽歴35年・FLAKE RECORDSの店主DAWAの選ぶセンス光る注目曲ご紹介!

車の電子化が進んでいますが、カーナビやプリクラッシュセーフティシステム等のソフトウェアのプログラムは、大体、何万行あるのでしょうか?

以下のソフトウェアの大体のプログラム行数を教えてください。
1つだけでも結構ですので、ご存知の範囲でよろしくお願い申し上げます。

カーナビゲーションシステム
プリクラッシュセーフティシステム
アダプティブクルーズコントロール(ACC)
レーンキーピングアシストシステム
バッテリーコントロールシステム
ボディコントロールシステム
パワーコントロールユニットECU
ハイブリッドシステム
インバーターシステム
DC-DCコンバーターシステム
メーター
パーキングアシストシステム
操舵支援機能付き駐車アシストシステムステアリング制御ECU
エンジン制御システム
燃料噴射装置
トランスミッション制御システム
エアバッグシステム
エアコンシステム
パワーステアリング制御システム
電子制御ブレーキシステム
ABS
ESC(横滑り防止システム)
アイドリングストップシステム
電子制御EGRシステム
電子制御4WD
可変バルブ制御システム
ビューカメラ
スマートエントリ
セキュリティシステム
VSCシステム
トラクション制御システム
ETCシステム
オーディオシステム
AFS

以上、よろしくお願い申し上げます。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ちょっと調べてみたら、こんな資料が見つかりました。


http://www.ritsbagakkai.jp/pdf/462_04.pdf

表 1-3 エンジン制御MCUおよび車両全体のソフトウェアのプログラム数 を参照してください。

2010年(推計)では、パワートレイン系で700万行、車両全体で3000万行だそうです。

データの出所が 矢野経済研究所 となっていますから、矢野経済研究所が出版しているマーケティング用のデータにこのような記載があるのだと思います。業務または大学の研究でこのようなデータが必要でしたら、お金を出して買えば、出所が明らかで精度の高いデータを得られるものと思います。

参考URL:http://www.ritsbagakkai.jp/pdf/462_04.pdf
    • good
    • 0
この回答へのお礼

ご連絡いただきまして有難うございます。

御指摘のサイトは私も見ておりました。
ただ、3年前のデータであるということと、個別のプログラム行数は書かれていないので、個別の各部品毎のプログラム行数を知りたいと思っています。

矢野経済研究所の資料も購入しましたが、個別のプログラム行数は出ていませんでした。

何か新しい情報がありましたらお願いいたします。

お礼日時:2013/12/24 09:29

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QBP学習に使う学習データについて

ここ
http://mars.elcom.nitech.ac.jp/java-cai/neuro/menu.html
を参考にニューラルネットワークのBP学習のプログラムを作成しているのですが、
学習データについて疑問があります。
学習に使用する学習データをプログラムでは乱数を生成して作っている
のですが、学習データの生成に際して、データの分散や平均の大きさを
考えるべきなのでしょうか?
また考えるべきだとしたら、どのように評価したらよいのでしょうか?

Aベストアンサー

データの分散や平均の大きさを考えると、統計ですね。
参考まで。

/* Back-Propagation Program ver1.01 */

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#define INPUT 2
#define HIDDEN 4
#define OUTPUT 1
#define PATTERN 4
#define PR 100
#define MAX_T 10000
#define eta 2.4
#define eps 1.0e-4
#define alpha 0.8
#define beta 0.8
#define W0 0.5

double xi[INPUT+1],v[HIDDEN+1],o[OUTPUT],zeta[OUTPUT];
double w1[HIDDEN][INPUT+1],w2[OUTPUT][HIDDEN+1];
double d_w1[HIDDEN][INPUT+1],d_w2[OUTPUT][HIDDEN+1];
double pre_dw1[HIDDEN][INPUT+1],pre_dw2[OUTPUT][HIDDEN+1];
double data[PATTERN][INPUT],t_data[PATTERN][OUTPUT];

void load_data(char *filename);
void back_propagation();
void w_init();
double ranran();
void dw_init();
void xi_set(long int t, int p);
void forward(long int t);
void backward();
double calc_error();
void modify_w();
void w_print();
double sigmoid(double u);

main(int argc, char *argv[])
{
load_data(*++argv);

back_propagation();

w_print();
}

void load_data(char *filename)
{
int p,k,i;
double value;
FILE *fp;

fp = fopen(filename,"r");
if( fp == NULL ) {
fprintf(stderr,"File Open Error!\n");
exit(0);
}

for( p=0 ; p < PATTERN ; p++ ){
for( k=0 ; k < INPUT ; k++ ){
fscanf(fp," %lf",&value);
data[p][k] = value;
}
for( i=0 ; i < OUTPUT ; i++ ){
fscanf(fp," %lf",&value);
t_data[p][i] = value;
}
}
fclose(fp);

printf("Input Desired\n");
for( p=0 ; p<PATTERN ; p++ ){
printf("{");
for( k=0 ; k<INPUT ; k++ )
printf(" %.0lf,",data[p][k]);
printf("} -> {");
for( i=0 ; i<OUTPUT ; i++)
printf("%.0lf,",t_data[p][i]);
printf("}\n");
}
putchar('\n');

}

void back_propagation()
{
long int t;
int p;
double E,Esum;

w_init();

for( t=0 ; t < MAX_T ; t++ ){

dw_init();

for( p=0, Esum=0 ; p < PATTERN ; p++ ){
xi_set(t,p);
forward(t);
backward();
Esum += calc_error();
}

modify_w();

E = Esum / (OUTPUT * PATTERN);
if( t%PR == 0 )
printf("%ld %e\n",t,E);

if( E < eps )
break;
}

printf("\nTime = %ld",t);
if( t == MAX_T )
printf(" (MAX) You must retry!");
putchar('\n');

for( p=0 ; p < PATTERN ; p++ ){
xi_set(0,p);
forward(0);
}

printf("E = %e\n",E);
}

void w_init()
{
int i,j,k;
long time_t;

time_t = time(NULL);
//srand48(time_t);
srand(time_t);

for( j=0 ; j < HIDDEN ; j++ )
for( k=0 ; k <INPUT+1 ; k++ ){
w1[j][k] = ranran();
d_w1[j][k] = 0.0;
}
for( i=0 ; i < OUTPUT ; i++ )
for( j=0 ; j < HIDDEN+1 ; j++ ){
w2[i][j] = ranran();
d_w2[i][j] = 0.0;
}
}

double ranran()
{
double r;

//r = drand48();
r = rand();
r = r * 2*W0 - W0;

return r;
}

void dw_init()
{
int i,j,k;

for( j=0 ; j < HIDDEN ; j++)
for( k=0 ; k < INPUT+1 ; k++ ){
pre_dw1[j][k] = d_w1[j][k];
d_w1[j][k] = 0.0;
}
for( i=0 ; i <OUTPUT ; i++ )
for( j=0 ; j < HIDDEN+1 ; j++ ){
pre_dw2[i][j] = d_w2[i][j];
d_w2[i][j] = 0.0;
}
}

void xi_set(long int t, int p)
{
int i,k;

if( t%PR == 0 ) printf("Input ");

for( k=0 ; k < INPUT ; k++ ){
xi[k] = data[p][k];
if( t%PR == 0 ) printf(" %.0lf ",xi[k]);
}

xi[INPUT] = 1.0;

if( t%PR == 0 ) putchar('(');

for( i=0 ; i < OUTPUT ; i++ ){
zeta[i] = t_data[p][i];
if( t%PR == 0 ) printf(" %.0lf ",zeta[i]);
}

if( t%PR == 0 ) printf(")\n");
}

void forward(long int t)
{
int i,j,k;
double sum;

for( j=0 ; j < HIDDEN ; j++ ){
for( k=0, sum=0 ; k < INPUT+1 ; k++ )
sum += xi[k] * w1[j][k];
v[j] = sigmoid(sum);
}

if( t%PR == 0 ) printf("Output ");

v[HIDDEN] = 1.0;

for( i=0 ; i < OUTPUT ; i++ ){
for( j=0, sum=0 ; j < HIDDEN+1 ; j++ )
sum += v[j] * w2[i][j];
o[i] = sigmoid(sum);
if( t%PR == 0 ) printf(" %.4lf",o[i]);
}
if(t %PR == 0 ) putchar('\n');
}

void backward()
{
int i,j,k;
double delta2[OUTPUT],delta1[HIDDEN+1],sum;

for( i=0 ; i < OUTPUT ; i++ )
delta2[i] = beta * o[i] * (1-o[i]) * (zeta[i]-o[i]);

for( j=0 ; j < HIDDEN ; j++){
for( i=0, sum=0 ; i < OUTPUT ; i++ )
sum += w2[i][j] * delta2[i];
delta1[j] = beta * v[j] * (1-v[j]) * sum;
}

for( i=0 ; i < OUTPUT ; i++ )
for( j=0 ; j < HIDDEN+1 ; j++)
d_w2[i][j] += delta2[i] * v[j];

for( j=0 ; j < HIDDEN ; j++ )
for( k=0 ; k < INPUT+1 ; k++ )
d_w1[j][k] += delta1[j] * xi[k];
}

double calc_error()
{
double E=0;
int i;

for( i=0 ; i < OUTPUT ; i++ )
E += (zeta[i]-o[i]) * (zeta[i]-o[i]);

return E;
}

void modify_w()
{
int i,j,k;

for( i=0 ; i < OUTPUT ; i++ )
for( j=0 ; j < HIDDEN+1 ; j++ ){
d_w2[i][j] = eta * d_w2[i][j] + alpha * pre_dw2[i][j];
w2[i][j] = w2[i][j] + d_w2[i][j];
}

for( j=0 ; j < HIDDEN ; j++)
for( k=0 ; k < INPUT+1 ; k++ ){
d_w1[j][k] = eta * d_w1[j][k] + alpha * pre_dw1[j][k];
w1[j][k] = w1[j][k] + d_w1[j][k];
}
}

void w_print()
{
int i,j,k;

printf("Weight\n");
for(j =0 ; j < HIDDEN ; j++ ){
printf("w1[%d]={",j);
for( k=0 ; k < INPUT ; k++ ){
if( k != 0 )
putchar(',');
printf("%.6lf",w1[j][k]);
}
printf("} theta1[%d]=%.6lf\n",j,w1[j][k]);
}

for( i=0 ; i < OUTPUT ; i++ ){
printf("w2[%d]={",i);
for( j=0 ; j < HIDDEN ;j ++ ){
if( j != 0 )
putchar(',');
printf("%.6lf",w2[i][j]);
}
printf("} theta2[%d]=%.6lf\n",i,w2[i][j]);
}
}

double sigmoid(double u)
{
return 1.0 / (1.0+exp(-beta*u));
}

データの分散や平均の大きさを考えると、統計ですね。
参考まで。

/* Back-Propagation Program ver1.01 */

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#define INPUT 2
#define HIDDEN 4
#define OUTPUT 1
#define PATTERN 4
#define PR 100
#define MAX_T 10000
#define eta 2.4
#define eps 1.0e-4
#define alpha 0.8
#define beta 0.8
#define W0 0.5

double xi[INPUT+1],v[HIDDEN+1],o[OUTPUT],zeta[OUTPUT];
double w1[HIDDEN][INPUT+1],w2[O...続きを読む

Q最も文字数が多い行番号と文字数を求めて出力するプログラム

タイトルの通りです。
何から始めていいのかわからないんでヒント教えてほしいです。
よろしくおねがいします。

Aベストアンサー

以下のサンプルは、string.hを使わない方法です。
でも、本当は、文字列の長さは、strlen関数使うと簡単なのは覚えておいてください。
最大文字数と最小文字数の両方をチェックします。

※このプログラムの制限事項
(1)1行の長さはNULLを含めて最大128バイト
(2)同じ長さの行が複数あっても一番最初の行が答えとなる。

FILE *stream;
char szLine[128];
int nMaxLen = 0;    // 最大文字数
int nMaxLineNo = 0;   // 最大文字数の行番号
int nMinLen = 0;    // 最小文字数
int nMinLineNo = 0;   // 最小文字数の行番号

if( (stream = fopen( "C:\\sample.txt", "r" )) != NULL )
{
  // ファイルオープン成功
  for (int nLineNo = 1; ; nLineNo++) {
    if( fgets( szLine, sizeof(szLine), stream ) == NULL)
    {
      // エラーあるいはファイルの終わりに達したのでループを抜ける
      break;
    }
    else
    {
      // strlenが使えないので自分で文字列の長さを調べる
      for (int nLength = 0; nLength < sizeof(szLine); nLength++) {
        if (szLine[nLength] == '\n') {
          // 行の最終に達したのでループを抜ける
          break;
        }
      }
      if (nLineNo == 1) { // ファイルの1行目の時
        // ファイルの1行目の文字数と行番号は強制的に最小値としておく
        nMinLen = nLength;
        nMinLineNo = nLineNo;
      }
      // 最大文字数チェック
      if (nMaxLen < nLength) {
        // 今回readした行は今までで一番長いのでこれを最大値とする
        nMaxLen = nLength;
        // この時の行番号を最大文字数の時の行番号として覚えておく
        nMaxLineNo = nLineNo;
      }
      // 最小文字数チェック
      if (nMinLen > nLength) {
        // 今回readした行は今までで一番短いのでこれを最小値とする
        nMinLen = nLength;
        // この時の行番号を最小文字数の時の行番号として覚えておく
        nMinLineNo = nLineNo;
      }
    }
  }
  fclose( stream );
}
printf("最大文字数=%d文字(%d行目)、最小文字数=%d文字(%d行目)\n", nMaxLen, nMaxLineNo, nMinLen, nMinLineNo);

以下のサンプルは、string.hを使わない方法です。
でも、本当は、文字列の長さは、strlen関数使うと簡単なのは覚えておいてください。
最大文字数と最小文字数の両方をチェックします。

※このプログラムの制限事項
(1)1行の長さはNULLを含めて最大128バイト
(2)同じ長さの行が複数あっても一番最初の行が答えとなる。

FILE *stream;
char szLine[128];
int nMaxLen = 0;    // 最大文字数
int nMaxLineNo = 0;   // 最大文字数の行番号
int nMinLen = 0;    // 最小文字数
int nMinLine...続きを読む

Q音楽ゲームのソースプログラムが見つかりません。

学校の授業で音楽ゲームをC言語で作ろうと考たのですが、音楽ゲームといってもピンとこないですよね・・・どのようなゲームというと・・・音楽がかかり、判定バーに向けて落ちてくる物体を判定バーと重なった時に指定されたキーボードで打って得点を稼ぐというゲームです。
私の学校はゲーム専門の学校ではないので1からプログラムを組むのは難しいと思い、インターネット上で公開されているサンプルソースを少しずつ変えて作ろうと考えたのですが・・ソースプログラムを探しても全然見つかりません!
どなたかC言語で作られた音楽ゲームでソースプログラムが見られるサイトを教えていただきませんか?お願いします。

Aベストアンサー

以前まさにそういうゲームを作ったことがあります。
ちょうどその時に使ったライブラリが1番の方が回答したDXライブラリで
す。

現在はDXライブラリ3Dで3Dのビーマニのようなものを作成していますが、
基本は2Dも3Dも同じですのでとりあえずその仕組みを話します。

仕組みが分かれば人のソースを読むより自分で考えた方がはるかに速いです。

まず
鍵盤のx, y座標および発生フラグをあらわす変数を配列などで数十個ほど用意しておきます。
この際構造体にして配列で扱うとより楽かもしれません。

typedef struct {
  int x, y;   //x,y座標
  int isEnable; //発生フラグ
} Object_t;
Object_t ob[ 100 ];

簡単な流れ:
1 背景の画像を描画
2 物体を周期的に各ラインごとにランダムに発生させる
(発生させる時は発生フラグをTRUEにして、y座標を0に戻します)
3 発生フラグが『有効な物体のみ』描画し、y座標を下に下げる
(これにより流れる物体が実現します)
4 一番下まで流れたら物体の発生フラグをFALSEに
(コレにより一番下まで流れた物体は描画されなくなります)

後はキー入力による判定です。
キー入力では複数のキーを同時に判定する必要があります。
DXライブラリではGetHitKeyStateAllがあるのでそれを使うのが一番楽でしょう。

各ラインごとに設定してあるキーが押されたらその押された瞬間から物体が近くに存在すれば
それがどの程度離れているかでGreat, Good, Bad, Too Badなどのランクを決めます。
また、この際にはDXライブラリではGetNowCountなどの時間関数を使ってタイミングを合わせる必要があるでしょう。

見栄えやエフェクトは後からいくらでも質を上げられるので、とりあえずこの点を
抑えておけば大丈夫です。
尚、音楽にあわせて物体が流れる・・というのがやりたければ、ランダムに
物体を発生させるのではなく、音楽にあわせたデータを作る必要があります。
指定のタイミングで指定のラインに発生!とかです。
データはテキストファイルで読み込ませるのが良いでしょう。仮に作るのであれば

Data.txt---------------------------------------------------
100 //全体の流れるスピード
100,2 //ゲーム開始から110ミリ秒後に2番のラインに物体発生
110,3,4 //110ミリ秒後に3,4番の位置に物体発生
300,4 //300ミリ秒後に4番の位置に発生

という感じでやるのが楽かなと思います。もちろん読み込み部分を自作するのは
面倒なので、まずはランダムな発生から挑戦されるのが良いかと思います。

以上ざっと説明しましたが、個人的には作れば分かるの一言に尽きると思います。
何はともあれ作り出すと見えてくるものが全然変わるのでとりあえず作り始めてはどうでしょうか?

以前まさにそういうゲームを作ったことがあります。
ちょうどその時に使ったライブラリが1番の方が回答したDXライブラリで
す。

現在はDXライブラリ3Dで3Dのビーマニのようなものを作成していますが、
基本は2Dも3Dも同じですのでとりあえずその仕組みを話します。

仕組みが分かれば人のソースを読むより自分で考えた方がはるかに速いです。

まず
鍵盤のx, y座標および発生フラグをあらわす変数を配列などで数十個ほど用意しておきます。
この際構造体にして配列で扱うとより楽かもし...続きを読む

Q10進⇔16進変換プログラム

こんにちは、C言語を独学しているものです。
すみませんがお助け頂けますでしょうか?

C言語の基礎の本のプログラムをそのままコピーしていますが、
私のミス(自分で自覚なし)のためうまく生成できません。
(1)エラーで言っているLについて どうやって修正すべきでしょうか?

(2)また、ソース内の/* このソースコードの意味が理解できません */ コメントについて
どういう意味を示しているのかお手数ですが教えて頂けませんか?

返信が遅くなるかもしれませんが、必ず目を通し、学ばせて頂きます。
お手数をお掛けしますがよろしくお願いします。

★ゆみころ★


************ルール*************
1)プロンプトを表示する
2)”d またはD 10進”が入力されたら 16進へ変換
3)”h,またはH 16進”が入力されたら 10進へ変換
4)”qまたはQ”が入力されたら 終了
5)変数あ 変換指定を保持するフラグと変換すべき数値を保持するものを用意する。


*******ソースコード***********
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
char conv_flag[2];
unsigned long data;
int loop;

for(loop=1;loop;) /*意味がわかりません。Loop=1で初期化(これはOK理解できる);Loop ここでループ継続条件なのですが、なぜLoopだけなのかわかりません*/
{
printf("\n>");
if(scanf("%1s",&conv_flag[0]) ==EOF)
{
continue; /*errorのためこれ以降処理しない*/
}

switch(conv_flag[0])
{
case 'd':/*10->16*/
case 'D':
if(scanf("%ld",&data)=!1) /*意味がわかりません。なぜ=!1 ? これはl (Long) の間違えでしょうか?本には1(いち)に見えますが。。。*/

{
scanf("%*s");/*意味がわかりません。入力した文字の始めの一文字目のスペースを読み捨てるということでしょうか?*/

continue;
}
printf(" =%lX(HEX)",data);
break;


case 'h':/*16->10*/
case 'H':
if(scanf("%lx",&data)=!1)
{
scanf("%*s");
continue;
}
printf(" =%lu(DEC)",data);
break;


case 'q':/*16->10*/
case 'Q':
loop=0;
break;

default:
scanf("%*s");
break;
}
}
}



*****エラーメッセージ************


C:\Practice>bcc32 16.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
16.cpp:
Error E2277 16.cpp 21: Lvalue required in function main()
Error E2277 16.cpp 32: Lvalue required in function main()
*** 2 errors in Compile ***

こんにちは、C言語を独学しているものです。
すみませんがお助け頂けますでしょうか?

C言語の基礎の本のプログラムをそのままコピーしていますが、
私のミス(自分で自覚なし)のためうまく生成できません。
(1)エラーで言っているLについて どうやって修正すべきでしょうか?

(2)また、ソース内の/* このソースコードの意味が理解できません */ コメントについて
どういう意味を示しているのかお手数ですが教えて頂けませんか?

返信が遅くなるかもしれませんが、必ず目を通し、学ばせて頂きます。
お手数...続きを読む

Aベストアンサー

for( 式A ; 式B ; 式C) {処理}


式A ;
whil( 式B ) {
処理
式C;
}

とほぼ同じです。
/* 処理中にcontinueがあると、式Cが評価する/しないの違いが出ます。 */

また、式A,B,Cは省略可能です。


初心者向け解説だと、式Bやif,whileの()の中等を、ただ「条件」とか説明していることもありますが
正確には「式」です。
「Loop」のような変数だけ、「5」といった数値だけ、というのも式です。
「a<b」は「a < b なら1,そうでないなら0」という評価(計算)をする「式」です。(#3に-1とありますが、 間違いです。C言語では1になります。他の言語で-1になるものもありますので、混同したのでしょう)

そして、式を評価した値が「真」か「偽」かで処理を分岐します。
C言語では
偽: 0
真: 0以外
となっています。

なので、
for(i=0;i<10;++i)
を、より説明的に書くと
for(i=0; (i<10) != 0 ; ++i)
の意味になります。(!=自体が比較演算子で、0か1を返すのですが)

ということで、
> for(loop=1;loop;)


loop=1 ;
while(loop){
処理;
/* 式3は無し */
}
であり、
while(loop){

while(loop != 0){
と同義です。

この変数loopのように、状態の真/偽だけを記憶させるような変数を「フラグ」と呼びます。フラグを使う場合、わざわざ0や1と比較しないんで、次のように書くケースが多いです。
if( flag )~ /* 条件成立 : flag !=0 , flag == 1とはあまり書かない*/
if( ! flag )~ /* 条件不成立 : flag ==0 , flag != 1とはあまり書かない*/

whileでなくforを使っているのは、理由はわかりません
・whileよりforの方が効率的なオブジェクトができるコンパイラがある、と聞いたことあったような
・「whieを使わない」というコーディング規則がある、と聞いたことあったような
・とりあえず、「C言語っぽく見える」


> if(scanf("%ld",&data)=!1) /*意味がわかりません。なぜ=!1 ? これはl (Long) の間違えでしょうか?本には1(いち)に見えますが。。。*/

こういうのを理解して修正するときのコツは
・ここで何をしようとしているか考える
・使われている関数のマニュアルを読む
です。ただ見た通りに打ち込むだけでなく、それが持つ意味を考えながら入力するのが、上達のコツです。


まず、 =! などという演算子は無いので、 != の間違いか、 「= での代入」 + 「単項演算子!で次の値を否定」です。

ですが =の前が関数です。関数に代入などできません。
「 Lvalue required」→「左辺値 (=の左辺に利用できる、代入可能な値。例えば変数等)が必要」
とは、これを示すエラーです。

よって、 != の間違いだとわかります。


scanfのマニュアルには次のように書いてあると思います
「戻り値: 読み込みに成功した項目数。 失敗時には(略)」

scanf("%ld",&data) では、 %によって読み込む項目は「1」です。
よって、成功すれば、項目数である1が返るはずです。失敗すれば、1でない値が返るはずです。

以上を考えると
if(scanf("%ld",&data)!= 1)

「書式%ldに合致した値をdataに読みこむ → 失敗したら(!=1) 以下の処理を実行する」
となります。
「以下の処理」が%*sによる空読みであることを考えれば、この解釈で間違いは無いでしょう。

for( 式A ; 式B ; 式C) {処理}


式A ;
whil( 式B ) {
処理
式C;
}

とほぼ同じです。
/* 処理中にcontinueがあると、式Cが評価する/しないの違いが出ます。 */

また、式A,B,Cは省略可能です。


初心者向け解説だと、式Bやif,whileの()の中等を、ただ「条件」とか説明していることもありますが
正確には「式」です。
「Loop」のような変数だけ、「5」といった数値だけ、というのも式です。
「a<b」は「a < b なら1,そうでないなら0」という評価(計算)をする「式」です。(#3に-1とありますが、 間違いです。C言...続きを読む

Q【質問サイトの回答はAIの人工知能「あい」プログラムが自動で回答していることを知りました】 質問サイ

【質問サイトの回答はAIの人工知能「あい」プログラムが自動で回答していることを知りました】

質問サイトのOK WAVEと教えて!gooは人工知能の「あい」プログラムが自動で回答している。

最近になって質問の文末に※の補足が入るようになった。

例えばエクセルの質問をすると

※エクセルとはMicrosoftのExcelのことです

と注釈が付くようになって、まさか質問サイトの運営スタッフがいちいち入力していないと思って調べたら質問サイトの回答をAIの人工知能プログラムが行なっているという。

人工知能のあいの回答は補足機能だけなのだろうか?

質問1:

『人工知能のあいの回答は補足機能だけなのだろうか?』

本題の回答まで行っているのだろうか?

ロボット相手に回答のお礼をしたら滑稽でしかない。

いや、ロボットにもちゃんとお礼をすべきなのだろうか?

質問2:

『ロボットにもお礼をするべきなのだろうか?』

yahoo!知恵袋も恋愛カテゴリーのみAIの人工知能が回答しているそうだ。

質問3:

『yahoo!知恵袋のAIの人工知能が回答した質問を見て見たいのでサンプル例を教えてください』

以上、質問は3つです。

【質問サイトの回答はAIの人工知能「あい」プログラムが自動で回答していることを知りました】

質問サイトのOK WAVEと教えて!gooは人工知能の「あい」プログラムが自動で回答している。

最近になって質問の文末に※の補足が入るようになった。

例えばエクセルの質問をすると

※エクセルとはMicrosoftのExcelのことです

と注釈が付くようになって、まさか質問サイトの運営スタッフがいちいち入力していないと思って調べたら質問サイトの回答をAIの人工知能プログラムが行なっているという。

人工知能のあいの...続きを読む

Aベストアンサー

オシエル君の事?
一応回答時に

--------
こちらは教えて!gooのAI オシエルからの回答です。
オシエルについてもっと詳しく知りたい方はこちらから↓
http://oshiete.goo.ne.jp/ai

って最後に付いてますから人かAIか解る様になってます
オシエル君の実力は上のURLから確認してください

お礼云々は考え方だと思いますよ
ネットの向こう側の赤の他人なんて何考えてるか解らない
故に回答という返信があり、それに対してどう質問者の思考が変化したか
その意思表示の為にお礼を使っても良い
感謝のお礼か、回答者の回答を読んだ結果思った事を書くお礼か
後者の場合ならオシエル君の回答へお礼を書いても良いと思います
自分が変わるきっかけを作ってくれた存在。それに対して感謝の気持ちが
無いのはどうだろうか?って事

Qn進数を10進数に変換するプログラムがわかりません

整数n(2<=n<=16)とn進数の数字列digitsを与えると10進数に変換して表示するプログラム
関数void base2dec(int n, string digits, int &dec)を使用する

実行例 110101(2)=53
123(8)=83
7ACE(16)=31438
以下はとりあえずつくったみたプログラムです
#include<iostream>
#include<string>
using namespace std;
void base2dec(int n, string digits, int &dec)
{
int i,x=0;
for(i=0; i=digits.size()-1; i++)
{
if(n<10)
{
x=digits[i]-'0';
}
else
{
x=digits[i]-'A'+10;
}
dec=(x*n);
if(cin >> digits[i++])
{
if(n<10)
{
dec=dec+(digits[i++]-'0');
}
else
{
dec=dec+(digits[i++]-'A'+10);
}
}
}
int value = dec;
}

int main()
{
int n,value;
string digits;
cout << "何進数ですか-->";
cin >>n;
cout << "数字列を入力してください-->";
cin >>digits;;
base2dec(n,digits,value);
cout << digits << "(" << n << ")=" << value << endl;
return 0;
}

void関数の中、特に計算方法が間違っていると思うのですが、なにがいけないかわかりません。ちなみにn進数から10進数に直す方法は理解しています。

整数n(2<=n<=16)とn進数の数字列digitsを与えると10進数に変換して表示するプログラム
関数void base2dec(int n, string digits, int &dec)を使用する

実行例 110101(2)=53
123(8)=83
7ACE(16)=31438
以下はとりあえずつくったみたプログラムです
#include<iostream>
#include<string>
using namespace std;
void base2dec(int n, string digits, int &dec)
{
int i,x=0;
for(i=0; i=digits.size()-1; i++)
{
if(n<10)
{
x=digits[i]-'0';
}
else
{
...続きを読む

Aベストアンサー

★アドバイス
>for(i=0; i=digits.size()-1; i++){
 ↑
 この行がおかしいです。
 間違い⇒for(i=0; i=digits.size()-1; i++){
 正しい1⇒for(i=0; i<=digits.size()-1; i++){
 正しい2⇒for(i=0; i<digits.size(); i++){
 ※回答者 No.1 さんのアドバイス通りです。
>void関数の中、特に計算方法が間違っていると思うのですが、なにがいけないかわかりません。
 ↑
 『dec=(x*n);』ここが違う気がします。
 『dec=(dec*n+x);』とすればいいと思いますけど。
>ちなみにn進数から10進数に直す方法は理解しています。
 ↑
 理解しているのなら『dec=(dec*n+x);』となると思いますが…。

その他:
>if(cin >> digits[i++]){ … }
 ↑
 このifブロック内は必要なのか?
 どういう意味。
>int value = dec;
 ↑
 最後のこの行は意味ないね。
 『value』を参照してないし。
 戻してないし。
 そもそも dec が『参照』ですよ。
 http://next1.msi.sk.shibaura-it.ac.jp/MULTIMEDIA/CPPPUBLISH/node8.html→『ポインタと参照』
 このリンクを読みましょう。
・以上。あと16進などのA~Fは大文字専用ですね。小文字だと上手く変換できませんよ。

参考URL:http://next1.msi.sk.shibaura-it.ac.jp/MULTIMEDIA/CPPPUBLISH/node8.html

★アドバイス
>for(i=0; i=digits.size()-1; i++){
 ↑
 この行がおかしいです。
 間違い⇒for(i=0; i=digits.size()-1; i++){
 正しい1⇒for(i=0; i<=digits.size()-1; i++){
 正しい2⇒for(i=0; i<digits.size(); i++){
 ※回答者 No.1 さんのアドバイス通りです。
>void関数の中、特に計算方法が間違っていると思うのですが、なにがいけないかわかりません。
 ↑
 『dec=(x*n);』ここが違う気がします。
 『dec=(dec*n+x);』とすればいいと思いますけど。
>ちなみにn進数から10進数に直す方法...続きを読む

Q代理ですが、すごく困っています。自動更新のプログラム

PCが使えない状態なので、代理で投稿しています。

ウィンドウズを再インストールして(SP1)自動更新をした時におきた現象なのですが
最初の自動更新では3個の更新があってインストールして、再起動した後 
さらに自動更新で47個のプログラムがあります、となり、インストールしおたのですが
インストールした次の再起動から 「ご迷惑をおかけしています。
ウィンドウズが正しく起動できませんでした」 というセーフモードを選択できる画面が出てきて
どうやってもデスクトップ画面までいかなくなってしまいます。

明らかに自動更新プログラムに問題があるわけですが、
自動更新をしないわけにもいかず、
SP2も入れたいのですが

どこに問題があるのでしょうか?
お教え頂けると助かります。

Aベストアンサー

カスタムを選んだ場合には、高速を選ぶ又は、少しづつインストール(10から20程度)するといけるはず。

Q「ファイルの行数を計算するプログラム」を使用して2個の同じソース内容で判断した場合の結果が

早速ですが、このサイトでご紹介していただいた「VS2013 x86 Native Tools コマンド プロンプト」コンパイラソフト ビジュアルスタジオを使っています。
早速、第一回目の試験をしました。
(これから、コンパイルができるソフトが手に入ったことにより身が入った勉強ができそうす。^^)

 さて、「ファイルの行数を計算するプログラム」を使用して以下のソースを試しました。

 それで、試したことは、同じプログラムが2個あります。
 この2個のファイルは「ファイルの行数を計算するソース」です。
  以下、ご覧になられてお分かりと存じますが、Enterキーで改行していない最初のソースは
 gyousuu=1と出まして、2番目のプログラムはEnterキーで改行をしたソースで結果が
gyousuu=22とでます。
 それではQ?です。
 「ファイルの行数を計算するプログラム」は行数を1行とか2行とか、あるいは22行とか判断する場合に、何を基準に判断しているのでしょうか!?
 私的にはキーボードから入力されてEnterキーで改行した回数をカウントしているとしか思えない結果だと判断しました。間違いないでしょうか? たしかC言語は\nが改行と私は認識していますが!
 以下の各ソースの中に\nが3個しかないのでgyousuu=3と出ると思ったのですが!?
 「Enterキーで改行」を一行とみなしてこのプログラムが判断しているのであれば、\nがC言語の改行とは何なのでしょうか!?
 何か矛盾が生じている気がします。つきまして、私はまだ素人なのでそこのところがよくわかりません?
 皆様はどう判断されますでしょうか?よろしくお願いいたします。
-------------------------------------------------------------------------------
以下のプログラムは、Enterキーによる改行はしえいなくて一つにつながったいます。
#include <stdio.h>int main(int argc, char *argv[]){FILE *fp;char gyou[1024];int gyousuu = 0;if ( argc < 2 ){printf("file mei ga nai\n");return -1;}fp = fopen(argv[1], "r");if ( fp == NULL ){printf("fopen dekinai\n");return -2;}while(fgets(gyou, sizeof(gyou), fp) != NULL){gyousuu++;}fclose(fp);printf("gyousuu=%d\n", gyousuu);return 0;}

以上を行数が判断できるプログラムを使用して判断したところ以下の結果となりました。
c:\msys>example9 example9.c
gyousuu=1
-------------------------------------------------------------------------------------------------
以下のプログラムのファイルは各段落ごとにEnterキーで改行しています。
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *fp;
char gyou[1024];
int gyousuu = 0;
if ( argc < 2 ){
printf("file mei ga nai\n");
return -1;
}
fp = fopen(argv[1], "r");
if ( fp == NULL ){
printf("fopen dekinai\n");
return -2;
}
while(fgets(gyou, sizeof(gyou), fp) != NULL){
gyousuu++;
}
fclose(fp);
printf("gyousuu=%d\n", gyousuu);
return 0;
}
 以上を行数が判断できるプログラムを使用して判断したところ以下の結果となりました。
c:\msys>example9 example9.c
gyousuu=22

早速ですが、このサイトでご紹介していただいた「VS2013 x86 Native Tools コマンド プロンプト」コンパイラソフト ビジュアルスタジオを使っています。
早速、第一回目の試験をしました。
(これから、コンパイルができるソフトが手に入ったことにより身が入った勉強ができそうす。^^)

 さて、「ファイルの行数を計算するプログラム」を使用して以下のソースを試しました。

 それで、試したことは、同じプログラムが2個あります。
 この2個のファイルは「ファイルの行数を計算するソース」です。
...続きを読む

Aベストアンサー

行数を数えるプログラムは、ファイル中に実際にある改行の個数を数えます。

ファイル中の \n は改行ではありませんので、無関係です。
"\n" や '\n' とCプログラムソースの中に書いておくと、コンパイラがそれを改行に変換します。変換前はたんなる \n という2文字です。

Qプログラムがアンインストールできない。Win7

困っています。アドバイス頂ければ、光栄です。
プログラムがアンインストールできません。
コンピューターに関して素人なので、原因究明にあたり足りない情報がありましたら、ご指摘下さい。

画像のような、青いアンインストール画面が一瞬表示された後、すぐにエラーの表記が出ます。
アンインストール時に、背面に有る、青いウィンドウが表示されないプログラムはアンインストールできました。
付仙人などは、アンインストールできました。

どうして、こういったものだけ、アンインストールできないのでしょうか?
エラーウィンドウに表示されてる全文は下記になります。

エラーコード:-5006 : 0x80030005
エラー情報:
>Kernel\CABFile.cpp (806)
>SetupNew\SetupDLL.cpp (822)
pAPP:フレッツ接続ツール
PVENDOR:
PGUID:794949C8-75BB-44B3-A89E-B19949784C0D
$12.0.0.58855
@Windows (6000) BT_OTHER 0.0

宜しくお願いします。

困っています。アドバイス頂ければ、光栄です。
プログラムがアンインストールできません。
コンピューターに関して素人なので、原因究明にあたり足りない情報がありましたら、ご指摘下さい。

画像のような、青いアンインストール画面が一瞬表示された後、すぐにエラーの表記が出ます。
アンインストール時に、背面に有る、青いウィンドウが表示されないプログラムはアンインストールできました。
付仙人などは、アンインストールできました。

どうして、こういったものだけ、アンインストールできないのでしょ...続きを読む

Aベストアンサー

★フレッツ接続ツールアンインストールの手順
http://flets.com/customer/tec/adsl/setup/setup.html
にそっていますか。

★Bフレッツ フレッツ・ADSL「フレッツ接続」ツールダウンロードページ|フレッツ公式|NTT東日本
http://flets.com/customer/fct/ba_index.html
最新のフレッツ接続ツールを上書きする形でインストールし直してみるとどうでしょうか。

______________________

システムの復元を行うなら、何を復元して何を復元せず、その間の不整合にどう対処すれば良いのかを確立した上でないと、別の不具合を呼びますのでお勧めはできません。

Q画像処理プログラムで細線化を行っています。

画像処理プログラムで細線化を行っています。
「田村の方法」を用いようと思い、
http://imagingsolution.blog107.fc2.com/blog-entry-138.html
を参考にプログラム作成したのですが、うまくいきません。

他に参考になるサイト、文献などありましたら教えてください。
よろしくお願いします。

Aベストアンサー

そのページを参考にして作ればちゃんとできそうな感じですけど。
あなたが作ったソースを公開すれば、アドバイスが付くかもしれません。


人気Q&Aランキング