落書きノート

ふと自分が気になった事を書いてます

C/C++

C言語で問題を解く

解きながら学ぶC言語作者: 柴田望洋,肘井真一,高木宏典,赤尾浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2004/11/09メディア: 単行本購入: 2人 クリック: 43回この商品を含むブログ (9件) を見る // q3-4 #include <stdio.h> int main(void) { char buf[10</stdio.h>…

C++で問題を解く AIZU ONLINE JUDGE

// Matrix Multiplication #include <iostream> #include <algorithm> using namespace std; int main(void) { int n,m,l; cin >> n >> m >> l; long long A[n][m],B[m][l],C[n][l]; fill(C[0], C[n], 0); for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) cin >> A[i][j];</algorithm></iostream>…

C++で問題を解く AIZU ONLINE JUDGE

// Spreadsheet #include <iostream> #include <cstdlib> #include <sstream> #include <algorithm> using namespace std; int main(void) { int r, c; int j = 0; string item, line; cin >> r >> c; cin.ignore(); int sheet[r + 1][c + 1]; int row = 0; int column = 0; fill(sheet[0], sheet[r]</algorithm></sstream></cstdlib></iostream>…

C++で問題を解く AIZU ONLINE JUDGE

// Grading #include <iostream> using namespace std; int main(void) { int m,f,r; int sum; while(cin >> m >> f >> r && (m != -1 || f != -1 || r != -1)) { sum = m + f; if(m == -1 || f == -1 || sum < 30) cout << 'F' << endl; else if(sum >= 80) cout << '</iostream>…

C++で問題を解く AIZU ONLINE JUDGE

// Matrix Vector Multiplication #include <iostream> #include <cstdlib> #include <sstream> #include <algorithm> using namespace std; int main(void) { int n,m; int t; int mi = 0; string line,item; cin >> n >> m; cin.ignore(); int A[n][m],b[m],answer[n]; fill(A[0], A[n], 0); fill(</algorithm></sstream></cstdlib></iostream>…

C++で問題を解く AIZU ONLINE JUDGE

いやー、苦戦しました。難しかったです。こんな感じです。 // Official House #include <iostream> #include <algorithm> #include <vector> using namespace std; struct data_t { int b; int f; int r; int v; bool operator<(const data_t& right) const { return b == right.b ? f == </vector></algorithm></iostream>…

C言語でアルゴリズムとデータ構造その2 前記事の修正版

考えるプログラムの問題は、結構穴が出来ますね。寝ながら考えているとそう思います。チェック漏れがあったので、ソースコードを修正しました。 新・明解C言語によるアルゴリズムとデータ構造作者: 柴田望洋,辻亮介出版社/メーカー: SBクリエイティブ発売日:…

C言語でアルゴリズムとデータ構造

今日はプログラミングが捗りました。Go言語とCrystal言語。ところで今日の最後にこの本の問題を解いてます。久しぶりにやりました。二分探索法と線形探索法を使った問題です。世界で闘うプログラミング力を鍛える本、いつやるんでしょうかね。自分でも思いま…

C++で問題を解く AIZU ONLINE JUDGE

C++11/C++14を使おうと思って型推論を使ってみたら、なぜか変なエラーに阻まれて使えなかったので、今回は普通のC++でやりました。文法、ちゃんと勉強しないと駄目なんですかね。ネットで入門サイトがあるのでそこを参考にしてまたやってみます。連想配列Map…

C/C++とSDL2でアイデアが出たが失敗

前記事の続きです。アイデアが出てやってみましたがやっぱり無理でした。ソースからカスタマイズしていかないと無理だと思います。試したソースコードはこんな感じです。これで最後にします。次回以降からはAndroid(スマホ)のプログラムを作っていく予定で…

C/C++でビジュアルノベルゲーム風のプログラム作成終了

結果は失敗に終わりました。仕様が変更されて融通が効きません。文字の表示のラッピング(折り返し表示)が出来ない仕様になりましたのでここで諦めました。調べてみると以前は出来てたみたいですが、まあここで切り上げておきます。趣味プログラムで考え過…

C++で問題を解く AIZU ONLINE JUDGE

// Reversing Numbers #include <iostream> #include <cstdlib> #include <sstream> using namespace std; int main(int, char ** const) { int n,j = 0; string line, item; cin >> n; int a[n]; cin.ignore(); getline(cin, line); stringstream ss(line); while(getline(ss, item, ' '</sstream></cstdlib></iostream>…

C/C++とSDL2を利用してビジュアルノベルゲーム風のプログラム作成

#include <SDL2/SDL.h> #include <SDL2/SDL_ttf.h> #include <stdio.h> #include <string> const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; void render(); void stringSettings(); bool init(); bool loadMedia(); void close(); SDL_Window *gWindow = NULL; SDL_Renderer *gRenderer = N</string></stdio.h></sdl2/sdl_ttf.h></sdl2/sdl.h>…

C++で問題を解く AIZU ONLINE JUDGE

// Print a Chessboard #include <iostream> using namespace std; int main(void) { int H,W; while(cin >> H >> W && H && W) { for(int i = 0; i < H; i++) { for(int j = 0; j < W; j++) { if(i % 2 == 0 && j % 2 == 0) cout << "#"; else if(i % 2 == 1 && j % 2</iostream>…

C++で問題を解く AIZU ONLINE JUDGE

準備運動に解いたつもりが、悩ましい問題に直面して苦戦しました。もう少しレベルを落としたほうが良いかなぁ…。でもまだイントロダクションですが…。 // Print a Rectangle #include <iostream> using namespace std; int main(void) { int H,W; while(cin >> H >> W </iostream>…

SDLでゲームプログラミング

ゲームプログラミングで試したいことが出来たので、とりあえず雛形を作りました。いつものように単発で作っていくだけです。次回以降の記事からメニュー選択画面を作ってみたいと思います。思いつきなのでとりあえずmacOSで試しました。 #include <SDL2/SDL.h> #include <stdio.h></stdio.h></sdl2/sdl.h>…

C言語で不定期練習 前記事の修正版

#include <stdio.h> #include <stdlib.h> int int_cmpr(const int *a, const int *b) { if(*a == *b) return 1; else if(*a > *b) return 0; else return -1; } void *binsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, co</stdlib.h></stdio.h>…

C言語で不定期練習 二分探索法 バイナリサーチ

// 演習問題3-8 #include <stdio.h> #include <stdlib.h> int int_cmpr(const int *a, const int *b) { return *a == *b; } void *binsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)) { int pl = 0; int pr </stdlib.h></stdio.h>…

C言語で不定期練習

// 演習問題3-6 #include <stdio.h> #include <stdlib.h> int int_cmpr(const long *a, const long *b) { if(*a < *b) return 1; else if(*a > *b) return -1; else return 0; } int main(void) { int i, nx; long ky; long *x; long *p; puts("bsearch関数による探索"); printf</stdlib.h></stdio.h>…

C言語で不定期練習

// 演習問題3-4 #include <stdio.h> #include <stdlib.h> int bin_search(const int a[], int n, int key) { int pl = 0; int pr = n - 1; int pc; int i; do { pc = (pl + pr) / 2; printf("%*s|", 3, ""); for(i = 0; i < n; i++) { if(i == pl) printf(" <- "); else if(i ==</stdlib.h></stdio.h>…

C/C++で不定期練習 AIZU ONLINE JUDGE

// Simple Calculator #include <iostream> using namespace std; int main(void) { int a,b; char op; while(cin >> a >> op >> b) { if(op == '+') cout << a + b << endl; else if(op == '-') cout << a - b << endl; else if(op == '*') cout << a * b << endl; el</iostream>…

C++で不定期練習 AIZU ONLINE JUDGE

// A/B Problem #include <iostream> using namespace std; int main(void) { int a,b; cin >> a >> b; int d = a / b; int r = a % b; double f = (double)a / b; cout << d << " " << r << " " << fixed << f << endl; return 0; } // Circle #include <iostream> #include <cmath> us</cmath></iostream></iostream>…

C++で不定期練習 AIZU ONLINE JUDGE

// print many hello world #include <iostream> using namespace std; int main(void) { for(int i = 0; i < 1000; i++) cout << "Hello World" << endl; return 0; } // print test cases #include <iostream> using namespace std; int main(void) { int x,i = 1; while(cin ></iostream></iostream>…

OpenGL ウォークスルー問題 再トライそして完成

C/C++,OpenGLのウォークスルー問題です。懲りずにやりました。結果、出来ました。gluLookAt関数じゃないと出来ないと思ってましたけど、glRotate関数とglTranslate関数でも出来るものですね。微調整もしました。個人的には完璧に出来たと思います。実験とは…

C言語でOpenGLの課題を解いてみる

クリエイティブ・コーディングというCG作品(シェーダ、アニメーション含む)をプログラミングで作るという新しい分野に取り組もうと思ってます。ウェブでブログを参考にしながら作品のパターンを学習しています。田所淳さんのyoppa.orgというサイトで手軽に…

C言語で不定期練習

#include <stdio.h> #include <stdlib.h> int search(int a[], int n, int key) { int i,j; a[n] = key; for(i = 0;;i++) { printf("%*s|", 3, ""); for(j = 0; j <= i; j++) { printf("%*s", 3, ""); if(j > 0) putchar(' '); } printf("*\n"); printf("%3d|", i); for(j = 0; </stdlib.h></stdio.h>…

C++で不定期練習 at AIZU ONLINE JUDGE

また次回に解こうと思っていた問題文をマジマジと眺めていたら解けてしまったので、この分だけやってみました。後は本当に次回。 // Circle In A Rectangle #include <iostream> using namespace std; int main(void) { int W,H,x,y,r; cin >> W >> H >> x >> y >> r; </iostream>…

C++で不定期練習 at AIZU ONLINE JUDGE

手始めにイントロダクションからやってみてます。 // Hello World #include <iostream> using namespace std; int main(void) { cout << "Hello World" << endl; return 0; } // Cubic #include <iostream> using namespace std; int main(void) { int x; cin >> x; cout << x * </iostream></iostream>…

インラインアセンブラで問題を解く準備(VC++)

後でMASMやNASM(16bit MSDOS Player)も試そうと思いますが、とりあえず手軽なインラインアセンブラから試してみました。結果としては簡単に出来ました。これだと普通のC++問題集も試せそうです。 #include <iostream> using namespace std; int main(void) { int i; __</iostream>…

閏年対応のカレンダー計算(修正版)

完璧に出来ました。我ながら良い! #include <stdio.h> int days[][12] = { {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, }; int week(int y, int m, int d) { return (y + y / 4 - y / 100 + y / 400 + (1</stdio.h>…

C言語で問題を解く

#include <stdio.h> #define VMAX 21 typedef struct { char name[20]; int height; double vision; } PhysCheck; double ave_height(const PhysCheck dat[], int n) { int i; double sum = 0; for(i = 0; i < n; i++) sum += dat[i].height; return sum / n; } void </stdio.h>…

C++でHanafuda Shuffleを解く AIZU ONLINE JUDGE

C++でやると楽ですね。凄く短く書けました。 #include <iostream> #include <vector> #include <algorithm> using namespace std; int main(void) { vector<int> v; int n,r; int p,c; while(true) { cin >> n >> r; if(n == 0 && r == 0) break; v.clear(); for(int i = 0; i < n; i++) v.push</int></algorithm></vector></iostream>…

C言語でHanafuda Shuffleを解く AIZU ONLINE JUDGE

懐かしい問題ですね。サブミットしてみたらアクセプトされました。出来てました。C++とかJavaとかのライブラリ使ったら簡単にできるみたいですけど、なんとなくC言語でアルゴリズムを考えてみました。 #include <stdio.h> #include <string.h> int main(void) { int n,r; int p,</string.h></stdio.h>…

C言語で問題を解く

#include <stdio.h> int card_convr(unsigned x, int n, char d[]) { char dchar[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int digits = 0; int i; if(x == 0) d[digits++] = dchar[0]; else while(x) { printf("%d | %4d ··· %d\n", n, x, x % n); printf(" +--</stdio.h>…

C言語でカレンダー計算(閏年対応)

閏年に対応させても大体しかできなかったのですが、一応、1月と2月以外はできてます。 #include <stdio.h> int days[][12] = { {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, }; int week(int y, int m, int</stdio.h>…

C言語で問題を解く

#include <time.h> #include <stdio.h> #include <stdlib.h> int maxof(const int a[], int n) { int i; int max = a[0]; for(i = 1; i < n; i++) if(a[i] > max) max = a[i]; return max; } int main(void) { int i; int *height; int number; height = calloc(number, sizeof(int)); s</stdlib.h></stdio.h></time.h>…

Win32API ドラッグアンドドロップとリソースメニューの実装

少し手間取りましたが、こんな感じです。 rsdnd.h #define ID_BUTTON1 1000 #define ID_BUTTON2 1001 #define IDM_OPEN 1002 #define IDM_END 1003 dnd.rc #include "rsdnd.h" MYMENU MENU DISCARDABLE BEGIN POPUP "ファイル(&F)" BEGIN MENUITEM "開く(&O)…

C言語で問題を解く

#include <stdio.h> void spira(int n) { int i,j,k; for(i = 0; i < n; i++) { for(j = i; j < n - 1; j++) { printf(" "); } for(k = 0; k < i * 2 + 1; k++) { printf("*"); } puts(""); } } int main(void) { spira(4); spira(8); return 0; } #include <stdio.h> void nrp</stdio.h></stdio.h>…

C言語で問題を解く

問題というか、自分で気になったことをプログラムにしてみました。カレンダー計算です。 #include <stdio.h> int yobi(int y, int m, int d) { return (y + y / 4 - y / 100 + y / 400 + (13 * m + 8) / 5 + d) % 7; } int main(void) { char buf[1000]; int year,mon</stdio.h>…

ボタンにイベントを付加する 文字列を描画する Win32API

イベント付加と文字列描画を兼ねてやってみました。 #pragma comment(lib, "user32") #pragma comment(lib, "gdi32") #include <windows.h> #define ID_BUTTON1 1000 #define ID_BUTTON2 1001 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); ATOM InitApp(HINS</windows.h>…

ボタンの作成 Win32API

少し調べたらすぐ載っていることですので、投稿するほどでもないのですが、まずはボタンの作成から。 #pragma comment(lib, "user32") #pragma comment(lib, "gdi32") #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); ATOM InitApp(HINSTA</windows.h>…

DirectX9のプログラムをコマンドラインでビルドする

Win32APIで気を良くしたのか、DirectX9でもやってみることにしました。まあ、そろそろ11か12を使えという話なんですけど、持ってる資料が9向けのものが多いです。Windows10でDirectX9のインストールは面倒でしたが、使えてるのでこれで良いかなと。 // Direc…

Win32APIのプログラムをコマンドでビルドする

VSでプロジェクト作成をすればできますが、試している段階では色々と面倒なので、ファイル単位で作成して試したいですよね。そういう時にこのようにすればお手軽に試せます。 #pragma comment(lib, "user32") #pragma comment(lib, "gdi32") #include <windows.h> LRESU</windows.h>…

C言語で問題を解く

#include <stdio.h> int main(void) { int a,b; printf("aの値 : "); scanf("%d", &a); while(1) { printf("bの値 : "); scanf("%d", &b); if(a >= b) printf("aより大きな値を入力せよ!\n"); else break; } printf("b - aは%dです。\n", b - a); return 0; } #includ</stdio.h>…

Win32APIを再開

プログラムを打ち込むだけで疲れました。これをベースに色々試していきたいと思ってます。それにしてもファイル単体でプログラムを作ろうとすると、プロセスにアタッチするだけしかできないですね。コマンドを併用すればファイル単体でもWin32APIを試せるか…

C言語で問題を解く

以下の本を本格的にやってます。 新・明解C言語によるアルゴリズムとデータ構造作者: 柴田望洋,辻亮介出版社/メーカー: SBクリエイティブ発売日: 2011/08/27メディア: 単行本購入: 3人 クリック: 37回この商品を含むブログ (7件) を見る データ構造とアルゴ…

C実践プログラミング

C言語の更なる使い方を極めるため…。 C実践プログラミング 第3版作者: Steve Oualline,望月康司(監訳),谷口功出版社/メーカー: オライリー・ジャパン発売日: 1998/06/15メディア: 大型本購入: 7人 クリック: 158回この商品を含むブログ (45件) を見る 例えば…

Paizaの問題、解けた…。

いやー、難しいですね。本当はギブアップしてやめておこうと思ったんですけど、布団で横になってると、そのことばかり考えるようになってですね…。ry Paizaのスキルチェック問題、ランクC問題の初級編ですね。お菓子の分配についての問題です。解いてる人は5…

Paizaの問題、普通には解けないような。

多分、何か法則があると思うので、プログラミングの知識だけでは無理かも。ここでギブアップです。 #include <stdio.h> #include <stdlib.h> #include <string.h> int compare_int(const void *a, const void *b) { return *(int*)a - *(int*)b; } int main(void){ int no1, no2; scanf("%</string.h></stdlib.h></stdio.h>…

プログラミングの問題掲載サイト CodingBat等々

ネットにあるプログラミング問題掲載サイト、全部が全部悪いとはいいませんが、相手に解かせる気がないものばかりであまりしてこなかったのですが、先ほどCodingBatというウェブサイトがあるのを知り、ここで一つ問題を解いてみました。 Question 1 The para…