C/C++の宿題を片付け ..
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] その他の制限: @関数を使って。AFILE *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
Wikipedia項目リンク
ハイフンやその間の数字の数、チェックデジットも?
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] 授業単元: アルゴリズムデータ構造U
[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;
855:デフォルトの名無しさん
08/11/15 19:29:32
}
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); }
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); }
すいません、動かないんで何処が違うか教えてください
854の続きです
856:デフォルトの名無しさん
08/11/15 19:32:14
>>853
#include<stdio.h>
void pp(int *x)
{
printf("変数xのアドレスは 0x%p です\n", x);
printf("変数xの値は %d です\n", *x);
}
int main(void)
{
int x;
fputs("? ", stdout);
scanf("%d", &x);
pp(&x);
return 0;
}
857:デフォルトの名無しさん
08/11/15 19:35:21
>>855
見づらいし
インデントしなおすのもめんどくさいから
素直にろだにあげろカス
858:デフォルトの名無しさん
08/11/15 19:37:24
>>855
carbs → acabs
859:デフォルトの名無しさん
08/11/15 19:49:51
>>854
関数宣言を main の外へ出せ
860:デフォルトの名無しさん
08/11/15 20:07:38
859の方
わからないので、8036でアップいましたので修正お願いします
ほかの方も教えてくれるとありがたいです
861:デフォルトの名無しさん
08/11/15 20:13:17
C++です。
二つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示するプログラムを作りたいんです
整数1は37
整数2は28
28〜37までの全整数の和は325
for文は使わずにお願いします。
よろしくお願いしますm(_ _)m
862:デフォルトの名無しさん
08/11/15 20:19:13
>>860
関数宣言を main 関数の外へ
scanf のフォーマットが違った。 %f -> %lf
main 関数の最後に return 0; を追加
URLリンク(kansai2channeler.hp.infoseek.co.jp)
863:デフォルトの名無しさん
08/11/15 20:26:58
>>859
別に関数宣言は問題ではないと思うが
標準ライブラリのcabs()と被るのでacabs()に名前変更
main()には、return 0;でもつけてね
cinput()内のscanf()は、%fではなくて%lfにする
shou()内の(b.re * b.re + b.im * b.im) != 0 を保証すべき
acabs()でhypot()呼んでいるので、必要に応じてリンクする
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4991日前に更新/337 KB
担当:undef