• 締切済み

プログラムを作ったのですがエラーメッセージが出ます

原因がわかりません。他にもいくつか作ったのですが他のものはコンパイルします。 エラーメッセージ fatal error c1083 ソースファイルが開けません 因みに作ろうとしているプログラムは * ** *** **** ***** **** *** ** * を描画させるものです #include<stdio.h> main() { int i, j; int k; for(i=1; i<=9; i++){ if(i<5){ k=i; } if(i>=5){ k=10-i; } for(j=1; j<=k; j++){ printf("*"); } printf("\n"); } }

みんなの回答

回答No.3

該当するソースファイルを何か別のエディタ、例えばWORD何かで開いたままコンパイルないしリビルドかけようとしてませんか?

  • ferien
  • ベストアンサー率64% (697/1085)
回答No.2

このプログラムで出力できるので、中身に間違いはないと思います。 ソースファイル名に間違いがないかどうか、確認した方がいいと思います。

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

「ソースファイルが開けません」と書いてあるのですから、 ソースファイルが開けなくてエラーになっているのでは? ソースのパスは合っていますか? コンパイル時に間違ったファイルを指定したりしていませんか? 中身が正しいかどうかはその後の話です。

関連するQ&A

  • C言語 エラー表示 break の位置が誤っている(関数 main ) 

    #include<stdio.h> int main(void){ int n,i,j,k; char c='*'; printf("正の整数:"); scanf("%d",&n); if(n>0){ for(i=1;i<=n;i++){ printf("%d",i); for(j=1;j<=n+1-i;j++){ if(j==1){ if(i-1>0){ for(k=i-1;k>0;k--){ printf(" "); } } } printf("%c",c); } printf("\n"); } } break; return 0; } これをコンパイルすると「break の位置が誤っている(関数 main )」と表示されるのですが何でですか? 困ってます↓

  • n次の奇数魔方陣をつくるプログラム

    どうしてもエラーが出てしまいます。少なくとも、「int mahojin[n+1][n+1],i,j,k;」あたりの行が間違っているらしいのですが、なぜだかわかりません。アドバイスお願いします!!(スペースが上手く入らなくて、全角スペースを使ってますが気にしないでください。) #include<stdio.h> int main(void) {  int n;  printf("n(ただし、nは奇数)=?");scanf("%d",&n);  int mahojin[n+1][n+1],i,j,k;  j=(n+2)/2;i=0;  for(k=1;k<=n*n;k++){     if((k%n)==1)      i++;     else {      i--;j++;     }     if(i==0)      i=n;     if(j>n)      j=1;     mahojin[i][j]=k;   }   printf(" %d次の魔方陣 \n",n);   for(i=1;i<=n;i++){     for(j=1;j<=n;j++)      printf("%4d",mahojin[i][j]);     printf("\n");   }   return 0; }

  • エラーメッセージ(無効な間接参照)

    こんにちは。 早速ですが質問させていただきます。 (このプログラムの概要は省略させていただきます。) 下記プログラムなのですが、 #include <stdio.h> int i=0,j=0,count=0; int data[3][25]={ +1,-1,-1,-1,+1, //N +1,+1,-1,-1,+1, +1,-1,+1,-1,+1, +1,-1,-1,+1,+1, +1,-1,-1,-1,+1, -1,-1,+1,-1,-1, //A -1,+1,-1,+1,-1, -1,+1,+1,+1,-1, +1,-1,-1,-1,+1, +1,-1,-1,-1,+1, +1,+1,+1,+1,+1, //J -1,-1,+1,-1,-1, +1,-1,+1,-1,-1, +1,-1,+1,-1,-1, -1,+1,+1,-1,-1 }; int joint_data[3][25]; void out(void); void ketugou(void); void out(){ while(i<3){ while(j<25){ if(data[i][j] > 0) printf("●"); else printf("○"); j++; if((count+1) % 5 == 0) printf("\n"); count++; } printf("\n\n"); j=0; i++; } } void ketugou(){ int i1,j1,k1; for(i1=0;i1<3;i1++){ //結合係数の初期化 for(j1=0;j1<25;j1++){ for(k1=0;k1<25;k1++) joint_data[i1][j1][k1]=0; //このあたりでエラーメッセージが表示される } } /* for(i1=0;i1<3;i1++){ //結合係数の計算 for(j1=0;j1<25;j1++){ for(k1=j1+1;k1<25;k1++){ joint_data[i1][j1][k1]+=data[i1][j1]*data[i1][k1]; joint_data[i1][k1][j1]=joint_data[i1][j1][k1]; printf("joint_data[%d][%d][%d]=%d\n",i1,j1,k1,joint_data[i1][k1][j1]); } } }*/ printf("結合係数の計算を終了しました。\n"); } main(){ out(); ketugou(); return 0; } このプログラムを実行すると エラー 無効な間接参照(関数ketugou)と表示されます。 いったい何が問題あるのかが分かりません。 一応、ネットで検索をしてはみましたがポインタがなんたらかんたらと言うようなサイトしか見つかりませんでした。 ちなみにコメントで囲ったプログラムも同じメッセージが表示されでしまいます。 どなたか分かりますでしょうかよろしくお願いします。

  • 位数を求めるプログラム

    a^e≡1(mod n)を満たす最小の正の整数eを 法nに関するaの位数です。 これを法31における1、2,...、30の位数を求めるプログラムを以下のように作ったのですが 位数は31が素数なので30の約数であるはずなのですが11とか12などが出てきてしまいます。 問題のある箇所を教えてください。 #include <stdio.h> int main(void) { int h,i,j,k,n; //法31 n=31; //1の位数は1 printf("1:1\n"); for(j=2;j<n;j++){ k=1; for(i=1;i<=(n-1)/2;i++){ //j^iを求める。 k=j*k; for(h=2;h*n<k;h++); //余りが1になるものを位数とする。 if(!((k-1)%((h-1)*n))){ printf("%d:%d\n",j,i); break; } } //i<=(n-1)/2までに余りが1あまるものがなければn-1(30)を位数とする。 if(i>(n-1)/2)printf("%d:%d\n",j,n-1); } return 0; }

  • クイックソートのプログラムを実行するとエラーが出る

    プログラミング初心者のものです。 ソースのファイル名はquicksortという名前にして、コンパイル&実行すると、 「Quicksortが原因でQUICKSORT.EXEにエラーが発生しました。Quicksortは終了します。問題が解決しない場合は、コンピュータを再起動してください。」 と、 「Quicksortが原因でKERNEL32.DLLにエラーが発生しました。Quicksortは終了します。問題が解決しない場合は、コンピュータを再起動してください。」 と言うエラーが出てきて最後まで実行されません。 どうしてでしょうか?ちなみにソースは以下のものです。 #include<stdio.h> #define N 10 void quicksort(int a[],int first,int last) { int i,j,p,w,k; k=(first+last)/2; p=a[k]; i=first; j=last; while(i<=j){ while(a[i]<p){ i++; } while(a[j]>p){ j--; } w=a[i]; a[i]=a[j]; a[j]=w; i++; j--; } if(first>j){ quicksort(a,first,j); } if(last>i){ quicksort(a,i,last); } } main() { int a[]={18,97,59,72,5,38,11,43,67,26}; int i; printf("Before:"); for(i=0;i<N;i++){ printf("%4d",a[i]); } printf("\n"); quicksort(a,0,N-1); printf("After:"); for(i=0;i<N;i++){ printf("%4d",a[i]); } printf("\n"); return(0); }

  • エラーがどこかわからない

    #include<stdio.h> #include<math.h> #define NUM 100000 int main(void){ int prime[NUM+1],i,j,Limit; for(i=2;i<=NUM;i++){ prime[i]=1; } Limit=(int)sqrt(NUM); for(i=2;i<=Limit;i++){ if(prime[i]==1){ for(j=2*i;j<=NUM;j+=i){ prime[j]=0; } } } for ( i=2;i<=NUM;i++) {  if (prime[i]){    printf("%d\n",i); } } }  これは100000未満の素数の総数を求めるプログラムなんですが、実行したらエラーが出てくるんです。何度も確認しても正しいはずなんですがエラー出てきて困っています。どこが間違っているでしょうか?

  • 簡単なプログラムの解説お願いします。

    #include<stdio.h> int main(void){ int i, j, temp, array[]={2, 7, 5, 4}; for(i = 0; i < 4; ++i){ for(j = i + 1; j < 4; ++j){ if(array[ i ] < array[ j ]){ temp = array[ i ]; array[ i ] = array[ j ]; array[ j ] = temp; } } for(j = 0; j < 4; ++j){ printf("%d,",array[j]); } printf("\n"); } return 0; } 7,2,5,4, 7,5,2,4, 7,5,4,2, 7,5,4,2, 答えはこのように表示されているんですが なぜこうなるのかが分かりません。 解説お願いします。

  • ピラミッド表示プログラム。

    ピラミッドを表示させるプログラムを考えています。 例えば3段の場合   *  *** ***** っというような表示です。 #include <stdio.h> void spira(int n); main() { int a; printf("段数は:"); scanf("%d",&a); spira(a); } void spira(int n) { int i,j=1,a,b,k; for(a=n;a>0;a--){ for(b=a-1;b<=n;b--){ printf(" "); } k=(j-1)*2+1; for(i=1;i<=k;i++){ printf("*"); } j++; printf("\n"); } } このように考えてみたのですが、無限ループになって表示できません。 どこが悪いでしょうか? 無限ループの原因はどうやったら解消されるでしょうか?

  • プログラムの添削

    以下のような数当てゲームを作りました.なるべくうまいプログラムを書けるようになりたいのですが,どのような改善点がありますか?よろしくお願いします. /*数当てゲームを作りなさい.*/ #include<stdio.h> void maegaki(void); /*このように関数を定義しまくることに意味はあるのか?main関数はすっきりするけど.*/ void in_check_out(int i); int main(void) { int i; int j; maegaki(); for(j=0;j<10;j++) { scanf("%d",&i); in_check_out(i); if(!(i-1)) return 0; printf("残り%d回です.\n",9-j); } return 0; } void maegaki(void) { printf("数当てゲームをはじめます.\nぼくの好きな整数を当ててください.\nチャンスは10回です.\nヒントはボゾン\n"); } void in_check_out(int i) { if(!(i-1)) { printf("正解!答えは1です.\n"); } else { printf("残念!\n"); if(i>1) printf("%dより小さいです.\n",i); else printf("%dより大きいです.\n",i); } }

  • C言語<素数を求めるプログラム>

    #include<stdio.h> int j; int prime(int n) { int i; if(n < 2) return 0; if(n == 2) return 1; if(n%2 == 0) return 0; for(i = 3; i*i<= n; i += 2){ if(n%i == 0) return 0; } return 1; } int main(void) { int n; for(n=1; n <= 1000; n++) { if(prime(n)){ printf("%d\n",n); j++; } } printf("素数の個数は全部で %d 件見つかりました。\n",j); return 0; } このプログラムは1から1000までの素数のみを表示させるプログラムでありますが、このアルゴリズムが全くわかりません。 int prime(int n)の中身のアルゴリズムがどういう仕組みになっているのかお分かりになりますでしょうか?

専門家に質問してみよう