C/C++の宿題を片付け ..
2:デフォルトの名無しさん
08/01/14 23:02:31
∩___∩
|ノ⌒ ⌒ ヽ
/ ●) ●) |
オツカレチャ━━━| ( _●_) ミ━━━ン♪
彡、 |∪| 、`
/ ヽノ ヽ
/ 人 \\ 彡
⊂´_/ ) ヽ__`⊃
/ 人 (
(_ノ (_)
3:デフォルトの名無しさん
08/01/14 23:16:24
>>1
前スレのアドレス間違ってるぞクズ
低脳が粋がって新スレ立てるなボケ
半年ロムってろゆとり
4:デフォルトの名無しさん
08/01/14 23:19:16
>>3
ム板でツンデレを見ることになるとは
>>1乙
5:デフォルトの名無しさん
08/01/14 23:24:19
>>1
乙。
>>3
ツンデレ乙。
6:デフォルトの名無しさん
08/01/14 23:37:53
C/C++の宿題を片付けます 102代目
スレリンク(tech板)
まだ埋まっていないので質問者はこちらへどうぞ
7:デフォルトの名無しさん
08/01/15 00:01:11
>>1 乙ンデレ
8:デフォルトの名無しさん
08/01/15 01:19:42
Cで任意の4つの数字を入力して四則演算(カッコ無し)
で10にするプログラム教えてください
9:デフォルトの名無しさん
08/01/15 01:26:26
>>8
コラー!!
10:デフォルトの名無しさん
08/01/15 01:43:34
おしっこ漏れちゃったぉ。
11: ◆gDKJL3vNys
08/01/15 01:52:04
前スレ>>990 >>992
レスありがとうございます
申し訳ありませんマイコンにも種類があるのですね
ハードウェアマニュアルによるとH8/3664グループと書かれています
たしかH8/3664Nだと思われます
12:デフォルトの名無しさん
08/01/15 01:52:18
>>8
scanf("%d %d %d %d",a,b,c,d);
printf("%d+%d+%d+%d+%d\n",a,b,c,d,10-(a+b+c+d));
13:デフォルトの名無しさん
08/01/15 01:55:31
>>12
2 4 6 8 → 2+4-6+8=10
みたいな意味じゃないの?
14:デフォルトの名無しさん
08/01/15 01:56:17
四則計算も出来ないとは…orz
2*4-6+8=10だ。
15:デフォルトの名無しさん
08/01/15 02:06:48
専ブラ使って、前スレ取得してればそれなりに見えるはず
URLばっかりでうざかったら申し訳。
【未解決問題】
スレリンク(tech板:986番) 期限切れだが早めに (pass:c)
スレリンク(tech板:934番) 1/15 早朝(7時くらい)
スレリンク(tech板:870番) 1/15 正午
スレリンク(tech板:514番) 1/15
スレリンク(tech板:881番) 1/15
スレリンク(tech板:924番) 1/15 >>793と別人? >>794?
スレリンク(tech板:952番) 1/15
スレリンク(tech板:957番) 1/15
スレリンク(tech板:988番) 1/16
スレリンク(tech板:576番) 1/17日中
スレリンク(tech板:985番) 1/17
スレリンク(tech板:824番) 1/18
スレリンク(tech板:229番) 1/31
16:デフォルトの名無しさん
08/01/15 03:40:56
スレリンク(tech板:924番)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
17:デフォルトの名無しさん
08/01/15 03:49:17
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):入力した文字列(アルファベット)の中に、指定したもじがいくつあるかカウントするプログラムを作成せよ。カウントした値を表示させること。なおカウントする文字列が該当しない場合は、0と表示する。
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2008年1月16日10時まで
[5] その他の制限:特にないです
どうかよろしくお願いします
18:デフォルトの名無しさん
08/01/15 03:50:49
>>000000000000000000000000000000000017
文字の指定方法は?
19:デフォルトの名無しさん
08/01/15 04:05:55
スレリンク(tech板:576番)
狭義対角優位って |a_ii| >= 培aij| (j!=i) でよかったっけ
// diagonally dominat -> 1, else -> 0
int is_dd_sq_matrix( double * mat, int n ) {
int i, j;;
if ( mat == 0 || n < 1 ) return 0;
for ( i = 0; i < n; ++i ) {
double a = fabs( mat[ i * n + i ] );
for ( j = 0; j < n; ++j ) a -= fabs( mat[ i * n + j ] );
if ( a < 0 ) return 0;
}
return 1;
}
int main(){
int n = 10;
double * mat = malloc( sizeof(double)*n*n);
if ( mat ) { int i;for(i=0;i<n*n;++i) mat[ i ] = rand()/(double)RAND_MAX;
printf( "mat is%sdd\n", is_dd_sq_matrix(mat,n) ? " " : " not "); free(mat);}
return 0;}
20:デフォルトの名無しさん
08/01/15 05:41:06
スレリンク(tech板:985番)
もっときれいな方法がありそうだが
#include <stdio.h>
#include <math.h>
typedef unsigned int uint;
int main( int argc, char ** args ){
uint a, b, ma, mb;
double dif = 4., l = 3., u = 4.;
for ( b = 1; b < (0xFFFFFFFF / 3); ++b ){
for ( a = (uint)(b * l - 1); a < (uint)( b * u + 1 ); ++a ){
if ( dif > fabs( M_PI - (double)a / b ) ) {
ma = a; mb = b;
dif = fabs( M_PI - (double)a / b );
l = M_PI - dif; u = M_PI + dif;
printf ( "a:%u, b:%u, a/b:%.20lf, dif:%.20lf\n", a, b, (double)a/b, dif );
}
}
}
printf ( "a:%u, b:%u, a/b:%.20lf, dif:%.20lf\n", ma, mb, (double)ma/mb, dif );
return 0;
}
21:デフォルトの名無しさん
08/01/15 06:57:41
>>17
#include <stdio.h>
int StrCount(char *str,int chr)
//戻り値:カウント値
//str:文字列
//chr:カウントする文字
{
int result;
result=0;
while(*str)
{
if(*str==chr)result++;
str++;
}
return result;
}
int main(void)
{
char str[1024];int count;int chr;
printf("文字列を入力してください。");gets(str);
printf("カウントする文字を入力してください。");chr=getc();
count=StrCount(str,chr);
printf("%d個見つかりました。\n",count);
return 0;
}
22:デフォルトの名無しさん
08/01/15 09:27:39
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
0がでる確率40%、1〜50がでる確率10%、51〜100がでる確率10%、101〜150がでる確率10%
151〜200がでる確率10%、201以上がでる確率20%
上記の条件で乱数を1000個発生させるプログラムを作成しなさい。
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2008年1月16日12時
[5] その他の制限:特にないです
よろしくお願いします
23:8
08/01/15 09:35:42
>14
それです!良かったら教えてください。unixのgccです。
24:デフォルトの名無しさん
08/01/15 09:38:45
>>23
とりあえず>>1をよく読んで書き直し
25:デフォルトの名無しさん
08/01/15 09:52:28
>>22
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, r;
srand((unsigned int)time(0));
for(i=0;i<1000;i++)
{
r = (int)((rand() / ((double)RAND_MAX+1.0f)) * 10);
if( r < 6 )
{
r *= 50;
r += (int)((rand() / ((double)RAND_MAX+1.0f)) * 49)+1;
}
else r = 0;
printf("%d\n", r);
}
return 0;
}
遅刻しそうであせって作ったので間違ってるかも。確認は自分でヨロ
26:デフォルトの名無しさん
08/01/15 10:44:41
>>22
上限は?
27:デフォルトの名無しさん
08/01/15 10:50:19
スレリンク(tech板:985番)
これじゃだめかな?
#include <stdio.h>
#include <math.h>
int main(void)
{
unsigned int A, B = 1;
A = B * (unsigned int)M_PI;
while (A <= 0xffffffff) {
printf("A = %d, B = %d\n", A, B);
B++;
A = B * (unsigned int)M_PI;
}
return 0;
}
28:デフォルトの名無しさん
08/01/15 11:13:17
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):
実数aと非負整数nを読み込みaのn乗を計算して出力するプログラミングを作りなさい。
実数aと非負整数nに対して、aのn乗を計算する再帰関数double power(double a,int n)を必ず
作成すること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限:1月19日まで
[5] その他の制限: とりあえず再帰関数を使う。
29:デフォルトの名無しさん
08/01/15 11:17:55
#include <stdio.h>
#include <malloc.h>
#define buffer_size 10
int main(int argc ,char *argv[])
{FILE *p;
char buffer[buffer_size];
if(argv[1]==0){
printf("ファイル名を入力してください\n");
scanf("%s",&argv[1]);
}else if(argv[1]==0){
printf("プログラムを終了します。");return 0;
}
p=(FILE *)malloc(sizeof(FILE));
if(p == 0){
perror("領域確保に失敗");return 0;
}
p=fopen(argv[1],"r");
if(p){
while(fgets(buffer,buffer_size,p)){
printf("%s",buffer); }
}
if(!p){
printf("文字列を書き込んでください\n");
scanf("%s",buffer);
p=fopen(argv[1],"w");
if(fprintf(p,buffer)==0){
perror("終了します。\n");return 0;}
};
fclose(p);free(p);return 0;
}
うまい下手はさておいてこのプログラムの間違いを教えてください。コマンド未入力の場合、既存ファイルがあるにも関らず入力を促す。セグメンテーション、アボートエラーがでます。よろしくお願いします。
30:デフォルトの名無しさん
08/01/15 11:21:48
>>29
>if(argv[1]==0){
>printf("ファイル名を入力してください\n");
>scanf("%s",&argv[1]);
>}else if(argv[1]==0){
>printf("プログラムを終了します。");return 0;
>}
・argv[1] == 0 じゃなくて argc == 0
・if(argv[1]==0) ・・・ else if(argv[1]==0)
↑ねーよwwww
31:デフォルトの名無しさん
08/01/15 11:35:21
>>29-30
スレ違い。
一応間違いを以下に指摘。
# 詳細は、初心者スレなどで
--
#include <malloc.h>
scanf("%s",&argv[1]);
p=(FILE *)malloc(sizeof(FILE));
--以下省略
32:デフォルトの名無しさん
08/01/15 11:42:09
前スレ870です
多少なら締め切りをオーバーしてもOKなので、今からでもどなたか解答をお願いできますでしょうか
33:デフォルトの名無しさん
08/01/15 11:46:59
>>28
#include <stdio.h>
double power(double a,int n)
{
return n ? a*power(a,n-1):1;
}
int main(void)
{
double a;
int n;
printf("実数a入力>"); scanf("%lf",&a);
do{
printf("非負整数n入力>"); scanf("%d",&n);
}while(n<0);
printf("%.2lf\n",power(a,n));
return 0;
}
34:デフォルトの名無しさん
08/01/15 12:15:19
>>32
木構造かこれ?
両方向リストじゃない?
35:デフォルトの名無しさん
08/01/15 12:19:47
3つのポインタを持つということか……
36:デフォルトの名無しさん
08/01/15 12:29:27
>>32
何時くらいまでならいいんじゃろ?
37:デフォルトの名無しさん
08/01/15 12:30:56
>>34
二分ではなく、それぞれのノードについて任意の数(0〜n個)のポインタを持つ木を作るとの事です
頭の中ではなんとなく分かっているのですが、いざプログラムに直そうとするとチンプンカンプンで……
38:デフォルトの名無しさん
08/01/15 12:32:57
>>36
締め切りを考えると明日の午前中がデッドラインかと
連レスで申し訳ないです
39:デフォルトの名無しさん
08/01/15 12:40:20
>>32
親、子、隣の3つのポインタを持つわけではないの?
普通配列で持ったりはしない気がするけど。
あと、削除が出来るようなことが書いてあるけれど、コマンドの一覧にはないよね?
どうなってるのん?
40:デフォルトの名無しさん
08/01/15 12:46:17
[1] 授業単元: コンピュータグラフィックス
[2] 問題文:
GPSから取得された位置座標をカメラ位置,ジャイロから得られた角度(俯角)をカメラの傾きとし
OpenGLで3D空間内にカメラ視点を設定し,空間中のオブジェクト(任意の座標上)を眺めることの
出来るプログラムを作成せよ.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: どちらでも可
[4] 期限: ([2008年1月16日12:00まで]
[5] その他の制限: OpenGLを使用
OpenGLスレもありましたが,今期限ギリギリで切羽詰っているのでこちらに書かせて頂きました.
プログラムも2ちゃんねるもまだまだ初心者なので何か失礼がありましたら,すみません.
自分は視点の設定が良くわかっていません.
gluLookAt()や透視投影の仕組みの理解不足で,位置座標やカメラ角度をどの引数に代入してやるか
などが頭の中でごちゃごちゃになります.
GPSはWGS84で緯度+35.658632,経度+139.745411のようなデータで得られます.
どのようにxyz空間座標に変換すればよいかなどもご指導頂ければ助かります.
OpenGLに精通された方がいらっしゃれば,どうぞよろしくお願いいたします.
スレ違いならすみません.
41:デフォルトの名無しさん
08/01/15 13:08:57
>>39
ノードの持つポインタは
ルート:子を指すポインタのみ
ノード:親を指すポインタ、子を指すポインタ で進めます。兄弟姉妹に移動する場合、一度親を経由して移動します
要素の削除は「追加出来れば良い」(加点する)課題らしいので、追加して頂かなくて結構です
わかりにくくてすいませんでした
42:デフォルトの名無しさん
08/01/15 13:14:25
>>25
いまさらだけど50*10の乱数つくって
50*6以上を0にすればよかっただけの気がする
43:デフォルトの名無しさん
08/01/15 13:24:24
>>32
とりあえずぱっとみた感じだけど
・子を追加する関数add_child
・親に戻る関数back_parent
・子を検索して表示する関数search_print_node
をそれぞれ作って、コマンド入力するごとに現在注目しているノードを指すポインタのcurを表示すれば良いのかな?
子を消すなら、関数del_childも必要だけど
44:デフォルトの名無しさん
08/01/15 13:42:12
>>32
加点ということなんで、削除込みでつくってみるわい。
45:デフォルトの名無しさん
08/01/15 14:20:29
>>32 これはひどい
URLリンク(kansai2channeler.hp.infoseek.co.jp)
46:デフォルトの名無しさん
08/01/15 14:33:16
[1] 授業単元:プログラミング2
[2] 問題文(含コード&リンク):指定ファイルの内容のうち,指定文字列を含む行を表示するプログラムを作りなさい。(UNIXコマンドのgrepに当たる)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:本日中
[5] その他の制限:急ではありますが、どなたかお願いできますでしょうか
参考:URLリンク(www.rsch.tuis.ac.jp)
47:44
08/01/15 15:13:32
>>32
なんかすでにあるっぽいけど、作っちゃったからおいとくよ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
(実行例と上の仕様に矛盾がある気がする…)
48:デフォルトの名無しさん
08/01/15 15:50:19
キーボードから入力された文字列に指定した文字が何個
含まれているか表示するプログラムを作りなさい。
動作例:
キーから文字を数文字入力してください= alpha-dog
調べる文字を入力してください= a
入力された文字列の中に a は、2 個ありました。
誰か教えてくださいぃぃ
49:デフォルトの名無しさん
08/01/15 16:16:17
>>48
>1
50:デフォルトの名無しさん
08/01/15 16:25:45
// >>48
#include <cstdio>
int main()
{
std::puts(
"キーから文字を数文字入力してください= alpha-dog\n\n"
"調べる文字を入力してください= a\n\n"
"入力された文字列の中に a は、2 個ありました。\n"
);
return 0;
}
51:>>48
08/01/15 16:29:28
>>50のとおりに動作するようにしてくださいぃぃ
52:デフォルトの名無しさん
08/01/15 16:32:27
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
キーボードから1行ずつ入力を受け取り、アルファベットである場合は13字ずつずらす暗号文の作成。
(A→N、B→O、(中略)、M→Z、N→A、(中略)、Y→L、Z→M)
アルファベット以外はそのまま表示するので「abc500」と入力された場合「nop500」と表示される。
通常の文を打てば暗号の文になり暗号文を打てば通常文に戻る、ということ。
また10行分入力を受けたらプログラムを終了し、一行は80字でよい。
なお、プログラム中に最低1つのmain()関数以外の関数を定義すること。
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio.NET2003(これでいいのか不安だけど)
[3.3] 言語: C
[4] 期限: 今週中(2008年1月19日)まで
[5] その他の制限:
文字列・文字コードは習得。main以外の関数は授業内ではdouble distanceとmyislowerとintmax、intmin、dumb程度です。これが関数でいいのかどうかは正直よくわかりませんが…orz
どうかご教授よろしくお願いいたします
53:デフォルトの名無しさん
08/01/15 16:33:46
printfとかつかいますよね?
54:デフォルトの名無しさん
08/01/15 16:46:21
>>51
50はどう見ても、50の通り動作するだろ。
55:デフォルトの名無しさん
08/01/15 16:56:37
//>>52
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void crypt(char * foo)
{
static char const inputLetters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
static char const outputLetters[] = "NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm";
for (int ic = 0; foo[ic] != '\0'; ++ic) {
int ch = foo[ic];
char * pos = strchr(inputLetters, ch);
if (pos != NULL) {
foo[ic] = outputLetters[pos - inputLetters];
}
}
}
int main()
{
char buf[81];
for (int ic = 0; ic < 10 && fgets(buf, sizeof(buf), stdin) != NULL; ++ic) {
crypt(buf);
fputs(buf, stdout);
}
return 0;
}
56:デフォルトの名無しさん
08/01/15 17:10:45
そのまま貼り付ければ動作しますか?
57:デフォルトの名無しさん
08/01/15 17:12:25
>>56
しません
帰れ!
58:52
08/01/15 17:14:38
早速の返答ありがとうございます
>>56の行動をしてしまった…orz
エラーが出る部分はどう対処すればいいでしょうか?
質問ばかりで申し訳ありません。。
59:デフォルトの名無しさん
08/01/15 17:29:48
1-1/2+1/3-1/4+1/5-1/6...
の値を有効数字6桁で求めるプログラムを作れ。
よろしくおねがいします
60:デフォルトの名無しさん
08/01/15 17:55:06
>>58
二箇所のfor (int ic... を、int ic; for (ic... に書き換えればOK。
61:デフォルトの名無しさん
08/01/15 18:10:13
>>59
>1
62:デフォルトの名無しさん
08/01/15 18:25:01
>>59
int main(int argc, char* argv[])
{
printf("%f\n", log(2.0));
return 0;
}
63:デフォルトの名無しさん
08/01/15 18:27:24
>>62
さっそくありがとうございます。
でも、任意の項でやめるときはどうしたらいいのでしょうか?
64:デフォルトの名無しさん
08/01/15 19:04:38
前スレの
>>938
>>925
本当に色々とありがとうございました。
65:デフォルトの名無しさん
08/01/15 19:12:35
>>63
テンプレ守ってないのがすごく気に入らないけど暇だったので。
#include <stdio.h>
int main(void)
{
double answer = 0;
int n;
int i;
printf("input N >>"); scanf("%d", &n);
for (i = 1; i <= n; ++i)
answer += (i & 1)? 1.0 / i: -1.0 / i;
printf("answer: %lf\n", answer);
return 0;
}
66:デフォルトの名無しさん
08/01/15 19:18:38
>>65
たびたびすみません、
三項演算子を使わない方法はありますか?
67:デフォルトの名無しさん
08/01/15 19:19:29
>>66
if使えよ
68:デフォルトの名無しさん
08/01/15 19:20:32
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語: C
[4] 期限:1月15日
[5] その他の制限:
69:デフォルトの名無しさん
08/01/15 19:23:52
>>67
といいますと?
>>68
またジャンケンwwww
70:デフォルトの名無しさん
08/01/15 19:25:22
じゃんけん自重しろ
71:デフォルトの名無しさん
08/01/15 19:27:58
∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ >>69
( \ / _ノ | |
.\ “ /__| |
\ /___ /
72:デフォルトの名無しさん
08/01/15 19:31:35
>>69
ホントにあんたって人は一人じゃ何にもできないんだから!
#include <stdio.h>
int main(void)
{
double answer = 0;
int n;
int i;
printf("input N >>"); scanf("%d", &n);
for (i = 1; i <= n; ++i) {
/* answer += (i & 1)? 1.0 / i: -1.0 / i; */
if (i % 2 != 0) /* 奇数項は足し算 */
answer = answer + 1.0 / i;
else /* 偶数項は引き算 */
answer = answer - 1.0 / i;
}
printf("answer: %lf\n", answer);
return 0;
}
73:デフォルトの名無しさん
08/01/15 19:34:33
>>72
ありがとうございます
でもif分を使わなくてもできました!!
for(i=1;i<=n;i+=2)answer+=1.0/i;
for(i=2;i<=n;i+=2)answer-=1.0/i;
でいいんですかね?
74:デフォルトの名無しさん
08/01/15 20:10:22
ツンデレVSヤンデレ
75:デフォルトの名無しさん
08/01/15 20:18:23
前スレ988
スレリンク(tech板:988番)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
P10,11にSW、P50,51,52,53にLED、SW押すと別のLEDを点灯するだけ
タイマV (ベクタ22) の割り込み使ってるからベクタテーブル書き換え忘れないようにな
ルネサス謹製のヘッダファイル使ってるけど、大丈夫か?
76:デフォルトの名無しさん
08/01/15 20:21:52
>>75
ごめんクロック周波数20MHzで作ってる
周波数違うと一部違うから、わかんなきゃ言ってくれ
あとヘッダが3694になってるけどI2C使ってなきゃ3664でも動く
77:デフォルトの名無しさん
08/01/15 20:44:08
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 下のリンク先のプログラムは年月日の差を求めるプログラムなのですが、
・2つの入力年月日を実行時にキーボードから入力させるか
・2つの入力年月日をファイルから与えるか
・2つの入力年月日をコマンドライン引数として与える
この3つ条件のどれか1つを追加したプログラムに書き直したい。
プログラム:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2008年1月16日12:00まで
[5] その他の制限:できれば3つの条件のプログラムをそれぞれ教えて頂けたら助かります。
1つでもかまいません。宜しくお願いいたします。
78:52
08/01/15 22:00:42
>>60
親切にありがとうございます。助かりました。
79:デフォルトの名無しさん
08/01/15 22:05:18
[1] 授業単元:プログラミング
[2] 問題文:物理プログラミングをせよ
ウィンドウズアプリケーションで作成せよ
物: 正四角形(2次元)と地面を作る
地面の動き: 方後キーの←→でその方向に傾く
正四角形の動き: 地面に落ちたり
地面が傾いたらすべるようにする
なおDxLibを使うこと
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c
[4] 期限:2008年1月18日
[5] その他の制限:期日しかいのでよろしくおねがいします
お願いいたします
80:デフォルトの名無しさん
08/01/15 22:10:52
>>79
期日しかいので無理。
81:デフォルトの名無しさん
08/01/15 22:16:26
>>79
DxLib + gcc がしかいだよなぁ
82:デフォルトの名無しさん
08/01/15 22:18:07
>>69
えー((+_+))
お願いします(-_-メ)
83:79
08/01/15 22:45:21
>>80すみません修正いたします
期日は無期ですよろしくお願いいたします
84:デフォルトの名無しさん
08/01/15 22:47:20
>>83
じゃあ、半万年後にまた会いましょう
85:デフォルトの名無しさん
08/01/15 23:07:05
>>79
gccでDxLib使うってからには、ライブラリのビルドは出来てるんだよな?
86:デフォルトの名無しさん
08/01/15 23:09:28
[1] 授業単元:プログラミング技術
[2] 問題文(含コード&リンク):
ファイルに一行にひとつずつ整数が書いてあるとする。このファイルを
コマンドラインで指定して、リストに入力するプログラムを書け。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:1月22日
[5] その他の制限:
よろしくおねがいします
87:デフォルトの名無しさん
08/01/15 23:14:25
>>85
俺も気になったんでググってみると、DxLibは一応Cygwin or MinGWで使えるらしい
但し、関数ポインタを一々DLLから取ってきて使う必要があるらしく煩雑
もともとVC++/BCC用なんだからgcc前提でDxLibを強要する出題内容はセンスを疑うわな
宿題出されたヤツのやる気を削ぐようなこと言って申し訳ないが
88:デフォルトの名無しさん
08/01/15 23:37:31
>>40
これ表示するオブジェクトとかどうすんの?
球体に世界地図のテクスチャでも貼って、地球儀作って表示させんのかな
そんならカメラより地球儀動かした方が簡単な気がするけど
89:デフォルトの名無しさん
08/01/15 23:52:48
>>46
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <regex.h>
int main(int argc, char *argv[])
{
regex_t pat;
int i, err;
char buf[1024];
if(argc < 3)
return fprintf(stderr, "usage : %s pattern filename\n", argv[0]), 1;
if((err = regcomp(&pat, argv[1], REG_EXTENDED | REG_NOSUB | REG_NEWLINE)) != 0){
regerror(err, &pat, buf, sizeof(buf));
return fputs(buf, stderr), 1;
}
for(i = 2; i < argc; i++){
FILE *fp;
if((fp = fopen(argv[i], "r")) == NULL)
return perror(argv[i]), 1;
while(fgets(buf, sizeof(buf), fp))
if(!regexec(&pat, buf, 0, NULL, 0))
fputs(buf, stderr);
fclose(fp);
}
regfree(&pat);
return 0;
}
90: ◆5MBke502AE
08/01/15 23:54:54
>>88
オブジェクトは,建造物を3Dに起こしたもので,
x-z平面を地面としてy軸方向に高さを伸ばしたような物体を想定しています!
GPSから得られた位置をもとに, その建物オブジェクトを眺めた画像を保存し,
更に, GPS位置からある直線上(撮影方向に対する法線)にカメラ視点をズラして,
再び, オブジェクトを眺めた画像を得て…と繰り返して,
複数の画像を得ることが目的です!
言葉足らずですみません!
91:デフォルトの名無しさん
08/01/15 23:59:17
【時間切れ】 (1/15)
[前スレ] >934 >514 >881 >957 >952
【未解決問題】
スレリンク(tech板:986番) 期限切れだが早めに (pass:c)
>>40 1/16 12:00
>>77 1/16 12:00
>>86 1/22
スレリンク(tech板:824番) 1/18
スレリンク(tech板:229番) 1/31
>>79 無期限
92:デフォルトの名無しさん
08/01/16 00:21:54
>>45
>>47
お二方とも、本当にありがとうございます
いつかは自分も宿題を手伝う側になりたいと思いつつ、精進して参ります
93:デフォルトの名無しさん
08/01/16 00:26:37
>>77
> ・2つの入力年月日を実行時にキーボードから入力させるか
もう実装されてね?
94:デフォルトの名無しさん
08/01/16 00:32:39
>>48
#include <stdio.h>
int kensaku(char *data , char target)
{
int count;
for(count=0;*data!='\0';*data++){ *data==target ? count++:1; }
return count;
}
int main(void)
{
int i;
char input[100];
char target[100];
printf("キーから文字を数文字入力してください="); scanf("%s",input);
printf("調べる文字を入力してください="); scanf("%s",target);
for(i=0;target[i]!='\0';i++){
printf("入力された文字列の中に %c は、%d 個ありました。\n",target[i],kensaku(input,target[i]));
}
printf("\n何か入力をしてください\n"); scanf("%s",input);
return 0;
}
95:77
08/01/16 00:35:24
>>93さん
すいませんそうですね!誤りです。
残りの条件の方でできればお願いいたします。
96:デフォルトの名無しさん
08/01/16 01:02:47
>>77
int m22 = 1, d22 = 1;の下からy_count = year_prev(&y1, &y2);上までを以下に書き換えでいかがでしょう
char buf[100];
FILE *fp;
if (argc == 7) {
/* 引数の時
./hoge.exe y1 m1 d1 y2 m2 d2 */
y1 = atoi(argv[1]);
m1 = atoi(argv[2]);
d1 = atoi(argv[3]);
y2 = atoi(argv[4]);
m2 = atoi(argv[5]);
d2 = atoi(argv[6]);
show_date(y1, m1, d1);
show_date(y2, m2, d2);
} else if (argc == 2) {
/* ファイルのとき
ファイルの中身はテキストでy1 m1 d1 y2 m2 d2 */
fp = fopen(argv[1], "r");
fgets(buf, sizeof(buf), fp);
sscanf(buf, "%d %d %d %d %d %d", &y1, &m1, &d1, &y2, &m2, &d2);
show_date(y1, m1, d1);
show_date(y2, m2, d2);
fclose(fp);
}else {
input_date(&y1, &m1, &d1);
show_date(y1, m1, d1);
input_date(&y2, &m2, &d2);
show_date(y2, m2, d2);
}
97: ◆gDKJL3vNys
08/01/16 01:14:56
スレリンク(tech板:988番)
前スレ988です
>>75
遅くなりすみませんレスありがとうございます
情報の後だしかつ、わざわざ作っていただき申し訳ないのですが
学習範囲外技術を含んだ非常に高度なプログラムなのでバレてしまうかもしれません
またルネサスのヘッドファイルだと問題あるのかどうかもよく分かりません
クロックも20MHzだと問題あるのでしょうか?
本日(昨日?)学校より今までに学習しそれを利用して製作した
今までのプログラムをアップしておきました
ろだ、の5781.zipです
後出しかつせかっく作っていただいたのに文句ばかりつけて
本当に申し訳ありませんがアップしたプログラムの組み合わせや応用で
何かオリジナルの課題は作成可能でしょうか?
アップしたプログラムと同じや似た内容だとはねられる可能性があるので
自分なりにも考えていますが現状ではお手上げです
時間も少なく申し訳ないですが、どうかよろしくお願いします。
98:77
08/01/16 02:11:06
>>96さん
引数でもファイルからでもプログラムの実行が行えました!
教えていただいたプログラムは他の課題でも参考に使えそうです。
本当にありがとうございました!
99:75
08/01/16 12:00:27
>>97
課題サンプル見たよ
3664.hのヘッダは多分ルネサスから持ってきたもんだと思うから大丈夫
アップしたプログラムと課題には特に差はなかったです
課題のものが作れるならアップしたものも十分作れる…はず
日中時間ないんで夜になるけど、課題に合わせて修正してみるよ
アップしたプログラムの動作はLEDが以下のように並んでるとして、
常に一つだけ点灯するもの
○○○● SW2押す→ ○○●○ SW2押す→ ○●○○ SW1押す→ ○○●○
上のようにSWが押されると点灯しているLEDをずらしていくだけ
SWは一回押されたら一つLEDをずらす、SWを一回離してもう一回押さないと
動かないようにしてます、内容的にはこんなんでいいのかな
ちなみにクロック違うとタイマのカウント速度が違ってくるので
TV.TCORA = 156 とかやってる部分をクロックに合わせて変更する必要があります
3664だと多分16MHzだと思いますが、どうなってるでしょう
100:デフォルトの名無しさん
08/01/16 12:09:17
[1] 授業単元:プログラミング言語II
[2] 問題文(含コード&リンク):
ポインタ配列を用いて月の名前を英語名で静的変数に格納しなさい。
ポインタ配列を用いて各文字列を走査し、「r」が入っている月を求めなさい。
見つかった月の名前を表示しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008/01/16 24:00まで
[5] その他の制限: 特になし
期限が今日まで申し訳ないですが、よろしくお願いします。
101:デフォルトの名無しさん
08/01/16 12:29:39
月って英語でlunaだっけ?と思った俺は負け組 orz
102:デフォルトの名無しさん
08/01/16 12:41:14
>>99の優しさを独り占めにしたい。
>>100
#include <stdio.h>
int main(void)
{
char *month[] = {"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"};
int i;
char *p;
for(i = 0; i < sizeof(month)/sizeof(month[0]); i++){
for(p = month[i]; *p != '\0'; p++)
if(*p == 'r')
break;
if(*p != '\0')
puts(month[i]);
}
return 0;
}
sizeof(month)/sizeof(month[0])はたまたま動くのかな?(そんなら12にしないと駄目だけど)
103:デフォルトの名無しさん
08/01/16 12:57:36
動くのはたまたまじゃないが、要素数が分かってるからやる必要はないかもな。
104:デフォルトの名無しさん
08/01/16 13:00:24
配列の要素数を指定してないんだからsizeofの方が自然じゃね?
*month[12]とかしてるなら12でもいいけど。
105:デフォルトの名無しさん
08/01/16 13:02:44
それだと文字数が12の予感
106:デフォルトの名無しさん
08/01/16 13:03:58
一度他の変数に限界値保存して比較したほうがいいな。
forループ抜けるまで変動はしないのだから、毎回sizeof2つ使って除算までしてたら無駄過ぎる。
あとbreakする前にputsすればいいところを、わざわざif文外に持ってくる理由も分からん。
107:デフォルトの名無しさん
08/01/16 13:08:55
static忘れてね?
108:デフォルトの名無しさん
08/01/16 13:11:11
忘れてた。
109:デフォルトの名無しさん
08/01/16 13:22:35
sizeof(array) / sizeof(* array)は(コンパイル時に確定するから)定数だよ。
110:デフォルトの名無しさん
08/01/16 13:24:20
>>105
アホがいるw
111:デフォルトの名無しさん
08/01/16 13:37:35
>>110
すんませんでした。
112: ◆gDKJL3vNys
08/01/16 14:30:34
>>99
レスありがとうございます
それで全然かまわないのでよろしくお願いします
お手数おかけし申し訳ありません
113:デフォルトの名無しさん
08/01/16 17:58:06
[1] 授業単元: C言語
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visual studio 2005
[3.3] 言語: C言語
[4] 期限: 今日中です。。。
[5] その他:よろしくお願い致します。
114:デフォルトの名無しさん
08/01/16 19:01:05
>>113
URLリンク(kansai2channeler.hp.infoseek.co.jp)
Switchを再入力させる条件が読み取れなかったので、
その辺は自身で修正して。
115:デフォルトの名無しさん
08/01/16 19:06:48
>>113
おいらもできた。マルチバイト文字セットをつかってくれ
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void) {
#define BUFSIZE 256
char buffer[BUFSIZE]; unsigned char val = 0; int bitpos, bitnum, i;
while (1) {
printf("\nBit number : 7 6 5 4 3 2 1 0\n" "Bit :");
for (i=7; i >=0 ; --i) printf( ((val >> i) & 1) ? " 1" : " 0");
while (1) {
printf("\n\ninput change bit : ");
fgets(buffer, BUFSIZE, stdin);
bitpos = atoi(buffer);
if (buffer[0] == '.') { return 0; }
else if (isdigit(buffer[0]) && (bitpos >= 0 && bitpos <= 7)) { break; }
puts("\nSorry. Input 0-7 number.\n" "(. is end)");
}
while(1) {
printf("\nSwitch on(1) or off(0) ? : ");
fgets(buffer, BUFSIZE, stdin);
bitnum = atoi(buffer);
if (isdigit(buffer[0]) && (bitnum == 0 || bitnum == 1)) {
val = (bitnum == 1) ? (val | (1 << bitpos)) : (val & ~(unsigned char)(1 << bitpos));
break;
}
puts("\nSorry. Input 0 or 1.");
} }
return 0;
}
116:114
08/01/16 19:16:28
あ、バイトじゃなくてビットだから間違ってるorz
117:デフォルトの名無しさん
08/01/16 19:21:30
>>113の人気に嫉妬しつつ書いてみた
URLリンク(kansai2channeler.hp.infoseek.co.jp)
118: ◆gDKJL3vNys
08/01/16 19:36:27
>>99
自分なりに調べてみましたが
仰られる通り
3664ではシステムクロック信号はΦ16MHzで
周波数16MHzでは1ステートは1/16MHz=0.0625μsになるようです
遅くなり申し訳ありませんがよろしければご参考ください
119:114
08/01/16 19:37:29
>>114の修正版。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
120:デフォルトの名無しさん
08/01/16 20:00:39
>>114
>>115
>>117
本当にありがとうございます。
121:デフォルトの名無しさん
08/01/16 20:35:15
[1] 授業単元:コンパイラ
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:どちらでも可
[4] 期限: 1月17日10:00まで
[5] その他の制限:特に無し
よろしくお願いしますm(__)m
122:デフォルトの名無しさん
08/01/16 21:33:08
#include <stdio.h>
int main(void)
{
char buf[100], delim[] = "=)(+*-/.";
char *p, *q;
printf("入力 : ");
fgets(buf, sizeof(buf), stdin);
for (p = buf; *p != '\0'; p++) {
for (q = delim; *q != *p && *q != '\0'; q++);
if (*q)
printf("\n%c\n", *p);
else
putchar(*p);
}
return 0;
}
123:デフォルトの名無しさん
08/01/16 22:38:26
>>121
URLリンク(kansai2channeler.hp.infoseek.co.jp)
124:デフォルトの名無しさん
08/01/16 22:51:02
[1] 授業単元:プログラミング
[2] 問題文:
番号(整数4桁)と氏名(文字型30バイト)から構成される構造体を定義し、データを入力してその内容を表示するプログラムを作成しなさい。
なお、プログラムの終了条件は、ゼロ以下の番号が入力された時点とする。
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語: C
[4] 期限:1月23日
[5] その他の制限:
よろしくお願いします。
125:デフォルトの名無しさん
08/01/16 23:07:56
#include <stdio.h>
struct _data{
int number;
char name[30];
};
int main()
{
int i, j, n;
char buf[100];
struct _data data[100];
for (i = 0; i < 100; i++) {
printf("number : ");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &n);
if (n < 0)
break;
data[i].number = n;
printf("name : ");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%s", data[i].name);
}
for (j = 0; j < i; j++)
printf("%d %s\n", data[j].number, data[j].name);
return 0;
}
配列でよかったのだろうか?
126:デフォルトの名無しさん
08/01/16 23:08:55
>>118
URLリンク(kansai2channeler.hp.infoseek.co.jp)
一応修正版、割り込みとかなしにしました
ビットシフト "<<" とかがわからんとかの話じゃないことを祈る
127:デフォルトの名無しさん
08/01/16 23:17:40
>>118
URLリンク(kansai2channeler.hp.infoseek.co.jp)
連投すまん、ビットシフトも抜いた
128:デフォルトの名無しさん
08/01/16 23:24:37
>>102
ありがとうございます!
おかげで助かりました。
129:デフォルトの名無しさん
08/01/16 23:38:43
>>121
#include<stdio.h>
int main(void){
char buf[100+1];
for(;;){
if(fscanf(stdin, "%100[A-Za-z0-9]", buf)!=1)
if(fscanf(stdin, "%1[(+*/.),-]", buf)!=1){
if(fscanf(stdin, "%1[\n]", buf)!=1) fprintf(stderr, "\nError: unexpected character.\n");
break;
}
puts(buf);
}
return 0;
}
130:デフォルトの名無しさん
08/01/16 23:55:12
ITEM *insert(ITEM **root, char*str)
{
ITEM *pos;
ITEM *tmp;
tmp = (ITEM *) *malloc(sizeof (ITEM));//領域取得
if(tmp == NULL){//取得領域失敗
return NULL;
}
//取得した領域の初期化
memset((void *)tmp, '\0', sizeof(ITEM));
strcpy(tmp -> str , str); //入力された文字列を領域に設定
//*rootに保存
if(*root == NULL){ //リストが空か?
*root = tmp ;
}
else{//リストの末尾を探して追加
pos = *root;
while(pos -> next != NULL){ //次はあるか?
pos = pos -> next;
}
pos -> next = tmp;
}
return tmp;
}
入力された文字列をリストに格納するプログラムの一部です。
しかしこれだと最後に入力した文字列が表示されなくて困っています。
おそらくこの部分に問題があると思うのですが、おかしい部分はあるでしょうか?
131:デフォルトの名無しさん
08/01/17 00:04:49
>>130
スレ違い
宿題だというなら>>1を読んでもう一度よく考えてみよう。
132:デフォルトの名無しさん
08/01/17 01:03:39
こういうのって再帰使って処理するほうが楽だと思うんだけど。
tmp->nextがNULLじゃ無いんじゃない?
133:デフォルトの名無しさん
08/01/17 01:05:50
NULLが0な処理系ならmemsetでNULLになってね?
それより、俺は返り値の意味があるのかとかmallocの前の*は何なのかとか気になるけど。
134:デフォルトの名無しさん
08/01/17 01:11:41
>>132
指摘ありがとうございます。
tmp->nextがNULLじゃ無いんじゃない? ってのは
while(pos -> next != NULLのことでしょうか?
>>133
mallocの前の*は、単なる消し忘れでした。
135: ◆gDKJL3vNys
08/01/17 01:18:59
>>127
ありがとうございます!
これからコンパイルして動作確認してみます
色々本当にありがとうございました
136:デフォルトの名無しさん
08/01/17 01:22:32
LEDを赤く光らせたり青く光らせたりすると面白そう
137:134
08/01/17 01:41:51
すいません。
自己解決しました。
なんかホントに的外しな質問をしてしまいましたw
138:デフォルトの名無しさん
08/01/17 01:54:44
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):正数nとbを10進数としてキーボードから入力すると、
nをb進数で表示するプログラムを作成せよ。
実行例
24[enter]
8[enter]
24(10) = 30(8)
[3] 環境
[3.1] OS:window
[3.2] コンパイラ名とバージョン:BCC
[3.3] 言語:C
[4] 期限:1/17
[5] その他の制限:特にありません
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4910日前に更新/357 KB
担当:undef