08/11/11 12:03:42
>>576
void push(int val)
{
stack[sp++] = val;
}
int pop(void)
{
return stack[sp-- - 1];
}
int isempty(void)
{
/*スタックが空なら1、空でないなら0を返す関数 */
return sp == 0 ? 1 : 0;
}
578:デフォルトの名無しさん
08/11/11 12:08:04
stack[sp++] = val;
は普通だけど、
return stack[sp-- - 1];
って書き方がすごくきもく見えるw
579:デフォルトの名無しさん
08/11/11 12:13:05
return stack[--sp];
だよなぁ常考
580:522
08/11/11 12:37:34
>>578>>579
貼ってから自分でもそうオモタ
581:デフォルトの名無しさん
08/11/11 12:59:00
個人的に
論理式?1:0;とかif(論理式!=0)とかif(論理式==0)
って書き方が好きじゃない。冗長な感じがして。
582:デフォルトの名無しさん
08/11/11 13:01:58
真の時に1を返すと保障されている処理系ならば return sp == 0; でもいいんだけどね
583:デフォルトの名無しさん
08/11/11 13:03:56
C言語は保証されてる
584:デフォルトの名無しさん
08/11/11 14:01:00
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
以下のプログラムを英文清書プログラムに書き換えよ。
元のプログラム
URLリンク(kansai2channeler.hp.infoseek.co.jp)
条件
・文の先頭は大文字、それ以外は小文字。
・アルファベット以外の文字は変換しなくてよい。
・改行、スペース、タブにより単語の区切りとする。また文末は改行コードではなくピリオド"."で判定する。
・\endまたは\ENDを挿入するとそのプログラムを終わるようにする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008/11/12 23:59まで
[5] その他の制限: 特にないです。
すみませんが、よろしくお願いします。
585:デフォルトの名無しさん
08/11/11 14:34:13
INExp.hって??
586:デフォルトの名無しさん
08/11/11 15:28:24
isalphaとtoupper使えればいいのかな
ピリオド検索はstrstrで ポインタアドレスの差を文字列長にもしてげへへへ
587:デフォルトの名無しさん
08/11/11 16:00:13
[1] 授業単元:単方向線形
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 11/18
[5] その他の制限: 特になし
全く分かりません。宜しくお願いします
588:デフォルトの名無しさん
08/11/11 16:12:52
>>587
うそつけw
考える気がないだろw
589:デフォルトの名無しさん
08/11/11 17:34:32
それを言ったらこのスレの存在意義がなくなるわけだが
590:デフォルトの名無しさん
08/11/11 17:36:25
どこのスレにだって黙ってればいいのに野暮ったい突っ込みする奴居るじゃん。
591:デフォルトの名無しさん
08/11/11 18:18:38
>>573
ありがとうございます
592:デフォルトの名無しさん
08/11/11 18:19:28
>>587
超めんどくさい!cの単方向リスト嫌い!
URLリンク(kansai2channeler.hp.infoseek.co.jp)
593:576
08/11/11 18:22:40
>>577
ありがとうございます。>>522と合わせてプログラムにしてみたんだが何もマップされないんです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
自宅のubuntuのgcc(おそらくでやってるんですが環境のせいですか?変なところあったら指摘お願いします。
594:デフォルトの名無しさん
08/11/11 18:24:58
printf("%s\n", map[y]);
595:デフォルトの名無しさん
08/11/11 18:25:43
ごめんかんちがい
596:デフォルトの名無しさん
08/11/11 18:28:38
あ!コピペミスってるだけじゃん~
597:デフォルトの名無しさん
08/11/11 18:49:43
a
598: ◆25LbU5YSxg
08/11/11 18:52:30
>>541
遅れましたが、解答ありがとうございました。
599:577
08/11/11 19:21:30
>>593
map データがなんだかやせ細ってるよ
600:デフォルトの名無しさん
08/11/11 20:20:46
1] 授業単元: C言語
[2] 問題文(含コード&リンク):
(1) 単項式を入力された順に出力されるように変更する
(2)入力した単項式を次数の大きい順にするに出力されるように変更する
ソースは以下を参考にしてください、たらない変数は任意で増やしてけっこうです
URLリンク(kansai2channeler.hp.infoseek.co.jp)
(1)と(2)は別解答
[3] 環境
[3.1] OS: Win
[3.2] コンパイラ名とバージョン: 任意
[3.3] 言語: C
[4] 期限: 2008年11月14日13:30まで
期限が迫ってるのでお願いします
601:デフォルトの名無しさん
08/11/11 20:28:18
この問題昔見たなw
602:デフォルトの名無しさん
08/11/11 20:32:57
すいません
前スレあたりで載せたんですがスルーだったようで自力でやろうとしたけど無理だったので再度^^;
最終期限がすぐであせってます
603:576
08/11/11 20:35:35
なんというミス(^o^)
みなさまありがとうございました。明日も生きていけそうです。
604:デフォルトの名無しさん
08/11/11 20:37:29
[1] 授業単元: 文字列操作
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] cc
[3.3] C
[4] 期限:2008年11月12日15:00まで
[5] その他の制限:問題文中に出てくる、frequency.c を利用せよ、とありますので、
なるべくそれを基盤にするようにお願いします。
↓途中まで考えてみたものです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
605:デフォルトの名無しさん
08/11/11 20:45:38
>>604
1問目
freqency.c の出力部分を以下のように修正
for(i = 0; i < 26; i++) { /* 結果出力 */
while(alpha[i]-- > 0)
printf("*");
printf("\n");
}
606:605
08/11/11 20:54:39
>>604 2問目 main の中身だけ
char c;
int i, j, alpha[26], max = 0;
for(i = 0; i < 26; i++) /* 配列のクリア */
alpha[i] = 0;
c = getchar();
while(c != '\n') {
if (c >= 'a' && c <= 'z') { /* 英小文字の処理 */
alpha[c - 'a'] += 1;
if (alpha[c - 'a'] > max)
max = alpha[c - 'a'];
} else {
if (c >= 'A' && c <= 'Z') { /* 英大文字の処理 */
alpha[c - 'A'] += 1;
if (alpha[c - 'A'] > max)
max = alpha[c - 'A'];
}
}
c = getchar();
}
for(i = 0; i < max; i++) {
for(j = 0; j < 26; j++) { /* 結果出力 */
if (alpha[j] >= max - i)
printf("* ");
else
printf(" ");
}
printf("\n");
}
for(j = 0; j < 26; j++) /* 結果出力 */
printf("%c ", j + 'a');
printf("\n");
607:デフォルトの名無しさん
08/11/11 20:59:53
すいません・・>>491をお願いします・・
608:デフォルトの名無しさん
08/11/11 21:09:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 問1、ユークリッドの法則を使ってn(n≦100)個の正整数の最大公約数を求めるプログラムを作れ
なお、最終的にはgcd(最大公約数を求める整数の羅列)=結果と画面上に表示するようにすること
問2、n個(n≦100以下)の正整数の最小公倍数を求めよ。
表示方法は先ほどの問いと一緒
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:11/13
[5] その他の制限: int gcd(int x, int y)の関数を使用してください
あと、なるべく2つずつ比べるようにして、必ず大きい正数が変数xに入るようにしてください
609:デフォルトの名無しさん
08/11/11 21:15:18
>>607
ボールの初速とか角度は風の影響が全く無いときに当たるようにすればいいの?
それとも投げたら絶対当たるように作るの?
610:デフォルトの名無しさん
08/11/11 21:18:17
[1] 授業単元:C
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
①2次元平面上の点を表す構造体 Point 型を定義して,その点に関する計算を行うプログラムを作成したい.
以下のプログラムを基にして完成せよ.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,原点からの距離を求める関数 length_vector_pを作成する.
ただし,「構造体ポインタ変数」を利用すること.
構造体 Point型を使用して,平面の点を表示する関数 print_v_pを作成する.
ただし,「構造体ポインタ変数」を利用すること.
②2次元平面上の点を表す構造体 Point 型を定義して,その点に関する計算を行うプログラムを作成したい.
以下のプログラムを基にして完成せよ.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,平面の点を表示する関数 print_v_p2を作成する.
ただし,「構造体ポインタ変数」を利用すること.
構造体 Point型を使用して,平面の点を代入する関数 input_point_pを作成する.
ただし,「構造体ポインタ変数」を利用すること.
構造体ポインタ変数に対して,動的にメモリ領域を確保する. malloc を利用する.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual stadio2008
[3.3] 言語: C
[4] 期限: 2008年11月13日
611:デフォルトの名無しさん
08/11/11 21:21:25
>>607
前者でお願いします
612:デフォルトの名無しさん
08/11/11 21:25:52
>>600
とりあえず(1)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
613:デフォルトの名無しさん
08/11/11 21:52:31
>>608
n 個の正数は a[] に入力されているとして。
#include <stdio.h>
int gcd(int x, int y)
{
int r;
if (x < y) {
int t = x; x = y; y = t;
}
do {
r = x % y; x = y; y = r;
} while (r != 0);
return x;
}
int main(int argc, char *argv[])
{
int a[] = { 121, 11, 14641, 1331};
int n = 4;
int i, g;
g = a[0];
printf("gcd(%d", a[0]);
for (i = 1; i < n; i++) {
printf(", %d", a[i]);
g = gcd(g, a[i]);
}
printf(") = %d\n", g);
return 0;
}
614:デフォルトの名無しさん
08/11/11 21:57:28
[1] 授業単元: 自作関数
[2] 問題文(含コード&リンク):
5つの数値を入力し(繰り返し入力)し、最大値を表示する。
[3] 環境
[3.1] OS: Windowsvista
[3.2] VC 6.0等
[3.3] 言語: C
[4] 期限: 今日までなのでよろしくお願いします
[5] その他の制限:繰り返し文しかならってないです。
615:デフォルトの名無しさん
08/11/11 21:59:13
>>614
>>614
#include<stdio.h>
int sori(int x, int y)
{
if( x>=y ) return(x);
return(y);
}
int main(void)
{ int a,b,c,d,e,max;
while ( scanf("%d%d%d%d%d",&a,&b,&c,&d,&e)==5) {
max=a;
max=sori(max,b);
max=b;
max=sori(max,c);
max=c;
max=sori(max,d);
max=d;
max=sori(max,e);
printf("%d %d %d %d %d",a,b,c,d,e);
printf("max=%d\n",max);
}
return (0);
}
616:デフォルトの名無しさん
08/11/11 22:00:00
>>614
>>615
エラーメッセージ
エラー E2209 kadai6-1.cpp 1: インクルードファイル 'stdio.h' をオープンできない
エラー E2268 kadai6-1.cpp 9: 未定義の関数 'scanf' を呼び出した(関数 main() )
エラー E2268 kadai6-1.cpp 18: 未定義の関数 'printf' を呼び出した(関数 main()
上記のようなプログラムを自分で作ったのですが、
上に記したようなエラーメッセージが表示されてしまいました。
これ以上わかりません。どうかよろしくお願いします。
617:デフォルトの名無しさん
08/11/11 22:09:48
>>616
Linux だとちゃんとコンパイルできるから、ワークスペース作ってないとかの問題じゃないの?
以下の行を削除すれば、一応目的は達成できるぞ
max=b;
max=c;
max=d;
618:デフォルトの名無しさん
08/11/11 22:17:17
>>617
試してみます。どうもありがとうございました。
619:デフォルトの名無しさん
08/11/11 22:23:31
コンパイルしたら
「配列または、ポインタでない変数に添字が使われました」って怒られたんですが
どう直せばいいでしょうか?
620:デフォルトの名無しさん
08/11/11 22:24:07
あきらめてください
621:デフォルトの名無しさん
08/11/11 22:25:41
配列またはポインタでない変数に、添え字を使わないようにすればいい
622:デフォルトの名無しさん
08/11/11 22:28:28
まずcppじゃなくてcにするとか
623:619
08/11/11 22:29:25
>>621
ありがとう!
624:デフォルトの名無しさん
08/11/11 22:30:24
てかsoriって関数名なんて意味?ソリ?サンタが乗ってるヤツ?
625:デフォルトの名無しさん
08/11/11 22:33:02
飲み過ぎ食べ過ぎに、ソリマックス。
626:604
08/11/11 22:36:08
>>604,605
素早い対応ありがとうございます。
すいません、問題文のとおりプログラムは1つだけなんです。
つまり、freqency.cを拡張して、横に伸びるグラフと縦に伸びるグラフを
同時に表示したいのです・・・。
605の方を別に作って試してみましたが、縦のグラフは表示できました。
(上の方で1つずつ空白分がずれるのは仕様でしょうか?)
604は、元のプログラムの出力部の変更のみで表示できました。
が、605と一緒にしなければならないので、どうにか605の大文字と小文字の処理を604と
同じくしてできないかと困っています。
よろしければ検討をお願いしたいです。
627:デフォルトの名無しさん
08/11/11 22:38:57
>>626
URLリンク(kansai2channeler.hp.infoseek.co.jp)
違う人だけど。
628:デフォルトの名無しさん
08/11/11 22:42:40
>>626
URLリンク(kansai2channeler.hp.infoseek.co.jp)
629:デフォルトの名無しさん
08/11/11 22:51:20
soriなんて名前付けてsorry・・・。
630:お願いします
08/11/11 23:23:42
[1] 授業単元: アルゴリズムデータ構造Ⅱ
[2] 問題文(含コード&リンク):
複素数a,bを標準入力から入力し、それぞれの絶対値を求め、2つの複素数の和、差、積、商を求め
標準出力に出力するプログラムを作りたい。これらを求める関数として、複素数の絶対値を求める関数
および和、差、積、商を求める関数が
double cabs(struct mycomplex)
struct mycomplex wa(struct mycomplex,struct mycomplex)
struct mycomplex sa(struct mycomplex,struct mycomplex)
struct mycomplex seki(struct mycomplex,struct mycomplex)
struct mycomplex shou(struct mycomplex,struct mycomplex)
として作ることにした。これらの絶対値、和、差、積と商を求める関数を解答せよ
なおこの構造体は予めCの処理系には用意されているが、それを利用せず独立に考えよ。
[3] 環境
[3.1] OS: Windows
[3.2]
[3.3] 言語: C
[4] 期限: 11月16日まで
[5] その他の制限:構造体の問題です 問題文に沿ってお願いします。
631:604,626
08/11/11 23:23:58
>>627
一部重複箇所(横グラフが2つ出ました)がありましたので、それを修正した上で
実行したところ、結果が得られました。
>>628
こちらも正しい結果が得られました。
627さんのプログラムは使われた文字のみの出力、
628さんのプログラムは全てのアルファベットについての出力が確認できました。
もう一度しっかり目を通した上で使わせていただきたいと思います。
レスからわずか10分足らずでの迅速な対応、本当にありがとうございます。
632:お願いします
08/11/11 23:25:43
>>630
#include<stdio.h>
#include<math.h>
struct mycomplex {double re;
double im;};
int main()
{struct mycomplex a,b;
struct mycomplex wa(struct mycomplex,struct mycomplex);
struct mycomplex sa(struct mycomplex,struct mycomplex);
struct mycomplex seki(struct mycomplex,struct mycomplex);
struct mycomplex shou(struct mycomplex,struct mycomplex);
double cabs(struct mycomplex);
struct mycomplex cinput(void);
void cprint(struct mycomplex);
a=cinput(); b=cinput();
cprint(wa(a,b)); cprint(sa(a,b)); cprint(seki(a,b)); cprint(shou(a,b));
printf("絶対値 cabs(a)=%f\n",carbs(a)); printf("絶対値 cabs(b)=%f\n",cabs(b));}
struct mycomplex cinput(void)
{struct mycomplex z;
scanf("%f %f",&z.re,&z.im);
return z;}
void cprint(struct mycomplex z)
{ printf("複素数 = %f + i*%f\n",z.re,z.im);}
633:大輔
08/11/12 00:18:51
[1] 授業単元:繰り返し処理(for文・while文)
[2] 問題文(含コード&リンク):下に示すような九九の表を表示するプログラムを作成しなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C++
[4] 期限:2008年11月14日15:00まで
[5] その他の制限:printf,scanf,if,switch,程度の関数しか習っていません。for文の入れ子(二重のforループ)を使う。フォーマットをそろえるには、書式指定文字列(変換仕様)を利用。
1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9
2 2 4 6 8 10 12 14 16 18
3 3 6 9 12 15 18 21 24 27
4 4 8 12 16 20 24 28 32 36
5 5 10 15 20 25 30 35 40 45
6 6 12 18 24 30 36 42 48 54
7 7 14 21 28 35 42 49 56 63
8 8 16 24 32 40 48 56 64 72
9 9 18 27 36 45 54 63 72 81
634:デフォルトの名無しさん
08/11/12 00:26:39
>>633
#include <stdio.h>
main()
{
int i, j;
for(i = 0; i < 10; i++) {
for(j = 0; j < 10; j++)
if (i == 0)
if (j == 0)
printf(" ");
else
printf("%2d ", j);
else if (j == 0)
printf("%d ", i);
else
printf("%2d ", i * j);
printf("\n");
}
}
635:デフォルトの名無しさん
08/11/12 00:35:49
#include <stdio.h>
void main(){
printf(" ");
for(i=0; i<10; i++){
printf(" %2d", i);
}
printf("\n");
for(i=1; i<10; i++){
printf("%d", i);
for(j=0; j<10; j++){
printf(" %2d", i*j)
}
printf("\n");
}
}
636:634
08/11/12 00:37:47
>>635
こっちのほうがすっきりしてるね
637:デフォルトの名無しさん
08/11/12 00:39:11
↑jも1からだった
void main(){
printf(" ");
for(i=1; i<10; i++) printf(" %2d", i);
printf("\n");
for(i=1; i<10; i++){
printf("%d", i);
for(j=1; j<10; j++) printf(" %2d", i*j)
printf("\n");
}
}
638:デフォルトの名無しさん
08/11/12 00:41:40
%2dじゃ空白が入らないんじゃないの?
639:デフォルトの名無しさん
08/11/12 00:47:29
[1] 授業単元:プログラミング言語
[2] 改行を含む文字を受け取るにはどうすればいいんでしょうか?getを使えばスペースを含む文字を変数に書き込めるのは分かったんですが、改行を含む文字を書き込む方法が分かりません。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: ごめんよく分からない。でも使っているのはMicrosoftからダウンロードしたVisual C++
[3.3] 言語: C++
[4] 期限2008/11/15
[5] その他の制限: 無し
640:デフォルトの名無しさん
08/11/12 00:48:35
>>639
getsのこといってんだろうか・・・・・・・・
fgetsを使えばいんじゃね?
641:デフォルトの名無しさん
08/11/12 01:23:17
[1] 授業単元:ハッシュ法
[2] 問題文(含コード&リンク):指定したファイルを読み込み開放番地法でのハッシュ表を生成し、
(i) 線形探査法
(ii) 二重分散法
に基づいた探索関数を作成せよ。
(i),(ii)の探索関数を用いて任意の値
(a) 表中に存在するキー 100個
(b) 表中に存在しないキー 100個
について連続で探索し、総探査回数、総実行時間を記録する。(一部略)
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 11月12日21時迄
URLリンク(www1.axfc.net) (pass: jik1)
↑中身は問題原文、指定されたファイル、自分で作成したプログラムソースです
対象ファイルの中身が文字列なので探索にstrcmpを用いようとしたのですが、実行時にエラーが出てしまってどうすればいいかわからない状態です
よろしくお願いします
642:デフォルトの名無しさん
08/11/12 01:29:27
[1] 授業単元:アルゴリズム
[2] 問題文:5人の学生の3教科の点数(0~100点)をランダムに表示させる。
それぞれの合計点を計算し、合計点の高い順に順位をつける。
[3] 環境
[3.1] WindowsXP
[3.2] gcc 3.4
[3.3] C
[4] 期限:なし
どなたかおねがいします…orz
643:デフォルトの名無しさん
08/11/12 02:06:34
>>642
URLリンク(kansai2channeler.hp.infoseek.co.jp)
644:デフォルトの名無しさん
08/11/12 02:08:18
変数tmpはいらないから消してくれ
645:デフォルトの名無しさん
08/11/12 02:29:43
>>613
ありがとうございます
聞きたいんですが、a[]にn個の整数が入ってるとしてって所なんですけど、どうやって定義したんですか?
646:デフォルトの名無しさん
08/11/12 04:48:09
>>645
int a[] = { 121, 11, 14641, 1331};
647:デフォルトの名無しさん
08/11/12 05:36:33
1] 授業単元:プログラミング演習1 C言語の基礎
[2] 問題文(含コード&リンク):
S=1+2+・・・n<100
を満たす最大の自然数nとSを出力するプログラムを作成してください。
for文とwhile文を用いたのをそれぞれ作成すること。
考え方:ループを用いて1から順に自然数を足して行き、
和が100を段階で計算を打ち切るようにプログラムする
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc バージョンは最新
[3.3] 言語: C
[4] 期限: 今日
[5] その他の制限:変数とハローワールドとscanf、条件文しかならってないはず
期限が近い・・・よろしくお願いします
648:デフォルトの名無しさん
08/11/12 06:06:08
>>647
#include <stdio.h>
main()
{
int S = 0, n;
for(n = 1; S + n < 100; n++){
S += n;
}
n--; // 足しすぎたので 1 引く
printf("n:%d S:%d\n", n, S);
S = 0;
n = 1;
while(S + n < 100){
S += n;
n++;
}
n--;
printf("n:%d S:%d\n", n, S);
}
649:デフォルトの名無しさん
08/11/12 06:14:44
>>648
なるほど・・・条件にS<100だから105しかでてこなかったのか俺・・・。
ありがとうございまいした、勉強になりました
650:デフォルトの名無しさん
08/11/12 08:00:09
[1] 授業単元:画像情報工学
[2] 問題文(含コード&リンク):
ブレゼンハムのアルゴリズムを用いて、ウインドウ内に線分を描画するプログラムを作成しなさい。
仕様1(マウスの左ボタンと右ボタンを使用する。候補線の表示は無し。)
マウスの左ボタンクリック 線分の始点座標の指定
マウスの右ボタンクリック 線分の終点座標の指定及び線分の描画
[3] 環境
[3.1] OS:vista
[3.2] コンパイラ名とバージョン:VC++ 2008
[3.3] 言語: C
[4] 期限: 2008年11月12日まで
[5] その他の制限: ライブラリの点を描画するAPI関数を使って線分を引くこと。直線を引くAPI関数を使ってはならない。
Cは簡単なものしかやったことなくて全く分かりません
誰か助けてくださいお願いします……
651:デフォルトの名無しさん
08/11/12 08:16:50
誰か610お願いします
652:デフォルトの名無しさん
08/11/12 08:29:43
>>610
①
/* (x,y)-平面の点を座標で表す構造体 */
struct Point {
double x;
double y;
};
/* 原点からの長さを求める関数 */
double length_vector_p(struct Point *p)
{
return sqrt(p->x*p->x + p->y*p->y);
}
/* 平面の点を表示する関数 */
void print_v_p(struct Point *p)
{
printf("%f %f\n", p->x, p->y);
}
int main(void)
{
struct Point p;
printf("Input Point X: ");
scanf("%lf", &p.x);
printf("Input Point Y: ");
scanf("%lf", &p.y);
print_v_p(&p); /* print_v_pを使用して,座標の表示 */
printf("The length of vector: %f\n", length_vector_p(&p) );
return 0;
}
653:デフォルトの名無しさん
08/11/12 08:32:46
>>610 ②
struct Point {
double x;
double y;
};
void input_point_p(struct Point *p){
printf("X:");
scanf("%lf", &p->x);
printf("Y:");
scanf("%lf", &p->y);
}
void print_v_p2(struct Point *p){
printf("%f %f\n", p->x, p->y);
}
int main(void){
struct Point *p; /* 構造体ポインタ変数 p */
int num, i;
printf("Input number of vector: ");
scanf("%d", &num);
for (i=0; i< num; i++) {
p = malloc(sizeof(struct Point)); /* malloc を使って領域確保 */
if( p == NULL ) {
printf( "memory cannot alloc!\n" );
exit( 1 );
}
input_point_p(p); /* 関数を使って要素を代入 */
print_v_p2(p); /* 関数を使って要素の表示 */
free(p); /* メモリの解放 */
}
return 0;
}
654:デフォルトの名無しさん
08/11/12 08:38:01
>650
期限は12日じゃなくて19日まででした……
655:デフォルトの名無しさん
08/11/12 10:13:51
>>646
ありがとうございます!
656:デフォルトの名無しさん
08/11/12 11:27:53
>>650
ライブラリって何の?
専用のをつかってるならそれもうp
657:デフォルトの名無しさん
08/11/12 13:21:11
期限が1日伸びたので>>491をお願いできませんか?
658:608
08/11/12 13:21:57
ちょっと聞きたいんですけど、学校から>>608に関係した問題が追加で出されたんだけど、それを解いてもらえることってできますか?
659:デフォルトの名無しさん
08/11/12 13:24:12
[1] 授業単元 プログラミング基礎
[2] 問題文(含コード&リンク)
マイナスの値が入力されるまで繰り返し整数値を入力し最大、最小を求める。
初期化で最大値には最小の値を、最小値には最大の値を設定しておく。
繰り返しにはwhile文を使用する。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年 11月14日 18時
[5] その他の制限: 特になし
よろしくお願いします
660:デフォルトの名無しさん
08/11/12 13:40:57
>>656
渡されたプリントに書いてあったまんまなんで、自分でも良くわかりません……
授業ではC言語はおろかPCにすら触ってません
661:デフォルトの名無しさん
08/11/12 13:59:59
>>660
単に授業を聞いてなかったとかサボってたとかじゃなくて?
何の前説もなしにそのプリントをぽんと渡されただけなら行く学校を間違えたな
たぶん、説明はあったのに理解できなくてスルーしただけだろうけど
662:デフォルトの名無しさん
08/11/12 14:05:51
>>659
#include <stdio.h>
int main (void)
{
int n, min=32767, max=0;
while(1){
scanf("%d", &n);
if(n<0)
break;
if(n > max)
max = n;
if(n < min)
min = n;
}
printf("min = %d, max = %d\n", min, max);
return 0;
}
663:デフォルトの名無しさん
08/11/12 14:11:44
>>657
' ' とか '■' とか '○' マルチバイト文字を扱うのが面倒
' ' とか '*' とか 'o' でよかったらそんなにかからないけど
664:デフォルトの名無しさん
08/11/12 14:47:40
>>659
>>662 + 初期値可変入力
#include <stdio.h>
int main( void )
{
int i, n;
int imin, imax;
int nmin, nmax;
printf( "最小値の最大を入力してください>" );
scanf( "%d" , &imin ); /* 数値の入力 */
printf( "最大値の最小を入力してください>" );
scanf( "%d" , &imax ); /* 数値の入力 */
nmin=imin;
nmax=imax;
while (1) {
printf( "数値を入力してください>" );
scanf( "%d" , &n ); /* 数値の入力 */
if ( n < 0 ) /* 終了 */
{ printf( "終了\n" );break;}
if ( n < imin ) /* 最小値 */
{ nmin= n;}
if ( imax < n ) /* 最大値 */
{ nmax= n;}
}
printf(" 最小:%d\n", nmin);
printf(" 最大:%d\n", nmax);
}
665:デフォルトの名無しさん
08/11/12 14:54:11
>>661
授業が元々コンピュータでの画像の描画方法についてなんです
今までプログラムなんて一切なしでアルゴリズム?みたなのを学んでて
いきなりレポートの概要渡されました
授業は毎回出てますし、ノートも取ってます
それに居眠りとか出来る状況じゃないので
説明はあったんですが、それまでの知識じゃ全く理解できませんでした
666:デフォルトの名無しさん
08/11/12 15:03:29
どなたか>>641お願いできないでしょうか?
ヒントだけとかでもいいので・・・orz
667:デフォルトの名無しさん
08/11/12 15:39:48
>>646
調べたい整数の数を
を選べるようにするにはどうすればいいの?
668:639
08/11/12 15:46:44
>>640
あ、すいません。
getsの間違いでした。
fgets…使ってみたんですが、エラーが出ました。
今作っているソースは
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main(){
char filename[20], time[100], data[1000000];
FILE *fp;
cout<<"CPUtime?"<<endl;
gets(time);
cout<<"data?"<<endl;
gets(data);
fp = fopen("file.txt","w");
fprintf(fp,"%s\n",time);
fprintf(fp,"%s",data);
fclose(fp);
}
で、本当は「file.txt」ってなってるファイル名を、キーボードから受け取るようにして(filenameとは宣言したものの…)
dataに、
「 0 1.99400005840289e-007 -1.99400005840289e-007 9.89100023673223e-014 2.63400000595493e-012
1e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89000006022811e-014 2.63400000595493e-012
2e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89100023673223e-014 2.63400000595493e-012
4.000015229e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89299991211411e-014 2.63400000595493e-012
…」みたいな改行を含んだ文字をコピーして実行画面(コマンドプロンプト)に貼り付けてテキストファイルを作りたいんですがよく分かりません。
669:デフォルトの名無しさん
08/11/12 15:48:54
>>667
調べたい整数をユーザに入力させたい、ってとこか?
それならこんなかんじ。
int main(int argc, char *argv[])
{
int *a;
int n, i, g;
printf("調べたい整数の数は?: ");
scanf("%d", &n);
a = malloc(n * sizeof(int));
for (i = 0; i < n; i++) {
printf("%d 個目の整数を入力してください: ", i+1);
scanf("%d", &a[i]);
}
g = a[0];
--- >>613 と同様 --
free(a);
return 0;
}
670:デフォルトの名無しさん
08/11/12 16:01:12
>>612
解答あり
>>600の(2)できる方おねがいします
671:デフォルトの名無しさん
08/11/12 16:10:20
>>663
それでお願いできますか?
672:デフォルトの名無しさん
08/11/12 16:14:23
>>665
理解できなかったのならなぜ質問しなかったのだろう?
その感じだと実際に動作するコードを書くのではなく
アルゴリズムや疑似コードをレポートにして提出しろってことなのか?
673:デフォルトの名無しさん
08/11/12 16:19:45
>>668
余計なお世話だけど、 time って関数があるから time という変数名は避けたほうがいいかも。
fp = fopen("file.txt", "w");
fprintf(fp, "%s\n", time);
while (fgets(data, sizeof(data), stdin) != NULL) {
fprintf(fp, "%s", data);
}
fclose(fp);
とすれば、Ctrl-D を入力するまで読み取り続けます
674:デフォルトの名無しさん
08/11/12 16:21:11
>>671
よく考えたら、表示のときだけマルチバイト文字使って、内部データは
普通の int とか char とか好きなので行けるわ
もう一点確認だけど、どっちからどっちに球が飛んでいけばいいの?
675:デフォルトの名無しさん
08/11/12 16:22:19
生活安全課のボツボツキモデブ●創価●警官名言集www
「俺の脅迫のおかげで家から出れなくした。俺の手柄だ!」
「昼間は市役所のパトロール隊を使う。夜は消防団を使う。」
「●指導●じゃない、パトロールを●お願い●してるだけだ。人権侵害行為は俺の責任じゃない!」
熊本隆談www
676:デフォルトの名無しさん
08/11/12 16:23:34
>>669
: In function ‘main’:
:22: 警告: incompatible implicit declaration of built-in function ‘malloc’
:24:8: 警告: 不明なエスケープシーケンス '\$'
だそうです
677:デフォルトの名無しさん
08/11/12 16:29:14
>>676
#include <stdlib.h> を追加。
それから
a = (int *)malloc(n * sizeof(int));
と、キャストしたほうがいいかも。
下のは知らん。日本語の文字列が正しく読まれてないのかもしれない。
適当に文字列を半角英数字のみにしてみて。
678:デフォルトの名無しさん
08/11/12 16:36:38
テスト中orz
1.から100までの整数で3の倍数の整数の合計を求めるプログラムをFor文を利用して作ってください。
2.1の問題をForの変わりにWhile文で頼みます。
余裕があれば、
3.タクシー料金:最初の2kmまで650円 以後400mごとに90円としたとき、乗車距離(km)を入力し、
料金求める。
おねがいします。
679:デフォルトの名無しさん
08/11/12 16:41:59
>>678
テストぐらい自分でやれ!
680:デフォルトの名無しさん
08/11/12 16:42:11
>>816
/*1.*/
#include <stdio.h>
int main(void){
int i, sum = 0;
for(i = 1; i <= 100; i++){
if (i % 3 == 0) sum += i;
}
printf("合計は %d\n", sum);
}
/*2.*/
#include <stdio.h>
int main(void){
int i = 1, sum = 0;
while(i <= 100){
if (i % 3 == 0) sum += i;
i++;
}
printf("合計は %d\n", sum);
}
/*3.*/
#include <stdio.h>
int main(void){
double kyori;
int ryokin;
printf("乗車距離(km): ");
scanf("%lf", &kyori);
if (kyori < 2) ryokin = 650;
else ryokin = 650 + (kyori / 400) * 90;
printf("料金は %d円です。\n", ryokin);
}
681:639
08/11/12 16:43:13
>>673
ありがとう!ありがとう!改行文字も出来ました。
でもCtrl-Dを入力せずに、貼り付けた文字の最後まで行ったら自動で終了するのは出来ないんでしょうか?
>>668に書いた数値データ、何百行もあるのですが、最後の行まで読み込んだら終了させたいです。
682:デフォルトの名無しさん
08/11/12 16:59:53
>>667
出来ました!
マジでありがとうございます
683:デフォルトの名無しさん
08/11/12 17:02:22
>>681
何をもって読み込みを終了するかが決められないからムリかな。
>>673 のコードでは、EOF (Ctrl-D) をもって終了としてるから、たとえば
echo "cputime\ndata1\ndata2" | ./a.out
などとすることは可能。
しかし一体何をしたいんだ?
その数値データはテキストファイルに保存されてるの?
それなら CPUtime だけを入力して、数値データはそのテキストファイルから読み取ればいいわけだけど。
684:デフォルトの名無しさん
08/11/12 17:09:50
>>680
ラスト10min
ありがとう。たすかりました。
685:639
08/11/12 17:14:19
>>683
<<しかし一体何をしたいんだ?
これ、大学の数値実験で出た何百行もの値(SPICEっていう電気回路のCADツールを使って出た値)で、この数値をコピーして、gnuplotでグラフを書きたいんだ。
①SPICEからデータ(数値)をコピーして取り出す。
②テキストファイルに貼り付ける。
③作成したテキストファイルからgnuplotでグラフを描く。
この一連の作業をプログラムで作りたかったんだ…。
一応数値データも要るので、gnuplotに直接書き込んで終了という訳にもいかず、テキストファイルも残したいんです。
686:デフォルトの名無しさん
08/11/12 17:29:19
すみませんがどなたか>>584をやって頂けないでしょうか頂けないでしょうか。
>>586さんのいうとおりisalphaとtoupperを使えばいいのはわかっているんですが、
どうやってそれをソースに書きかえればいいのかまったくわからないので困っています。
今日が締切なのでお願いします。
687:デフォルトの名無しさん
08/11/12 17:44:51
>>587です
亀ですが>>592の方ありがとうございました
嫌いと言いながらやってくれる優しさに惚れた
また明日結果報告させて頂きます
688:デフォルトの名無しさん
08/11/12 17:46:37
宿題でお聞きしたいのですが…問題は以下のようなものです。
「直行座標系X-Yにより定められている平面上で、0 < X,Y < 1の正方領域をX,Y方向にそれぞれ(n1 - 1)個、(n2 - 1)個に等分割して、その座標を出力する。」
自分で、以下のようなプログラムを作ってみました。
#include<stdio.h>
#define n1 7
#define n2 7
int main(){
double X[n1], Y[n2];
int i, j;
for(i = 0; i < n1; i++){
*(X + i) = ((1 / (n1 - 1)) * (double)i);
}
for(i = 0; i < n2; i++){
*(Y + i) = ((1 / (n2 - 1)) * (double)j);
}
for(i = 0; i < n1; i++){
for(j = 0; j < n2; j++){
printf("(%lf, %lf) ", *(X + i), *(Y + j));
}
printf("\n");
}
}
すると、(0.0000000, 0.0000000)の座標で埋め尽くされてしまいました…
玄人の皆様、お助け下さい…
689:デフォルトの名無しさん
08/11/12 17:53:04
>>688
double にキャストする位置がおかしい。
- *(X + i) = ((1 / (n1 - 1)) * (double)i);
+ *(X + i) = (1.0 / (n1 - 1)) * i;
Y も同様。
690:デフォルトの名無しさん
08/11/12 17:53:46
>>688
1/(n1 -1) ← 分母分子ともに整数だと、整数の除算が行われるから
1.0/(n1 - 1) とか 1/(n1 - 1.0) とか、どっか double にしないと暗黙の型変換は起こらない
あと
*(Y + i) = ((1 / (n2 - 1)) * (double)j); ← i でループ回してるんだkら (double)j じゃなくて i だな
691:デフォルトの名無しさん
08/11/12 18:08:49
>>689,>>690
どうもありがとうございます、そういうことなのですか(^^;
皆さんに教わらなければ、多分あと2日くらいは悩んでたと思います。
また質問させて頂く時もあるかと思いますので、その時はまたよろしくお願いします。
692:デフォルトの名無しさん
08/11/12 19:05:39
[1] 授業単元 プログラミング演習
[2] 問題文: 10個のデータをキーボードから適当に入力し(ランダムなデータ),1次元配列に格納する.
バブルソート法により,小さい順に並べ替えるプログラムを作成しなさい.
結果をソートの経過を全てprintfで表示すること.
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年 11月19日 13時
[5] その他の制限: 関数やポインタはまだ習ってないです。よろしくお願いします。
693:デフォルトの名無しさん
08/11/12 20:29:20
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
0度から360度までのSin(x)の値を文字コード*を使ってグラフを表示するプログラムをC言語で作成せよ。
実行結果の例をアップローダーに貼り付けました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005
[3.3] 言語: C
[4] 期限: 2008年11月13日
[5] その他の制限: ファイルの入出力まで習いました。
よろしくお願いします。
694:デフォルトの名無しさん
08/11/12 20:30:58
>>491
まだ間に合うのかな
風向きとか、スキルとかまだ実装してないけど、イメージとしてこんな感じでよいの?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
695:デフォルトの名無しさん
08/11/12 20:35:13
>>674
特に指定はされていませんので作りやすいもので結構です
696:694
08/11/12 20:56:48
>>695
ちょっと改造して、いちおう2個のパラメータとるようにしてみたけど、
やっつけのきたねーコードだw
URLリンク(kansai2channeler.hp.infoseek.co.jp)
697:デフォルトの名無しさん
08/11/12 21:24:45
>>696
はい、大丈夫です
ありがとうございます!
698:デフォルトの名無しさん
08/11/12 21:48:47
[1] 応用プログラミング演習
[2] wavファイル(音楽ファイル)を読み込んでFFTを施し、バンドパスフィルタをかけてIFFTし、そのwavファイルを出力せよ。(バンドパスの領域は任意)
[3] 環境
[3.1] OS: Windows
[3.2] 開発環境:VC++ 6.0
[3.3] 言語:C言語
[4]今月中
[5]制限なし
ただの授業なのですが、研究で使うレベルのプログラムなのでかなり難しいです↓
ただ原理としては簡単らしいのですが、wavを扱ったことがないのでチンプンカンプンです。
1週間ずっと考え続けても無理でした(ノД`)
どなたか手伝ってくれたら嬉しいです。
699:デフォルトの名無しさん
08/11/12 21:52:42
>>698
>wavファイル(音楽ファイル)を読み込んでFFTを施し、バンドパスフィルタをかけてIFFTし、そのwavファイルを出力せよ。(バンドパスの領域は任意)
これだけで作れたらすごいわ
700:デフォルトの名無しさん
08/11/12 22:21:42
まず、ウインドウ関数を決めないとね。
701:デフォルトの名無しさん
08/11/12 23:00:30
>>600
(2)ですけどリスト構造に格納する際に、次数の大きい順にしておいて先頭から順に出力ということはなんとなく分かったのですがそこから進めない・・・
702:デフォルトの名無しさん
08/11/12 23:25:19
>>698
どのあたりまでライブラリの使用を認められてるか書け
wavファイルの読み取りからやらされるのか?
703:デフォルトの名無しさん
08/11/12 23:38:30
[1]情報処理 C
[2]組み合わせn Cm を計算する関数を作成しなさい.main関数にてキーボードから2つ?然数n,mを
読み込み後,作成した関数を呼び出しその動作を確認しなさい.
但し,以下の条件を満たすものを作成すること
①2つの?然数は1回のscanfで読み込むこと.(データ区切りはスペース)
②scanfはmain関数側に実装すること.
③入力はn mの並びにすること.
④作成した関数側で「n>=mを満?しない時」,「n,mが?然数ではないとき」は n Cm =0とな
るようにしなさい.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年 11月中
[5] その他の制限:
④のいい作り方を思いつきません…
704:デフォルトの名無しさん
08/11/12 23:45:05
4だけ?
if (n < m || n < 0 || m < 0) return 0;
ってするだけじゃないのか?
(自然数に0を含む感じになってます)
705:デフォルトの名無しさん
08/11/13 00:24:46
∴
∵ ∴ ∴∵∴ ∴
∴∵∴∵∴∵∴∵∴∵∴∵∴∴∵
∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
∴∵∴∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴
∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵/ ⌒ヽ∴∵∴∵∴
∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵| | |∴∵∴∵
∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∪ / ノ∴∵∴∵∴∵
.. ∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵| ||∵∴∵∴∵
.∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∪∪∴∵∴∵∴∵
.∵∴∵∴∵∴∵∴∵:(・)∴∴.(・)∵∴∵∴∵∴∵∴∵∴∵∴∵∴
∵∴∵∴∵∴∵∴∵∴/ ○\∵∴∵∴∵∴∵∴∵∴∵∴
..∵∴∵∴∵∴∵∴∵/三 | 三ヽ∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
. ∴∵∴∵∴∵∴∵ | __|__ │∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵ tanasinn
.∵∴∵∴∵∴∵∴∵| === │∵∴∵∴∵∴∵∴∵∴∵∴
.∵∴∵∴∵∴∵∴∵\___/∵∴∵∴∵∴∵∴∵∴∵∴
..∴∴∵/ ̄.. \∴∵∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴
∴∵∴/ ,. i ∵∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
∴∵∴| /.| |.∵∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
∵∴| | :| |.∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴
∴| | |::| |.∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
∴| | |∵U∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴
| | |∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵
/ / / ∵∴∵∴∵∴∵∴∵∴∵ ∵
/ / / ∴∵∴∵∴ ∴
.しし’ ∵
706:639
08/11/13 01:23:09
>>639
+ >>668 >>681 >>685
なんだけど、レスが無いので分からないorスルーになっているということだとは思いますが((´;ω;`))
最後に一つだけ質問お願いします。
>>673
の「Ctrl-Dを入力するまで読み取り続けます」なんですけど、「Ctrl+d(コントロールキー+d)」と入力しても「^d」と画面に出力されるだけで書き込みが終了しません。
「コントロール + D(大文字)」、「コントロール + マイナス + D」などなどあり得なさそうな入力も試しましたが、終了しませんでした。
僕は一体どうすれば?
アホな質問だったらごめんよぉ(´・ω・`)
707:デフォルトの名無しさん
08/11/13 01:24:48
>>706
ctrl + z
にしてみろ
708:さそり
08/11/13 01:30:20
[1] 授業単元:ファイル読み込み
[2] ファイルを読み込んで.hファイルに書き込むのが狙いなんですが
sample.txtテキストファイルの中身が
kina="mikan"+"momo"
shika="hidemaru"*100+"keiko"
と50行ぐらい続いていて左辺の値とダブルクオートくくりの
文字を抽出してsample.hに一文字取ったら改行して書き込んでいくのですが
どうしたらいいでしょうか??困っておりまして皆様のお力をお借り
したいと思っています。どうぞよろしくお願いします。
[3] 環境
[3.1] OS:ソラリス
[3.2
[3.3] 言語:C
[4] 期限:今週中
[5]
709:デフォルトの名無しさん
08/11/13 01:46:00
日本語が謎すぎる!
710:デフォルトの名無しさん
08/11/13 01:47:17
今日はあむちゃんあるんですかね
711:デフォルトの名無しさん
08/11/13 02:18:46
>>699
すみません。。
これ以上どう詳しく書いたらいいのかわかりません(ノД`)
>>700
窓関数はなんでもいいです。
おそらくハミングが一番いいのかと思ったのですが…
>>702
やり方は自由です。
とにかく動いたらいいのでライブラリの制限はありません。
はい。。wavの読み取りからやらないといけません。
まずそこから躓いています。
wavファイルを一次元配列に格納することはできたのですが(たぶん…)、
それをどう処理すべきかがわかりません。
悪戦苦闘して調べまくったのですが、なかなかできず、ここに助けにもらいに来た次第です。
712:デフォルトの名無しさん
08/11/13 03:15:24
[1]情報処理 C
[2]ユーザが調べたい整数n個の数の最小公倍数を求めよ
手順は、もし、ユーザが12と8と9と48のLCMを調べたい時
①LCM(12,8)=24
②LCM(LCM(12,8),9)=LCM(24,9)=72
③LCM(LCM(12,8),9),48)=LCM(72,48)=144
といった形である
これを調べたい数を自由に変えることができ、尚且、ユーザが調べたい整数の個数でも対応出来るように作れ
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今日の23時59分
[5] その他の制限:
お願いします
713:デフォルトの名無しさん
08/11/13 04:36:55
>>712
URLリンク(kansai2channeler.hp.infoseek.co.jp)
714:デフォルトの名無しさん
08/11/13 06:43:21
>>708
その入力例に対する出力の例を書け
日本語そのまま取ると sample.h は
m
i
k
a
n
m
o
n
o
h
i
d
e
m
:
になるがよいのか?
715:デフォルトの名無しさん
08/11/13 08:40:37
600の(2)の期限せまってるのでどうかお願いします
URLリンク(kansai2channeler.hp.infoseek.co.jp)
似たようなのは見つけたのですが・・・
716:デフォルトの名無しさん
08/11/13 10:50:18
>>703
URLリンク(kansai2channeler.hp.infoseek.co.jp)
一部余分なコードあり(コメントアウトで無効にしてある)
パスカルの三角形を使用しているため、階乗で求めるやり方ではない。
717:716
08/11/13 10:51:39
> n Cm を計算する関数を作成
もしていないんで、適当にnとmを受け継いだら結果を返す仕様に変更してちょっ。
718:587
08/11/13 11:01:08
>>592
問題なく読み込めました
助かりました、有難うございます!
719:デフォルトの名無しさん
08/11/13 11:03:51
>>715
URLリンク(kansai2channeler.hp.infoseek.co.jp)
720:デフォルトの名無しさん
08/11/13 12:01:00
[1] 授業単元:C++
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VS2008
[3.3] 言語:C++
[4] 期限:2008年11月20日まで
よろしくお願いします。
721:デフォルトの名無しさん
08/11/13 12:01:07
>>713
hhh.c: In function ‘main’:
hhh.c:29: 警告: ignoring return value of ‘realloc’, declared with attribute warn_unused_result
というエラーがでました……
722:デフォルトの名無しさん
08/11/13 12:11:27
>>721
gcc -Wall (チェックが厳しいオプション) でコンパイルしても出て何もこないぞ
それにそれはエラーじゃなくて警告
723:デフォルトの名無しさん
08/11/13 12:32:33
>>708 たぶん違う気がするけど >>714 の通りに1文字1行で出力させるとこうなる
#include <stdio.h>
int main()
{
FILE *fp;
char *p, buf[256];
int lhs, in_quote;
fp = fopen("sample.txt", "r");
if (fp == NULL) {
printf("Cannot open sample.txt\n");
return 1;
}
while(fgets(buf, 256, fp) != NULL) {
lhs = 1;
in_quote = 0;
for(p = buf; *p != '\0'; p++)
if (*p == '=')
lhs = 0;
else if (*p == '"')
if (in_quote)
in_quote = 0;
else
in_quote = 1;
else if (lhs || in_quote)
printf("%c\n", *p);
}
}
724:デフォルトの名無しさん
08/11/13 12:35:53
なんどもやってるんですが、この表示がでて、この先に進まないんです……
725:デフォルトの名無しさん
08/11/13 12:37:18
>>724は>>722宛
726:デフォルトの名無しさん
08/11/13 13:23:00
[1] 授業単元:C言語
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual C 2008
[3.3] 言語:C
[4] 期限:明日まで
七個の文字列の長さ(文字数)をカウントして、文字列とともに表示せよ。
ただし、ポインタを使用して処理すること
カウントの仕方がわかりません・・・
お願いします。
例
#include<stdio.h>
int main(){
char *name[] ={"Izumi","Kanto","Kudo","Sato","Sugawara","Matuda","Wada",NULL};
727:デフォルトの名無しさん
08/11/13 13:27:10
>>726
#include<stdio.h>
int main(){
char *name[] ={"Izumi","Kanto","Kudo","Sato","Sugawara","Matuda","Wada",NULL};
char *p;
int i, n;
for(i = 0; i < 7; i++){
n = 0;
for(p = name[i]; *p != '\0'; p++)
n++;
printf("%s:%d\n", name[i], n);
}
return 0;
}
728:デフォルトの名無しさん
08/11/13 13:27:32
>>724
>>722 じゃないが
先に進めないってどういうことだよ?
ロードモジュールはできているはずだ。
729:639
08/11/13 13:43:00
>>707
出来たぅおありがとう!
730:デフォルトの名無しさん
08/11/13 13:43:34
コンパイルだけして実行してないんじゃないの?
731:デフォルトの名無しさん
08/11/13 13:49:12
>>727
ありがとうございます!
*p != '\0'が何を表してるのか教えてくれるとありがたいです!
732:デフォルトの名無しさん
08/11/13 13:53:03
>>731
文字列の最後=¥0だから それをみている
733:727
08/11/13 13:54:39
>>731
Cの標準的な約束事で、文字列の配列の最後の文字の次に '\0'(NULL文字)を置くことになっている。
*p != '\0' は、文字の終りに来ていない間繰り返すという意味
*p はポインタ p が指している値(文字)だっていうのはいいんだよね?
734:デフォルトの名無しさん
08/11/13 14:03:03
>>733
丁寧な説明ありがとうございます!
'\0'はNULL文字のことなんですね!
やっとわかりました。
735:デフォルトの名無しさん
08/11/13 14:14:25
>>734
それだけかよw
736:デフォルトの名無しさん
08/11/13 14:26:23
>>724
たった今動きました
こちらの凡ミスだったようです。申し訳ございません
ですが、今度はinput >が限りなく続いて終わらないです……
というより、結果がでてもプログラムが終了しないのです
737:デフォルトの名無しさん
08/11/13 16:23:25
[1] 授業単元:数値解析
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindowsXP
[3.2] gccなど
[3.3] 言語:Cのみ
[4] 期限:11月17日まで
[5] その他の制限
特に無いですが、角度が45度から増大していく現象の原因が分かれば大丈夫です。
dtの値を小さくすることで誤差は小さくなりますが、ルンゲクッタ法としては
おかしい(精度的に)と思うので・・・。よろしくお願いします。
738:デフォルトの名無しさん
08/11/13 17:13:59
f1=dt*f(X0,v);
g1=dt*q(X0,v);
f2=dt*f(X0+f1/2.0,v+g1/2.0);
g2=dt*q(X0+f1/2.0,v+g1/2.0);
f3=dt*f(X0+f2/2.0,v+g2/2.0);
g3=dt*q(X0+f2/2.0,v+g2/2.0);
f4=dt*f(X0+f3,v+g3);
g4=dt*q(X0+f3,v+g3);
X0+=(f1+ 2.0*f2 +2.0*f3+ f4)/6.0;
v+=(g1+ 2.0*g2+ 2.0*g3+ g4)/6.0;
739:デフォルトの名無しさん
08/11/13 17:14:34
double q(double X0, double v){
return -g*sin(X0)/l;
}
double f(double X0, double v){
return v;
}
740:デフォルトの名無しさん
08/11/13 18:58:45
>>712 >>736 >>722
URLリンク(kansai2channeler.hp.infoseek.co.jp)
最初に入力する数値の個数を決める仕様に変更。callocを使用。
741:デフォルトの名無しさん
08/11/13 19:00:03
>>712 >>722 >>736
URLリンク(www.bohyoh.com)
> その領域は、すべてのビットが0で初期化される。
742:デフォルトの名無しさん
08/11/13 19:09:45
>>722
もっと厳しくして見やがれ
743:デフォルトの名無しさん
08/11/13 19:26:38
>>740
結果だけでよいなら領域確保必要すらないよな
main()
{
int l = 1, n;;
while(1){
printf("数値を入力してください:");
scanf("%d", &n);
if(n == 0)
break;
l = lcm(l, n);
}
printf("最小公倍数は %d です。\n", l);
}
↑lcm は >>740 と同じものを利用、'0' 入力で入力終了。
744:デフォルトの名無しさん
08/11/13 19:30:27
>>703
URLリンク(kansai2channeler.hp.infoseek.co.jp)
745:デフォルトの名無しさん
08/11/13 21:36:51
>>703
もし数字以外、小数を入力した場合など、自然数に該当しないものが入力されたらって言うなら
文字列として厳密に判別する仕組みを取り込んで、条件をクリアしたらatoi()でint型に
代入するとか。
746:デフォルトの名無しさん
08/11/13 22:44:18
>>566
お礼が遅れてすみません・・・
早い返答ありがとうございました
747:デフォルトの名無しさん
08/11/13 23:52:14
今来た。
未解決問題ってどれ?
748:デフォルトの名無しさん
08/11/14 00:17:13
>>747
>>720
>>698
749:デフォルトの名無しさん
08/11/14 00:46:42
>>747
>>692-693
750:デフォルトの名無しさん
08/11/14 01:13:30
>>692
URLリンク(kansai2channeler.hp.infoseek.co.jp)
751:さそり
08/11/14 01:16:07
708番で質問したさそりです。
>>714
>>723
ご返信ありがとうございます。
テキストファイル読み込みをした後に.hファイルに
書式付で書き込むのですが.
たとえば
PIKA1="P_1"+"P_3"
CILA="L_SAM"*1000"ERIKA"
これが100行ぐらい続くファイルがあるとして
左辺の値とダブルクオートでくくられた文字を抽出して
.hファイルに書き込むのですが上記の場合だと
PIKA1,P_1,P_3
CILA,L_SAM,ERIKAをとりだして
P_MAN: PIKA
P_MAN: P_1
P_MAN: P_3
P_MAN: CILA
P_MAN: L_SAM
P_MAN: ERIKA
という形で.hファイルに出力させたいのです。
今非常に困っていましてどなたか助けてください。
どうぞよろしくお願いします。
なお左辺と右辺は必ず=で区切られています。
左辺の値はダブルクオートで区切られていない。
基本的に始まりのダブルクオートが見つかって、終わりのダブルクオート
が見つかった場合のくくり文字を抽出するようにする。
752:723
08/11/14 01:27:48
>>751
P_MAN: ていうのがどっから湧いてきたのか不明だから無視したけど、
基本的には >>723 をちょこっと改造すればいける
URLリンク(kansai2channeler.hp.infoseek.co.jp)
753:デフォルトの名無しさん
08/11/14 01:41:41
>>751
#include<stdio.h>
#define ONELINE_MAX 1024
int xxx(FILE *fp_in, FILE *fp_out){
char oneline[ONELINE_MAX+1+1], word[ONELINE_MAX+1], quote[2];
int i, n;
while(fgets(oneline, sizeof(oneline), fp_in)){
for(i=0;;){
if(sscanf(&oneline[i], "%*[^\"]%n%1[\"]", &n, quote)==1) i+=n;
if(sscanf(&oneline[i], "\"%[^\"]%1[\"]%n", word, quote, &n)==2){
i+=n;
fprintf(fp_out, "P_MAN: %s\n", word);
}else if(sscanf(&oneline[i], "\"%1[\"]%n", quote, &n)==1){
i+=n;
}else{
break;
}
}
}
return 0;
}
int main(void){
xxx(stdin, stdout);
return 0;
}
754:デフォルトの名無しさん
08/11/14 02:09:06
>>660
「その」授業でPCに触れてないだけでは。
755:デフォルトの名無しさん
08/11/14 03:01:01
ちょっといいですか?
ヌル文字(\0)って0と同じ扱いですか?
0=\0っていうことですか?
756:デフォルトの名無しさん
08/11/14 03:05:49
ですぅ
757:デフォルトの名無しさん
08/11/14 03:24:43
空文字は文字コードは0x00に割り当てられてますからね、
まぁコードを参照する値は0ですな。
758:デフォルトの名無しさん
08/11/14 03:52:41
そもそも\0は八進法で文字コードを指定する書き方。
'\123' == (char)0123とか他の値でも成り立つ。
759:デフォルトの名無しさん
08/11/14 04:14:53
\0の\は8進数を意味していたのか・・・ふむふむ、なるほど メモメモ
760:デフォルトの名無しさん
08/11/14 04:35:39
\r とか \n とか \t とかね。
761:デフォルトの名無しさん
08/11/14 05:41:32
以前>>408で書き込んだものです。
そのときに作って頂いたプログラミングで数箇所訂正部分を言われたのでその訂正をお願いします。
その指摘箇所とは2行目の(int *, int *, int *);の部分と26行目の*in_val, int *odd_tally, int *even、
そして35行目のint *oddと40行目のint *evenです。
作って頂いた方はCプログラミングと言っていたのでそれが問題なのではないかと思っています。
今自分が受講しているクラスはC++なのでどなたかそれ用に作り変えて頂けないでしょうか。
一応前回の問題なども載せておきます。
[1] 授業単元:C++
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン: Visualstudio 2005
[3.3] 言語:C++
[4] 期限:2008年11月14日
何分初心者でわからないことが多いのでお手数ですがお願いします。
762:デフォルトの名無しさん
08/11/14 06:49:37
>>761
こうかな
URLリンク(kansai2channeler.hp.infoseek.co.jp)
763:デフォルトの名無しさん
08/11/14 07:17:37
>>762
お早い返信助かります。
自分ではいまいち分からないのですがこれで提出させて頂きます。
何度もありがとうございます。
764:デフォルトの名無しさん
08/11/14 07:18:59
>>763
ポインタ私を参照渡しに変えてるよ
入出力の部分をもうちょっと c++ っぽくするとこうなる
URLリンク(kansai2channeler.hp.infoseek.co.jp)
765:デフォルトの名無しさん
08/11/14 07:40:00
>>764
わざわざありがとうございます。
後者のほうが自分にも分かりやすかったのでそちらを使わせて頂きます。
お忙しい中本当にありがとうございます。
766:デフォルトの名無しさん
08/11/14 10:43:47
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
キーボードから整数を入力し,それを配列に順に代入し,その後,和と平均を求めるプログラムを作りなさい
-整数の入力は負の数が入力されたとき終了
・配列は最大100個までの入力に対応できるようにする
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年11月17日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)は習いました。
お願いします。
767:デフォルトの名無しさん
08/11/14 10:50:28
>>766
#include <stdio.h>
int main(void){
int i, n, sum, a[100];
i = 0;
do {
scanf("%d", &a[i]);
} while(a[i++] >= 0 && i < 100);
n = i;
sum = a[0];
for(i = 1; i < n; i++) sum += a[i];
printf("和: %d, 平均: %lg\n", sum, (double)sum / (double)n);
return 0;
}
768:デフォルトの名無しさん
08/11/14 10:59:48
>>766
#include <stdio.h>
int main()
{
int i, sum = 0, num[100], n = 0;
double ave;
for(i = 0; i < 100; i++){
printf("整数を入力:");
scanf("%d", &num[i]);
if(num[i] < 0)
break;
n++;
}
for(i = 0; i < n; i++)
sum += num[i];
ave = (double) sum / n;
printf("合計:%d 平均:%f\n", sum, ave);
return 0;
}
769:デフォルトの名無しさん
08/11/14 11:06:44
>>767
大変助かりました。
本当に有難う御座いました。
770:デフォルトの名無しさん
08/11/14 11:08:40
>>767-768
大変助かりました。
本当に有難う御座いました。
771:デフォルトの名無しさん
08/11/14 11:27:13
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
・初項a0で公差dの等差数列の一般項anは an = an-1 + d で表すことができる
・a0とdを入力し,a0~a10までの各項を配列a[0]~a[10]に求め,それを下の実行結果例のように表示するプログラムを作りなさい
実行結果例 数字は右揃えでお願いします。
a[ 1] = 1
a[ 2] = 1
a[ 3] = 2
a[ 4] = 3
a[ 5] = 5
a[ 6] = 8
a[ 7] = 13
a[ 8] = 21
a[ 9] = 34
a[10] = 55
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年11月17日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)は習いました。
お願いします。
772:デフォルトの名無しさん
08/11/14 11:36:41
>>771
その結果例、等差数列じゃなくてフィボナッチ数列だろw
実際はどっちをやりたいんだ?
↓ は等差数列
#include <stdio.h>
int main()
{
int i, d, a[11];
printf("初項:");
scanf("%d", &a[0]);
printf("公差:");
scanf("%d", &d);
for(i = 0; i <= 10; i++)
a[i + 1] = a[i] + d;
for(i = 0; i <= 10; i++)
printf("a[%d] = %d\n", i, a[i]);
}
773:デフォルトの名無しさん
08/11/14 11:39:45
>数字は右揃えでお願いします。
らしいので
printf("a[%d] = %d\n", i, a[i]);
より
printf("a[%2d] = %d\n", i, a[i]);
※ 実例の右辺 左揃えだけど… そっちも右に揃えるのかな?
774:デフォルトの名無しさん
08/11/14 11:42:47
>>772
すいません、お手数ですが、フィボナッチ数列の方もお願いします。
775:デフォルトの名無しさん
08/11/14 11:44:26
>>773
実例の右辺も右揃えでお願いします。
776:デフォルトの名無しさん
08/11/14 11:47:50
[1] 授業単元: データ構造
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] WindowsXP
[3.2] VC 6.0
[3.3] C
[4] 期限: 2008.11.20
よろしくお願いします。
777:デフォルトの名無しさん
08/11/14 12:01:30
>>774
右揃えにしたいところは %d → %2d (2桁の場合) や %3d (3桁の場合) にすれ
↓ フィボナッチ
#include <stdio.h>
int main()
{
int i, a[11];
a[1] = 1;
a[2] = 1;
for(i = 3; i <= 10; i++)
a[i] = a[i - 1] + a[i - 2];
for(i = 1; i <= 10; i++)
printf("a[%2d] = %3d\n", i, a[i]);
return 0;
}
778:デフォルトの名無しさん
08/11/14 12:05:24
>>777
詳しく教えていただき本当に有難う御座いました。
大変助かりました。
779:デフォルトの名無しさん
08/11/14 13:14:16
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
・10個の整数を入力し,それを配列a[0]~a[9]に入れ,その後,その中の最大値を求めて表示するプログラムを作りなさい
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年11月17日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)は習いました。
お願いします。
780:デフォルトの名無しさん
08/11/14 15:49:49
#include <stdio.h>
int main(void)
{
int a[10], i, max;
for(i=0; i<10; i++)
scanf("%d", &a[i]);
max = a[0];
for(i=1; i<10; i++){
if(max < a[i])
max = a[i];
}
printf("max = %d\n", max);
return 0;
}
781:デフォルトの名無しさん
08/11/14 16:56:51
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):URLリンク(hpgoda.eng.niigata-u.ac.jp)
一番下
[3] C
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C言語
習ったもの
配列 if
[4] 期限:なるべく早くお願いします
782:デフォルトの名無しさん
08/11/14 17:00:16
失礼します、質問です。
1
2
3
4
5
3
7
5
6
のようなcsvデータの1~5行目を読み合計を出します。
その後連続で、 2~6、3~7、4~8・・・と
読み込んで合計を計算していくプログラムを教えてください。
よろしくお願いいたします。
783:639
08/11/14 17:02:30
6 名前:639[sage] 投稿日:2008/11/13(木) 01:23:09
>>639
+ >>668 >>681 >>685
たびたびすいません。本当に最後の質問を。
以下のプログラムwhileの部分、Ctrl-Z を入力するまで読み取り続けるのを、
「Enterキーを入力するまで読み取り続ける」ようにするにはどうすればできますか?
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main(){
char time[100], data[10000];
char filename[20];
FILE *fp, *plot;
cout<<"filename?"<<endl;
gets(filename);
cout<<"CPUtime?"<<endl;
gets(time);
cout<<"data?"<<endl;
gets(data);
/* fp = fopen(filename,"w");
fprintf(fp,"#%s\n",time);
fclose(fp);*/
fp = fopen(filename, "w");
fprintf(fp, "#%s\n", time);
fprintf(fp,"#%s",data);
while (fgets(data, sizeof(data), stdin) != NULL) {
fprintf(fp, "%s", data);
}
}
784:692
08/11/14 17:06:34
>>750
ありがとうございます
785:755
08/11/14 17:16:13
どうもありがとうございましたm(_ _)m
数字の0と塗る文字を比較する部分で変な結果になったのでした。
786:デフォルトの名無しさん
08/11/14 18:12:50
>>781
URLリンク(kansai2channeler.hp.infoseek.co.jp)
787:デフォルトの名無しさん
08/11/14 18:18:35
>>782
CSVって言ってるけど、1行1個の数値だけならこんな感じか
#include <stdio.h>
main()
{
int a[5], n = 0, sum = 0;
while(scanf("%d", &a[n % 5]) == 1) {
sum += a[n % 5];
if (n >= 4) {
printf("sum (%d - %d) = %d\n", n - 4, n, sum);
sum -= a[(n - 4) % 5];
}
n++;
}
}
788:デフォルトの名無しさん
08/11/14 18:56:12
>>787
782です。
これを1000万行ほど連続でやりたいんです。
789:デフォルトの名無しさん
08/11/14 18:59:51
1000万行ほど連続で処理できなかったから文句言ってんだよね
790:デフォルトの名無しさん
08/11/14 19:02:58
782です。
実際は256個のデータの連続計算なんですが、
ファイルサイズが10000行を超えたあたりで
エラーが出て計算できなくなってしまいます。
どうしたらいいでしょうか?
791:デフォルトの名無しさん
08/11/14 19:03:56
[1] 授業単元: プログラミング
[2] 問題文: キーボードから打ち込んだ数字が完全数で
あるか調べるプログラムを作る。
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] 言語:C言語
[4] 期限: 11月15日12時まで
[5] その他の制限: 特になし
792:デフォルトの名無しさん
08/11/14 19:10:14
>>790
OSはなに?
1000万?
793:デフォルトの名無しさん
08/11/14 19:21:38
>>790
OSレベルの問題ってことはないの?
>>787 は領域の動的確保とかやってないから、
n が溢れる (21億くらい?) までは原理的に動作変わらないよ
$ yes 1 | ./add
sum (0 - 4) = 5
:
sum (120000000 - 120000004) = 5
:
まだ続いてる。
794:デフォルトの名無しさん
08/11/14 19:23:41
[1] 授業単元:
[2] 入力された各行の先頭の単語だけを表示するプログラムを作れ。
[3] 環境
[3.1] OS:mac
[3.2] gcc
[3.3] c
[4] 期限: なし
[5] なし
お願いします
795:デフォルトの名無しさん
08/11/14 19:32:05
>>794
「単語」にどういう文字が含まれていてよいかに依存するが、a-zA-Z0-9- に限定すればこんな感じ
#include <stdio.h>
int main()
{
char buf[256], str[256];
while(fgets(buf, 256, stdin) != EOF)
if(sscanf(buf, "%[a-zA-Z0-9-]", str) == 1)
printf("%s\n", str);
}
796:デフォルトの名無しさん
08/11/14 19:33:12
>>794
区切り文字が不明
797:デフォルトの名無しさん
08/11/14 19:34:53
>>790
1行256要素のcsvなの?
じゃあプログラムも変わってくるね。
これが仕事の発注なら追加費用だね。
798:デフォルトの名無しさん
08/11/14 19:42:56
>>791
#include <stdio.h>
int main()
{
int n, m, sum;
while(scanf("%d", &n) == 1) {
sum = 0;
for(m = n / 2; m > 0; m--)
if (n % m == 0)
sum += m;
if (sum == n)
printf("%d は完全数です。\n", n);
else
printf("%d は完全数でではありません。\n", n);
}
}
799:デフォルトの名無しさん
08/11/14 19:46:51
>>797
テンプレ無視の質問だししょうがない
800:794
08/11/14 19:50:34
単語の区切りは空白が来たときでいいそうです
801:デフォルトの名無しさん
08/11/14 19:52:35
[1] 授業単元:プログラミング言語
[2] 実行画面で
fprintf(plot,"set xlabel\"time[sec]\"\n")
と表示される様に以下のプログラムを書き換える。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: 不明…一応MicrosoftからダウンロードしたVisual C++
[3.3] 言語: C++
[4] 期限 無し
[5] その他の制限: ①関数を使って。②FILE *plotと宣言せずに。7行目の「r =」の右側の文字を全て"文字列"としてaに渡せるように)。
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int f(){
char r;
r = fprintf(plot,"set xlabel\"time[sec]\"\n");
return r;
}
int main(){
char a;
a = f();
cout<<a<<endl;
}
802:デフォルトの名無しさん
08/11/14 19:53:31
>>800
ふつうは単語の直後のカンマとかピリオドとか落とすだろ?
803:デフォルトの名無しさん
08/11/14 19:59:21
>>801
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
char * f(){
char *r;
r = "fprintf(plot, \"set xlabel\\\"time[sec]\\\"\\n\")";
return r;
}
int main(){
char *a;
a = f();
cout << a << endl;
}
804:794
08/11/14 20:00:25
そう言われるとそうなのですが、始めたばかりなもので・・・・・
805:801
08/11/14 20:02:57
>>803
早っ!
ありがとうございますw
806:デフォルトの名無しさん
08/11/14 20:06:24
>>783
Enterキーを入力≒改行を入力 だから、>>668との両立は基本的に無理。
ただ、termios や ncurses のようなものを使えば可能かもしれない。
ってかいい加減にスレチ。
807:teru
08/11/14 20:26:13
プログラムにゲーム的要素を取り入れてみましょう。
例えば、迷路を抜けるプログラムを作り、
途中にある宝物を見つけなければクリアーできないとか、(これはフラグを使うことになる)
または、途中に各種イベントを配置しておき、
そこでの評価を点数化することで最後に総得点を競うといった応用が考えられます。
自由に考えることで、面白いプログラムを作成してみることができるはずだ。
1、プログラミング上の工夫(アルゴリズムが見えやすい、拡張性が高い、など)
2、コンテンツそのものの面白さ
簡単なゲームでいいです。
よろしくお願いします。
808:デフォルトの名無しさん
08/11/14 20:30:46
>>807
>>1の書式を満たしてくれ
あとその文面は改造する元のプログラムがあるみたいだが?
809:デフォルトの名無しさん
08/11/14 20:58:57
元なんてなくて、ゲームごと作る課題かと。
810:703
08/11/14 21:22:28
無事完成しました。ありがとうございます。
#include<stdio.h>
int fact(int n);
int fact1(int r);
int main(void)
{
int n,r,m,nCr;
printf("n r ->");
scanf("%d %d",&n,&r);
m=n-r;
if (n < m || n < 0 || m < 0)
return printf("nCr=0\n");
nCr=fact(n)/(fact1(r)*fact(m));
printf("nCr=%d\n",nCr);
return 0;
}
int fact(int n)
{
if(n==0) return 1;
else return n*fact(n-1);
}
int fact1(int r)
{
if(r==0) return 1;
else return r*fact1(r-1);
}
811:デフォルトの名無しさん
08/11/14 21:25:44
>>810
>>744
812:デフォルトの名無しさん
08/11/15 00:12:42
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):GPで画像を合成して再構成するときに45度ずつ回転して出力しなさい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2008年11月18日
[5] その他の制限:よろしくお願いします。
813:デフォルトの名無しさん
08/11/15 00:35:27
>>810
階乗、漸化式、再帰、を使ったやり方かい・・・
余談だが、int型だと符号なしでも、12の階乗が限度。
対策として、分母の階乗を考慮して、乗数を減らすことも出来るが・・・
まぁ、階乗を使う必要がある問題ならそれで良いけど、パスカルの三角形は
より値が大きくなっても求められるが、それも限度はあるけど。
814:デフォルトの名無しさん
08/11/15 01:33:40
どなたか>>472をCで作成お願いします!
815:デフォルトの名無しさん
08/11/15 01:55:16
>>814
死ね
816:デフォルトの名無しさん
08/11/15 02:33:31
>>814
調べりゃソースはある
817:デフォルトの名無しさん
08/11/15 02:35:56
>>815
おっと、死ねとはどうかと。あまりにも下衆過ぎやせんか?言葉を慎めよ
818:デフォルトの名無しさん
08/11/15 02:39:42
[1] 授業単元:応用プログラミング
[2] 問題文(含コード&リンク): 並列再帰を使ってハノイの塔問題を処理するプログラムを組め.
コード上で円盤の数も選択できるようにせよ.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 2008年11月17日 午後5時
[5] その他の制限: Cは一通り習っていますが,ライブラリはなるべく使わずにお願いします.
どなたかよろしくお願いします.
819:デフォルトの名無しさん
08/11/15 02:41:50
>>815
書き込む内容によってはえらいことになるよ?
気をつけたほうがいいと思う。
820:デフォルトの名無しさん
08/11/15 02:44:14
[1] 授業単元: プログラミング
[2] 問題文: 入力したISBNコードが正しいか判断するプログラムを
作成せよ。(配列とfor文を使うこと)
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] 言語:C言語
[4] 期限: 11月15日12時まで
[5] その他の制限: 特になし
821:820
08/11/15 02:51:40
回答まだですか?
822:デフォルトの名無しさん
08/11/15 02:52:23
>>820
旧式と新式どっちだよ
823:デフォルトの名無しさん
08/11/15 02:54:37
URLリンク(ja.wikipedia.org)
ハイフンやその間の数字の数、チェックデジットも?
824:デフォルトの名無しさん
08/11/15 02:56:26
>>821
いや俺が280だから。
>>822
新式です。
825:デフォルトの名無しさん
08/11/15 02:58:17
>>823
ハイフンを打ち込まず
4-793-2792-8
なら
479327928とそのまま打ち込む感じでお願いします。
826:デフォルトの名無しさん
08/11/15 04:28:25
>>820ですが
自己解決しました。
827:デフォルトの名無しさん
08/11/15 04:30:00
してません
勝手に人の振りしないでください
828:デフォルトの名無しさん
08/11/15 04:46:50
すみません。ISDNの間違いでした。
829:デフォルトの名無しさん
08/11/15 04:47:03
なにをもって「正しい」と判断するんだ?
単にチェックデジットがあってればいいだけ?
830:デフォルトの名無しさん
08/11/15 04:57:00
>>826 >>821
通報して良い?本人じゃなくても、第三者にも偽者ってバレてるんだけど?
831:デフォルトの名無しさん
08/11/15 04:59:11
正しいというのは、チェックデジットのこともあるが、それは末尾だし
末尾を算出するのは、その手前の数によるし・・・
問題は、ハイフンごとに分けられているそれぞれの数値も
範囲が決められているとか、この世に存在するものかどうか
何かデータベースを参照して正しいかを調べるのか?それが問題だ。
考えすぎかもしれんが。
832:デフォルトの名無しさん
08/11/15 05:17:25
最初の3行は978,979の数字3文字,次の1文字は国番号で決まっているから,残りは
4文字(出版者記号),4文字(書名記号),チェックディジットになるんだよな?
ちょっとやってみるわ.
833:デフォルトの名無しさん
08/11/15 07:20:34
テンプレに書いてあるのにトリップ使わないのが悪い
834:デフォルトの名無しさん
08/11/15 10:37:10
>>833
やりかたがよくわかりませんし、
今事情があって他人のPCを使っています。
情報漏洩したら面倒なのでやりたくないです。
835:デフォルトの名無しさん
08/11/15 10:47:32
頭悪すぎる
836:デフォルトの名無しさん
08/11/15 11:24:01
これがゆとりか。
837:デフォルトの名無しさん
08/11/15 11:25:28
それマジでいってんのか?
838:デフォルトの名無しさん
08/11/15 11:54:12
>>820
先頭3桁のチェックと末尾のチェックデジットのチェックのみ。
書式は >>825 のような13桁の数字のみを受け付ける。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
839:デフォルトの名無しさん
08/11/15 11:55:06
>>780
大変助かりました。
本当に有難う御座いました。
840:デフォルトの名無しさん
08/11/15 12:13:15
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
・配列を利用し,2008年の指定された月の1日が何曜日か表示するプログラムを作成せよ
-日=0,月=1,火=2,...,土=6と数値化して計算
・その数値によって何曜日かを表示する
-2008年1月1日が火曜日(=2)であることを利用する
-求める月の前の月前までの日数を加算し7で割った余りを考える
-各月の日数を以下のような形で配列に入れておく
days[ ]={0,31,29,...,31}
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年11月17日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
配列の初期化は習いました。
お願いします。
841:デフォルトの名無しさん
08/11/15 12:24:18
>>840
#include <stdio.h>
int main()
{
int y, m, q, h;
char *s[] = {"土", "日", "月", "火", "水", "木", "金"};
puts("西暦の年、月、日をスペース区切りで入れてください");
scanf("%d %d %d", &y, &m, &q);
h = (((q + ((m + 1)*26/10) + (y % 100) + ((y % 100)/4) +
((y / 100)/4) - 2*(y / 100)) % 7) + 7 ) % 7;
printf("%d年%d月%d日は%s曜日です\n", y, m, q, s[h]);
return 0;
}
842:デフォルトの名無しさん
08/11/15 12:28:16
ごめん全然問題文よんでなかった
843:デフォルトの名無しさん
08/11/15 13:12:50
[1] 授業単元: アルゴリズムデータ構造Ⅱ
[2] 問題文(含コード&リンク):
複素数a,bを標準入力から入力し、それぞれの絶対値を求め、2つの複素数の和、差、積、商を求め
標準出力に出力するプログラムを作りたい。これらを求める関数として、複素数の絶対値を求める関数
および和、差、積、商を求める関数が
double cabs(struct mycomplex)
struct mycomplex wa(struct mycomplex,struct mycomplex)
struct mycomplex sa(struct mycomplex,struct mycomplex)
struct mycomplex seki(struct mycomplex,struct mycomplex)
struct mycomplex shou(struct mycomplex,struct mycomplex)
として作ることにした。これらの絶対値、和、差、積と商を求める関数を解答せよ
なおこの構造体は予めCの処理系には用意されているが、それを利用せず独立に考えよ。
[3] 環境
[3.1] OS: Windows
[3.2]
[3.3] 言語: C
[4] 期限: 11月16日まで
[5] その他の制限:構造体の問題です 問題文に沿ってお願いします。
844:デフォルトの名無しさん
08/11/15 13:18:37
843の問題です
#include<stdio.h>
#include<math.h>
struct mycomplex {
double re;
double im;
};
int main()
{
struct mycomplex a,b;
struct mycomplex wa(struct mycomplex,struct mycomplex);
struct mycomplex sa(struct mycomplex,struct mycomplex);
struct mycomplex seki(struct mycomplex,struct mycomplex);
struct mycomplex shou(struct mycomplex,struct mycomplex);
double cabs(struct mycomplex);
struct mycomplex cinput(void);
void cprint(struct mycomplex);
a=cinput(); b=cinput();
cprint(wa(a,b)); cprint(sa(a,b)); cprint(seki(a,b)); cprint(shou(a,b));
printf("絶対値 cabs(a)=%f\n",carbs(a)); printf("絶対値 cabs(b)=%f\n",cabs(b));}
845:デフォルトの名無しさん
08/11/15 13:20:11
844の問題の続きです
struct mycomplex cinput(void)
{
struct mycomplex z;
scanf("%f %f",&z.re,&z.im);
return z;
}
void cprint(struct mycomplex z)
{
printf("複素数 = %f + i*%f\n",z.re,z.im);
}
誰かお願いします
846:デフォルトの名無しさん
08/11/15 14:11:56
>>843
struct mycomplex wa(struct mycomplex a, struct mycomplex b)
{
struct mycomplex z = { a.re+b.re, a.im+b.im };
return z;
}
struct mycomplex sa(struct mycomplex a, struct mycomplex b)
{
struct mycomplex z = { a.re-b.re, a.im-b.im };
return z;
}
struct mycomplex seki(struct mycomplex a, struct mycomplex b)
{
struct mycomplex z = { a.re*b.re - a.im*b.im, a.re*b.im + a.im*b.re };
return z;
}
struct mycomplex shou(struct mycomplex a, struct mycomplex b)
{
struct mycomplex z = {
(a.re*b.re + a.im*b.im) / (b.re*b.re + b.im*b.im),
(a.im*b.re - a.re*b.im) / (b.re*b.re + b.im*b.im)
};
return z;
}
double cabs(struct mycomplex a)
{
return hypot(a.re, a.im);
}
847:デフォルトの名無しさん
08/11/15 17:18:06
全然わかりません。よろしくお願いします。
[1] 授業単元:応用プログラミング論
[2] 問題文(含コード&リンク):
ある任意の点X(a,b)、Y(c,d)を乱数で求め、
X,Yからなる線分に1辺が平行であり、四角形の中心とその線分との距離が30pixelになるような四角形を描写せよ。
四角形は20×40のものを使用。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++ 2008
[3.3] 言語:C++
[4] 期限: 2008年11月18日13時まで
[5] その他の制限:とくになし。
848:デフォルトの名無しさん
08/11/15 17:43:41
四角形が20*40なのに中心から線分までの距離が30かあ。
849:デフォルトの名無しさん
08/11/15 17:49:46
いいんじゃないか?仮に20の方が平行な辺だとしてもね。
850:デフォルトの名無しさん
08/11/15 18:03:00
あ。読み間違えてた。
線分XYを一辺とするのかと思いこんでた。
X
┌─┐│
└─┘│
Y
こういうことね。
851:デフォルトの名無しさん
08/11/15 18:06:09
┌─┤
└─┤
じゃないんだねww?
852:デフォルトの名無しさん
08/11/15 18:45:07
846のかた
ありがとうございます
853: ◆hXvyVozAPo
08/11/15 19:11:10
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):
以下のようなプログラムを作成しなさい.
int型変数xを宣言し標準入力で適当な数値を代入する。
その変数xのアドレスを引数として、アドレスと値を表示する関数を作成せよ。
実行例
./a
? 5
変数xのアドレスは 0x00 です
変数xの値は 5 です
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名 Cygwin
[3.3] 言語:C
[4] 期限: 11月16日 17時まで
[5] その他の制限: 授業はまだまだ初歩レベルみたいです。
854:デフォルトの名無しさん
08/11/15 19:24:18
#include<stdio.h>
#include<math.h>
struct mycomplex {
double re;
double im;
};
int main()
{
struct mycomplex a,b;
struct mycomplex wa(struct mycomplex,struct mycomplex);
struct mycomplex sa(struct mycomplex,struct mycomplex);
struct mycomplex seki(struct mycomplex,struct mycomplex);
struct mycomplex shou(struct mycomplex,struct mycomplex);
double cabs(struct mycomplex);
struct mycomplex cinput(void);
void cprint(struct mycomplex);
a=cinput(); b=cinput();
cprint(wa(a,b)); cprint(sa(a,b)); cprint(seki(a,b)); cprint(shou(a,b));
printf("絶対値 cabs(a)=%f\n",carbs(a)); printf("絶対値 cabs(b)=%f\n",cabs(b));
}
struct mycomplex cinput(void)
{
struct mycomplex z;
scanf("%f %f",&z.re,&z.im);
return z;