回答数
気になる
-
C#のラムダ式に関する質問です
下記の普通の関数は、static void Main(string[] args) {}の中で 使用できますが、次のラムダ式の記法と徹底的に省略した記法は、使用出来ない 様です。 つまり、これらの記述を行うだけで、コンパイルエラーが発生します。 Q1)この様な記述がC#で許されるならば、正しい書き方をお教え頂けますと大変有難いです。 ==================== // 普通の関数記法 private int Add(int x, int y) { return x + y; } // ラムダ式の記法 (int x, int y) => { return x + y; }; // 徹底的に省略した記法 // 関数本体が1行で済むなら{}とreturnを省略できる (x, y) => x + y; ======================== 以上、宜しくお願いします。
質問日時: 2021/12/19 23:04 質問者: shiggy
ベストアンサー
2
0
-
コンパイルについて。
gccコンパイラで、デクストップ上にあるdata.cをコンパイルしたいのですが、うまくいきません。教えていただけると嬉しいです。すみません。
質問日時: 2021/12/18 23:51 質問者: メラゾーム
ベストアンサー
10
0
-
2^xを表示するプログラミング
画像の赤い線の部分に適切なプログラムを入れて正の整数xを入力すると2^xを表示するようにしたいのですが何を入れればよいのかわかりません。教えていただけないでしょうか。
質問日時: 2021/12/18 22:48 質問者: jgmwpmdgwtmgm
解決済
3
0
-
パイソンについて。for文の変数は、for文ごとに使い分ける、が無難ですか?たとえば、 for x
パイソンについて。for文の変数は、for文ごとに使い分ける、が無難ですか?たとえば、 for x in n: とつかったらほかの場所で、 for x in m: とはしないほうがいいですか?
質問日時: 2021/12/18 15:06 質問者: てくびちゃん。
ベストアンサー
4
0
-
年齢、体重、身長を入力してBMIとカウプ指数とロレール指数で肥満、標準、痩せすぎを判断するc言語のプ
年齢、体重、身長を入力してBMIとカウプ指数とロレール指数で肥満、標準、痩せすぎを判断するc言語のプログラムはどうやって作るのでしょうか?教えてください!
質問日時: 2021/12/17 11:49 質問者: 羽ばたけ
ベストアンサー
3
1
-
ひんとをおしえてください。私より頭いいお友達とかに聞いたけど、わかりませんでした。答えは聞いたらずる
ひんとをおしえてください。私より頭いいお友達とかに聞いたけど、わかりませんでした。答えは聞いたらずるだから、ひんとをおしえてください。
質問日時: 2021/12/16 11:07 質問者: てくびちゃん。
解決済
2
0
-
D1201.c: 関数 'readlist' 内: D1201.c:126:162: 警告: ポイン
D1201.c: 関数 'readlist' 内: D1201.c:126:162: 警告: ポインタと整数との比較を行なっています while (((uintptr_t)fscanf(fp, "%s %s %d %d %d %d %d %d %s %s", idout, nameout, &tout[0], &tout[1], &tout[2], &tout[3], &tout[4], &tout[5], sdate, stime))!=NULL){ と警告が表示されていますが、原因が分からず、どう直せばいいでしょうか。
質問日時: 2021/12/16 02:04 質問者: 素人ですので
解決済
2
0
-
c言語についてで、星占いをswitch関数を用いたらどのようにかけますか。教えてください!
c言語についてで、星占いをswitch関数を用いたらどのようにかけますか。教えてください!
質問日時: 2021/12/16 00:24 質問者: 羽ばたけ
ベストアンサー
5
0
-
C言語について
大学の課題で以下のあからけまでの部分を埋めなくてはならないのですが、全く分かりません。どなたか教えてください。お願いします。 #include <stdio.h> #include < あ > #include < い > int main(void) { int hand_player, hand_com, continue_game=1; srand(time(NULL)); printf("\n=== じゃんけん スタート! ==="); while( う ) { //***「あいこの場合は無限ループ」ブロックここから *** while(1) { printf("\n\n1,2,3のどれかであなたの手を入れてください"); printf("\n=================================\n"); printf("グー:1 チョキ:2 パー:3"); printf("\n=================================\n"); // あなたの手 scanf("%d", &hand_player); printf("\nあなたの手は "); switch( え ){ お 1: printf("[グー] \n"); break; お 2: printf("[チョキ]\n"); break; お 3: printf("[パー] \n"); break; か : printf("1,2,3のどれかを入れてください\n\n"); continue; } // コンピュータの手 hand_com = き ; printf("コンピュータの手は "); switch( く ){ お 1: printf("[グー] \n"); break; お 2: printf("[チョキ]\n"); break; お 3: printf("[パー] \n"); break; } // あいこの判定 if( え == く ) printf("\nあいこ! です\n\n"); else け ; } //***「あいこの場合の無限ループ」ブロックここまで *** // 勝敗判定 if(hand_player%3==hand_com-1) printf("\nあなたの勝ち!\n\n"); else printf("\nコンピュータの勝ち!\n\n"); // ゲーム継続/終了の確認 printf("じゃんけんを続けますか?(つづける:1 終了:0): "); scanf("%d", &continue_game); } printf("ゲーム終了\n"); return 0; }
質問日時: 2021/12/15 17:16 質問者: calvados0203
ベストアンサー
2
0
-
プログラミング、C言語です。 次のプログラムを実行するソースコードを教えて下さい。 自然数 n の値
プログラミング、C言語です。 次のプログラムを実行するソースコードを教えて下さい。 自然数 n の値を入力し、続けて n 個の整数を入力すると、入力順で前後した2つの整数値の(n-1 個の)差の絶対値を一行ずつ出力するプログラムを作成しなさい。 ただし、n に 1 以下の値が入力されると、プログラムは n の入力を繰り返すものとする。 例 入力: 5 1 2 4 7 -10 出力: 1 2 3 17 入力: 0 1 2 3 10 出力: 7
質問日時: 2021/12/15 02:06 質問者: じょじー
解決済
4
0
-
半素数とは、その値が2つの素数の積で表される自然数である。たとえば、4(=2x2)、15(=3x5)
半素数とは、その値が2つの素数の積で表される自然数である。たとえば、4(=2x2)、15(=3x5)は半素数である。 2〜20 の範囲の1つの自然数 n の値を入力すると、2x2 から nxn までの積の値を各行・各列に並べた掛け算九九(のような)表を出力するプログラムを作成しなさい。ただし、積の値が半素数である場合は、積の値の代わりに1つの #(半角シャープ)文字を出力し、それぞれの積(あるいは # 文字)は4文字幅右寄せで表示する。 また、n の値として指定された範囲以外の値が入力されると、プログラムは何も出力せずに終了するものとする。 C言語で上のようなプログラムを考えているのですが、中々上手くいきません。 コードの例など教えて欲しいです
質問日時: 2021/12/14 22:10 質問者: じょじー
解決済
2
0
-
C言語で特定列だけを抽出して配列に格納し、出力したいです。 読み込みファイル(read.txt) 0
C言語で特定列だけを抽出して配列に格納し、出力したいです。 読み込みファイル(read.txt) 0,0,0,1,0,0 0,0,1,0,0,0 0,0,2,7,0,0 … 0,0,179,1,0,0 1,0,0,5,0,0 1,0,1,2,0,0 1,0,2,7,0,0 … 379,0,179,1,0,0 から4列目だけを抽出したいです。 ファイルの1列目は0から379まで変化し、3列目は0から179まで変化します。 よって380×180=68400行あります。 抽出する際、配列[380][180]の対応する箇所に4行目を格納してから出力させたいです。 上の例より 配列[0][0]=1 配列[0][1]=0 配列[0][2]=7 … 配列[0][179]=1 配列[1][0]=5 配列[1][1]=2 配列[1][2]=7 … 配列[379][179]=1 となって出力結果は 1 0 7 … 1 5 2 7 … 1 とやりたいのですが上手く行きません。 どなたか教えていただけませんか? C言語初心者なので詳しく教えていただけると幸いです。
質問日時: 2021/12/13 15:25 質問者: たうより
解決済
4
0
-
C# DataGridView のヘッダーセル中央揃え
C# DataGridView のヘッダーセル中央揃え指定についての質問です。 ※数値セルは右詰めで統一しています 下の画像で一番左側のヘッダーセルの中央揃えは DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; DataGridView2.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; でうまくいくのですが、方程式の次数によって変化する「解」の列のヘッダーの文字が、解を求めるところで改めて int Ans = DataGridView1.ColumnCount-1; DataGridView1.Columns[Ans].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; とやってもうまくいきません。どうすればいいのでしょうか?
質問日時: 2021/12/13 10:20 質問者: アンドロメダシティ
ベストアンサー
3
0
-
c言語の本を教えてください。分厚くて辞書みたいなやつがいいです。日本の本屋さんで変える、のにしくださ
c言語の本を教えてください。分厚くて辞書みたいなやつがいいです。日本の本屋さんで変える、のにしください。お願いします。
質問日時: 2021/12/09 15:39 質問者: てくびちゃん。
ベストアンサー
5
0
-
C言語について。 同じ年内で経過日数を計算するプログラムを作ってみました。ここから土日を除いた経過日
C言語について。 同じ年内で経過日数を計算するプログラムを作ってみました。ここから土日を除いた経過日数を計算したい場合ってどう変えればいいですか? 経過日数を7で割って、×2すればいいのかな、と思ったんですけど、経過日数が1週間ない場合もあるので… 以下は土日を除いていない状態の経過日数計算プログラムです #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int main() { int ay, am, ad, by, bm, bd; printf("同じ年の2つの日付を入力して経過日数を計算せよ\n"); printf("1つ目の日付(入力例:2020/3/13)\n"); scanf("%d/%d/%d", &ay, &am, &ad); if (ay % 400 == 0) leap = 1; else if (ay % 4 == 0 &&ay % 100 != 0)leap = 1; int a = -1; int i; for (i = 1; i <am; i++) { if (i == 1)a = a + 31; else if (i == 2) a = a + 28 + leap; else if (i == 3)a = a + 31; else if (i == 5)a = a + 31; else if (i == 7)a = a + 31; else if (i == 8)a = a + 31; else if (i == 10)a = a + 31; else if (i == 12)a = a + 31; else a = a + 30; } a = a + ad; printf("2つ目の日付(入力例:2020/3/13)\n"); scanf("%d/%d/%d", &by, &bm, &bd); int b = -1; for (int i = 1; i <bm; i++) { if (i == 1)b = b + 31; else if (i == 2)b = b + 28 + leap; else if (i == 3)b = b + 31; else if (i == 5)b = b + 31; else if (i == 7)b = b + 31; else if (i == 8)b = b + 31; else if (i == 10)b = b + 31; else if (i == 12)b = b + 31; else b = b + 30; } b = b + bd; printf("経過日数は%d日\n", b - a); return 0; }
質問日時: 2021/12/09 10:10 質問者: すゞすゞ
解決済
3
1
-
論理演算子を判定するプログラム c言語で
#include <stdio.h> #include <string.h> #include <ctype.h> #define BUFFERSIZE 1024 char Buffer[BUFFERSIZE]; int Index; int ParseError; int getE(void); void parseError(FILE *out, char msg[]) { ParseError = 1; fprintf(out, "%s\n", msg); fprintf(out, "%s\n", Buffer); for (int i = 0; i < Index; i++) fprintf(out, " "); fprintf(out, "^\n"); } void removeWhite(void) { int j = 0, c; for (int i = 0; (c = Buffer[i]) != '\0'; i++) { if (c == ' ' || c == '\t' || c == '\n') continue; Buffer[j++] = c; } Buffer[j] = '\0'; } int getD(void) { int value = 0; while (isdigit(Buffer[Index])) { value = 10*value + Buffer[Index] - '0'; Index++; } return value; } int getF(void) { int value; if (isdigit(Buffer[Index])) { // 数値表現 value = getD(); if (ParseError) return 0; } else if (Buffer[Index] == '(') { // ( E ) ++Index; value = getE(); if (ParseError) return 0; if (Buffer[Index] == ')') { ++Index; } else { parseError(stderr, "閉じ括弧')'がありません."); return 0; } } else { parseError(stderr, "数字または開き括弧'('がありません."); return 0; } return value; } int getT(void) { int v, value; value = getF(); if (ParseError) return 0; while (Buffer[Index] == '*' || Buffer[Index] == '/') { char op = Buffer[Index++]; v = getF(); if (ParseError) return 0; if (op == '*') value *= v; else value /= v; } return value; } int getE(void) { int v, value; if (Buffer[Index] == '-') { ++Index; v = getT(); if (ParseError) return 0; value = -v; } else { value = getT(); if (ParseError) return 0; } while (Buffer[Index] == '+' || Buffer[Index] == '-') { char op = Buffer[Index++]; v = getT(); if (ParseError) return 0; if (op == '+') value += v; else value -= v; } return value; } int getExpression(void) { int value; value = getE(); if (ParseError) return 0; if (Buffer[Index] != '\0') { parseError(stderr, "余分な表現があります."); } return value; } int mygets(char *s, int n) { fgets(s, n, stdin); int lg = strlen(s); if (lg > 0 && s[lg-1] == '\n') s[--lg] = '\0'; return lg; } int main(void) { int value; while (1) { ParseError = 0; fprintf(stderr, "\n算術式:="); if (mygets(Buffer, BUFFERSIZE) <= 0) break; removeWhite(); Index = 0; value = getExpression(); if (ParseError) { fprintf(stderr, "正しくない算術式です.\n"); } else { fprintf(stderr, "正しい算術式です. 値は%dです.\n", value); } } return 0; } Σ ={0, 1, (, ), ⋀, ⋁,¬}とする. 以下の生成規則をもつ拡張文脈自由文法により 開始記号 E から導出される Σ 上の記号列を論理式とよぶ. 論理式の定義 B → 0 | 1 F → {¬} B | {¬}(E) T → F { ⋀ F } E → T { ⋁ T この定義において、論理式の値の評価を行うプログラムを作りたいのですが上のプログラムをどう改良すればいいでしょうか? 記号「⋀」「⋁」「¬」は,それぞれ,「&」「+」「!」で代用したいです。 もしよければ返信お願いします。
質問日時: 2021/12/08 17:38 質問者: とに1001
解決済
3
0
-
c言語 文字化けします
#include <stdio.h> #include <string.h> #include <ctype.h> #define BUFFERSIZE 1024 char Buffer[BUFFERSIZE]; int Index; int ParseError; int getE(void); void parseError(FILE *out, char msg[]) { ParseError = 1; fprintf(out, "%s\n", msg); fprintf(out, "%s\n", Buffer); for (int i = 0; i < Index; i++) fprintf(out, " "); fprintf(out, "^\n"); } void removeWhite(void) { int j = 0, c; for (int i = 0; (c = Buffer[i]) != '\0'; i++) { if (c == ' ' || c == '\t' || c == '\n') continue; Buffer[j++] = c; } Buffer[j] = '\0'; } int getD(void) { int value = 0; while (isdigit(Buffer[Index])) { value = 10*value + Buffer[Index] - '0'; Index++; } return value; } int getF(void) { int value; if (isdigit(Buffer[Index])) { // 数値表現 value = getD(); if (ParseError) return 0; } else if (Buffer[Index] == '(') { // ( E ) ++Index; value = getE(); if (ParseError) return 0; if (Buffer[Index] == ')') { ++Index; } else { parseError(stderr, "閉じ括弧')'がありません."); return 0; } } else { parseError(stderr, "数字または開き括弧'('がありません."); return 0; } return value; } int getT(void) { int v, value; value = getF(); if (ParseError) return 0; while (Buffer[Index] == '*' || Buffer[Index] == '/') { char op = Buffer[Index++]; v = getF(); if (ParseError) return 0; if (op == '*') value *= v; else value /= v; } return value; } int getE(void) { int v, value; if (Buffer[Index] == '-') { ++Index; v = getT(); if (ParseError) return 0; value = -v; } else { value = getT(); if (ParseError) return 0; } while (Buffer[Index] == '+' || Buffer[Index] == '-') { char op = Buffer[Index++]; v = getT(); if (ParseError) return 0; if (op == '+') value += v; else value -= v; } return value; } int getExpression(void) { int value; value = getE(); if (ParseError) return 0; if (Buffer[Index] != '\0') { parseError(stderr, "余分な表現があります."); } return value; } int mygets(char *s, int n) { fgets(s, n, stdin); int lg = strlen(s); if (lg > 0 && s[lg-1] == '\n') s[--lg] = '\0'; return lg; } int main(void) { int value; while (1) { ParseError = 0; fprintf(stderr, "\n算術式:="); if (mygets(Buffer, BUFFERSIZE) <= 0) break; removeWhite(); Index = 0; value = getExpression(); if (ParseError) { fprintf(stderr, "正しくない算術式です.\n"); } else { fprintf(stderr, "正しい算術式です. 値は%dです.\n", value); } } return 0; } この構文解析プログラムを実行すると 邂苓。灘シ・=(1+2+3)*3 豁」縺励>邂苓。灘シ上〒縺・ 蛟、縺ッ18縺ァ縺・ のように文字化けしてしまうのですがなぜでしょうか?
質問日時: 2021/12/08 16:35 質問者: とに1001
解決済
2
0
-
カラーキューブ数独をc言語でときたいです。
カラーキューブ数独の解を列挙するプログラムを作成したいのですが. 列挙の仕方と枝刈とを工夫したいです 1つの解を回転することで得られる解は同一とみなしたい. この意味で重複なく列挙するにはどうしたらよいですか?
質問日時: 2021/12/08 16:20 質問者: とに1001
解決済
4
0
-
C言語 mallocのエラーに関する質問
C言語で書いたコードがうまく動かなくてVScodeでデバッグしたところ 何回目かに呼び出したmallocで止まっていました。エラー内容は 例外が発生しました Unknown signal となっており役に立たなさそうで、個人的には、メモリーがオーバーフローした、free()のやり方を間違えた。mallocの使い方を間違えた、のうちのどれかが原因だと思っているのですが調べ方がわかりません。うまい確認の仕方があれば教えてください。 また、何か考えられるほかの原因もあれば教えてください。
質問日時: 2021/12/06 20:24 質問者: アドソン
ベストアンサー
6
0
-
ペントミノをc言語で実行するとエラーがでる
#include <stdio.h> typedef struct { int pos[5]; } MinoPos; typedef struct { char name; int used; int formsize; MinoPos form[8]; } Piece; Piece pieces[] = { {'X', 0, 1, {{0,6,7, 8,14}}}, {'U', 0, 4, {{0,1,2, 7, 9},{0,1, 7,14,15},{0,2, 7, 8, 9},{0,1, 8,14,15}}}, {'W', 0, 4, {{0,1,8, 9,16},{0,1, 6, 7,13},{0,7, 8,15,16},{0,6, 7,12,13}}}, {'F', 0, 2, {{0,1,8, 9,15},{0,6, 7, 8,13}}}, {'Z', 0, 4, {{0,1,8,15,16},{0,5, 6, 7,12},{0,1, 7,13,14},{0,7, 8, 9,16}}}, {'P', 0, 8, {{0,1,2, 7, 8},{0,7, 8,14,15},{0,1, 6, 7, 8},{0,1, 7, 8,15},{0,1,2,8, 9},{0,1, 7, 8,14},{0,1,7,8, 9},{0,6, 7,13,14}}}, {'N', 0, 8, {{0,1,2, 9,10},{0,6, 7,13,20},{0,1, 8, 9,10},{0,7,13,14,20},{0,1,2,6, 7},{0,7,14,15,22},{0,1,5,6, 7},{0,7, 8,15,22}}}, {'Y', 0, 8, {{0,1,2, 3, 8},{0,7,14,15,21},{0,5, 6, 7, 8},{0,6, 7,14,21},{0,1,2,3, 9},{0,7, 8,14,21},{0,6,7,8, 9},{0,7,13,14,21}}}, {'T', 0, 4, {{0,1,2, 8,15},{0,7, 8, 9,14},{0,7,13,14,15},{0,5, 6, 7,14}}}, {'L', 0, 8, {{0,1,2, 3, 7},{0,7,14,21,22},{0,4, 5, 6, 7},{0,1, 8,15,22},{0,1,2,3,10},{0,1, 7,14,21},{0,7,8,9,10},{0,7,14,20,21}}}, {'V', 0, 4, {{0,1,2, 7,14},{0,7,14,15,16},{0,7,12,13,14},{0,1, 2, 9,16}}}, {'I', 0, 2, {{0,1,2, 3, 4},{0,7,14,21,28}}}, }; int board[77]; int counter, try_counter; void init_board(void); void print_board(void); void try_piece(int level); int board_index(int find_num); void init_board(void) { int i; for(i=0; i<77; i++){ if(((i + 1) % 7) == 0 || i >= 70){ board[i] = 100; } } } void print_board(void) { int row, col; printf("No. %d\n", counter); for(row=0; row<6; row++){ for(col=0; col<70; col += 7){ printf(" %c", pieces[board[row + col] - 1].name); } printf("\n"); } printf("\n"); } int board_index(int find_num) { int i; for(i=0; i<77; i++){ if(board[i] == find_num){ return i; } } return 0; } void try_piece(int level) { int i, j, k, x; try_counter++; x = board_index(0); for(i=0; i<12; i++){ if(pieces[i].used == 1){continue;} for(j=0; j<pieces[i].formsize; j++){ if(board[x + pieces[i].form[j].pos[0]] || board[x + pieces[i].form[j].pos[1]] || board[x + pieces[i].form[j].pos[2]] || board[x + pieces[i].form[j].pos[3]] || board[x + pieces[i].form[j].pos[4]]){continue;} // ピースを置く for(k=0; k<5; k++){board[x + pieces[i].form[j].pos[k]] = i + 1;} pieces[i].used = 1; // すべてのピースを置ききったらTrueを返す(recursiveコールの終了) if(level == 11){ counter++; print_board(); // ピースを戻す for(k=0; k<5; k++){board[x + pieces[i].form[j].pos[k]] = 0;} pieces[i].used = 0; return; } // 次のピースを試す try_piece(level + 1); // ピースを戻す for(k=0; k<5; k++){board[x + pieces[i].form[j].pos[k]] = 0;} pieces[i].used = 0; } } } int main(int argc, char **argv) { init_board(); try_piece(0); printf("解合計: %d\n", counter); printf("操作数: %d\n", try_counter); } これを gcc -O2 kokoa1.c time ./a.out と実行すると、 time : 用語 'time' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記 述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:1 + time ./a.out + ~~~~ + CategoryInfo : ObjectNotFound: (time:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException というエラーが出るのですがなぜですか?
質問日時: 2021/12/06 19:18 質問者: とに1001
解決済
3
0
-
C言語 putchar関数
putchar関数のみを用いて標準出力へ文字を一つずつ出力することで,'0'から'9'までを表示するプログラムを作成したいです。(printf関数,puts関数を用いないで。) しかし,繰り返しを用いて,putchar関数の呼び出しは2回しか使わないようにしたいです。
質問日時: 2021/12/06 17:50 質問者: riringon
ベストアンサー
2
0
-
#include <stdio.h> #include <stdlib.h> #include <s
#include <stdio.h> #include <stdlib.h> #include <string.h> //構造体の定義 struct testdat { char id[10]; char name[64]; int test[6]; struct testdat *p; }; //構造体のデータを追加する struct testdat *addlist(char *id, char *name, int t1, int t2, int t3, int t4, int t5, struct testdat *head); void showlist(struct testdat *p); //登録されたデータイストの表示 void freelist(struct testdat *p); //プログラム終了時に使用したメモリ開放 int main(void) { struct testdat *head; //先頭ポイントの設定 char idin[10], namein[64]; int testin[5]; head = NULL; puts(" *** 自己参照struct(リストデータ)の作成 ***\n"); /* prints */ puts(" -----------データの入力\n"); printf(" 半角スペース区切りで、\nID 名前 国語 数学 英語 理科 社会 の点数を入力\n(終了=Ctrl+Z\n"); fflush(0); while ( scanf("%s %s %d %d %d %d %d", idin, namein, &testin[0], &testin[1], &testin[2], &testin[3], &testin[4])!=EOF) { //リストにデータを登録 head = addlist(idin, namein, testin[0], testin[1], testin[2], testin[3], testin[4], head); } puts("****** 入力されたデータ"); showlist(head); puts("------------メモリの開放"); freelist(head); return EXIT_SUCCESS; } /* データをリストに追加する */ struct testdat *addlist(char *id, char *name, int t1, int t2, int t3, int t4, int t5, struct testdat *head){ struct testdat *p; //記憶領域の確保 if ((p = (struct testdat *) malloc(sizeof(struct testdat)))==NULL) { printf("メモリ確保できません\n"); exit(EXIT_FAILURE); } strcpy(p->id, id); strcpy(p->name, name); p->test[0]=t1; p->test[1]=t2; p->test[2]=t3; p->test[3]=t4; p->test[4]=t5; p->test[5]=t1+t2+t3+t4+t5; //自己参照ポインタの付け替え p->p=head; head = p; return head; } /*記憶されたデータの表示 */ void showlist(struct testdat *p) { while(p != NULL) { printf("%s %s %d %d %d %d %d %d\n", p->id, p->name, p->test[0], p->test[1], p->test[2], p->test[3], p->test[4], p->test[5]); } return; } /* 使用しための開放 */ void freelist(struct testdat *p) { struct testdat *p2; while(p!=NULL) { p2 = p->p; free(p); p = p2; } return; } ですが、ポインタがどんなふうに変化しているのか詳細に教えてくださいませんか。
質問日時: 2021/12/05 16:11 質問者: Mercyを
解決済
2
0
-
たとえば、s = Tokyo Kyoto という文字列で s2 = s.split() しますと、s
たとえば、s = Tokyo Kyoto という文字列で s2 = s.split() しますと、s2は["Tokyo", "Kyoto"] となりますが、これはlistじゃないんですか? s2のなかのものについて for x in s2: などとしますと、できません。
質問日時: 2021/12/05 15:46 質問者: てくびちゃん。
ベストアンサー
6
0
-
c言語 配列から数字だけをint型として抜き取りたい
パターン1 #include <stdio.h> #include <string.h> struct student{ char number[50]; int array; int score; }; int main(void) { struct student data[1000]; int num = 0; scanf("%d", &num); for(int i = 0; i < num; i++){ scanf("%c",data[i].number); scanf("%d",&data[i].array); scanf("%d", &data[i].score); } for(int i = 0; i < num; i++){ for(int j = 0; j < num - 1 - i; j++){ if(data[j].array > data[j+1].array){ int temp = data[j+1].array; data[j+1].array = data[j].array; data[j].array = temp; int flag = data[j+1].score; data[j+1].score = data[j].score; data[j].score = flag; } } } for(int i = 0; i < num; i++){ printf("%c%d\n%d\n",data[i].number,data[i].array,data[i].score); } return 0; } ----------------------------------- パターン2 #include <stdio.h> #include <string.h> struct student{ char id[50]; int score; }; int main(void) { struct student data[1000]; int num = 0; scanf("%d", &num); for(int i = 0; i < num; i++){ scanf("%c",data[i].id); scanf("%d", &data[i].score); } 入力 3 D123456 50 D034567 60 D101012 90 出力 D034567 60 D101012 90 D123456 50 このように最初に何セット入力するかを入力 その後最初がアルファベット1文字で始まる(全てD)文字列を入力ご改行して点数を入力。 そして、文字列の中から数字だけを取り出し比較。数字が小さい方から並べ替える。 最後並べ替えた文字列とセットの点数を出力。 パターン1はDだけを入力できる配列と数字だけ入力できる配列を用意して、最初から数字は数字として扱えるようにしている。 パターン2はアルファベットと数字を含む文字列として入力しその後数字だけ取り出し比較したい。 どちらも試しましたが、うまく行きませんでした。どちらのパターンでもいいので教えてください。
質問日時: 2021/12/05 13:53 質問者: 縁の上のか弱い男
解決済
3
0
-
C言語の問題です。大至急回答お願いします 次の条件を満たすキュー・プログラムを作成せよ。 ①キューに
C言語の問題です。大至急回答お願いします 次の条件を満たすキュー・プログラムを作成せよ。 ①キューに配列queue[ ]を使う。 ②関数enqueueとdequeueを使う。 ③キューの内容を表示する関数showqueueを使う。 ④queueの操作が正確に行われていることを検証するために何を実行したらよいかチェック項目をレポートに記す。チェック項目を実行した結果をレポートに張り付けよ。 の問題ですが、①から⑪までの回答をお願いします。 #include<stdio.h> #define ① /*queueの大きさ*/ int ② ; /*queue配列*/ int front=0; /*データーを格納する位置*/ int rear =0; /*データを取り出す位置*/ int N =0; /*データ数*/ ③ ; /*関数enqueueのプロトタイプ宣言*/ ④ ; /*関数dequeueのプロトタイプ宣言*/ ⑤ ; /*関数showqueueのプロトタイプ宣言*/ int main(void) { int mode,val; do { printf("---------------------------------------------------\n"); printf("1:入力(enqueue) 2:削除(dequeue) 3:queue表示 4:終わり?"); scanf("%d",&mode); printf("---------------------------------------------------\n"); switch(mode) { case 1: printf("queueにデータ(整数)入力:"); scanf("%d",&val); ⑥ ; /*埋める*/ break; case 2: ⑦ /*埋める*/ break; case 3: ⑧ ; /*埋める*/ break; case 4: printf(" 終了\n"); break; } printf("\n"); }while(mode!=4); return0; } void enqueue(int x) { ⑨ /*関数の実体を書く*/ } int dequeue(void) { ⑩ /*関数の実体を書く*/ } void showqueue(void) { ⑪ /*関数の実体を書く*/ }
質問日時: 2021/12/05 01:35 質問者: まめ2
ベストアンサー
1
0
-
C言語 和文と英文のメッセージの出し方について
C言語のコーディングについて,教えてください。 コマンドプロンプトから実行するプログラムを作っています。 このプログラムからメッセージをprintf()関数で出します。 コマンドプロンプトが和文表示可能ならば和文のメッセージを, 表示不可能ならば英文のメッセージを出したいのです。 しかし,コマンドプロンプトのロケールを取得し和文出力可能か判断する 方法がわかりません。この点について,教えてください。 chcp 932ではなく,chcp 437で和文メッセージを出すと文字化けしてしまいます。 chcp 437なら,英文メッセージを出したいです。
質問日時: 2021/12/02 09:55 質問者: k872631
ベストアンサー
3
0
-
ルーチンとライブラリについて。
ルーチンは「ひと続きの処理」です。 ひとつのプログラムは1個以上のルーチンから成ります。 ライブラリは複数のプログラムをひとつ(のファイル)にまとめたものです。 アセンブリ言語で書かれたプログラムをアセンブルしたり、C言語で書かれたプログラムをコンパイルすると「オブジェクトファイル」が生成されます。 これらをリンカを使用して結合し、「ライブラリ形式」で出力することで「ライブラリ」は生成されます。 別にライブラリ形式にしなくても(=オブジェクトファイルのままでも)他のプログラム(のオブジェクトファイル)と結合することは可能です。「ただ、その数が多いといちいちひとつひとつ指定するのが大変に面倒」なので、ライブラリにしておく、というだけの話です。 (ライブラリにしておけば、リンカが勝手にそのライブラリ内を検索し、必要なオブジェクトだけを抜き出してリンクしてくれます) のカギカッコのところが分かりません。教えていただけると助かります。すみません。
質問日時: 2021/12/01 15:50 質問者: メラゾーム
解決済
5
0
-
C言語についてです! 同じ年の、年月日Aと年月日Bを入力して、その間の経過日数を計算したいのですが(
C言語についてです! 同じ年の、年月日Aと年月日Bを入力して、その間の経過日数を計算したいのですが(A=Bのケースでは経過日数をゼロ)、A>Bの時は経過日数をマイナスにして表したいです。 AとBは同じ年として、西暦2000年以後の年月と仮定してます。 つまり例をあげますと 『2020/4/9 2020/6/15 』とデバック画面(?)で入力したら実行の結果、経過日数は「67」と出し、 『2020/3/1 2020/2/26』と入力したら経過日数は「-3」と出したいのです。 『』の中は自分で選んだ年月日を入力できるようにしたいです。 どなたかこのプログラムをかける方がいらっしゃたら教えてください<(_ _)>
質問日時: 2021/12/01 12:55 質問者: すゞすゞ
ベストアンサー
1
0
-
C++でxmlファイル内の行列の一部分の要素だけを使いたい
c++言語の目的のコードの中で、別のコードで作ったxmlファイル内の行列の一部分の要素だけを用いたいと考えています。 例えば、 a={1, 2, 3, 4, 5, 6, 7, 8, 9} の1と5だけを目的のコードの計算式で用いたいとき、どのように処理を行えば実現できるのか、いろいろ調べたり試してみましたがうまくいきませんでした。 ちなみに、FileStorageとfsを用いてファイルを読み込むまでは理解しています。 よろしくお願いいたします。
質問日時: 2021/11/30 15:41 質問者: おdo
解決済
3
0
-
ルーチンとライブラリについて。
ExcelやWordで、ルーチンとライブラリを例えると、Excelの関数は、Wordでは使えないから、これがルーチンで、上書き保存や名前を付けて保存は、ExcelでもWordでも使えるので、 ライブラリと言う解釈であっていますでしょうか?教えていただけると助かります。すみません。
質問日時: 2021/11/29 16:18 質問者: メラゾーム
解決済
8
0
-
C言語で、0.0〜f〜1.0までの数字を入力し、それを 二進数に変換するプログラムを教えてほしいです
C言語で、0.0〜f〜1.0までの数字を入力し、それを 二進数に変換するプログラムを教えてほしいです。
質問日時: 2021/11/29 03:35 質問者: negimatabetai
解決済
7
0
-
解決済
5
0
-
ルーチンとライブラリについて。
ルーチンはプログラムを作るたびに用意して、ライブラリはどのプログラムを作る場合でも必要なら使えるように共通化した(標準的にある)ものです。 で、ライブラリは、複数のプログラムで使えるということでしょうか?教えていただけると助かります。すみません。 よろしくお願いします。
質問日時: 2021/11/28 14:00 質問者: メラゾーム
解決済
3
0
-
ベストアンサー
3
1
-
Scilabの&と&&に関する質問です
Q1)下記の&と&&についてお教え頂けますと大変有難いです。 tf = U && V if (U && V) then ... end <ーーここです if (U & V) then ... end <ーーここです while (U && V) then ... end while (U & V) then ... end 以上、宜しくお願いします。
質問日時: 2021/11/27 16:16 質問者: shiggy
解決済
5
0
-
ASP.NET WebAPI(.NET framework) のGetメソッド(HttpGet)でD
ASP.NET WebAPI(.NET framework) のGetメソッド(HttpGet)でDBから取得した情報を下記のような階層構造に変換し一旦クラスに格納。そのクラスのデータをクライアントに返却したいです。 クラスの設計はAクラスのメンバーにDictionary<name, Bクラス>といった形で親クラスに小クラスのメンバーを配置しています。(クラスにはdatacontract属性をつけています) しかし、 返却されるのはAクラスの要素のみでB,Cクラスの要素は何もデータがありません。この辺にお詳しい方が周りにいないためここで質問させて頂きます。どうぞよろしくお願いします。 ※最終的にはツリービューに表示するデータ ■データ(クラス)の構造 A -|B-1 -|C-1 -|C-2 -|C-3 -|B-2 -|C-1 -|C-2 A-1 -|B-1 -|C-1 -|C-2 -|C-3 -|B-2 -|C-1 -|C-2
質問日時: 2021/11/27 07:52 質問者: monapiii
解決済
1
0
-
c言語でペイントミノ
12種類のペントミノすべてを用いて, サイズ 10×6 の長方形を埋める解を全て求める プログラムを作成したいのですが、どうすればいいでしょうか?c言語です。
質問日時: 2021/11/27 05:51 質問者: とに1001
解決済
7
0
-
ソースコード1これを実行するとエラーがでます。おしえてください
bList.c #include "bList.h" void B_makeEmpty(bLIST *x) {// リストを初期化する x->L = x->R = 0; } int B_isEmpty(bLIST *x) {// リストが空であれば1を,そうでなければ0を返す return (x->L == x->R); } int B_size(bLIST *x) {// リストの要素数を返す return x->R - x->L; } int B_isFull(bLIST *x) {// リストが一杯であれば1を,そうでなければ0を返す return (B_size(x)==MAXLENGTH); } static int pos(int i) { while (i < 0) i += MAXLENGTH; return i%MAXLENGTH; } void B_pushFront(bLIST *x, bSHAPE e) {// リストの先頭に要素eを追加する int p = pos(--x->L); x->elem[p] = e; } void B_pushBack(bLIST *x, bSHAPE e) {// リストの末尾に要素eを追加する int p = pos(x->R++); x->elem[p] = e; } bSHAPE B_popFront(bLIST *x) {// リストの先頭から要素を取り出す int p = pos(x->L++); return x->elem[p]; } bSHAPE B_popBack(bLIST *x) {// リストの末尾から要素を取り出す int p = pos(--x->R); return x->elem[p]; } bSHAPE B_retrieve(bLIST *x, int i) {// リストのi番目の要素を返す int p = pos(x->L+i); return x->elem[p]; } void B_swap(bLIST *x, int i, int j) {// リストのi番目とj番目の要素を入れ替える int p = pos(x->L+i); int q = pos(x->L+j); bSHAPE temp = x->elem[p]; x->elem[p] = x->elem[q]; x->elem[q] = temp; } void B_printList(bLIST *x) {// リストの内容をプリントする printf("["); for (int i = 0; i < B_size(x); i++){ if (i > 0) printf(", "); bSHAPE e = B_retrieve(x, i); printf("(%d,%d)", e.BlockID, e.Direction); } printf("]"); } bList.h #ifndef BLIST_H #define BLIST_H #include <stdio.h> typedef struct { int BlockID; // 0, 1, ..., 9 int Direction; // 0, 1 } bSHAPE; #define MAXLENGTH (100) typedef struct { int L; int R; bSHAPE elem[MAXLENGTH];//要素を格納する配列 } bLIST; void B_makeEmpty(bLIST *x); // リストを初期化する int B_isEmpty(bLIST *x); // リストが空であれば1を,そうでなければ0を返す int B_size(bLIST *x); // リストの要素数を返す int B_isFull(bLIST *x); // リストが一杯であれば1を,そうでなければ0を返す void B_pushFront(bLIST *x, bSHAPE e); // リストの先頭に要素eを追加する void B_pushBack(bLIST *x, bSHAPE e); // リストの末尾に要素eを追加する bSHAPE B_popFront(bLIST *x); // リストの先頭から要素を取り出す bSHAPE B_popBack(bLIST *x); // リストの末尾から要素を取り出す bSHAPE B_retrieve(bLIST *x, int i); // リストのi番目の要素を返す void B_swap(bLIST *x, int i, int j);// リストのi番目とj番目の要素を入れ替える void B_printList(bLIST *x); // リストの内容をプリントする #endif これを教えてください。
質問日時: 2021/11/26 09:36 質問者: とに1001
解決済
4
0
-
12種のペントミノのうちm 個を用いてサイズ m×5 の長方形を埋める解を全て求めるプログラムを作成
私の質問にあるソースコード1~4に載っているものを実行してもなぜかうまくいかないのでどうすればいいでしょうか?
質問日時: 2021/11/26 05:55 質問者: とに1001
解決済
5
0
-
ベストアンサー
4
1
-
音声データを出力するCプログラミング
サンプリングレート8000[Hz],モノラル,16bit符号付きデータとして, ピッチ1[kHz]一定,音量最大一定で2秒間の音声データファイルwave.rawを出力するようなプログラムを作成したく、以下のようなプログラムを作成しました。しかし、出力されたwave.rawファイルの音が、作りたいものと異なっていました。冒頭の数値設定が誤っているのでしょうが、どのように誤っているのかわかりません。わかります方いたら教えていただけますでしょうか。 #include<stdio.h> #include<limits.h> #include<math.h> #include<stdlib.h> #include<string.h> #define BYTE 8 int main(void){ FILE *fp; const char *s_riff="RIFF"; const char *s_wave="WAVE"; const char *s_fmt="fmt "; int WholeSize; int DataSize=200000; short FmtId=1; short Channel=1; int SamplingRate=8000; short Bps=16; int DataVelocity=SamplingRate*Bps/8*Channel; short BlockSize=Bps/8*Channel; const char *s_data="data"; short Data; int i, chk; int FmtSize= sizeof(FmtId) +sizeof(Channel) +sizeof(SamplingRate) +sizeof(DataVelocity) +sizeof(BlockSize) +sizeof(Bps); WholeSize=strlen(s_wave) +strlen(s_fmt) +sizeof(FmtSize) +FmtSize; WholeSize+= +strlen(s_data) +sizeof(DataSize) +DataSize//; fp=fopen("wa.wav", "wb"); if(fp==NULL){ printf("Cannot open File\n"); exit(1); } chk=fwrite(s_riff, sizeof(s_riff[0]), strlen(s_riff), fp); if(chk<strlen(s_riff)){ printf("Write Error for s_riff\n"); exit(1); } chk=fwrite(&WholeSize, sizeof(WholeSize), 1, fp); if(chk<1){ printf("Write Error for WholeSize\n"); exit(1); } chk=fwrite(s_wave, sizeof(s_wave[0]), strlen(s_wave), fp); if(chk<strlen(s_wave)){ printf("Write Error for s_wave\n"); exit(1); } chk=fwrite(s_fmt, sizeof(s_fmt[0]), strlen(s_fmt), fp); if(chk<strlen(s_fmt)){ printf("Write Error for s_fmt\n"); exit(1); } chk=fwrite(&FmtSize, sizeof(FmtSize), 1, fp); if(chk<1){ printf("Write Error for FmtSize\n"); exit(1); } chk=fwrite(&FmtId, sizeof(FmtId), 1, fp); if(chk<1){ printf("Write Error for FmtId\n"); exit(1); } chk=fwrite(&Channel, sizeof(Channel), 1, fp); if(chk<1){ printf("Write Error for Channel\n"); exit(1); } chk=fwrite(&SamplingRate, sizeof(SamplingRate), 1, fp); if(chk<1){ printf("Write Error for SamplingRate\n"); exit(1); } chk=fwrite(&DataVelocity, sizeof(DataVelocity), 1, fp); if(chk<1){ printf("Write Error for DataVelocity\n"); exit(1); } chk=fwrite(&BlockSize, sizeof(BlockSize), 1, fp); if(chk<1){ printf("Write Error for BlockSize\n"); exit(1); } chk=fwrite(&Bps, sizeof(Bps), 1, fp); if(chk<1){ printf("Write Error for Bps\n"); exit(1); } chk=fwrite(s_data, sizeof(s_data[0]), strlen(s_data), fp); if(chk<strlen(s_data)){ printf("Write Error for s_data\n"); exit(1); } chk=fwrite(&DataSize, sizeof(DataSize), 1, fp); if(chk<1){ printf("Write Error for DataSize\n"); exit(1); } for(i=0;i<100000;i++){ Data=(short)(SHRT_MAX*sin(i*100)); chk=fwrite(&Data, sizeof(Data), 1, fp); if(chk<1){ printf("Write Error for Data[%d]\n", i); exit(1); } } fclose(fp); return 0; }
質問日時: 2021/11/23 20:25 質問者: かか。。。
解決済
1
0
-
以下のc言語コードを利用して、ファイルに書き込むプログラムを作成したいですけど、見本とか教えてくださ
以下のc言語コードを利用して、ファイルに書き込むプログラムを作成したいですけど、見本とか教えてくださいませんか。 素人なので、よろしくお願い致します。 #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp; char fn[256]; puts(" *** ファイルのオープン/クローズ ***\n"); /* prints */ printf(" ファイルの名を入力してください--> "); fflush(0); gets(fn); if ((fp = fopen(fn, "r"))==NULL) { fclose(fp); printf(" ファイル「%s」を新規作成します" , fn); fp = fopen(fn, "w"); fclose(fp); } return EXIT_SUCCESS; }
質問日時: 2021/11/23 19:07 質問者: Mercyを
解決済
3
0
-
C言語
サンプリングレート8000[Hz],モノラル,16bit符号付きデータとして, ピッチ1[kHz]一定,音量最大一定で2秒間の音声データファイルを出力するプログラムを作成 (A)〜(N)に入る語彙はなんでしょうか。特に(L)〜(N)が分からないです 課題音声のピッチが(A)[kHz]ということは1秒間に(B)回振動することを表すので、 振幅を仮にaとすると、 その正弦波は時刻t[sec]の関数として (C)と表されます.課題音声のサンプリングレートが(D)[Hz]ということは, 1秒間に(E)個のデータを用いることになり, 課題では(F)秒間の音声データが必要なので, 課題音声のフォーマットである(G)[bit]符号付きデータを(H)個格納するための配列を用意することになります. (G)[bit]は(I)バイトなので,(G)[bit]符号付きデータを表すために(J)型を用いる。よって、(J)型を(H)個要素に持つ配列を用いる. ここで,その配列の名前をwaveとします.(J)型で表すことのできる最大値は(K)なので、 先の正弦波の振幅aは(K)となります。 課題音声のサンプリングレートが(D)[Hz]なので, 配列waveの要素1つで(L)[sec]分のデータを保持することになります. よって,配列waveのi番目の要素は (M)秒目のデータを表すことになります. したがって,先程得た正弦波の式を用いると 配列waveのi番目の要素の値は, (N)と表される。
質問日時: 2021/11/23 12:53 質問者: かか。。。
ベストアンサー
1
0
-
Pythonでの計算について質問です。 産業Bの最終需要が、30億円減少した(110億円になる)場合
Pythonでの計算について質問です。 産業Bの最終需要が、30億円減少した(110億円になる)場合、生産額はどのように変化するか、計算の仕方はわかる方教えて下さい!!
質問日時: 2021/11/22 00:39 質問者: shmoc
ベストアンサー
2
0
-
コンパイルについて。
以下のURLのサイトのものををインストールしているのですが、出来ますでしょうか?教えていただけると助かります。すみません。 https://dianxnao.com/windows%E3%81%ABc%E8%A8%80% … で、④MinGWがインストールされている前提で gcc a.c b.c と入力すると、a.exe の実行ファイルが作られます。 a.exe と 入力すると、画面に This is sub1 This is func が表示されます。 但し、 MinGWがインストールされていないと、(当然当たり前の話ですが) gcc a.c b.c と入力してもエラーになります。 で上手くいかないのですが。どうすればThis isが表示されるのでしょうか?教えていただけると助かります。すみません。
質問日時: 2021/11/20 20:50 質問者: メラゾーム
ベストアンサー
14
0
-
このコードを実行すると無限に結果が出てくるのですがなにかうまくまとめる方法はあるでしょうか?目的は解
目的は解を列挙するプログラムを作ることです #include <stdio.h> #include <stdlib.h> #include "iList.h" #include "bList.h" #define NUMBER_OF_BLOCKS 9 #define NUMBER_OF_CHOICES 9 #define NUMBER_OF_DIRECTIONS 4 //赤R,緑G,青B,黄Y, 橙W,白W char *BlockShape[NUMBER_OF_BLOCKS][NUMBER_OF_DIRECTIONS] = { {"RBGO", "BGOR", "GORB", "ORBG"}, {"RYGW", "YGWR", "GWRY", "WRYG"}, {"RYOG", "YOGR", "OGRY", "GRYO"}, {"ROYW", "OYWR", "YWRO", "WROY"}, {"RWBG", "WBGR", "BGRW", "GRWB"}, {"RWBO", "WBOR", "BORW", "ORWB"}, {"BYOW", "YOWB", "OWBY", "WBYO"}, {"BGOY", "GOYB", "OYBG", "YBGO"}, {"BGWY", "GWYB", "WYBG", "YBGW"} }; int Number_of_Solutions; void printBoard(char board[6][6]) { for (int i = 0; i < 6; i++) { if (i%2==0) printf("+--+--+--+\n"); for (int j = 0; j < 6; j++) { if (j%2==0) printf("|"); printf("%c", board[i][j]); } printf("|\n"); } printf("+--+--+--+\n"); } void printSolution(bLIST *x) { char board[6][6]; for (int i = 0; i < B_size(x); i++) { int row = i/3; int col = i%3; bSHAPE p = B_retrieve(x, i); char block = BlockShape[p.BlockID][p.Direction]; board[2row ][2col ] = block[0]; board[2row ][2col+1] = block[1]; board[2row+1][2col+1] = block[2]; board[2row+1][2*col ] = block[3]; } printBoard(board); } int consistent_H(char *block, char *newblock) { //newblockを追加する際,その左方にあるblockについて,水平方向に関する制約条件をチェック //制約条件を満たしていれば1,満たしていなければ0を返す. } int consistent_V(char *block, char *newblock) { //newblockを追加する際,その上方にあるblockについて,垂直方向に関する制約条件をチェック //制約条件を満たしていれば1,満たしていなければ0を返す. } int appendable(bLIST *x, bSHAPE e) { char *newblock = BlockShape[e.BlockID][e.Direction]; int m = B_size(x); int row = m/3; int col = m%3; for (int i = 3*row; i < m; i++) {// 横方向(同じ行のブロックとの比較) bSHAPE p = B_retrieve(x, i); char *block = BlockShape[p.BlockID][p.Direction]; if (consistent_H(block, newblock) == 0) return 0; } for (int i = col; i < m; i += 3) {// 縦方向(同じ列のブロックとの比較) bSHAPE p = B_retrieve(x, i); char *block = BlockShape[p.BlockID][p.Direction]; if (consistent_V(block, newblock)== 0) return 0; } return 1; } void perm(bLIST x, iLIST rest, int r) {//restからr個選んでxの末尾に付加 if (r == 0) { printf("#%d\n", ++Number_of_Solutions); printSolution(&x); } else { for (int i = 0; i < size(&rest); i++) { swap(&rest, 0, i); int blockID = popFront(&rest); for (int d = 0; d < NUMBER_OF_DIRECTIONS; d++) { bSHAPE e = {blockID, d}; if (appendable(&x, e)) { B_pushBack(&x, e); perm(x, rest, r-1); // 再帰呼び出し B_popBack(&x); } } pushFront(&rest, blockID); } } } int main(void) { Number_of_Solutions = 0; int n = NUMBER_OF_BLOCKS; int r = NUMBER_OF_CHOICES; bLIST x; iLIST rest; B_makeEmpty(&x); makeEmpty(&rest); for (int e = 0; e < n; e++) pushBack(&rest, e); perm(x, rest, r); return 0; } ここからbList.h #include <stdio.h> typedef struct { int BlockID; // 0, 1, ..., 9 int Direction; // 0, 1 } bSHAPE; #define MAXLENGTH (100) typedef struct { int L; int R; bSHAPE elem[MAXLENGTH];//要素を格納する配列 } bLIST; void B_makeEmpty(bLIST *x); // リストを初期化する int B_isEmpty(bLIST *x); // リストが空であれば1を,そうでなければ0を返す int B_size(bLIST *x); // リストの要素数を返す int B_isFull(bLIST *x); // リストが一杯であれば1を,そうでなければ0を返す void B_pushFront(bLIST *x, bSHAPE e); // リストの先頭に要素eを追加する void B_pushBack(bLIST *x, bSHAPE e); // リストの末尾に要素eを追加する bSHAPE B_popFront(bLIST *x); // リストの先頭から要素を取り出す bSHAPE B_popBack(bLIST *x); // リストの末尾から要素を取り出す bSHAPE B_retrieve(bLIST *x, int i); // リストのi番目の要素を返す void B_swap(bLIST *x, int i, int j);// void B_printList(bLIST *x); ここからiLisit.h #include <stdio.h> #define MAXLENGTH (100) typedef struct { int L; int R; int elem[MAXLENGTH];//要素を格納する配列 } iLIST; void makeEmpty(iLIST *x); // リストを初期化する int isEmpty(iLIST *x); // リストが空であれば1を,そうでなければ0を返す int size(iLIST *x); // リストの要素数を返す int isFull(iLIST *x); // リストが一杯であれば1を,そうでなければ0を返す void pushFront(iLIST *x, int e); // リストの先頭に要素eを追加する void pushBack(iLIST *x, int e); // リストの末尾に要素eを追加する int popFront(iLIST *x); // リストの先頭から要素を取り出す int popBack(iLIST *x); // リストの末尾から要素を取り出す int retrieve(iLIST *x, int i); // リストのi番目の要素を返す void swap(iLIST *x, int i, int j);// リストのi番目とj番目の要素を入れ替える void printList(iLIST *x);
質問日時: 2021/11/20 08:15 質問者: とに1001
解決済
4
0
-
コンパイルについて。
https://oshiete.goo.ne.jp/qa/12632016.html?pg=1&isShow=openのURLで、バックスラッシュの半角が入力出来ません。教えていただけると助かります。すみません。terapadです。教えていただけると助かります。すみません。
質問日時: 2021/11/19 22:11 質問者: メラゾーム
ベストアンサー
3
0
-
C# の File.Exists について
C# の File.Exists を使ってフルパスでファイルを指定しても例外が検出できず、システムの例外エラーが出てしまいます。なぜでしょうか? たとえば if ( File.Exists(@"C:\Visual Studio 2019 Source\images\zMessier51.png") && File.Exists(@"C:\Visual Studio 2019 Source\images\abc.png") ) { ・・・・・ } else { MessageBox.Show("画像ファイルが存在しません!", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } のようにしても MessageBox.Show が実行されず、添付図のようなシステムの例外エラーが出ます。
質問日時: 2021/11/19 07:09 質問者: アンドロメダシティ
ベストアンサー
1
0
-
以下のc言語コードを利用して、ファイルに書き込むプログラムを作成したいですけど、見本とか教えてくださ
以下のc言語コードを利用して、ファイルに書き込むプログラムを作成したいですけど、見本とか教えてくださいませんか。 素人なので、よろしくお願い致します。 #include <stdio.h> #include <time.h> void main() { time_t current; struct tm *local; time(¤t); //現在の日付時刻シリアル値 local = localtime(¤t); //日本ローカル構造体へデータを格納 printf(" %2d 時 %2d 分 %2d 秒\n", local->tm_hour /*時*/ ,local->tm_min /*分*/ ,local->tm_sec /*秒*/ ); return; }
質問日時: 2021/11/17 23:10 質問者: Mercyを
解決済
2
0
-
エンディアンと2の補数表現
unsigned int型をバイナリモードでファイルに書き込みした時、 そのバイト列がどうなっているのかを、「エンディアン」に関連して説明する。 また、int型をバイナリモードでファイルに書き込みした時、 そのバイト列がどうなっているのかを、「エンディアンと2の補数表現」に関連して説明する。この二つの問題について、ご教授ください。
質問日時: 2021/11/16 20:02 質問者: かか。。。
ベストアンサー
2
0
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
最新のコラム/記事
-
マッチングアプリで出会ったカップルは成婚率が高い!?結婚カウンセラーに聞いてみた
パートナーとの出会いの場として、もはや主流となったネット婚活やマッチングアプリ。中でも手軽に登録できるマッチングアプリは、10代から50代と幅広い年代が利用している。一方で、“相手の目的が投資関係の詐欺や...
-
メダロット:第250話「Vol.250※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
メダロット:第249話「Vol.249※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
日本古来の伝統工芸「金継ぎ」で修復した食器は前と同じように使えるの?
大切にしている食器が割れてしまったら、きっと誰もが「元に戻したい」と願うだろう。「教えて!goo」にも「割ってしまったお気に入りの食器を復活できる?」という質問があり、最適な方法について様々な意見が寄せら...
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
逆コンパイルと逆アセンブルの違い...
-
C言語について。
-
これて逆じゃないですか?
-
C言語について。
-
コンソールアプリを作成するのにお...
-
私は
-
C言語 1から20までの逆数の和を求め...
-
Windows Formアプリからコンソール...
-
プログラムの実行時に'<'でリダイレ...
-
パソコン
-
あんまり考えたくないけど
-
10進数からN進数に変換するプログラ...
-
バッチファイルで以下のようなもの...
-
c#のTLS1.2での通信について
-
だいがくの電し書籍で
-
VisualStudio2022でC言語プログラム...
-
VisualStudioでのプログラミングに...
-
C言語って古いですか?
-
ホワイトハッカーを目指そうかと思...
-
【C言語】全角文字の配列を、全角の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラム言語について c言語もコ...
-
C#でログファイルにファイルパスが...
-
Python、プログラミングについて質...
-
バッチファイルで以下のようなもの...
-
プログラミングの課題がわからない...
-
だれがとけるの?
-
0 == False はいいけど
-
CPUが16bitでも32bitOSでコンパイル...
-
なんで
-
c++でテンプレートのコードでわから...
-
プログラマーです。このDB設計だと...
-
c言語のリダイレクトによる円の描...
-
プログラミングでArduinoのc++かc#...
-
大量のデータを読み込んで表示する...
-
応用情報技術者試験の令和元年秋、...
-
複素関数はどこはあんまりやらなく...
-
gccを行ってもexeファイルが生成さ...
-
c言語
-
swift言語の最適化 swift最適化を最...
-
VisualStudio2022でC言語プログラム...
おすすめ情報