いいかげんにしろ
1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 1年分の各月の平均気温を配列に格納し(プログラム内で初期値として与えてよい),各データとそれらの平均値を表示するプログラムを作成せよ. なお,データは摂氏と華氏の双方で表示すること.ただし,格納するデータはどちらか一方のみ.(この問題では,平均値は整数でよい(切り捨て,切り上げ,四捨五入いずれも可).月平均気温は適当でよい.) 摂氏→華氏変換式: F=(9/5)×C+32 ,ただしCは摂氏温度,Fは華氏温度. ただし、摂氏から華氏への変換をユーザ定義関数として定義して,これを使うようにせよ. [実行結果] 2005年の月平均気温(摂氏,括弧内は華氏) 1月:5(41) 2月:0(32) <省略> 12月:10(50) ----------- 平均:15(59) 以上 [3] 環境 [3.1] OS: (Windows [3.2] コンパイラ名とバージョン: Visual Studio.NET2003 [3.3] 言語: C [4] 期限: なるべく早く [5] その他の制限: 関数まで習いました。 どうか、よろしくお願いします。
プログラム内で指定すべき初期値を省略されたら書けない罠。
>>4 #include <stdio.h>
double kashi(double t){
return 9/6*t+32;
}
main(){
double sesshi[12]={1,2,3,4,5,6,7,8,9,10,11,12},goukei=0;
int i;
for(i=0;i<12;i++){
goukei+=sesshi[i];
}
printf(" 2005年の月平均気温(摂氏,括弧内は華氏)\n\n");
printf(" 1月:%.0f(%.0f)\n",sesshi[0],kashi(sesshi[0]));
printf(" 2月:%.0f(%.0f)\n",sesshi[1],kashi(sesshi[1]));
printf(" <省略> \n");
printf(" 12月:%.0f(%.0f)\n",sesshi[11],kashi(sesshi[11]));
printf(" -----------\n");
printf("平均:%.0f(%.0f) \n",goukei/12,kashi(goukei/12));
printf("以上\n");
}
/*******チラシの裏*********/
>>4 前にもやった記憶が・・・
とりあえずは何番目かの66の片方を使う事に流れたみたいだな・・・ 先にあっち消費してくるか・・・
11 :
デフォルトの名無しさん :2006/07/05(水) 23:33:37
[1]授業単元:プログラミング [2]問題文:knightの巡回 m*nのマス目のチェス盤に対して解の求め方を、 1.出発点に戻らなくて良いので、全地点を巡回する 2.出発点に戻る解を一つ求める 3.出発点に戻る解を全て求める の順序で付け加えていき、プログラムを完成させなさい。 (ナイトのスタート地点はどこでもよいが、四隅のどこかにして おけばよい。答えの表示は、m*nのマス目に訪問順番を書き込んだ形にせよ。) [3]環境 [3.1]OS:mac [3.2]コンパイラ名とバージョン:gcc [3.3]言語:C [4]期限:7/7午後5時 [5]その他の制限:ポインタはなるべく使わず。 ぜんぜん分かりません。よろしくお願いします。
aaaa^ _a; aaaaはクラスです。こんな定義できましたっけ?
CLIだな。 _aはaaaaを指すマネージドポインタ
[1] 授業単元:伏せ [2] 問題文(含コード&リンク):行列ベクトル積を行うプログラムを書く [3] 環境 Linux gcc 3.4 C [4] 期限: ほぼ無期限 [5] その他の制限: 行列を用意する方法は以下のやり方でやれといわれてます //行列の確保 double **a, *x, *y; a = (double **)malloc(sizeof(double *)*n); a[0] = (double *)malloc(sizeof(double)*(n*n)); //行列の解放 free(a[0]); free(a);
15 :
デフォルトの名無しさん :2006/07/06(木) 22:16:45
[1] 授業単元:コンピューター実習 [2] 問題文(含コード&リンク): 簡単な計算を行うプログラムを作る 例) 31 + 12 (Enter) =43 (出力) 45 − 12 (Enter) =33 (出力) 5 * 6 (Enter) =30 (出力) 30 / 6 (Enter) =5 (出力) というプログラム。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 7月12日 2時30分 [5] その他の制限: switch caseを使う、Ctrc + Cを押さないと停止しないようにする よろしくお願いします。
CtrlDを押したらどうなるべきなんだろう……
>>15 超適当
#include <stdio.h>
void main(){
char buf[256], c;
int a, b;
while(1){
c = ',';
printf("[書式例]\n10 + 10\n");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d %c %d", &a, &c, &b);
switch(c){
case '+': printf("=%d\n\n", a + b); break;
case '-': printf("=%d\n\n", a - b); break;
case '*': printf("=%d\n\n", a * b); break;
case '/': if (b == 0){
printf("error\n\n");
break;
} else {
printf("=%.2f\n\n", (float)a / b);
break;
}
default:
printf("error\n\n");
}
}
}
0で割ろうとすると…
「 - 」 のときの処理(優先度とか)がおかしい気がする
21 :
デフォルトの名無しさん :2006/07/07(金) 15:12:12
char cmojiretu[50] = "AAABCCCCCCCCDDDEFGHHHHJJJ"; char cmojiretu2[50]; int isoeji = 0; int icnt = 0; int out = 0; char ccnt; printf("\n圧縮前文字列→%s\n", cmojiretu); //圧縮前文字列の表示 printf("圧縮前文字数→%d\n", strlen(cmojiretu)); //圧縮前文字数の表示 do { if(ccnt == cmojiretu[isoeji]) icnt++; //icntを1つずつずらす else{ for(; icnt > 9; icnt -= 9) out += sprintf(cmojiretu2 + out, "@9%c", ccnt); if(icnt <= 3) while(icnt--) cmojiretu2[out++] = ccnt; else out += sprintf(cmojiretu2 + out, "@%c%d", ccnt, icnt); icnt = 1; ccnt = cmojiretu[isoeji]; } }while(cmojiretu[isoeji++]); cmojiretu2[out++] = '\0'; printf("\n圧縮後文字列→%s\n", cmojiretu2); //圧縮後文字列の表示 printf("圧縮後文字数→%d\n", strlen(cmojiretu2)); //圧縮後文字数の表示 return 0; //main関数を終了させる } このC言語のコメントがわかりません、わかる方コメントをお願いします
nihongono bankyouha simashitaka?
23 :
huniya :2006/07/07(金) 15:19:10
授業単元:Windos 問題:西暦と月を入力し、その月のカレンダーを出力せよ。 環境:C言語です。
>>21 どうでもいいとこだけにコメントが書いてあるな。
ってかマルチだしスルーでしょ
26 :
c++ :2006/07/07(金) 16:05:56
[1] 授業単元: プログラミング言語 [2] 問題文(含コード&リンク): 線形リストを用いて、素数とわかった数を保存し、指定された数(N)以下の素数を求めるプログラムを作成せよ。ただし、Nはプログラム実行中で外部から入力できるようにすること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: 6.0 [3.3] 言語: C++ [4] 期限: 2006年7月10日まで [5] その他の制限:たぶんなし この問題がわかりません。 基礎なことかもしれませんが、どうかお願いします
そういえばもう夏休みの宿題の季節なんだな
[1] C言語プログラミング [2] 問題文(含コード&リンク): 名前と点数を格納するデータ部を持つ自己参照型構造体を定義し、 線形リストを実装しなさい。 構造体の名前は struct grade とし、新たに glist 型として定義する。 構造体のメンバは、char name[40]、int score、及びポインタnext。 ノードは3つ作成し、それぞれキーボードからデータを入力する。 ポインタに値を代入し、ヘッダhdと3つのノードの間を繋ぐ。 読み出し用のポインタpを使って、リストのデータを順に画面に出力する。 【ヒント 実習時間中にスライドの指示に沿って作成したコードを提出しても良い。 余力のある人は、ノードを作成する際に動的にメモリを確保するコードを作成すること (より効率的なコーディングが可能となる)。 [3] 環境 [3.1] OS: XP [3.2] visual studio.2003 [3.3] 言語: C [4] 期限: 来週の火曜日まで [5] 配列、ループ、線形探索、二部探索、構造体
>>26 #include<iostream>
using namespace std;
struct Cell{int car;Cell*cdr;Cell(int car,Cell*cdr):car(car),cdr(cdr){}};
Cell*enumFromTo(int from,int to)
{return from <= to?new Cell(from,enumFromTo(from+1,to)):NULL;}
Cell*erase(Cell*p,int n)
{return!p?NULL:p->car%n?new Cell(p->car,erase(p->cdr,n)):erase(p->cdr,n);}
Cell*solve(Cell*p){return p?new Cell(p->car,solve(erase(p->cdr,p->car))):NULL;}
int main(){
int n;cout<<"n <- ";cin>>n;
for(Cell*p = solve(enumFromTo(2,n));p;p=p->cdr)printf("%d ",p->car);
}
31 :
デフォルトの名無しさん :2006/07/07(金) 22:01:24
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): テキストファイルを読み込ん(ファイル名はプログラム中に書き込んでおく)で,偶数行だけを画面に出力するプログラムを作成せよ. ファイル名:test.txt [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VisualStudio.net2003 [3.3] 言語: C [4] 期限: 7月11日 [5] その他の制限: よろしくお願いします
>>31 #include <stdio.h>
int main(void)
{
int a;
FILE *fp;
if ((fp=fopen("a.txt","r"))==NULL){
perror("error![file] ");
return -1;
}
while (fscanf(fp,"%d",&a) != EOF){
if ((a%2)==0){
printf("%d\n",a);
}
}
return 0;
}
33 :
デフォルトの名無しさん :2006/07/07(金) 22:11:22
34 :
デフォルトの名無しさん :2006/07/07(金) 22:24:20
[1] 授業単元: プログラミング基礎1 [2] 問題文(含コード&リンク): ファイル名をキーボードから入力し,キーボードから10行分のテキスト(空白文字無し)を読み込んで,その内容をファイルに格納するプログラムを作成せよ. [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VisualStudio2003 [3.3] 言語: C [4] 期限: できるだけ早くお願いします
>>34 #include <stdio.h>
#include <stdlib.h>
int main(void) {
char filename[80],buf[255] ;
int i ;
FILE *fp ;
printf("FileName? ") ;
scanf("%s[^\n]",filename) ;
printf("Input!\n") ;
if(!(fp=freopen(filename,"w+",stdout))) {
fprintf(stderr,"Error!!\n") ;
exit(1) ;
}
for(i=0;i<=10;i++) {
fgets(buf,sizeof(buf)/sizeof(buf[0]),stdin) ;
printf("%s",buf) ;
}
return(0) ;
}
眠い。
37 :
デフォルトの名無しさん :2006/07/08(土) 11:43:02
なぜ標準入力ではなくキーボードなのか
>>29 #include<stdio.h>
#include<stdlib.h>
typedef struct grade { char name[40]; int score; struct grade *next; } glist;
static glist *hd = NULL;
static glist *new_rec() { glist *p = malloc(sizeof(*p)); if (p){ scanf("%s %d", p->name, &p->score); p->next = NULL; } return p; }
static void add_rec(glist **head, glist *rec) {
glist *p, *prev;
for(prev=NULL, p=*head; p; p=p->next) prev = p;
if (prev) prev->next = rec; else *head = rec;
}
static void output_rec(glist *rec){printf("%s %d\n", rec->name, rec->score); }
static void delete_recs(glist *head){
glist *p, *q;
for (p=head; p; p=q){ q = p->next; free(p); }
}
int main() {
int i; glist *p, *q;
for(i=0; i < 3; i++){ p = new_rec(); if (p) add_rec(&hd, p); }
for(p=hd; p; p=p->next){ output_rec(p); }
delete_recs(hd);
return 0;
}
あ…まぁいいや。
入力と受信の並列処理ってなに?(´・ω・`)
文字通りの意味でしょ?
44 :
41 :2006/07/08(土) 18:21:10
>>42 文字通りの説明になってしまいますが、
相手側からのデータ受信、キーボードからの入力の
どちらが来ても対応できるように並列で処理するということでいいでしょうか。
そしてその並列処理(マルチスレッド)をselect()関数で実現するというのが
今回の課題の主眼らしいです。
書き込み中に受信があったら表示す(=゚ω゚)ノぃょぅるのね
46 :
41 :2006/07/08(土) 18:35:12
>>45 はい、そういう仕様で大丈夫ですので
ぜひともお願いします。
>>45 せめて行単位で
シ-‐‐-、
ノ //|.i i
やらないか
ノ/」_´__ソ.| <あたしゃもう疲れたよ
48 :
taka :2006/07/08(土) 19:23:39
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 線分を6本入力する。それらの線分のうち、垂直に交わっているものの組はどれかを判定するプログラムを作る。
http://up.spawn.jp/file/up27759.txt startx,startyは始点のx,y座標、endx,endyは終点のy座標です。下の方のdouble型のtはtanのことです。
垂直の条件をtを使って表現したいのですが、このプログラムのままじゃ不完全ぽいです。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio .NET 2005
[3.3] 言語: C++
[4] 期限: [7月11日0:00まで]
[5] その他の制限: よろしくお願いします。
49 :
41 :2006/07/08(土) 19:24:51
>>47 肝は並列処理らしいですので
行単位でも並列処理していただければ大丈夫だと思います。
よろしくおねがいします。
>>49 もうすぐできる(と思う) (=´ω`)ノ
52 :
41 :2006/07/08(土) 21:16:21
早速ありがとうございます!! 家のPC環境ではコンパイルできないので、 月曜に大学で動作確認するつもりです。 すみませんが、それからまた報告にあがります。
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): @ キーボードから正整数を読み込み,その数を素因数分解した結果を画面に表示する. ただし,1つの整数を引数とし,その整数の最小の素因数を返す関数をユーザ定義関数として作成し,この関数を使用すること. A キーボードからファイル名を入力し,そのファイルの文字コードを判別し,画面に表示する. ただし,指定ファイルの文字コードはJIS,EUC,SJISとする. [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2006/07/20まで [5] その他の制限: 特になし よろしくおねがいします。
>>48 tanを使うと面倒じゃない?
線分が与えられてるから位置ベクトルに直して内積で直角で交わるか否かを判定した方が楽だと思う
>>51 scanf("%s", ...)は如何な最中。
空白を含む文字列を(そのままの形では)入力できないぞ。
あ、どうせだから文字数制限もしておくべきか。
#scanf("%1023[^\n]", ...)で委員で内科医?
>>55 その例ならfgets使うほうが健全な気がしてならない
57 :
taka :2006/07/08(土) 23:23:49
>>54 先ほど質問をさせて頂いた者です。
質問の内容に、一部不備がありました。申し訳ありません。
教授が言うには、垂直判定といっても、ぴったり90°で交わっている線分だけを垂直とみなすわけではなく、89°や91°も垂直とみなして良いというように、90°±αのゆるやかさを持たせなさい、とのことです。
ベクトルだと、びったり90°のものしか判定されないような気がするのですが…。
(´・ω・`) ショボーン
61 :
53 :2006/07/09(日) 00:52:07
自己解決しました
>>57 ちょっと処理は増えるけど
・2つの線分の長さを算出
・ベクトルから内積を算出
をして
cos([89度のラジアン]) < ([内積] / [2つの線分の長さの積]) < cos([91度のラジアン])
とか?
tan は、始点と終点の x 座標が同じ時の処理がメンドイ・・・(ごめん)
[1] 授業単元:プログラミング言語C
[2] 問題文(含コード&リンク):
ttp://www.uploda.org/uporg439919.pdf [3] 環境
[3.1] WindowsXP
[3.2] gcc
[3.3] C
[4] 期限:7月10日の早朝まで
[5] その他の制限:特にありません
3問と多いですが、どうか宜しくお願いしますm(_ _)m
酔っ払ってていいならやるぞう ダメなら寝るぞう
>>63 「12F574」も一致させる必要がありますか?
っていうかpdfからコピペ出来ないからマンドクセ
ポインタのアドレスまで同じにする必要はないっしょ そもそもそういうのは各々の使用環境によって異なるんでは?
#include <stdio.h> main() { char name[10] = {"NAOKISATO"}; char *add; int i; add = name; for(i = 0; i < 9; i++){ printf("アドレス %x には文字 %c が格納されています。\n", 0x12F574, name[i]); } printf("\n"); printf("逆に並べ替えて表示すると\n"); for(i = 8; i >= 0; i--){ printf("アドレス %x には文字 %c が格納されています。\n", 0x12F574, name[i]); } }
printf("アドレス %x には文字 %c が格納されています。\n",&add[i],add[i]); かな?
for(i = 0; i < 9; i++){ printf("アドレス %x には文字 %c が格納されています。\n", add++, *add); } printf("\n"); printf("逆に並べ替えて表示すると\n"); for(i = 8; i >= 0; i--){ printf("アドレス %x には文字 %c が格納されています。\n", --add, *add); }
>>71 右クリック⇒てのひらツールでテキスト選択
もしくは、上のツールバーの手のマークの横の「選択」ってのを押す
>>72 へ?できるんだが・・・
>>72 と、思ったらマジで禁止されてる・・・何これ
タグ名 prsn なんて、悪いコーディングのお手本だな。
77 :
デフォルトの名無しさん :2006/07/09(日) 15:42:21
問題が長い人さー、問題の先頭3,4行とか、問題の概略とかをコメントに 含めてもらえんものかね。 どれが既出でどれが解かれてないのか、いちいちリンク先見ないとわからん。
79 :
77 :2006/07/09(日) 16:24:40
>>63 2、
struct prsn{
char name[256];
long birth;
char address[256];
char tel[256];
}prsn_data;
3、
#include<stdio.h>
#include<math.h>
#define PAI 3.14159
int main(void){
int i;
double x,y,r,theta;
FILE *fp;
fp = fopen("output.csv", "w");
for(i=0; i<360; i++){
r = (double)i * 0.1;
theta = PAI * (double)i/180.0;
x = r * cos(theta);
y = r * sin(theta);
fprintf(fp, "%8.4f,%8.4f\n", x, y);
}
fclose(fp);
return 0;
}
ただしこっちの環境はBCCだ
82 :
77 :2006/07/09(日) 22:23:25
>>80 私の環境でも無事動作することを確認しました。
本当のありがとうございました。
外部ハッシュを用いる問題です。よろしくお願いします。 [1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク): 英語のテキストファイルを読み込み,各単語(空白あるいは,ピリオド「.」,カンマ「,」で区切られたものとする) の出現数をカウントして出力するプログラムを外部ハッシュ法を用いて作成せよ. プログラムの流れは以下のようになる. 1. ファイルの先頭から最後まで順に1つの単語を読み込みながら2.を実行する 2.1.で読み込んだ単語wについて以下を行う. 2.1 ハッシュ値を求める. 2.2 同じハッシュ値をもつすべての単語について,wと同じものがあるかを調べる. 2.3 同じものがあればその出現回数を+1する.なければ, w(およびその出現回数(初期値は1))を格納するセルを作成し,バケットに連結する. 3. 単語を出現回数と共に出力する. ハッシュ表に格納するセルの定義は次のようなものとする. typedef struct cell *cellptr; typedef struct cell { char *word; int count; struct cell *next; } cell; [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: borland C++ [3.3] 言語: C言語 [4] 期限: 7/12まで [5] その他の制限: ありません。
>>83 そのハッシュ値ってどうやって計算するの?
85 :
83 :2006/07/09(日) 23:31:17
ハッシュ値の求め方はこのような物を使います。 #define B 100 #define W 6 int h(char *x) { int i,hash; hash = i = 0; while(x[i] != 0 && i < W){ hash = hash + (int)x[i]; i++; } hash = hash%B; return (hash); }
86 :
83 :2006/07/09(日) 23:32:40
単語の存在判定も載せてみます。 利用できそうなら、使ってください。 enum yn {yes,no}; enum yn menber(char *x, struct cell **A){ struct cell *q, *r; q = A[h(x)]; while(q != NULL){ if(strcmp(q->word,x) == 0) return(yes); r = q; q = q->next; } return(no); } よろしくお願いします。
気になるところがいくつか cellptr の typedef はまとめて typedef struct cell { char *word; int count; struct cell *next; } cell, *cellptr; でいいと思う だけど struct cell *q, *r; としてるのが不明 せっかくだから struct cellptr q, r; という使い方しないの?
89 :
83 :2006/07/10(月) 08:47:59
>>87 存在判定は教科書のを載せたので、struct cellptr q, r; でいいと思います。
>>88 ありがとうございます。
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { double x,y; char buf[1024]; do { printf("実数1を入力してちょ: "); fgets(buf,1024,stdin); }while((sscanf(buf,"%lf",&x))!=1); do { printf("実数2を入力してちょ: "); fgets(buf,1024,stdin); }while((sscanf(buf,"%lf",&y))!=1); printf("和: %lf\n",x+y); printf("差: %lf\n",x-y); printf("積: %lf\n",x*y); printf("商: %lf\n",x/y); system("PAUSE"); return 0; } 値はscanf()で文字列として取り込み、 atof()で実数に変換するにはどうすればいいですか?
scanfは使うな いまのでいいじゃん
92 :
41 :2006/07/10(月) 13:56:01
>>51 無事に動きました!
ありがとうございました!!ぜひとも参考にさせていただきます。
>>56 ,
>>56 貴重なご意見ありがとうございます。
早速、改良してみようと思います!
[1] 授業単元:プログラミング [2] 問題文 次の配列の平均、分散、標準偏差を計算するプログラムを作りなさい。 double a[5]={1.0,2.0,3.0,4.0,5.0}; N-1 平均 α=1/N*Σαi i=0 N-1 分散 σ^2=1/N*Σ(αi-α)^2 i=0 標準偏差 σ=√σ^2 3] 環境 [3.1] XP [3.2] gcc 3.4 [3.3] Cのみ [4] 期限:今日中にお願いします(*。_。) [5] その他の制限:まだ初心者です、誰か優しい方お願いします(o^-^o) 表記の仕方とかよくわからないんで適当にやってしまったのですが わかり辛かったらごめんさなぃ<(_ _*)>
>>93 // 既存ソースの流用なんで、scanf()のところを配列参照にするのはやってくれ
#include <stdio.h>
#include <float.h>
#include <math.h>
int main(void)
{
int n = 0;
double x, mean, mean2, dis;
while (scanf("%lf", &x) == 1) {
if (n == 0) {
mean = x;
mean2 = x * x;
} else {
mean += x;
mean2 += x * x;
}
++n;
}
mean /= n;
dis = mean2 / n - mean * mean;
printf("平均値:%.15g\n分散:%.15g\n標準偏差:%.15g\n",
mean, dis, sqrt(dis));
return 0;
}
95 :
デフォルトの名無しさん :2006/07/10(月) 15:39:21
// >94を題意にあわせて、よりシンプルに #include <stdio.h> #include <math.h> int main(void) { double a[5]={1.0,2.0,3.0,4.0,5.0}; double mean = 0; double mean2 = 0; int n = sizeof(a) / sizeof(* a); for (int ic = 0; ic < n; ++ic) { mean += a[ic]; mean2 += a[ic] * a[ic]; } // 分母の調整が要りそうなので、その場合は次の行を有効に。 // --n; mean /= n; double dis = mean2 / n - mean * mean; printf("平均値:%g\n分散:%g\n標準偏差:%g\n", mean, dis, sqrt(dis)); return 0; }
>>95 だったらお前がソースを書けよwwwww
つかえねぇー低レベルな学校の教員さんよぉ
ここは学生に宿題を出す前にスレの住人に解かせて 難易度の把握と模範解答若しくは単に解答例の 獲得を主たる目的とするスレです
[1] 授業単元: プログラム [2] 問題文(含コード&リンク): アルファベットaとbを適当な順番で並べた任意の長さの文字列に対して、隣り合う2文字が同じであればSに、 異なっていればDに置き換えたい。すなわちabbaaabbbabbaと入力した場合に、DSDSSDSSDDSDと出力させるようにせよ。 入力文字列の文字数よりも、出力文字列の文字数が1文字少なくなることに留意すること。 【ヒント】ポインタの位置を進める前に、ポインタ変数の刺す文字型データを文字型変数に代入しておく (文字型変数をpreとするとpre = *abとすればよい) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Visual C++ 2005 Express Edition [3.3] 言語: C [4] 期限: 11日末まで
>>99 #include<stdio.h>
#include<string.h>
int main(void){
char *str = "abbaaabbbabba";
char alp = *str;
int i, iCnt = strlen(str);
for(i=1; i<iCnt; i++){
str++;
if(*str == alp)putchar('S');
else putchar('D');
alp = *str;
}
return 0;
}
ただしこっちの環境はBCC
>>99 ごめん無駄に長かった
#include<stdio.h>
int main(void){
char *str = "abbaaabbbabba";
char alp = *str;
while(1){
if(*++str == '\0')break;
putchar(*str ==alp? 'S':'D');
alp = *str;
}
return 0;
}
>>99 ではないが、突っ込んでみる。
>すなわちabbaaabbbabbaと入力した場合に
~~~~~~~~~~~~~~~
聞こえない
104 :
83 :2006/07/11(火) 00:32:31
>>88 回答頂いたソース、テキストを用いて実行してみたところ、
1 [made\イ@]
1 [to@]
1 [to@]
1 [ten]
1 [to@]
1 [be@]
1 [be@]
1 [be@]
といった実行結果になってしまったのですが、
なぜなのでしょうか。
105 :
kyoro :2006/07/11(火) 02:44:18
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 線分を10本入力する。それらの線分のうち、垂直に交わっているものの組はどれかを判定するプログラムを作る。 線の番号と線を表示させることはできました。 内積を使って垂直の判定をしたいのですが上手くいきません。 何がいけないか教えて欲しいデス。 途中までのソースは続けて書き込みしておきます。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Microsoft Visual Studio .NET 2005 [3.3] 言語:Visual C++ [4] 期限: [7月11日13:00まで] [5] その他の制限: 単位がかかってるのでょろしくぉ願ぃします(>_<)大汗
106 :
kyoro :2006/07/11(火) 02:45:08
垂直線判定の途中のソースです。↓ for(k=0;k<45;k++){ suityoku[k]=0; } k=0; for(i=0;i<10;i++){ for(j=0;j<i;j++){ bekuto1x[i]=ex[i]-sx[i]; bekuto1y[i]=ey[i]-sy[i]; bekuto2x[j]=ex[j]-sx[j]; bekuto2y[j]=ey[j]-ey[j]; naiseki[k]=bekuto1x[i]*bekuto2x[j]+bekuto1y[i]*bekuto2y[j]; length1[k]=sqrt(bekuto1x[i]*bekuto1x[i]+bekuto1y[i]*bekuto1y[i]); length2[k]=sqrt(bekuto2x[j]*bekuto2x[j]+bekuto2y[j]*bekuto2y[j]); bunbo[k]=length1[k]*length2[k]; cos[k]=naiseki[k]/bunbo[k]; k++; } } for(k=0;k<45;k++){ if(-0.1<=cos[k]&&0.1>=cos[k]){ suityoku[k]=1; } } 始点(sx[],sy[])、終点(ex[],ey[])です。 直線1のベクトル(bekuto1x[],bekuto1y[]) 直線2のベクトル(bekuto2x[],bekuto2y[]) 内積=bekuto1x[]×bekuto2x[]+bekuto1y[]×bekuto2y[] ☆内積=cosθ|直線1||直線2|
>104 mallocを止めてcallocを使うようにしてみてはどうだろうか?
strncpy って文字長一致の時は '\0' 付かないんか スマンカッタ orz
110 :
99 :2006/07/11(火) 10:06:56
>>100 と
>>101 はありがたいのだが、
aとbをscanfで適当な順番で入力したときに表示出来るようにしていただきたい。
こんな半日経って後付けするのは悪いと思ってるがどうかお願いしますorz
111 :
デフォルトの名無しさん :2006/07/11(火) 10:44:24
Ctrl + c を押さないと、プログラムが終わらないようにする為には、何を入れたらいいんですか?
[1] 授業単元:情報処理基礎演習 [2] 問題文:素数の表示 指定した数以下の全素数(例えば10以下の全素数は2,3,5,7) を表示するプログラムを、次のような3つの関数定義して 作成してください。ただし指定する数の入力は適切な値が 入力されるまで繰り返され、素数10個を表示するごとに 改行するようなプログラムとしてください。 (ア)指定した数が適切な範囲かどうかを検査し、適切ならば0、 不適切ならば1(逆の方が使いよければ逆でも可)を返す関数 (イ)適切な値が入力されるまで入力を繰り返し、最終的に 入力値を返す関数((ア)を利用) (ウ)引数に指定した数が素数なら1、素数でなければ0を返す関数 ヒント a)(ウ)で素数かどうかを判定するには、指定した数mが2〜m-1の 数値で割り切れるかどうかを判定し、ひとつも割り切れるものが なければ素数と判定します(素数の定義通り)。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2006年7月12日17時まで [5] その他の制限:初心者です。よろしくお願いします。
>>113 class j181b {
public static void main(String args[]) {
int n = 100;
int c,i,p;
int a[];
a = new int[n+2];
for( i=2; i<=n+1; i++ ) { a[i] = 0; }
p = 2;
for( i=2*p; i<=n; i=i+p ) { a[i] = 1; }
while( p < n ) {
p = p + 1;
while( a[p] == 1 ) { p = p + 1; }
for( i=2*p; i<=n; i=i+p ) { a[i] = 1; }
}
c = 0;
for( i=2; i<=n; i++ ) {
if( a[i] == 0 ) {
System.out.print(i + " ");
c++; if( c%10 == 0 ) { System.out.println(); }
}
}
System.out.println();
System.out.println(n + "以下の素数は " + c + " 個存在する");
}
}
115 :
デフォルトの名無しさん :2006/07/11(火) 11:22:00
[1] 授業単元:ソフトウェア実習 [2] 問題文(含コード&リンク):2007年の日付を入力し、その曜日を表示するプログラムを作成。日付の入力は自由とする。ただし、プログラムは60行を超えてはならない。 例、月==>6 日==>21 6月21日は水曜日です となるよう。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Microsoft Visual Studio .NET 2003 [3.3] 言語:C++ [4] 期限:今日の14時ほど; [5] その他の制限:switch文を2回使うらしいのですがまったく分かりません…お願いします助けてください…泣;ソフトウェア前期なのでできるだけ簡単なプログラムでお願いしたいです。無理を言って申し訳ないです↓
>>110 #include <stdio.h>
int main(void){
char str[250], *p = str, *p2 = str + 1;
scanf("%s", str);
while(*(p2)){
putchar(*p2 == *p ? 'S' : 'D');
p++;
p2++;
}
return 0;
}
117 :
デフォルトの名無しさん :2006/07/11(火) 14:52:41
>>117 何が「今日の18時くらい」だ。
氏ねよ。
120 :
118 :2006/07/11(火) 15:24:28
何顔を真っ赤にしてキレてんだか知らんけど、罵倒、荒らしをしている キチガイってバレバレだから、無駄口叩いて相手を煽るのは止めとけ
>>118 =キチガイが現れた。 各自臨戦態勢へ移行せよ。<なんだこのアニヲタ臭いセリフ?w
123 :
118 :2006/07/11(火) 15:32:41
煽る暇があったら
>>117 の質問に答えてやれよw
俺はパスだが。
昼間っから煽りに来るだけで宿題に答える能力のない社会のクズがひたすら 自己主張で煽ろうと必死だなwwwwww一生やってろ、30過ぎたニート素人童貞がw
残念だか俺は完全童貞だ
あ?宿題に答えないのに質問者にいちいち罵倒レスしてんじゃねーよカス っつか、ここんとこ荒れなくてここが荒れなくてつまらないんだろ? 荒れている場所を見つけちゃ煽るキチガイって2chではよく見かけるよな もうお前が望むようなつまらん荒れ模様は見せないから、他へ行けよガイキチニートw
127 :
118 :2006/07/11(火) 15:48:54
煽る暇があったら
>>117 の質問に答えてやれよw
俺はパスだが。
君たちいつも昼間っからいるけど、何している人?
>>126 >もうお前が望むようなつまらん荒れ模様は見せないから
是非そうしてくれ。
[1] 授業単元:プログラミングU [2] 問題文: 下の例を参考に(1)(2)(3)のコードを作成せよ。 (1) log(1+x) = x - x^2/2 + x^3/3 - x^4/4 + … (2) sin x = x - x^3/3! + x^5/5! - x^7/7! + … (3) cos x = 1 - x^2/2! + x^4/4! - x^6/6! + … 例 任意の実数xを入力し、次式により指数関数e を小数点以下6桁まで計算するコードを作成せよ。 e^x=1+x/1!+x^2/2!+x^3/3!+x^4/4!+… #include <stdio.h> #include <math.h> int main(int argc,char *argv[]) { double x,xx,yy = 0,ex = 1; int i = 1,j = 1; xx = x; while( fabs(ex - yy) >= 1e-6 ){ yy = ex; j *= i; ex += xx / j; i++; xx *= x; } printf("%lf\n",ex); } [3][3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: ( VC 6.0) [3.3] 言語: C++ [4] 期限: ([2006年7月12日正午まで] [5] その他の制限:例に沿った形でやってもらえるとありがたいです。
135 :
134 :2006/07/11(火) 16:06:57
例の問題文に誤りがありました。 ×指数関数e ○指数関数e^x
>>132 ,etc
┏┓ ┏┓ ┏┓ ┏┓ ┏┓ ┏━━┓ ┏┓ ┏━┓
┏━┛┗━┓ ┃┃ ┃┃ ┗┛┏━┛┗━┓ ┗━━┛ ┃┃ ┗┓┃
┗━┓┏━┛┏┛┗━━┓┏━┛┗━┓ ┗━┓┏━┛┏━━━━┓ ┏┛┗━━┓┃┃
┏━┛┗━┓┗┓┏━━┛┗━┓┏━┛ ┏━┛┗━┓┗━┓┏━┛ ┗┓┏━┓┃┗┛
┗━┓┏━┛ ┃┃┏━┓ ┃┃ ┗━┓┏━┛ ┏┛┗┓ ┃┃ ┃┃
┏━┛┗━┓ ┃┃┗━┛┏━┛┗━┓ ┏━┛┗━┓┏┛┏┓┗┓ ┃┃ ┃┃
┃┏┓┏━┛ ┃┃┏━┓┃┏┓┏┓┃ ┃┏┓┏━┛┃┏┛┗┓┃ ┃┃ ┃┃
┃┗┛┃ ┃┃┗━┛┃┗┛┃┃┃ ┃┗┛┃ ┃┃ ┃┗┓ ┃┃┏┛┃
┗━━┛ ┗┛ ┗━━┛┗┛ ┗━━┛ ┗┛ ┗━┛ ┗┛┗━┛
>>136 いや、お前だろ、そうやって荒らしているのが何よりの証拠
____ うん キモすぎ /____\ _____ / | ─ 、− 、! \ !___|─|(●)(●)|-────- 、 ヽ ( `‐ァ(_, )、|(●), 、(●) \ i <このスレキモいね 入 `トェェェイノ ,,ノ(、_, )ヽ、─ i | /ヽ-、` ┬〒ィ´ `-=ニ=- ' 二 | ! | (/`v二)| ヽ `ニニ´ | / ヽ_入 _ ノ \ ____) / / |───┤ ○ ━━6━◯━━ヽ |____| \|/ _____\ ヽ | | | ! ヽ__ノ ! | |__||__| >、 ___ ノ ノ-o __|__||__|_ (___.ヘ ___/
s/136-138//eternal
で、結局誰も質問に答えない。 それがこのスレのクオリティ。
1] プログラミング初級 2] $ ./calendar 2006 6 2006 6 SUN MON TUE WED THU FRI SAT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 $ ・年月はカレンダーの中央に表示するようにしてください ・曜日は必ず表示して下さい ・日付は日曜日から始まる1週間を1行にしてください ・うるう年を考慮してください これらの条件に当てはまるソースコードを作成しなさい [3] 環境 [3.1] OS:Linux [3.2] ちょっとわかんないっす [3.3] 言語:C [4]できるだけ早くお願いします
144 :
デフォルトの名無しさん :2006/07/11(火) 16:42:44
[2] 問題文(含コード&リンク): キーボードから平均a標準偏差sを入力 式1を使ってこの正規分布乱数を算出し100個ぐらい出力。 y:求める正規分布乱数 s:求める乱数の標準偏差 w:一様乱数12個の和 a:求める乱数の平均 これは「平均a,分散s^2を持つ正規分布乱数yを生成する」 式1 y=s(w-6)+a [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語:Cです。 [4] 期限:木曜までです [5] その他の制限: #include<stdio.h> #include<stdlib.h> #include<conio.h> void main(void) { int y,s,a,w; //整数乱数表示 // scanf("%f %f",&a,&s); //scanfでa,sの値を入力 y=s(w-6)+a for(i=0; i<100; i++) //100個ぐらい乱数を出す { printf("%d ",rand()); } //randを使う printf("\n\n"); //printfで出力 } getchar() getchar(); }
>>143 プログラム書いてうpろだ見たら答えがあった orz
146 :
デフォルトの名無しさん :2006/07/11(火) 17:20:50
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 概要:以下に示すメイン関数を参考にmain関数と子関数を作成し実行確認する。 プログラムの仕様:キーボードから入力した5個の整数値の中から最大値を見つけ出し表示する。 処理手順: 「メイン関数」 @以下を5回繰り返す ・「〜個目は:」を表示 ・整数値を入力 A整数配列の先頭アドレスを引数に最大値検索関数を呼び出す(コール) (GetMax) B Aの戻り値を画面に表示(最大値は〜です) 「最大値検索関数」(GetMax) 関数の型:戻り値はint、引数はint型のポインタ 呼び出し形式:int GetMax(int*data) 処理手順: @仮の最大値に配列の先頭要素を代入 A以下を残りの4回繰り返す(アと@でポインタ使用) (ア)もし、配列の要素が仮の最大値より大きかったら、 @ 仮の最大値にその配列の要素を代入 (イ) (ア)が成立しなければ、何もしない B仮に最大値をリターンする(戻す)
147 :
146 :2006/07/11(火) 17:22:20
処理手順詳細:下記、メイン関数を参考に穴埋めを行い、最大値検索関数を追記する。 int GetMax(int *data); int _tmain(int argc, _TCHAR* argv[]) { int cnt; int max; int suti[5]; printf("最大値を検索するプログラムです\n"); printf("数値を5個入力してください\n") for(cnt=0; cnt<5; cnt+1); printf("%d個目は:",cnt+1); scanf("%d",★空白★); } max = GetMax(★空白★); printf("最大値は%dです\n",max); return 0; } [3] C++ [4] 期限: 明日
[1] プログラミングT [2] 課題:ヒストグラム 得点データを読んで,平均点とヒストグラムを出力するようなプログラムを作成せよ。 得点データファイルの先頭行はデータ数n を示し,つづくn 行に得点が格納されている。 各得点は0 以上100 以下の整数である。 ヒストグラムは「0〜9」,「10〜19」, ...,「90〜99」,「100 以上」の11 区間とし,各区間 に含まれるデータ数を '*'(アスタリスク)を用いて表現せよ。 20:データ数n 50 70 64 51 68 60 73 53 49 67 100 72 41 59 86 69 38 93 50 69 [3] [3.1] OS:XP [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限:7月20日まで
[1] C言語プログラミング [2] 問題文(含コード&リンク): 次の表は、平成18年のお年玉付き年賀葉書の当選番号である。 1等 706592 284148 2等 82201 74490 3等 6226 5657 4等 07 51 手元に届いた年賀状の抽選番号をキーボードから入力し、 当選したかどうかチェックして結果を表示するプログラムを作成する。 ただし、ここでは簡単のため下2桁だけを扱うものとする。 当選番号(の下2桁)は、キーの配列に初期値として格納する キーボードから2桁の数字を入力してターゲットに格納し、線形探索を行う。 探索結果を画面に出力する。当選した場合は何等が当たったか、も出力すること。 【ヒント】 余力のある人は、下2桁に限らず、全桁を初期値として格納し、 当選のチェックを実行するプログラムを作成してみること。 [3] 環境 [3.1] OS: XP [3.2] visual studio.2003 [3.3] 言語: C [4] 期限: 来週の火曜日まで [5] 配列、ループ、線形探索、二部探索、構造体
de ja vu
jamais-vu
>>152 # include <stdio.h>
struct num
{
int val;
int size;
int grade;
};
int main(void)
{
struct num ns[] = {
{706592, 1000000, 1},
{284148, 1000000, 1},
{ 82201, 100000, 2},
{ 74490, 100000, 2},
{ 6226, 10000, 3},
{ 5657, 10000, 3},
{ 7, 100, 4},
{ 51, 100, 4}};
int i;
int x;
printf("Input number: ");
scanf("%d", &x);
for(i = 0; i < sizeof ns / sizeof *ns; i++)
if(x % ns[i].size == ns[i].val)
printf("You win the grade %d.\n", ns[i].grade);
return 0;
}
>>149 単なる中継機能だけであれば、次のような機能を実装すればよい。
・サーバは、とあるポート(8080)でlistenする。
・ブラウザからの接続要求で、URLに含まれるサーバへのコネクションを張る(port80で)。
・ブラウザから受信したデータをそのままHTTPサーバに送信する。
・HTTPサーバから受け取ったデータをそのままブラウザに送る。
・Keep-Aliveだったらコネクションを保持、そうでなかったら切る
ブラウザはプロキシの設定でlocalhostの8080番を指定する。
複数クライアントに対応する場合は、forkでもthreadでもお好きなように。
>>156 前に似たようなアドバイスをいただいたのですがそれでもできなくて・・・。
解いていただけないでしょうか?
お願いします。
>>157 いやその似たようなアドバイスも俺なんだが。
ちなみにそのとき断ったよな?
>>158 あの時アドバイスくれた方でしたか。
すいません。
>>160 ありがとうございます。
これを見てプログラムで何をしているか学習したいと思います。
[1] 授業単元: 情報基礎A [2] 問題文: 入力は1000以下の自然数n 出力はn円の商品を1000円札を出して買ったときの、お釣りに含まれる各硬貨の枚 数とその合計枚数。ただし、合計枚数が一番少なくなるような組み合わせを出力し、 0枚の硬貨については出力しないようにする。例えば、373を入力した場合、出力が 500yen=1 100yen=1 10yen=2 5yen=1 1yen=1 total=7 となるようにする。なお、出力する順番は好きにしてよい。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2006年7月19日20:45まで [5] その他の制限:forとwhileとifを勉強しました。初心者です。
すみませんもうひとつお願いします。 [1] 授業単元: 情報基礎A [2] 問題文: 次の仕様をみたすプログラムを作成せよ。 (1)入力は2以上の自然数n 出力はnのすべての約数 (2)入力は2以上の自然数n 出力はnの約数の個数 (3)入力は2以上の自然数n 出力はnが個数ならば"n is prime."、合成数ならば"n is not prime." (nの部分には入力した自然数が表示されるようにすること) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2006年7月19日20:45まで [5] その他の制限:上と同じです。よろしくお願いいたします。
>>162 #include <stdio.h>
int main(){
int coin[] = {500, 100, 50, 10, 5, 1};
int n, i;
scanf("%d", &n);
for(i = 0; i < sizeof(coin)/sizeof(coin[0]); i++){
if(coin[i] > n) continue;
printf("%dyen=%d\n", coin[i], n/coin[i]);
n %= coin[i];
}
return 0;
}
[1] 情報基礎B [2] このプログラムを改造して、数値をキーボードから入力出来るようにしたいのですが、 どう改造しても上手く回らなくて・・・ #include <stdio.h> #define N 3 int main(void) { static double a[N][N+1]= { {2.0 ,3.0 ,1.0 ,4.0}, {4.0 ,1.0 ,-3.0 ,-2.0 }, {-1.0 ,2.0 ,2.0 ,2.0} }; double p,d; int i,j,k; for (k=0;k<N;k++) { p=a[k][k]; for (j=k;j<N+1;j++) a[k][j]=a[k][j]/p; for (i=0;i<N;i++) { if (i!=k)
{ d=a[i][k]; for (j=k;j<N+1;j++) a[i][j]=a[i][j]-d*a[k][j]; } } } for (k=0;k<N;k++) printf("x%d=%f\n",k+1,a[k][N]); } [3] 環境 [3.1] OS:Win 2000 [3.2] コンパイラ名とバージョン:Visual C++ 2005 [3.3] 言語:C++ [4] 期限:2006/07/12 22:00 2レスにまたがってしまってスミマセン・・・。 どうぞ宜しくお願いいたします。。。
167 :
164 :2006/07/11(火) 20:18:50
間違えた。 scanf の跡に、 n = 1000 - n; を入れてくれ。
>>163 #include <stdio.h>
int main(){
int num, i, cnt = 0;
call:
scanf("%d", &num);
if (num < 2) goto call;
for (i= 1; i <= num; i++){
if ((num % i) == 0){
printf("%d ", i);
cnt++;
}
}
printf("\n%dの約数の個数=%d\n", num, cnt);
if (cnt == 2)
printf("%d is prime.\n", num);
else
printf("%d is not prime.\n", num);
return 0;
}
>>151 #include <stdio.h>
void main( void ) {
int data[21] = { 20 ,
50 , 70 , 64 , 51 , 68 , 60 , 73 , 53 , 49 , 67 ,
100 , 72 , 41 , 59 , 86 , 69 , 38 , 93 , 50 , 69 } ;
int y , x , cnt , i , ave ;
for ( y = 0 ; y < 11 ; y++ ) {
cnt = 0 ;
if ( y != 10 ) {
for ( x = 1 ; x < (data[0]+1) ; x++ ) { if ( ((y*10) <= data[x]) && (data[x] <= (y*10+9)) ) { cnt++ ; } }
printf( "%3d-%3d : " , (y*10) , (y*10+9) ) ;
} else {
for ( x = 1 ; x < (data[0]+1) ; x++ ) { if ( 100 == data[x] ) { cnt++ ; } }
printf( "100- : " ) ;
}
for ( i = 0 ; i < cnt ; i++ ) { printf( "*" ) ; }
printf( "\n" ) ;
}
ave = 0 ;
for ( i = 1 ; i < (data[0]+1) ; i++ ) { ave += data[i] ; }
ave /= data[0] ;
printf( "AVERAGE : %d\n" , ave ) ;
}
>>148 ありがとうございました。
これで補講にならずにすみます。
171 :
デフォルトの名無しさん :2006/07/11(火) 21:45:47
[1] 授業単元: プログラミング演習1 [2] 問題文(含コード&リンク): 以下の2つの課題について,C言語でプログラムを作成し,プログラムおよび実行結果を示し,考察せよ. @キーボードから正整数を読み込み,その数を素因数分解した結果を画面に表示する.た だし,1つの整数を引数とし,その整数の最小の素因数を返す関数をユーザ定義関数として作成 し,この関数を使用すること. Aキーボードから7桁の整数を2つ読み込み,その積を表示する.ただし,整数型以外の 変数を用いてはならない. [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VisualStudio2003 [3.3] 言語: C [4] 期限: できるだけ早くお願いします。 [5] その他の制限: お願いします
>>170 って、よく見たら完成したやつじゃなくて途中のをうpしてたっけ・・・
不適切だからまたここに来るかな・・・一応書いておくか・・・
if(max < *data++) は if(max < *data) に変更
追記で大変申し訳有りません。 数値というのは元数と変数です。 どうぞ宜しく御願い致します…。
>>106 華麗にスルーされてるけど、OKだと思うよ
でも、前半のi,jの2重ループ部分だけど、垂直判定の後に長さや内積が不要なら
cos値だけ配列で保持して、他は一時的に変数に保持するだけで十分だよ
ちなみに
>>62 は俺なんだが、間違ってたね
×cos([89度のラジアン]) < ([内積] / [2つの線分の長さの積]) < cos([91度のラジアン])
○cos([91度のラジアン]) < ([内積] / [2つの線分の長さの積]) < cos([89度のラジアン])
寝る前だったんで・・・許して
遅レスですいません。
>>107 to be to be
ten made to be.
と書いたテキスト使いました。
>>108 呼び出しのパラメータが足りないとエラーが起こってしまいました・・・
178 :
デフォルトの名無しさん :2006/07/12(水) 08:16:35
こんにちは。 質問です。 y=ax^2のグラフを*を使って0<=xの範囲で標示使用と思い、以下のようなプログラム を構築したのですが、うまくいきません。どこがいけないのでしょうか? 親切な方、どうか教えてください。よろしくお願いいたします。
180 :
134 :2006/07/12(水) 08:41:58
>>179 の続き
#include "stdio.h"
int main(void)
{
int c,i,j;
double a,k;
scanf("a= %f", &a);
if(0 < a && a <= 1)
{
printf(" y");
>>181 の続き
for(i = 0;i <= 50;i=i+1)
{
k = (100 - 2 * i)/100;
printf("%.2f", &k);
printf("|");
for(j = 5;j <= 55;j=j++);
if(k == a*((j-5)/50)*((j-5)/50))
{
printf("*");
}
else
{
printf(" ");
printf("\n");
}
}
return 0;
}
else
{
printf("The value is invalid. Input a real number a such that 0<a<=1.\n");
return 0;
}
[1] C言語プログラミング [2] 問題文(含コード&リンク): 要素数5の配列key[5]に、適当な初期値を用意し、単純交換法でソートするプログラムを作成せよ 要素が1つ決定されるたびに(前ページの流れ図のループ1の中で)、確認の為配列を画面に出力しなさい 初期値として、スライド・教科書の例を使い確認すること。 {58, 27, 6, 32, 13} 比較回数を数えて、最後に画面に出力しなさい 計算量の説明を参照して、確認すること 教科書・スライドの流れ図とプログラムで、要素番号の違いに注意する [3] 環境 [3.1] OS: XP [3.2] visual studio.2003 [3.3] 言語: C [4] 期限: 来週の火曜日まで [5] 配列、ループ、線形探索、二部探索、構造体
すっげえ基本的なことなんですけど 文字定数ABCDEは A=65,B=66,C=67,D=68,E=69 なのに printf(%d,"ABCDE"); って書くと 4202469 になるのはなんでですか?
>>184 文字列リテラル"ABCDE"の値は、どこかに確保された文字列へのポインタだから。
%dが指定されているのでポインタを整数として解釈しようとしてそういう表示になる。
ポインタになる・・・
指定されたアドレスの先頭番地が返される、ってことなんすかね。
アドレスって本当は整数表記じゃないんですかね。
何型で解釈すると正しい値(?)が出るんですかね?
もちっと勉強してきます
ありがとうございました
>>185
>>186 >アドレスって本当は整数表記じゃないんですかね。
ハードウェア上はそうだけど、ふつうC言語ではポインタと整数を区別する。
printfでポインタを表示するには%pを使う。
>>183 #include <stdio.h>
#define SIZE 5
void swap(int* a, int* b) { int t = *a; *a = *b; *b = t; }
int main() {
int key[SIZE] = { 58, 27, 6, 32, 13 };
int i, j, k, cmp_cnt = 0;
for (k = 0; k < SIZE; k++) { printf("%3d", key[k]); }
printf("\n");
for (i = 0; i < SIZE - 1; i++) {
for (j = SIZE - 1; j > i; j--) {
if (key[j - 1] > key[j]) {
swap(&key[j - 1], &key[j]);
for (k = 0; k < SIZE; k++) { printf("%3d", key[k]); }
printf("\n");
}
cmp_cnt++;
}
}
printf("compare: %d\n", cmp_cnt);
return 0;
}
>>187 16進数表記になるんですね。
勉強になりました。どうも_(_^_)_
190 :
デフォルトの名無しさん :2006/07/12(水) 14:23:15
A B C 16 15 6 3 ↓ A B C 161506.3 A〜Cには文字が入り、右側の数字を連結する。 (右側の数字は時分秒をあらわしている。) もし、分・秒が1桁の数字なら2桁に直してから連結する。 (0〜9は00〜09となるように。) このような時刻情報が書き出されているtxtファイルをまとめる(?)という課題があるのですが さっぱり分かりません。 txtのファイルを読み込み、上のようなルールで編集をしたのち 再度txtで書き出すということなんですが…。 特に分からなくなっているのは、分・秒が一桁の場合、二桁に直してから連結するというところです。 すみませんが、だれか書ける人いませんか?
>>190 printf("%C %C %C %2d%2d%2d.%d",A,B,C,hour,min,sec,msec);
激しく訂正 printf("%c %c %c %d%2d%2d.%d",A,B,C,hour,min,sec,msec);
%02dだろ。
194 :
デフォルトの名無しさん :2006/07/12(水) 14:59:12
>191,192さん ありがとうございます。早速試してみたのですが、 A B C 16 15 6 3 ↓ A B C 1615 6.3 となります。ここでいう秒の6を06というふうには出来ないでしょうか?
195 :
デフォルトの名無しさん :2006/07/12(水) 15:00:37
>193 そのようにしたところ194解決しました。 ありがとうございました。
196 :
1/2 :2006/07/12(水) 15:28:07
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): #include <stdio.h> extern int inpint(void); extern float inpdbl(void); int main(void) { int n; printf("0: integer 1: floating point\n"); printf("please input a number:"); scanf("%d",&n); switch(n) { case 0: printf("be input an integer:%d\n", inpint()); break; case 1: printf("be input a floating point number:%f\n", inpdbl()); break; default: break; } return 1; }
197 :
2/2 :2006/07/12(水) 15:30:02
* 浮動小数点数入力関数用ファイル */ #include <stdio.h> float inpdbl(void) { float n; printf("please RNTER Value:"); scanf("%f", &n); return n; }/* 整数値入力関数用ファイル */ #include <stdio.h> int inpint(void) { int n; printf("please RNTER Value:"); scanf("%d", &n); return n; } 次のプログラムは整数値入力、浮動少数点数入力に分岐するものである。 整数値、浮動値の2つの関数をおのおの別のファイルに作成している プログラムの内容を確認せよ
おめえに命令される覚えはねぇ!!
199 :
デフォルトの名無しさん :2006/07/12(水) 16:11:51
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 画像の輪郭を抽出するラバーバンドを作成しなさい。 [3] 環境 [3.1] OS:WindowsXP [3.2] C++Builder [3.3] 言語:C++ [4] 期限:来週の月曜日まで [5] その他の制限:C言語
[1] 数学演習 [2]入力ファイルから全ての行を読み込んで大文字に書き換えるようにしなさい [3] 環境 [3.1] xp [3.2] gcc 32 [3.3] Cのみ [4] 期限:明日まで [5] その他の制限: Cの知識は一通りありますよろしくお願いします
何よその問題はふざけてるの
>>201 ふざけてないです
よろしくお願いします
204 :
デフォルトの名無しさん :2006/07/12(水) 22:47:43
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 1, 2, 3, 4, 5, ・・・ と表示するプログラムを作成せよ。 (ただし、最初に1を表示、次にリターンキーを押せば2を、といったようにすること) [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: BCC32 [3.3] 言語: どちらでも可 [4] 期限: 無期限 [5] その他の制限: 特になし GetAsyncKeyState(VK_RETURN)を使ってみたんですけど、押した時間だけ表示し続けてしまいます。 1度押せば次が表示される、というようにしたいんです。
#include <stdio.h> void main(){ int num = 0; while(1){ printf("%d", ++num); getchar(); } }
206 :
デフォルトの名無しさん :2006/07/12(水) 23:54:03
どなたか
>>144 をよろしくお願いします。不明のときは聞いてください
>>203 面倒だから問題の概要くらいは書いといてよ
>>203 まあ全くやる気ないんだが、linkedlist.hの2行目にバグがあるよ。
>>206 問題の日本語が意味不明だし
一緒に書かれたソースも main の {} の対応すらままならない状況
どこをどう esp すれば問題も補完して解答も補完出来ると言うのか
210 :
144 :2006/07/13(木) 00:12:47
レス番号を間違えましたスイマセン
どなたか
>>144 をお願いします。不明のときは聞いてください
>>144 死ね
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
void main(void)
{
int i, j;
double a, s;
srand((unsigned)time(NULL));
printf("a s = ");
scanf("%lf %lf", &a, &s);
printf("a = %lf\n", a);
printf("s = %lf\n", s);
for(i = 0; i < 100; i++){
double y, w = 0.0;
for(j = 0; j < 12; j++)
w += (double)rand() / (double)RAND_MAX;
y = s * (w - 6) + a;
printf("y[%2d] = %lf\n", i, y);
}
printf("\n");
getchar();
}
>>207 単語を入力して、その単語と同じ単語の入力回数を持ったリストを作成するというものです。
>>208 本当だ…打ち間違えてる。
ご指摘どうもです。
>>200 は
入力した文字(アルファベット)をすべて小文字に直すプログラムをつくれ
ということだと思うのですがどうかよろしくおねがいします
#include <stdio.h> #include <stdlib.h> int main(void) { int c; while((c = fgetc(stdin)) != EOF) fputc(to_lower(c)); return 0; }
#include <stdio.h> #include <stdlib.h> int main(void) { int c; while((c = fgetc(stdin)) != EOF) fputc(tolower(c), stdout); return 0; }
216 :
204 :2006/07/13(木) 00:44:28
>>215 すいません エラーが8個くらいでるんですけど
219 :
くま :2006/07/13(木) 00:58:08
C言語で、プログラミングしたいのですが・・・。お願いします。 1.正の整数nをキーボードから与えて、その数を5で割った商と余りを求めよ。 ただし、割り算を用いないで計算すること。(引き算の繰り返しを利用せよ) 2.体重(単位:kg)と身長(単位:m)を与えて(キーボードから)、 そのBMI指数を求め、体型を次のように判定せよ。(ただし、BMI=体重÷身長÷身長) BMI: 〜18.5未満 だと 体型:痩身 BMI:18.5〜25未満 だと 体型:標準 BMI:25以上 だと 体型:肥満
>>218 未定義のシンボルMember,first,ptr
あと四行目で式構文エラー
とかいろいろです
221 :
デフォルトの名無しさん :2006/07/13(木) 01:14:47
222 :
くま :2006/07/13(木) 01:21:27
くまです。追伸ですみません。 問1はforを使います。 問2はif〜elseを使います。 明日の朝7時までにお願いしたいです。恐縮。。。
>>178 求めていた結果が出てきました。
本当にありがとうございました。
[1] 授業単元: プログラミングA [2] 問題文:日本の通貨体型(500,100,50,10,5,1)で、与えられたおつりの金額に対して貨幣の総数が最少になるようにそれぞれの貨幣の枚数を計算するプログラムを作成せよ。 //プログラムについて ・プログラム名はchange.c ・任意の値はfopen関数で読み出せし、そのファイルをデータファイルと呼ぶ事にする。データファイル名はchange1.txt ---------------------- 6 1 5 10 50 100 500 40 75 99 0 ---------------------- //↑これがchange1.txtの中身。1行目は貨幣の種類の数、2行目は貨幣の種類、3〜5行目は具体的な例で0が入力されれば終了。 ・実行結果 40yen,4mai,(10*4) 75yen,4mai,(50*1)(10*2)(5*1) 99yen,10mai,(50*1)(10*4)(5*1)(1*4) [3] 環境 [3.1] OS: (redhatlinux) [3.2] コンパイラ名とバージョン: (gcc 3.4) [3.3] 言語: C言語 [4] 期限: ([2006年7月15日]) このほかにも3題あるのですが、ところどころができず本当に困っています。よろしくお願いします。
232 :
デフォルトの名無しさん :2006/07/13(木) 11:51:36
233 :
お願いします :2006/07/13(木) 12:00:15
[1] 授業単元:C言語プログラミング入門 [2] 問題文: ポインタを使って九九の表を作ってください。 2つ配列を用意します。それぞれの要素をポインタを使って指し示し、積を計算します。 その結果を表示します。例えば配列は下のようにしてみましょう。 int a[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9} int b[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9} heikin.cでは、iを0から4まで増やし(ポインタを配列上で1つずつ移していき)ポインタが指し示している 配列の値を使いました。このプログラムでは、ポインタを移す操作はheikin.cと同じで、 繰り返しを2重にします(iとjを用意し、それぞれ0から8まで増やします) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: ([2006年7月15日00:00まで] または [無期限] のいずれか) [5] その他の制限:以前作ったプログラムheikin.cを修正し作成するとよいでしょう。
234 :
お願いします :2006/07/13(木) 12:01:36
heikin.c /* 2つの配列の各要素の平均値を求める, heikin.c */ #include <stdio.h> main(){ int a[5] = {50, 80, 20, 30, 10}; int b[5] = {20, 40, 30, 20, 50}; int i, *p[2], ave; p[0] = a; p[1] = b; for (i=0; i<5; i++) { ave = (*(p[0]+i) + *(p[1]+i)) / 2; printf("average of %d th pair = %d\n", i, ave); } }
235 :
お願いします :2006/07/13(木) 12:04:14
238 :
233 :2006/07/13(木) 14:27:30
>>237 早速の回答ありがとうございました(・∀・ )!
これで単位は無事くるはず・・・!
みんな今週いっぱいで夏休みなんか ここのおじさん(おばさん)たちは忙しいから 宿題ラッシュになると対応し切れないんだよ 今度からはもうちょっと早めに依頼することを 学んでください
>>239 おっさん世代が多いとは思えん、せいぜい20代が多いんじゃね?
あるいは、大学3年以上か、大学院生とか?
トーマス氏は30を超えているだろうけど
中高生も結構いるような気がする。
俺は3日前に33になりましたが何か。
俺と同じく仮面ライダーV3、ウルトラマン7世代か
10代の俺がいる
>>215 のプログラムを自分で作ったファイルを読み込んで
すべて小文字にしたいんですけど
どうかよろしくおねがいします
[1] 数学演習
[3] 環境
[3.1] xp
[3.2] gcc 32
[3.3] Cのみ
[4] 期限:明日まで
[5] その他の制限: Cの知識は一通りありますよろしくお願いします
215のプログラム
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int c;
while((c = fgetc(stdin)) != EOF)
fputc(tolower(c), stdout);
return 0;
}
>>246 すいませんリダイレクトとはC言語においてどのようにやるのでしょうか?
OSたんの機能
課題として提出する場合にはどのように 書き換えたらいんでしょうか infileやらoutfileを使うらしいんですけど
250 :
デフォルトの名無しさん :2006/07/13(木) 22:48:03
[1] 授業単元:情報科学U [2] 問題文(含コード&リンク):2つの空リスト L1, L2 を用意する.C-d が押されるまでに入力した整数を順次 •L1の先頭に挿入 •L2の適切な位置に挿入(適切な位置とは挿入後のリストが要素の値の昇順になるような位置) とし,C-d が押された後,できた二つのリストを表示するプログラムを作成せよ. [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2006年7月14日(金)8:40まで [5] その他の制限:「ポインタと構造体」という単元で出された課題です。 よろしくおねがいします。
>>249 #include <stdio.h>
#include <stdlib.h>
int main(void)
{
int c;
FILE *fin, *fout;
if ((fin = fopen("a.txt", "r")) != NULL
&& (fout = fopen("a.txt", "r+")) != NULL)
while((c = fgetc(fin)) != EOF)
fputc(tolower(c), fout);
fclose(fin);
fclose(fout);
}
253 :
230 :2006/07/13(木) 23:51:04
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 1〜15位までの順位を人a〜eと教科Mathematics,Physics,Englishと配列する おそらくこんな感じ char kamoku[3][12] = {"Mathematics", "Physics", "English"}; char name[5] = {'a', 'b', 'c', 'd', 'e'}; int tokuten[3][5] = {{12, 1, 14, 8, 4},{11, 3, 5, 10, 13},{2, 15, 9, 7, 6}}; 調べたい順位を入力して第何位は誰で教科は何と表示されるようにする ただし2重ループを使うこと [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 最終期限が来週の水曜 [5] その他の制限:タイトルは確か配列とポインタだったかと うん、問題用紙無くしてうろ覚えなんだ(´・ω・`) 自分の説明でここの住民に伝わるかもわからないんだ
伝わってるけど面白くないからやらない やりたくなるような問題の出し方考えてみてくれ
すいません #include <stdio.h> void strout(char a[]); main(){ strout("ABCabc123"); } void strout(char a[]){ int i; i=0; while(a[i]){ a[i]=toupper(a[i]); putchar(a[i]); ++i; } putchar('\n'); } するとcore dumpするんですけど、なぜですか? コンパイラはCygwinのgccです。
>>256 文字列リテラルを書き換えようとしているから。
すれ違い。
>>257 はにゃ?でも
#include <stdio.h>
void strout(char a[]);
main(){
char st[10]="ABCabc123";
strout(st);
}
void strout(char a[]){
int i;
i=0;
while(a[i]){
a[i]=toupper(a[i]);
putchar(a[i]);
++i;
}
putchar('\n');
}
とすると正常に出力されるよ?
これも文字列リテラルst[0]を書き換えてるんじゃないの?
>>258 stはchar型の配列であってリテラルではない。
>>258 char st[10]="ABCabc123";
これはchar配列の初期化であって、文字列リテラルは無関係。
>>259 ,260
ありがとうございました。調べました文字列リテラル。
*stとst[]は違うって解釈でいい?間違ってそう・・・
苦手だな〜文字列。初心者ですみません。
>>261 根本的に間違ってる。*stとst[]の違いはリテラルとは一切何の関係もない。
>>261 そうではなくて、文字配列をいじる関数で、
文字列定数をいじろうとして怒られているのだよ。
関係あるだろ。 char *st = "ABC"; char st[] = "ABC";
265 :
261 :2006/07/14(金) 14:38:11
ここからすぐに消えろ
>>264 型が違うから(同じ型の)リテラルで初期化しても値の入り方が違うのは当然であって、
型の違いとリテラルとの直接的な関係はない。
テキストに main(){ char s[10]; char *p; strcpy(s,"ABC"); while(*p){ *p=*p+1; ++p; } printf("%s",s); } って例文が載ってるんだけど、作ってみるとcore dumpするんだけど、 ++p; っておかしいよな? こういう書き方できる?
↑あ、p=s抜かした。while(*p){の前に入れて。
dekiru
じゃなんでdumpすんの?
うちじゃdumpしない
えー煤i ̄□ ̄)!
むしろなんでdumpすんの?
なんでdumpするんだろー( ̄□ ̄)!
ダンプ松本にしょっぴかれますよ?
main(){ char s[10] = "ABC"; char *p = s; while(*p) (*++p)++; printf("%s",s); }
char s[4] = "ABC"; ってのは、4bytes のメモリをスタックに確保して、 その中身を 'A' 'B' 'C' '\0' で初期化してる。 s 単体だと当然その先頭ポインタだから、スタック内を指してる。 実体がスタックにあるから書き換え可能。 char* s = "ABC"; だと、リテラル専用の領域(書き換え禁止なメモリ領域)にある 'A' 'B' 'C' '\0' な並びの先頭ポインタを引っ張ってきてるだけ。 ポインタ s の指す先は書き換え禁止な領域なので、 s[0] = 'D'; なんてやると一般保護違反になる。
281 :
254 :2006/07/15(土) 12:00:43
(1)1〜15までの順位、a君〜e君、教科Mathematics,Physics,Englishを下のように配列する
char kamoku[3][12] = {"Mathematics", "Physics", "English"};
char name[5] = {'a', 'b', 'c', 'd', 'e'};
int junni[3][5] = {{12, 1, 14, 8, 4},{11, 3, 5, 10, 13},{2, 15, 9, 7, 6}};
(2)scanfで順位を入力し、("第%d位は%cで教科は%s")となるように表示させる。
ヒント:for文を2回使用して縦と横をループさせる
>>255 を見て書き直したのはいいのですがほぼ変わってない気がします。
あと一応自力で考えたところまでupしておきます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2363.txt 根本から間違えてる気がします。
無くした問題用紙探してこい
284 :
254 :2006/07/15(土) 13:14:59
guchi("何で数年間使ってない本棚の裏に落ちてるんだよ");
S1〜S5の5人の学生が、数学(Mathematics)、物理(Physics)、
英語(English)のテストを受験した。
得点の高いものから順位をつけた結果を表1に示す。
この結果に対して、任意の成績順位を入力した際に、
誰のどの教科であるかを出力するプログラムを作成したい。
課題A
表1の結果を3*5(もしくは5*3)の要素を持つ2次元配列に定義し、
キーボードから1〜15の範囲で任意の数所を入力した際に、
その順位の科目名と氏名を「第○位は△△の□□です」のように
出力するプログラムを作成せよ。ただし、科目名と氏名はそれぞれ
文字列の配列の要素とし、該当する順位に応じてそれぞれの
文字列配列から参照して表示すること。
ヒント:2重ループを用いて2次元配列の全要素を総当りでチェックする。
課題B
表2は、順位の重複を許可し、同じ得点の場合に同順位として示したものである。
課題Aのプログラムに対して、同じ順位が複数存在する場合にはそのすべてを表示し、
また、該当するものが存在しない場合には「存在しない」と表示するよう修正せよ。
ヒント:該当者が居る場合にだけ値が1となるような変数を利用する。
表 pass C/C++
http://www.imgup.org/iup233474.jpg.html
>>284 #include<stdio.h>
int main(void){
char kamoku[3][12] = {"Mathematics", "Physics", "English"};
char name[5][3] = {"S1", "S2", "S3", "S4", "S5"};
int tokuten[3][5] = {{12, 1, 14, 8, 4}, {11, 3, 5, 10, 13}, {2, 15, 9, 7, 6}};
int i, k, num = 0;
printf("1〜15の数字入力:"); scanf("%d", &num);
if(num<1 || num>15){
printf("1〜15だけです。");
return 0;
}
for(i=0; i<3; i++){
for(k=0; k<5; k++){
if(num == tokuten[i][k]){
printf("第%d位は%sの%sです\n", num, name[k], kamoku[i]);
}
}
}
return 0;
}
最初のだけやったもう出かけるから後は知らない
どうもありがとうございます。 課題Bは足りない頭を絞ってなんとかします。 なんとかならなかったらまた来ます。
287 :
デフォルトの名無しさん :2006/07/15(土) 13:54:44
<課題1>
日本の通貨体型(500,100,50,10,5,1)で、与えられたおつりの金額に対して貨幣の総数が最少になるようにそれぞれの貨幣の枚数を計算するプログラムを作成せよ。
*プログラムについて
・プログラム名はchange.c
・任意の値はfopen関数で読み出せし、そのファイルをデータファイルと呼ぶ事にする。データファイル名はchange1.txt
----------------------
6
1 5 10 50 100 500
40
75
99
0
----------------------
//↑これがchange1.txtの中身。1行目は貨幣の種類の数、2行目は貨幣の種類、3〜5行目は具体的な例で0が入力されれば終了。
・実行結果
40yen,4mai,(10*4)
75yen,4mai,(50*1)(10*2)(5*1)
99yen,10mai,(50*1)(10*4)(5*1)(1*4)
としたいのですが、うまく行きません。どこがおかしいのか教えてください。
おねがいします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2365.txt
>>287 >>228 と問題同じじゃないの?回答もあるよ?
どこがおかしいかと言えば
・whileで無限ループしている("読み込んだ値"が0だったらbreakする)
・1円から数えている(大きい硬貨から数えるべき)
289 :
デフォルトの名無しさん :2006/07/15(土) 17:46:45
>>288 返信ありがとうございます。自分なりにもう一度作ってみようと思ってるんですがなかなかうまく行かなくて・・・
無限ループを使って0を読み取るまでの間繰り返そうと思ってるんですが、これのどこが間違っているのかを見つける事ができません。また、バブルソートを使って並べ替えるようにしたいのですが、それもいまいちわかりません。どうしたらよいのでしょうか。
>バブルソートを使って並べ替えるようにしたいのですが、 何を?
291 :
デフォルトの名無しさん :2006/07/15(土) 18:34:44
>>290 わかりにくい書き方ですみません。定義されるお金を大きい順に並べ替えたいんです。具体的に今回は1 5 10 50 100 500といった値です。たまたま昇順になってますが、たまたまで適当に並んだ場合に対応できるものにしたいです。
3+2*4=11
>>292 ありがとうございます。せっかく書いていただいたのですが、初心者故に完璧なる理解が困難であります。失礼かつ恐縮ですが、私の書いた文を訂正する形では無理でしょうか。
リタ ーン 改 行
3+2×4=20 に決まってるだろ
300 :
デフォルトの名無しさん :2006/07/15(土) 22:44:56
301 :
1 :2006/07/15(土) 23:15:14
[1] 授業単元: コンピューター実習T [2] 問題文(含コード&リンク): #include <stdio.h> int main(void) { char stack[8]; int stackPointer = -1; char data; int n; char str[16]; while(1) { printf("Enter a data"); scanf("%s", str); data = str[0]; if ( data >='0' && data <='9' ) { if (stackPointer >= 7) {puts("Stack is full"); continue; } stackPointer++; stack[ stackPointer ] = data; } else if ( data=='-' ) { if (stackPointer < 0) {puts("Stack is empty"); continue; } printf(" %c\n",stack[ stackPointer ]); stackPointer--; } else if ( data=='q' ) { break; } for(n=0; n<=stackPointer; n++) printf("%c ",stack[n]); puts(""); } }
302 :
2 :2006/07/15(土) 23:16:09
上記のプログラムを 文字列データに対応させる。 例) abc (enter) abc def (enter) abc def - (enter) data = def abc quit (enter) でプログラム終了( strcmp を使う ) というプログラムを作る [3] 環境 [3.1] OS: (Windows/Linux/等々) : Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限:7月18日 [5] その他の制限: 特になし 長くてすいません。よろしくおねがいします。
#include <stdio.h> #include <string.h> int main(void){ char stack[8][1024], str[1024]; int n, stackPointer = -1; while(1){ scanf("%1023s[^\n]", str); if(strlen(str) == 0) continue; if(strcmp(str, "quit") == 0) break; if(strcmp(str, "-") == 0){ if(stackPointer < 0){ puts("Stack is empty"); continue;} printf("data = %s\n",stack[stackPointer]); stackPointer--; } else{ if(stackPointer >= 7){ puts("Stack is full"); continue;} stackPointer++; strncpy(stack[stackPointer], str, sizeof(stack[stackPointer])); } for(n=0; n<=stackPointer; n++) printf("%s ", stack[n]); puts(""); } return 0; }
>>304 数箇所突っ込み所があるのだけれど間違っているわけではないから指摘するのは無粋なので遠慮しておくね。
汚いソース
口先ばっかで自分はソースを出さない汚い奴が多いんだよなw 言うくらいならソースを出せ、ってのは過去に散々出た(ry
ソースを出すとか出さないとか言う話はナンセンスだろ。 他人のソースにけちをつけるのはすれ違いだということが重要。
>>309 あのねぇ、他人に指摘してもらうというのは、それが普通の環境に居ない人にとっては、
とても貴重なチャンスなんだよ。
「けちをつけられた」なんて考えずに「指摘してくれてありがとう」くらいになれ。
>>312 それは認めるし、個人的には俺の解答の問題を指摘してもらうのは嬉しいが、
それはこのスレの趣旨にそぐわない。
>>313 別に毎回毎回誰かが粘着して、細かいとこまでぐちぐち言ってるわけじゃないから、
偶の指摘ぐらいいいんじゃないの?
まあ、指摘された奴が「けちつけられた」と暴れる可能性もあるがw
まぁそうなったらそうなったで、その後のテンプレで「指摘禁止」にすりゃいい。
ニートがどうこうとか、低学歴がどうこうなどという他愛も無いやりとり するくらいなら、コードの内容についてあれこれ言う方が余程生産的 だと思うが。
316 :
304 :2006/07/16(日) 13:09:07
なんだかボクのことでモメちゃってるようですいません(>_<) 制限を気にしすぎて汚いソースになっちゃいました 反省してます
>>316 ヒント:日曜日
つか、おまいさんのせいじゃないので気にすんな
>>316 細かく見てないけど、決して汚いコードなんかじゃないよ。
俺的には、どちらかというと、好きな部類に入る。
あまり巧く書きすぎると質問者が困るかもしれないので、わざと下手に書いてる。 scanf使うとか、エラーチェックしないとか、関数分割しないとか、変数名をダサくしたりとか。
「ソースにけちをつけるな」と言ってるのは、いつもの彼なので気にしないように。 指摘したければ指摘すればいい。俺はしないけど。
濱ちゃん
>>321 「いつもの彼」って誰だよ…
俺はいつのまにか有名人にでもなったか?
>>322 いろいろとおかしい。
BCCでやったらエラーがいっぱい出てくる。
int ssort(int n,int a[])
{
int i,j,min,temp;
for (i=0;i < n-1;i++){
min=i;
for (j=i+1;j < n;j++){
if (a[j] < a[min]){
min=j;
}
}
temp=a[min];
a[min]=a[i];
a[i]=temp;
}
return;
}
>>324 「いつもの彼」も同じようなこと言ってるからな。
違うんなら、お前は奴と同じレベルだってことだ。
>>304 が汚いとすると業務で見てるソースは何て表現すればいいんだ?
核廃棄物
330 :
284 :2006/07/16(日) 13:57:34
>>285 を参考に課題Bに挑戦しましたが、
ヒントすら理解出来ずに行き詰ってます。
どなたか回答していただけるようお願いしたいです。
>>330 #include<stdio.h>
int main(void){
char kamoku[3][12] = {"Mathematics", "Physics", "English"};
char name[5][3] = {"S1", "S2", "S3", "S4", "S5"};
int tokuten[3][5] = {{11, 1, 14, 7, 3}, {11, 3, 3, 10, 13}, {2, 15, 9, 7, 6}};
int i, k, num = 0, flg = 0;
printf("1〜15の数字入力:"); scanf("%d", &num);
if(num<1 || num>15){
printf("1〜15だけです。");
return 0;
}
for(i=0; i<3; i++){
for(k=0; k<5; k++){
if(num == tokuten[i][k]){
printf("第%d位は%sの%sです\n", num, name[k], kamoku[i]);
flg = 1;
}
}
}
if(!flg){
printf("第%d位は存在しません\n", num);
}
return 0;
}
24時間ぶりに書き込もうか
332 :
284 :2006/07/16(日) 14:05:05
画像が404になってたので、得点順位の配列書いておきます。 int tokuten[3][5] = {{11, 1, 14, 7, 3}, {11, 3, 3, 10, 13}, {2, 15, 9, 7, 6}};
>>326 返信ありがとうございます。319さんに書いてもらったソースが理解できたので、そちらを参考にしたいと思います。
ここで、お金の定義に25円玉と20円玉を加えても、40円から44円の間で最少にする事ができる用にするには、どうすればよいのでしょうか?
残念。表がうpローだから消えてます。 次にもし上げるんなら、passなんかつけちゃ駄目だぞ。
>>333 ごめ、ちょっと意味が分からない。
ひょっとして、25,20円を加えたら25,20も計算されちゃうって言うこと?
336 :
284 :2006/07/16(日) 14:17:09
何度もありがとうございます。
中身を自分なりに解釈してレポート仕上げてきます。
>>334 ご指摘ありがとうございます。
もし次回があったときのことを考えて覚えておきます。
chirashi("夏休みにCの理解深めます");
>>335 わかりにくい文章すみません(>_<。)おっしゃる通りで、25円玉20円玉といったお金があるとしたらって感じです。1円玉5円玉10円玉20円玉25円玉50円玉100円玉500円玉というお金にchange1.txtを書き直すって意味です。
そうしたら40〜44円の間、25円玉を用いると最少じゃなくなってしまうから、その間は20円以下で考えるようなソースにしたいんです。
ちょっと、またわかりにくいかもしれませんが、よろしくお願いします。
>>338 過去スレに同じ(ような)問題があったぞ。探してみ。
こいつは、相手にすればどんどん付け上がるから、そのへんで放置しとけ。
本人乙
黙れ、ガキンチョ
>>340 すみません、そういうつもりはありません。ただ次の課題がそういう問題なのにたいし、自分で試してもなかなかできないからお聞きしました。
>>341 〜343
えっと、、、私が書いたのではございません。他人によって書かれた物です。
お前がやろうとしていることは、お前のソースコードレベルではできない。 再起関数を使って総当りするのが一番簡単な方法だ。
>>346 はい。最終的にはそう持っていきたいです。初心者ですが、解きたいので技術料を払うので教えていただけませんか?
ここは宿題を解くスレであって、 お前の技術力を上げるスレではない。
>>348 すみません。板違いな発言を失礼しました。撤回します。もうしばらく自分でがんばってみます。わからなければ、またよろしくお願いします。
いやあのね、だから過去スレあされって。
>>350 自分なりに探してみましたが、総当りするものでなかなかヒントになる物が見つかりませんでした。これは全探索って形でやればよいのですよね?
>>327 お前がいつもの煽り厨よりもさらに低レベルだというのは言うまでもない。
とにかく、ごちゃごちゃとうるさい。指摘するくらいなら指摘を具現化したソースを黙って出せってことだ
いちゃもんしかつけない奴がうざい。
指摘したけりゃ指摘すりゃいいじゃん。指摘することと別解をだすことは違うよ。 まあ「俺様のコードにけちをつけるな」なスタンスの人には、何を言っても無駄なんだろうけど。
それに、君もソース出してるなら、君の相手もソース出してるんだと何故想像できないんだろう? 想像できてれば「いちゃもんしかつけない奴がうざい。」なんてことは言わないはずなんだが。
やかましい!宿題出せハゲ!
>>353 > 指摘することと別解をだすことは違うよ
そうじゃなくて、指摘部分の間違いを修正して出しゃ言葉よりもストレートに伝わるんじゃね?
まあここでソースを出せ!だのお前が出せだの言っていない第三者が議論しても無駄だが
>>359 いや、指摘したほうがストレートに伝わるでしょ。
ソースレビューの基本は、場所を特定することと、問題点を指摘すること。
何をそんなにこだわってるの?
ポインタレスプログラムをお願いします><
>>359 ぐだぐだ言うなら、修正したコードを出せってのはお子様の意見。
まあ指摘した奴がコードも書けないのに指摘してるって思いたいんだろうけど。
このスレは、コード書けないやつを、ちょっとコード書ける奴が見下すスレだから、 俺様のコードにいちゃもんつけるなというのは良く分かる。
[1] 授業単元: 数値解析 [2] 問題文: (ニュートン補間の章) 下記の表とアルゴリズムA・Bを使って次のプログラムを作成する。 問1)誤差関数の表においてx0=1.0、x1=1.1、x2=1.2の3点の関数値を使って erf(1.14)の値を推測する。ただしアルゴリズムAとBを用いる。 問2)誤差関数の表においてx0=1.0、x1=1.1、x2=1.2、x3=1.3の4点の関数値を使って erf(1.14)の値を推測する。ただしアルゴリズムAとBを用いる [3] 環境 [3.1] LINUX [3.2] gcc [3.3] 言語:C [4] 期限: 7月17日 [5] その他の制限: 問題文長くてすみません。あとなるべく初歩的な知識でも理解できるようなのだと大助かりです。 問1、問2と2つもありますがよろしくお願いします
誤差関数の表 x erf(x) 1.0 0.84270079294971 1.1 0.88020506957408 1.2 0.91031397822964 1.3 0.93400794494065 1.4 0.95228511976265 1.5 0.96610514647531 1.6 0.97634838334464 1.7 0.98379045859077 1.8 0.98909050163573 1.9 0.99279042923526 2.0 0.99532226501895 アルゴリズムA(差分商の計算) for(i=0,1,・・・,n){ di ← f(xi) } for(k=1,2,・・・,n){ for(i=0,1,・・・,n−k){ di←( di+1 − di) / (xi+k − xi ) } } アルゴリズムB(v = pn (α)の計算) v ← d0 for(i=1,2,・・・,n) v←(α - xi ) v + di 表と使用するアルゴリズムA・Bです
用の誤用が気になる
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):
ttp://sund1.sakura.ne.jp/uploader/source/up16554.zip (ファイルが4つあるのでzipですみません)
[3] 環境
[3.1] OS:Linux
[3.2]コンパイラ:gcc
[3.3] 言語: C
[4]期限:7月18日午前9時
[5] その他の制限: あらかじめ決められている枠組みを変えることはできません。指定された関数の中だけを作ってください。
問題説明:
問題は線形リスト探索(単方向)を完成させろというものです。
分割されている4つのファイルのうち、liststructure.c.txtにある関数search(探索)、insert(挿入)、delete(削除)
の中身を作成することで線形リストのプログラムを完成させるものです。
*あらかじめ書かれている、枠組みを変えることはできないです。その中で動くように作る事が条件になっています
よろしくお願いしまする。
↓参考に自分で作ってみた物です
ttp://sund1.sakura.ne.jp/uploader/source/up16557.txt ですがバグが出てうまくいかないのです。
368 :
デフォルトの名無しさん :2006/07/17(月) 01:23:11
[1] 授業単元: 数値解析 [2] 問題文n×nの係数行列Aと右辺ベクトルbを適当に与えたとき、Ax=bの解xをLU分解により(AをLU分解して) 求めるプログラムを作る。そのプログラムにおいて、n=4、 |2 2 -6 3| |-0.5| A= |1 -4 2 2 | b=| 8 | |2 1 -3 -5| | -9 | |1 -2 1 2 | | 6 | としたときの数値解を求め、出力する。なお、プログラムでは変数mを用いる。 ヒント:解はx4=1.5、x3=1、x2=-0.5、x1=1 [3] 環境 [3.1] LINUX [3.2] gcc [3.3] 言語: C [4] 期限: 7月20日 [5] その他の制限: 問題文分かりにくくてすみません。よろしくお願いします
370 :
369 :2006/07/17(月) 02:09:47
C言語習いたてなのでできる限りレベル低くお願いします。
>>369 それ66代目で答えうpされてたよ。多分まだ残ってると思う。
373 :
369 :2006/07/17(月) 02:45:21
あああ・・・すみません。確認しないで書き込んでました・・・。 69代目を見つけて「あ、新しいのこっちだったのか」と思って・・・。
374 :
368 :2006/07/17(月) 04:14:32
頭が悪いながらも調べつつなんとか自力でできそうなので 授業をもっとちゃんと受ければよかったと 後悔しながら自分でやる事にしました。 どうしても分からない場合はピンポイントで質問しようと思うので その時はご教授願います。
つーかなんでいつも宿題スレを重複させてんだ?
荒れたときの避難用
派閥争い
いやだねぇ、意地でも自分が立てたスレがカニ本家みたいな
[1] C言語
[2] 1個1000円の商品があります。この商品には、まとめて買うと割引があります。
割引率は10個未満=なし、10個以上100個未満=1割引、100個以上1000個未満=2割引、1000個以上はすべて3割引き
購入個数を与えると、購入金額を求めるプログラム。購入個数は700個とする。
pro1.とpro2.(while文とfor文)で作成した。各自でどちらを採用するか決め、理由を200時以内に適切に述べよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2407.txt [3] 環境
[3.1] Windows
[3.2] VC 6.0
[3.3] 言語:C言語
[4] 無期限
[5] その他の制限:なし
whileもforもやっている個とは同じだし、違いや長所短所が見つけられません。宜しくお願いします。
意表をついてgotoで実装することをお勧めする
ハァハァ僕はgoto信者なんです(:.;゚;Д;゚;.:)ハァハァ
> whileもforもやっている個とは同じだし、違いや長所短所が見つけられません ハァ? 100個以上1000個未満=2割引 ならpro2だろ
購入個数が700個って決まってるんだしどっちも無駄無駄
> n=n++;
気持ちは分かるがマルチイクナイ
どっちのコードもありえないくらい汚い。よって両者却下。
390 :
デフォルトの名無しさん :2006/07/20(木) 14:51:58
[1] 授業単元:プログラム言語 [2] 問題文: 整数の配列をパラメタとして、配列の中で最大と最小の数を求める関数を定義する。 この関数をmainとは異なるファイル(minmax.cpp)で定義して作成する。 この関数のプロトタイプ宣言は独立したヘッダファイル(minmax.h)として定義する。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio [3.3] 言語: C++ [4] 期限:21日まで void minmax(int array[], int n, int *minPtr, int *maxPtr) {... ここを書き加える }int main(){ int data[10] = {4, 2, 5, 9, 2, 1, 4, 5, 4, 5}; int min, max;... ここを書き加える printf("min = %d, max = %d\n", min, max); return 0; } ... ヘッダファイルの内容 ------ void minmax(int array[], int n, int *minPtr, int *maxPtr) {... ここを書き加える} -------- int main() {int data[10] = {4, 2, 5, 9, 2, 1, 4, 5, 4, 5}; int min, max;... ここを書き加える printf("min = %d, max = %d\n", min, max); return 0; }
>>390 [main.cpp]
#include <iostream>
#include "minmax.h"
using namespace std;
int main(void)
{
int data[10]={4,2,5,9,2,1,4,5,4,5};
int min,max;
minmax(data,10,&min,&max);
cout << "min=" << min << " max=" << max << endl;
return 0;
}
[minmax.h]
#include "minmax.cpp"
[minmax.cpp]
void minmax(int array[],int n,int *min,int *max)
{
int i;
*min=array[0];
*max=array[1];
for (i=0;i < n;i++){
if (array[i] < *min){
*min=array[i];
}else if (array[i] > *max){
*max=array[i];
}
}
return;
}
>>392 ありがとうございます。でも解答されてなかったみたいですね…当たり前か。
#include <stdio.h> int main(){ int n,m,i,j,d=1,g; printf("Number of Teams --> ");scanf("%d",&n); printf("Number of Games per Day -> ");scanf("%d",&m); g=m+1; printf("\n-------- Schedule ----------"); for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(g>m){printf("\nDay %d\n",d++);g=1;} printf("Game %d : %c vs %c\n",g++,(char)(i+'A'),(char)(j+'A')); } } d--;g--; puts("---------------------------"); printf("Total Number of Days : %d days\n",d); printf("Total Number of Games : %d games\n",(d-1)*m+g-1); puts("---------------------------"); return 0; }
訂正 ×>printf("Total Number of Games : %d games\n",(d-1)*m+g-1); ○>printf("Total Number of Games : %d games\n",(d-1)*m+g);
397 :
デフォルトの名無しさん :2006/07/20(木) 15:25:19
長方形(短冊)によって近似した数値積分プログラムを作り、以下の問題を解きなさい。 i) 関数:y=1/(1+x^2) 積分区間:x0=0、xf=4 分割数:2000 ii) 関数:y=x y^2 積分区間:x0=1、xf=2 分割数:2000 iii) 分割数を多くしたときのメリットとデメリットは?
399 :
デフォルトの名無しさん :2006/07/20(木) 15:46:04
ごめんなさい。テスト文そのままコピーしてました。 解いて下さい。お願いします。
>>395 どうもありがとうございます。配列使う必要なかったんですね。
403 :
お願いします・・ :2006/07/20(木) 20:14:36
404 :
お願いします・・ :2006/07/20(木) 20:15:33
まったくわかりません・・ [1] 授業単元: 中課題 [2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を解く プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは とりあえず後回しで大丈夫です) <数独のルール> 1、空いているマスに、1から9までの数字のどれかを入れる。 2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の ブロック(それぞれ9マスあるブロックが9つある)のどれにも 1から9までの数字が一つずつ入る。 [3] 環境 [3.1] OS: UNIX [4] 期限: 明日の19時 [5] 盤面の状態を入出力するサンプルコードと問題の入出力ファイルは配布されています。 お願いします。。。。
405 :
お願いします・・ :2006/07/20(木) 20:16:27
コピーさせていただきました。よろしくです
406 :
死にかけてるものです :2006/07/20(木) 20:44:41
宿題の提出が月曜日と言われ、困り果て2chへ。沢山の宿題をここにコピペして宜しいのでしょうか? 全45問です・・・。
409 :
死にかけてるものです :2006/07/20(木) 21:48:47
課題の中の一問。 1. 数字列を数値に変換せよ。fgets()やscanf()の%sで入力した数字列をint型やdouble型の数値に変換する。数値として扱わないものが入力された場合にはその旨を表示せよ。 [1] 授業単元: C言語プログラミング [3] 環境 [3.1] OS: Unix(Fedora Core) [3.2] コンパイラ名とバージョン: gcc バージョンは分かりません [3.3] 言語:Cのみ [4] 期限: 24日午後5時まで
410 :
死にかけてるものです :2006/07/20(木) 21:52:03
自分のC言語プログラムが長くて改行が多すぎるといわれ書けません(T_T)
不要なのか orz ごめんなさい
m9(^Д^)プギャーッ
>>410 掲示板部分に書き込むのではなく、ファイルに書いてそれをうpする。
416 :
もうお手上げ・・・ :2006/07/21(金) 00:28:13
[1] プログラミング演習 [2] ある商品ごとの顧客注文数は平均μ=25、分散б^2=5^2 (標準偏差б=5)の正規分布に従う。 T(≦1000)日間の顧客注文数を観測し、その平均値とバラツキを調べよ。 具体的にはユーザー関数を用いて、上記の正規分布に従う乱数をT個発生させる。 T個生成した正規乱数データをExcelに書き込み、Excelの関数ウィザードを利用して、正規乱数データの平均値、不偏分散、標準偏差を求めよ。 [3] 環境 [3.1] Windows xp [3.2] 不明 [3.3] C++ [4] 出来れば明後日ぐらいまでに。 [5] ユーザー関数は必須らしいです。(但し、自分はここがよく分からない)
418 :
デフォルトの名無しさん :2006/07/21(金) 00:37:36
[1]C言語初級プログラミング [2]キーボードから任意の二つの整数を入力し、最大公約数を表示するプログラムを作成せよ。 [3]OS:Linux コンパイラ名:gcc 言語:C言語 [4] 期限:今月末まで [5] その他の制限:「return」は使えません。for文とif文を中心によろしくお願いします。
419 :
デフォルトの名無しさん :2006/07/21(金) 00:38:27
[1]C言語初級プログラミング [2]キーボードから任意の二つの整数を入力し、最大公約数を表示するプログラムを作成せよ。 [3]OS:Linux コンパイラ名:gcc 言語:C言語 [4] 期限:今月末まで [5] その他の制限:「return」は使えません。for文とif文を中心によろしくお願いします。
420 :
デフォルトの名無しさん :2006/07/21(金) 00:39:28
連投申し訳ありませんorz
>>419 #include <stdio.h>
main() {
int x,y,z;
printf("数値を2つ入力して下さい : ");
scanf("%d %d",&x,&y);
for(;;) {
if(x%y==0) break;
else { z=x; x=y; y=z%y; }
}
printf("最大公約数 : %d",y);
}
return 使えないって?
要するに、自分で定義した関数の返り値を使わないってことか? それでもグローバル宣言でreturnなしでイケるけどw
>>417 now = &hash[hash_func(name2[0])];
while(now){
if(strcmp(now->name, name2) == 0){
flag = 1;
break;
}
now = now->next;
}
まったくわかりません・・ [1] 授業単元: 中課題 [2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を作る プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは とりあえず後回しで大丈夫です) <数独のルール> 1、空いているマスに、1から9までの数字のどれかを入れる。 2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の ブロック(それぞれ9マスあるブロックが9つある)のどれにも 1から9までの数字が一つずつ入る。 <問題作成時のルール> 1、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の ブロック(それぞれ9マスあるブロックが9つある)のどれにも 数字が3箇所埋まっている状態にする。 [3] 環境 [3.1] OS: UNIX [4] 期限: 明日の19時 [5] 答えが複数ある問題を作らないように気を付けよとのことです お願いします。。。。
426 :
417 :2006/07/21(金) 02:52:00
>>424 きちんとできました
本当にありがとうございます
428 :
427 :2006/07/21(金) 02:58:12
ああ、違うか。こんどは問題を作るのか。
429 :
お願いします・・ :2006/07/21(金) 09:09:02
>>427 おはようございます。425は僕ではありませんよ?
430 :
お願いします・・ :2006/07/21(金) 09:12:36
>>427 そこにアクセスできません・・
もしかしてやってもらえましたのでしょうか?
431 :
お願いします・・ :2006/07/21(金) 09:19:46
>>427 どうもありがとうございました!
ところでサンプルコードというのはなんだったのでしょうか?
[1] 授業単元: C++演習 [2] 問題文(含コード&リンク): main関数及びmain関数以外の関数を用いて以下のような玉取りゲームを作成せよ。 20個の玉がある。まず先攻後攻はプレイヤーが決められるものとする。その後プレイヤーとCOMが交互に玉を取っていく。 そして一回に取れる数は1〜5個である。 最後の玉を取ったものが負けであり、プレイヤー勝利時には「貴方の勝ちです」、COM勝利時は「貴方の負けです」と最後の表示する。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Borland [3.3] 言語: C++ [4] 期限: 明日まで [5] その他の制限:なるべく初心者に分かりやすいプログラムを目指すこと。 というような問題なのですが超初心者の自分はいきなりこのような問題を出されてもサッパリです…orz もし解ける方がいたらお願いします。
>>432 COM側の手はどう生成すればいいんだろ。
つーか、お互いに最善手を打つと仮定して且つ、
先手後手をプレイヤが決められるのならこれでいいだろ。
int main()
{
printf("貴方の勝ちです\n");
return 0;
}
ゲーム苦手なのでどういう思考回路にしたらいいのかさっぱりわからん ボールが2個残ってるときは1個取り ボールが3個残ってるときは2個取り ボールが4個残ってるときは3個取り ・ ・ ・ ボールが10個残ってるときは・・・
パスってそんな
いやむしろ(*data)--;
>>436 コンパイルしましたけど…コンピューターが玉1個しかとらずに、
しかもパスを駆使して確実に負けます…。
説明文が悪かったですね…。
スイマセン…。
>>441 ありがとうございます。実行結果とプログラムを見比べてどんなプログラムなのか
自分でも確認してみます。
ここまでひどいネタコードを書けるとは、賞賛に値しますね。
446 :
お願いします・・ :2006/07/21(金) 17:21:09
まったくわかりません・・ [1] 授業単元: 中課題 [2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を解く プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは とりあえず後回しで大丈夫です) <数独のルール> 1、空いているマスに、1から9までの数字のどれかを入れる。 2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の ブロック(それぞれ9マスあるブロックが9つある)のどれにも 1から9までの数字が一つずつ入る。 [3] 環境 [3.1] OS: UNIX [4] 期限: 月曜に伸ばしてもらいました。 [5] 盤面の状態を入出力するサンプルコードと問題の入出力ファイルは配布されています。 お願いします。。。。 今日提出しにいったところ、サンプルコードから続きを書けと いうことでした。。 また入出力ファイルは imput.dat quiz1.dat quiz2.dat quiz3.dat とあり、gcc してから ./a.out をすると ファイルを選択する画面になって、 例えばquiz1.dat と入力すれば、その空白を埋めるようになります。 どなたかどうかお願いします。 本用にお願いします。。
448 :
お願いします・・ :2006/07/21(金) 17:23:45
449 :
デフォルトの名無しさん :2006/07/21(金) 17:25:09
[1] 授業単元:プログラム [2] 問題文(含コード&リンク): n×n複素行列の逆行列を求めるプログラムを作成せよ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語: C [4] 期限: 26日まで [5] その他の制限:よくわからないけど、matrix?などは使ってはいけない おねがいします
450 :
お願いします・・ :2006/07/21(金) 17:27:07
451 :
お願いします・・ :2006/07/21(金) 17:32:30
こちらの6ではダメでした。。。 どこかの丸写しがどうとかいわれ・・ サンプルコードから続きを書けということでした・・
452 :
お願いします・・ :2006/07/21(金) 17:34:14
こちらの7では、実行したときにファイルの選択になりますでしょうか?
uzaina
454 :
デフォルトの名無しさん :2006/07/21(金) 20:16:45
455 :
もうお手上げ・・・ :2006/07/21(金) 21:16:14
456 :
デフォルトの名無しさん :2006/07/21(金) 21:51:09
send+more=money 定義からs>=1, m>=1 s+m=m*10+o or s+m+1=m*10+o s=m*9+o or s=m*9+o-1 ∴s=9, m=1, o=0 s*1000+e*100+m*1000+o*100=m*10000+o*1000+n*100 or s*1000+e*100+m*1000+o*100+100=m*10000+o*1000+n*100 10000+e*100=10000+n*100 or 10100+e*100=10000+n*100 e=n or 1+e=n ∴n=e+1 s*1000+e*100+n*10+d+m*1000+o*100+r*10+e=m*10000+o*1000+n*100+e*10+y 9000+e*100+(e+1)*10+d+1000+r*10+e=10000+(e+1)*100+e*10+y 10010+e*111+d+r*10=10100+e*110+y e+d+r*10=90+y y=e+d+r*10-90 d+e=y or d+e=10+y d+e=e+d+r*10-90 or d+e=10+e+d+r*10-90 0=r*10-90 or 0=10+r*10-90 9=r or 8=r ∴r=8 経過から3<=n<=7, 2<=e<=6, 2<=d<=7, 2<=y<=7 y=e+d+r*10-90 y+10=e+d 12<=y+10<=17, 4<=e+d<=13 ∴y=2 or y=3 e+d=12 or e+d=13 ∴d=7, e=5, n=6, y=2
>>456 >>if (ok[d]){
>> digit[c]+d;
>> ok[d]=FALSE;
とりあえず、digit[c]+d;のところでWarningでた。
>>456 main()の最後
solution=0;
try(0);
if (solution==0) printf("解はありません。\n");
try()内でsolutionの書き換えがないから解がないと表示されるのは当然。
本の中で変数と関数の説明はされてないの?されてたらそれも書いて欲しいんだけど。
いや try() 内で found() が呼び出されたら solution 書き換わるだろ
463 :
死にかけてるものです :2006/07/22(土) 12:06:16
とりあえずUNIXでFedora Coreが気になって夜も眠れません>< つかどんだけためたんだおまいさんは・・・・
>463 シーザー暗号を実現するプログラム > --[実行結果例]-------- > 文字列入力 >> Yamanashi > 鍵 >> 2 > 暗号文: Acocpcuhk > -- こんな変換ルール実現できねーよw (結果が間違ってないか?)
確実に間違ってるだろ
467 :
デフォルトの名無しさん :2006/07/22(土) 13:32:03
>463 前大敵に見栄えよく 後の味方は心づよく
469 :
デフォルトの名無しさん :2006/07/22(土) 13:53:27
宿題ではないのですが質問です。 [2] 問題文: double sum=0; for( i=1 ; i<=2 ; i++ ) { sum += 1/i; } これだとsumの値は、 sum = 1/1 + 1/2 = 1.500000 のようになると思ったのですが、なりません。(sum = 1.000000 になってしまいました) どうすれば小数までちゃんと計算してくれるのでしょうか。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++ 5.5.1 for Win32 [3.3] 言語: C言語
iをdoubleで宣言するか 1/i ⇒1.0/i にする
472 :
お願いします・・ :2006/07/22(土) 14:00:21
まったくわかりません・・ [1] 授業単元: 中課題 [2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を解く プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは とりあえず後回しで大丈夫です) <数独のルール> 1、空いているマスに、1から9までの数字のどれかを入れる。 2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の ブロック(それぞれ9マスあるブロックが9つある)のどれにも 1から9までの数字が一つずつ入る。 [3] 環境 [3.1] OS: UNIX [4] 期限: 月曜に伸ばしてもらいました。 [5] 盤面の状態を入出力するサンプルコードと問題の入出力ファイルは配布されています。 お願いします。。。。 今日提出しにいったところ、サンプルコードから続きを書けと いうことでした。。 また入出力ファイルは imput.dat quiz1.dat quiz2.dat quiz3.dat とあり、gcc してから ./a.out をすると ファイルを選択する画面になって、 例えばquiz1.dat と入力すれば、その空白を埋めるようになります。 どなたかどうかお願いします。 本用にお願いします。。 お願いします・・ 留年してしまいます。。 自分が悪いのはわかってますが。。
いいかげんにしろ
474 :
デフォルトの名無しさん :2006/07/22(土) 14:02:06
留年したまへ
475 :
お願いします・・ :2006/07/22(土) 14:04:05
上の補足ですが
imput.dat
__6_____1
_7__6__5_
8__1_32__
__5_4_8__
_4_7_2_9_
__8_1_7__
__12_5__3
_6__7__8_
2_____4__
quiz3.dat
2__67____
__6___2_1
4_____8__
5____93__
_3_____5_
__28____7
__1_____4
7_8___6__
____53__8
サンプルコードは1のリンクしてあるところにはってあります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 上の掲示板の67代目の130番にサンプルコードをかかせていただきました、
どうか本当によろしくお願いします。。
友達いないのか?
477 :
デフォルトの名無しさん :2006/07/22(土) 14:13:16
大学で口を開いたことはありません。
じゃ来年頑張って
479 :
デフォルトの名無しさん :2006/07/22(土) 14:15:46
お願いします!!! 死活問題なんです!! 留年したら学費の問題で退学しないといけないかもしれないんです!!!
ご愁傷様
退学したら学費も浮くし、生活楽になるよw
482 :
デフォルトの名無しさん :2006/07/22(土) 14:22:02
人が下手にでりゃあ偉そうに言いやがって チンカスどもが さっさと解けやクソども
お前全然死に物狂いになってないだろ。 本当に真剣なら、大学(あるいは専門学校か?)に行って、誰でも捕まえて頼んでみろ。 もしくは、かたっぱしからソフトウェアハウスに電話して、3万出すから宿題といてくれと 頼んでみろ。だれか引っかかるはずだ。
>>482 どうでもいいけど、お前彼の息の根を止めたかもよ
485 :
デフォルトの名無しさん :2006/07/22(土) 14:24:42
対人恐怖症でクラスの笑いものだし 醜刑恐怖症で郵便局とかにも行けないんです 電話してもお金を振り込めません
もう2chじゃ、余程の物好きがあらわれない限り、こたえてもらえないと思うよ。 純真なリア高とかが答えるかも知れんけどなw
487 :
デフォルトの名無しさん :2006/07/22(土) 14:26:37
たった今他の板で答えもらえちゃいましたwww ヒャッホー! 死ね2ちゃんねらー
488 :
お願いします・・ :2006/07/22(土) 14:27:36
>>477 以降はぜんぶ偽者です。。。
ぜひともお願いします。。
次の課題で討ち死にしなされ
>>488 も偽者です。私が本物です。
お願いします、10万円払います。
半分前金ならやってあげるよ
>>491 は偽者です。
でも3,000円くらいなら払えます・・・
やすっ! プログラマなめとんか!
いいかげんうざいぞ。 おとなしく待つか、別の手をうて
496 :
デフォルトの名無しさん :2006/07/22(土) 14:36:51
彼女とデートの約束があるので時間がないんです・・・
彼女にやってもらえ。
彼女はまだ17歳なんです・・・
しゃぶるだけなら
彼女と一回セクロスさせるならOK。
俺、山本みたいになるのいやだから3000円でいいや
アナル貸してくれるならおkだぜ
↑ こいつ笑いのセンスない
505 :
お願いします・・ :2006/07/22(土) 15:47:24
ちょっとまってくださいよ・・ 誰かの荒らしですよ・・・
変身忍者
507 :
お願いします・・ ◆zyUwiBi7uc :2006/07/22(土) 15:49:43
トリップつけました どなたかお願いします・・
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): エンゲル係数を求めよ (家計の消費支出と飲食費を入力しエンゲル係数を求める) [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語:どちらでも可 [4] 期限: 2006年07月26日まで [5] その他の制限: 特になし どうか、よろしくお願いします。
509 :
お願いします・・ ◆zyUwiBi7uc :2006/07/22(土) 15:51:13
475以降は全て偽者です・・ お願いします。一度休学しているので。。
うるせぇ俺だって留年した。 俺だって英語や現代数学はさっぱりだった。 課題だって試験だってさっぱりだった。 友達だって居なかった。 でも、頑張って卒業した。 できない教科も必死に授業出て勉強して単位取った。 そして今は職についた。 お前も自分でやってみろ。
>>508 #include <stdio.h>
int main()
{
int zyUwiBi7uc,kiero;
printf("消費支出:");
scanf("%d",&zyUwiBi7uc);
printf("食料費:");
scanf("%d",&kiero);
printf("エンゲル係数は%.1f",(double)kiero/zyUwiBi7uc*100);
return 0;
}
>>510 うるせぇ お前はそんなんだから出世できないんだよ。
他人をうまく利用できるようになれ。
自分で何でもやってるようじゃ一生平社員だ。
>>512 うるせぇ技術だけもらったら辞めるから
ここで出世しなくても一向にかまわんわ
[1] 授業単元: プログラム言語基礎 [2] 問題文(含コード&リンク): n人数分の数学の得点を100点満点で入力せよ 80以上 : A 79〜70 : B 69〜60 : C 59以下 : Z [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: borland [3.3] 言語: C言語 [4] 期限: [2006年7月25日21:10まで] [5] その他の制限: 順列を使ってやれ だそうです。 プログラム初心者で、こんな問題出されてもさっぱりわからないです‥‥ どうか これの問題が解ける人がいたらたすけてください。
[2] 問題文(含コード&リンク): n人数分の数学の得点を100点満点で入力せよ 80以上 : A 79〜70 : B 69〜60 : C 59以下 : Z 問題はしょるな 全部書け
すいません 書き忘れてました。 n人数分の数学の点数100点満点で入力し 80以上 : A 79〜70 : B 69〜60 : C 59以下 : Z として A、B、C、Z の人数を表示せよ 本当にすいません かきわすれてました。
> 順列を使ってやれ 本当か?
はい 先生は順列を使った ほうが 簡単にできると いってました。
配列じゃなくて?
はっ 配列でした。 間違えだらけで本当にすいません。
int count[4]={0}; /* A,B,C,Z分の配列 */ while(人数分){ if(Aランク) ++count[0]; if(Bランク) ++count[1]; if(Cランク) ++count[2]; if(Zランク) ++count[3]; } printf("A:%d人\n",count[0]); printf("B:%d人\n",count[1]); printf("C:%d人\n",count[2]); printf("Z:%d人\n",count[3]); 擬似コードで書くとこんな感じだが、配列使う意味が不明だなw
本当にありがとうございます。 C言語全くわからなくて困っていたときにこのスレみつけて 本当によかったです。 これからは じぶんでも プログラムが作れるようにがんばります。
523 :
デフォルトの名無しさん :2006/07/22(土) 18:48:43
っていうか京大のやつで質問してるやついるだろw 先生見てるぞ、と言ってみる
妄想癖の京大助手
n人は乱数でだすのか? あと、どこまで習ってんのよ?
>>513 再就職のときに、会社を辞めた理由を聞かれるから覚悟しておいた方がいいよ。
#つーか、漏れは聞く。
またいつもの彼らか?
528 :
508 :2006/07/22(土) 20:12:10
529 :
デフォルトの名無しさん :2006/07/22(土) 20:19:22
[1]苦しんで覚えるC言語 14章 文字列を扱う方法まで [2] 問題1.キーボードから入力された文字が英字であるか否かを判断するプログラムを作れ。 ヒント:アスキーコード表によれば65〜90が英大文字、97〜122が英小文字となっている。したがって、入力された文字が65〜90または97〜122なら英字。また、65〜90の範囲を調べるためのプログラム表現は以下のようになる。 if(x>=65 && x<=90)... あるいは直接英字を用いて if(x>='&& x<='z')... としてもよい 問題2 1から100までの間の奇数の和を求めるプログラムを作れ。 ヒント:奇数は1,3,5.。。、99と変化するので、i=1から初めて2ずつ 増やしていくと奇数が求められる。したがって、forループは for(i=1;i<=99;i=i+2)という書き出しになる。 問題3 1-2+3-4...+99-100を求めるプログラムを作れ。 ヒント:余り演算子%を用いて奇偶を判定し、奇数のときは加算、偶数の ときは減算する。 問題4 キーボードから西暦年を入力し、その年がうるう年であるか否kを決定す るプログラムを作れ。以下のいずれかを満足するとき、うるう年である。 (1)その年が4の倍数でかつ100の倍数でないとき (2)その年が400の倍数のとき 問題5 キーボードから20個の整数を入力して、ある数字の後にそれより小さな数 字が続く場合が何回あるかを数えるプログラムを作れ。
530 :
デフォルトの名無しさん :2006/07/22(土) 20:20:08
問題6 キーボードから月を入力し、下記を参考にしてそれを漢数字、陰暦とその 読み方を出力するプログラムを、switch文を用いて作れ、たとえば12を入力したとき 十二月 師走 しわす と出力する。0を入力したときプログラムの終了とする。 (参考) 一月...睦月(むつき) 二月...如月(きさらぎ) 三月...弥生(やよい) 四月...卯月(うづき) 五月...皐月(さつき) 六月...水無月(みなづき) 七月...文月(ふみづき) 八月...葉月(はづき) 九月...長月(ながつき) 十月...神無月(かんなづき) 十一月...霜月(しもつき) 十二月...師走(しわす) 問題7 日を入力して、それを漢数字で出力するプログラムを作れ。たとえば25を 入力したとき、二十五日と出力する。0を乳y録したときプログラムの終了 とする。 ヒント:1から31までうぃ一、二、...、三十一として用意するのは大変なので、 以下のような対をもつ。 1 2 3 4 5 6 7 8 9 10 一 二 三 四 五 六 七 八 九 十 たとえば、25が入力されたときは2と5に分けて、さらに真ん中に十を入 れて二十五を合成する。
531 :
デフォルトの名無しさん :2006/07/22(土) 20:24:36
[3] 環境 [3.1] OS: WindowsXP [3.2] Borland C++ Compiler [3.3] 言語: C言語 [4] 期限: [2006年7月25日(火)まで] [5] 苦しんで覚えるC言語 14章 文字列を扱う方法まで こんなに沢山すいません これが最後の宿題だそうです。 問題六なら0を入力したときっていう以外は解けそうな感じでしたがやっぱり自分の力では解けそうにありません どうかよろしくお願いします。
>>530 問題6
#include<stdio.h>
#include<stdlib.h>
int main(void){char* mon[]={"一月...睦月(むつき)","二月...如月(きさらぎ)",
"三月...弥生(やよい)","四月...卯月(うづき)","五月...皐月(さつき)","六月...水無月(みなづき)",
"七月...文月(ふみづき)","八月...葉月(はづき)","九月...長月(ながつき)",
"十月...神無月(かんなづき)","十一月...霜月(しもつき)","十二月...師走(しわす)",};
char tmp[100];int m;while(1){fgets(tmp,sizeof(tmp),stdin);switch((m=atoi(tmp))){case 1:case 2:
case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:puts(mon[m]);break;
case 0:return 0;}}return 0;}
問題7
#include<stdio.h>
#include<stdlib.h>
int main(void){char* kan[]={"","一","二","三","四","五","六","七","八","九",};
char tmp[100];int d;fgets(tmp,sizeof(tmp),stdin);d=atoi(tmp);
if(0<d&&d<=31){if((d/10)>1)printf(kan[d/10]);if(d/10)prntf("十");printf("%s日\n"kan[d%10]);
return 0;}
>>529 問題1
#include <stdio.h>
#include <ctype.h>
int main () {
char c;
scanf("%c",&c);
if(isalpha(c)==0){
printf("英字ではありません\n");
}
else printf("英字です\n");
return 0;
}
>>529 問題2
#include <stdio.h>
int main () {
int i;
int x;
for(i=1;i<=99;i+=2){
x+=i;
}
printf("%d",x);
return 0;
}
>>529 問題1
#include<stdio.h>
#include<ctype.h>
int main(void){if(isalpha(getchar()))puts("英文字");else puts("それ以外");return 0;}
問題2
#include<stdio.h>
int main(void){int a=1;int d=2;int n=50;int s=n*(2*a+(n-1)*d)/2;printf("%d\n",s); return 0;}
問題3
#include<stdio.h>
int main(void){int a=0;for(int i=1;i<101;i++)a+=((i&1)?1:-1)*i;printf("%d\n",a);return 0;}
>>529 問題 3 あってる保障はない
include <stdio.h>
int main () {
int i;
int x=0;
for(i=1;i<=100;i++){
if(i%2==0) x+=i;
else x-=i;
}
printf("%d",x);
return 0;
}
>>529 問題4
#include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[100];int y;fgets(tmp,sizeof(tmp),stdin);y=atoi(tmp);
if(((y%4)==0&&(y%100)!=0)||((y%400)==0))puts("閏年");else puts("平年");return 0;}
問題5
#include<stdio.h>
#include<stdlib.h>
#include<limit.h>
int main(void){char tmp[100];int a,b=INT_MIN,c=0;for(int i=0;i<20;i++){fgets(tmp,sizeof(tmp),stdin);
a=atoi(tmp);if(b<a)++c;b=a;}printf("%d回\n",c);return 0;}
538 :
デフォルトの名無しさん :2006/07/22(土) 21:12:40
>>537 なんかこっちの書き方の方がぷろっぽいんだよな
問題3は奇数を足す、偶数を引くって考えた方が早くね?って口先だけで言ってみるが ソースを書くのはまんどくせっ
>>532 問題7訂正
#include<stdio.h>
#include<stdlib.h>
int main(void){char* kan[]={"","一","二","三","四","五","六","七","八","九",};
char tmp[100];int d;fgets(tmp,sizeof(tmp),stdin);d=atoi(tmp);
if(0<d&&d<=31){if((d/10)>1)printf(kan[d/10]);if(d/10)printf("十");printf("%s日\n",kan[d%10]);
}return 0;}
541 :
デフォルトの名無しさん :2006/07/22(土) 21:24:32
>>540 なんかおまえプロっぽい書き方するなwwwwww
トーマス氏はプロ(お金を得る職)としてやっているんだから当然。 つまらない課題を出す学校の卒業生はブラックリストにされちゃいますよ?
>>532 問題6訂正
#include<stdio.h>
#include<stdlib.h>
int main(void){char* mon[]={"","一月...睦月(むつき)","二月...如月(きさらぎ)",
"三月...弥生(やよい)","四月...卯月(うづき)","五月...皐月(さつき)","六月...水無月(みなづき)",
"七月...文月(ふみづき)","八月...葉月(はづき)","九月...長月(ながつき)",
"十月...神無月(かんなづき)","十一月...霜月(しもつき)","十二月...師走(しわす)",};
char tmp[100];int m;while(1){fgets(tmp,sizeof(tmp),stdin);switch((m=atoi(tmp))){case 1:case 2:
case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:puts(mon[m]);break;
case 0:return 0;}}return 0;}
544 :
デフォルトの名無しさん :2006/07/22(土) 21:27:48
>>542 ああそうだったんだ
ごめんねかあちゃんここ北の初めてだからごめんね
でもなぜか俺の書くプログラムは厨房っぽいんだよなorz
トーマス氏はニートだが
この程度のコードでプロもクソもねえだろうがよ…
>>546 この程度でもプロだから尊敬されてんじゃん、照れるなってw
「プロだから」という理由で尊敬されるのは嫌だなぁ。
549 :
デフォルトの名無しさん :2006/07/22(土) 21:30:04
改行しないで書けばいいんじゃね
551 :
デフォルトの名無しさん :2006/07/22(土) 21:34:17
552 :
デフォルトの名無しさん :2006/07/22(土) 21:36:50
問題4 あってる保障はねえ #include <stdio.h> int main () { int x; scanf("%d",&x); if((x%4==0)&&(x%100!=0)||x%400==0) printf("うるう年\n"); else printf("うる年じゃねえ\n"); return 0; }
>>550 仕事で納品するコードで改行無しとかアリエネエけどなw
554 :
デフォルトの名無しさん :2006/07/22(土) 21:42:21
仕様変更の仕様変更の仕様変更の仕様変更でもはやなにが仕様かわからなくなるのが 普通なのって本当?
555 :
デフォルトの名無しさん :2006/07/22(土) 21:53:59
内容: [1]授業単元:C言語 [2] 問題文(含コード&リンク):3年間の月別売上は、次の表のようであった。 各年ごとの売上平均と、3年間を通しての売上平均を求めるプログラムを作成せよ。 月 1 2 3 4 5 6 7 8 9 10 11 12 A年売上 60 30 66 6 56 85 30 70 89 10 30 85 B年売上 8 90 40 54 46 5 60 7 36 84 26 30 C年売上 38 94 83 35 48 93 35 27 84 47 33 54 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual studio.net2003 [3.3] 言語:C++ [4]期限:[2006年7月23日(日)夜まで] [5] その他の制限: 特になし どうかよろしくお願いします。
556 :
デフォルトの名無しさん :2006/07/22(土) 22:01:21
↑すいませんコンパイラはBorland C++ Compiler です
プロプロ言ってるのは自演?
558 :
デフォルトの名無しさん :2006/07/22(土) 22:29:03
>>555 あってる保障はねえ
つうか全部の値を入力するのがめんどくせえ
#include <stdio.h>
int tukiheikin(int x[]){
int i;
int y=0;
for(i=0;i<12;i++){
y+=x[i];
}
printf("月:平均%d\n",y/12);
return y;
}
int main () {
int a[12]={60,30,66,6,56,85,30,70,89,10,30,85};
int b[12]={8,90,40,54,46,5,60,7,36,84,26,30};
int c[12]={38,94,83,35,48,93,35,27,84,47,33,54};
int x=0;
x+=tukiheikin(a);
x+=tukiheikin(b);
x+=tukiheikin(c);
printf("%d\n",x/3);
return 0;
}
x/(各年のサイズ*3) だと思った
560 :
デフォルトの名無しさん :2006/07/22(土) 22:38:59
>>526 再就職?
そんなことするつもりならそもそも辞めないが?
何でtukiheikinなのに合計値返してんだよ カスは解凍すんなカス
>>561 何の自慢か知らんが、チラ裏にでもどうぞ
565 :
デフォルトの名無しさん :2006/07/22(土) 22:51:19
>>562 最初は平均返すつもりだった
途中から合計を返すつもりになった
質問させてください。 [1] 授業単元:プログラミングT [2] 問題文: ・キーボードから目標値(正の整数)の入力を受け付ける。 ・キーボードから整数の入力を受け付け、合計値を求めていく。 ・合計値が目標値を超えたら、入力した個数とその中での 最大値を表示して終了。 [実行例] >目標値(整数)を入力してください。 100 >数字を入力してください。 10 30 50 40 >目標値: 100 >入力した整数の数: 4 >最大値: 50 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2006年7月25日まで [5] その他の制限:「for」を必ず使うこと。 何度考えても分かりません。どうか、お願いします。
572 :
デフォルトの名無しさん :2006/07/22(土) 23:14:00
>>570 #include <stdio.h>
int main () {
int i;
int x=0,y=0;
int limit;
int max=0;
printf("最大値を入力してください");
scanf("%d",&limit);
for(i=1;max<limit;i++){
scanf("%d",&x);
if(y<x){
y=x;
}
max+=x;
}
printf("入力回数:%d\n",i);
printf("合計値:%d\n",max);
printf("最大値:%d\n",y);
return 0;
}
あってる保障なす
>>570 #include <stdio.h>
int main(void){
int end, max, sum, tmp, i;
printf(">目標値(整数)を入力してください。\n");
scanf("%d", &end);
printf(">数字を入力してください。\n");
for(sum = max = i = 0; ; i++){
scanf("%d", &tmp);
sum += tmp;
max = (tmp > max) ? tmp : max;
if( sum >= end )
break;
}
printf(">目標値: %d\n", end);
printf(">入力した整数の数: %d\n", i+1);
printf(">最大値: %d\n", max);
return 0;
}
574 :
570 :2006/07/22(土) 23:20:29
575 :
467 :2006/07/22(土) 23:29:14
>>467 をどなたかお願いできませんでしょうか?
プログラムは途中まで与えられていますが、さっぱりです。
クズの分際で催促するなクズ。
577 :
デフォルトの名無しさん :2006/07/23(日) 00:03:13
>>576 プロならちゃちゃっとやっちゃってくだちゃいよ?
[1] 授業単元:cプログラミング [2] 問題文(含コード&リンク): 大きさ20の配列keyを用意し、キーボードから値を入力する。 この配列keyの要素を、単純挿入法で昇順にソートするプログラムを作成せよ。 ただし、ソートの途中経過を画面に出力すること。 また、最後に比較回数を画面に出力すること。 【ヒント】 配列の大きさの指定 ‥ ただし最初の要素は番兵用。よって入力は SIZE - 1 回。 単純挿入法‥未ソートの部分の先頭の要素を、ソート済みの部分に挿入する 途中経過‥未ソートの部分が1つ減るたびに(外ループ)出力。 比較回数‥初期値0の変数を用意し、比較のたびに(内ループ)インクリメント。 [3] 環境 [3.1] OS: xp [3.2] visual studio2003 [3.3] 言語: c [4] 期限: 25日まで [5] その他の制限: ループ、探索、ソート、配列、構造体など
>>578 プロの仕事を要求するならそれなりの対価を払う覚悟はできてるんだろうな?
>>581 体でウホッな支払いはおkでつか?w
まぁ、対価がある場合はバグがあったときはサポートも含んでもらわんと・・・
ここでの金銭のやりとりもどうかと思うけど、お金が欲しいなら個別に窓口でも設けてみては?
トーマス氏ならずいぶんと稼げるんでは?
585 :
お願いします・・ ◆zyUwiBi7uc :2006/07/23(日) 02:28:03
まったくわかりません・・ [1] 授業単元: 中課題 [2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を解く プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは とりあえず後回しで大丈夫です) <数独のルール> 1、空いているマスに、1から9までの数字のどれかを入れる。 2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の ブロック(それぞれ9マスあるブロックが9つある)のどれにも 1から9までの数字が一つずつ入る。 [3] 環境 [3.1] OS: UNIX [4] 期限: 明日の19時 [5] 盤面の状態を入出力するサンプルコードと問題の入出力ファイルは配布されています。 お願いします。。。。
586 :
お願いします・・ ◆zyUwiBi7uc :2006/07/23(日) 02:30:08
上の補足ですが
imput.dat
__6_____1
_7__6__5_
8__1_32__
__5_4_8__
_4_7_2_9_
__8_1_7__
__12_5__3
_6__7__8_
2_____4__
quiz3.dat
2__67____
__6___2_1
4_____8__
5____93__
_3_____5_
__28____7
__1_____4
7_8___6__
____53__8
サンプルコードは1のリンクしてあるところにはってあります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 生意気な口をきいたのは僕ではありません 誤解しないでください。
サンプルコードから続きを書けということで、
わかる方ならそれほど時間もかけさせないと思います。
本当にどうかよろしくお願いします。
>>585 普通に人間が思考して解くやりかたでなく
最初の盤面の状態からある数を適当において
別の盤面の状態をつくり、この状態を使って再帰で呼び出す
そんな感じのを昔作った。まあガンガレ。
大昔、プログラマ初心者の頃
6時間かけて糞ソースになったので作り直しでまた6時間
計12時間コースだった
いまの自分なら2時間コースだと思いたい
>>585 まぁなんだ・・・粘着してたのがおまいさんじゃなくてもここじゃもう_
数独のプログラムならいっぱい落ちてるからそっからコピペのが早いと思うよ
>>583 もちろん「プロとして」請けるなら納期やらサポート範囲やら納品物やらをきっちり定義した
購入仕様書なり契約書なりを作った上で相応の仕事をすることになるが。
最低0.1人月としても10万前後だからな。クズ学生如きがそこまでやるとは思えん。
>>585 解く方法教えてくれれば作る
そうでないなら考えたり調べたりするの面倒だからやんね
592 :
デフォルトの名無しさん :2006/07/23(日) 03:30:58
[1] 授業:プログラミング演習 [2] 問題文: ・100個のノードを生成する ・ノードに重みを指数分布に従ってつける(0〜100) ・任意のノードペアを選び、重みの和を取り、重みの和が100以上のノードペアにリンクを張る ・それぞれのノードが持つリンク数を計算する ・リンクの数の分布 (リンクが1つ・・・○○、リンクが2つ・・・○○、・・・みたいな) [3] 環境:[Windows XP Borland C++ Compiler 5.5(BCC Developer) C言語 [4] 期限:一応ないので焦りませんが、早目がうれしいです。 [5] その他の制限:どんな方法を使っても大丈夫です。 以前はありがとうございました。本当に感謝感激です。 で、こんどは応用ということで、指数分布に従って重みをつけろとのことです。 以前貰ったプログラムをうpするので、宜しくお願いします。
>>590 俺もプログラマだが実際問題そんな金の動くようなことしてる気がしないんだよなぁ
なんで成立してんだか・・・
594 :
592 :2006/07/23(日) 03:33:00
>>593 それがわからないなら、辞めたほうがいいかも
こんな楽に金稼げる仕事はなかなか辞められませんな
プロのグラマーでお金を稼ぐエッチィボディの人たちのことでつか?
俺はモデル系よりグラマー系がいいと思っている。
ミクロ系貧乳めがねッ娘が最強。
ロリペド社会不適合性犯罪者か
603 :
デフォルトの名無しさん :2006/07/23(日) 10:42:09
529〜531です 解いてくれて本当にありがとうございました
604 :
467 :2006/07/23(日) 11:06:52
きんもーっ☆
606 :
死にかけてるものです :2006/07/23(日) 12:10:48
[1] 授業単元: コンピュータグラフィックス1 [2] 問題文(含コード&リンク):tp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2445.zip [3] 環境 [3.1] OS: WindowsXPpro sp2 [3.2] コンパイラ名とバージョン:VisualStudio2002+cmd [3.3] 言語:C [4] 期限: 2006/07/27 [5] gather_1関数の作成をお願い致します。 bmpはお持ちの物で構いません。
610 :
デフォルトの名無しさん :2006/07/24(月) 02:50:51
agemasu
611 :
デフォルトの名無しさん :2006/07/24(月) 03:18:57
【質問テンプレ】
[1] 授業単元:数値解析
[2] 問題文(含コード&リンク):
4元1次方程式をガウス法により解くプログラムを作成しなさい。
また、以下の条件を満たすこと。
1.任意の係数をキーボードから入力する。
2.求められた解を用いて検算を行う。
3.前進消去において、ピボット選択を行う。
4.関数calsolでxを求める部分を、5元、6元と増やしていっても簡単
に変更できるようにする(for文などを使用してループ形式にする)。
プログラム例↓
http://www.mech.saitama-u.ac.jp/lab/system/lecture/NumericalAnalysis/kadai/kadai13.png [3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:よく分かりません。
[3.3] 言語:C/C++/どちらでも可
[4] 期限:[2006年07月24日8:00amまで
[5] その他の制限:
hagemasu
614 :
613 :2006/07/24(月) 05:30:06
[1] 授業単元:cプログラミング [2]自由課題です。プログラムは自分で考えるので、どんなもの作ったらいいか アイデアだけいくつかお願いします [4] 期限: 24日 24:00まで [5] その他の制限: ループ、条件、配列、文字列、ポインタ程度の基礎的な知識で書けるもの
>>615 極楽とんぼの山本を無罪にするプログラムを作れ!
618 :
デフォルトの名無しさん :2006/07/24(月) 09:53:11
1] 授業単元: コンピューター実習 [2] 問題文(含コード&リンク): 入力した正整数値以下の最大の素数を返すプログラムを作る。 素数を求める部分は関数にすること。 例) 12 (Enter) 11 6 (Enter) 5 7 (Enter) 7 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 7月26日 [5] その他の制限:特になし お願いします
禿しく概出
620 :
デフォルトの名無しさん :2006/07/24(月) 10:58:01
>>618 なんか作ってみたけどコードが凄い不細工になった
素数そのものが入力されたときにそれを表示できね
for文に=つけてやればいい悪寒
>>615 #define DEF_YUUZAI 1
#define DEF_MUZAI 0
#include <stdio.h>
void main()
{
Human obj;
obj.name( "山本" );
obj.set( DEF_YUUZAI );
while( obj.getTumi()!=DEF_MUZAI )
printf( "ごめんなさい\a" );
)
625 :
デフォルトの名無しさん :2006/07/24(月) 13:56:24
>>622 while (fscanf(fin,"%d",dat) != EOF){
fprintf(fout,"%d\n",dat*3);
}
627 :
デフォルトの名無しさん :2006/07/24(月) 14:01:04
>>626 while ((n=fscanf(fin, "%d", &dat)) != EOF) {
if (n == 1) {
fprintf(fout, "%d\n", dat * 3);
} else {
fgetc(fin);
}
}
>>609 すみませんでした。
複数のbmpファイル(24か8bit)を結合させて1つのbmpファイルにする、
gather_1.cを作れ、と言う問題でした。。
631 :
デフォルトの名無しさん :2006/07/24(月) 16:00:48
>>628 実行したときに表をウィンドウに表示するにはどうしたらいいですか?
634 :
622 :2006/07/24(月) 17:49:22
答えてくださった方ありがとうございます
635 :
デフォルトの名無しさん :2006/07/24(月) 18:04:01
>>635 ↓これを書き換えて作る
for i in ????
????
end
これは明らかにCでは無い
>>635 for i in 1..600
print i.to_s + " "
if i % 24 == 0
print "\n"
end
end
ruby ?
639 :
デフォルトの名無しさん :2006/07/24(月) 18:46:11
641 :
死にかけてるものでした :2006/07/24(月) 19:04:25
[1] 授業単元: プログラミング通論
[2] 問題文(含コード&リンク):
以下に表すマージソートのプロトタイプ宣言を, void mergesort(recordtype a[], int n); として作成せよ。
(他の関数定義は,
http://hil86.cs.uec.ac.jp/2006/aqj2/materials/q5-skeleton.c にあります)
ただし、作業用配列 b[] を動的に確保せよ(b = malloc(.....); し、最後に free(b); する)。
void mergesort(recordtype a[], int l, int r) {
int i, j, k, m;
recordtype b[6];
if (l < r-1) {
m = (r + l) / 2;
mergesort(a, l, m);
mergesort(a, m, r);
for (i = m-1; i >= l; i--) b[i] = a[i];
i = l;
for (j = m; j < r; j++) b[r+m-j-1] = a[j];
j = r - 1;
for (k = l; k < r; k++)
if (strcmp(b[i].key, b[j].key) < 0) a[k] = b[i++];
else a[k] = b[j--];
}
}
643 :
642 :2006/07/24(月) 19:09:49
#define N 5 int main(void) { #define BUFLEN 128 char buf[BUFLEN]; int i; for (i=0; i<N; i++) { fgets(buf, BUFLEN, stdin); a[i].key = strnew(chomp(buf)); } mergesort(a, 0, i); /* → mergesort(a, i); */ print_record(a, i); } [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 7月28日まで
645 :
607 :2006/07/24(月) 20:37:16
646 :
デフォルトの名無しさん :2006/07/24(月) 21:03:35
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): キーボードから7桁の整数を2つ読み込み,その積を表示する.ただし,整数型以外の 変数を用いてはならない. [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VisualStudio.net2003 [3.3] 言語: C [4] 期限: できたら今日中にお願いします [5] その他の制限: 初心者が書くような、プログラムでつくって頂きたいです。 お願いします
(1) 品物の値段とお客の支払った金額を読み込んで、おつりが必要なときには、その額を貨幣の種類と枚 数で表示するプログラムを作りなさい。 (2) 正の整数n から1,3,5,…と順に奇数を引けるだけ引いた時、引けた奇数の個数がpn の整数部分にな る。このようにして、pn の整数部分を求める方法を女の子(めのこ) 平方という。 正の整数n を読み込み、女の子平方によってpn の整数部分を求めるプログラムを作りなさい。 OS: Windows コンパイラ名とバージョン: gcc 言語: C 期限: 早めで^^; その他の制限: 特になし 本気困ってます^^;是非お願いします!!
649 :
デフォルトの名無しさん :2006/07/24(月) 22:47:14
>>648 (1)
#include <stdio.h>
int main(void)
{
int goods,payment,coin[]={1,5,10,50,100,500,1000};
int size=(sizeof(coin)/sizeof(int)),i;
int res[(sizeof(coin)/sizeof(int))];
scanf("%d%d",&goods,&payment);
payment-=goods;
if (payment < 0){
printf("金がたんねーよ\n");
return 0;
}
for (i=size-1;i >= 0;i--){
res[i]=(payment/coin[i]);
payment-=(coin[i]*res[i]);
printf("%5d YEN\t%d\n",coin[i],res[i]);
}
return 0;
}
変数名がコインなのに1000がある。 それなのに2000も5000もない。
652 :
デフォルトの名無しさん :2006/07/24(月) 23:08:48
>>648 #include <stdio.h>
int main () {
int kane;
int nedan;
int turi;
int x[6]={1,5,10,50,100,500};
int y[6];
int i;
printf("値段をいれてください\n");
scanf("%d",&nedan);
printf("お金をいれてください\n");
scanf("%d",&kane);
turi=kane-nedan;
printf("釣り%d\n",turi);
for(i=5;i>=0&&turi>0;i--){
y[i]=turi/x[i];
turi-=x[i]*y[i];
printf("%d円:%d枚\n",x[i],y[i]);
}
return 0;
}
>>648 女の子平方って何?
これで合ってる?
int n,m,i;
scanf("%d",&n);
for (m=1,i=0;n > 0;n-=m,m+=2,i++);
printf("%d\n",i);
654 :
デフォルトの名無しさん :2006/07/24(月) 23:12:47
656 :
デフォルトの名無しさん :2006/07/24(月) 23:30:27
658 :
デフォルトの名無しさん :2006/07/25(火) 00:08:45
>>646 できる方いらっしゃいませんでしょうか?
659 :
デフォルトの名無しさん :2006/07/25(火) 00:15:23
>>648 マンコの平方ってさたとえば
2の平方もとめるときには
2-1=1 1回
1-2=-1 2回
って数えてもいいの?
それとも一回になるの?
[1] 授業単元:cプログラミング [2] 問題文(含コード&リンク): 大きさ20の配列keyを用意し、キーボードから値を入力する。 この配列keyの要素を、単純挿入法で昇順にソートするプログラムを作成せよ。 ただし、ソートの途中経過を画面に出力すること。 また、最後に比較回数を画面に出力すること。 【ヒント】 配列の大きさの指定 ‥ ただし最初の要素は番兵用。よって入力は SIZE - 1 回。 単純挿入法‥未ソートの部分の先頭の要素を、ソート済みの部分に挿入する 途中経過‥未ソートの部分が1つ減るたびに(外ループ)出力。 比較回数‥初期値0の変数を用意し、比較のたびに(内ループ)インクリメント。 [3] 環境 [3.1] OS: xp [3.2] visual studio2003 [3.3] 言語: c [4] 期限: 25日まで [5] その他の制限: ループ、探索、ソート、配列、構造体など
>>658 main(){
long i,j;
scanf("%d %d",&i,&j);
printf("%d",i*j);
}
662 :
デフォルトの名無しさん :2006/07/25(火) 00:19:11
>>646 #include <stdio.h>
int main () {
unsigned int x;
unsigned int y;
scanf("%d",&x);
if(x<1000000) return 1;
scanf("%d",&y);
if(y<1000000) return 1;
printf("%d",x/y);
return 0;
}
会ってる保障はない
663 :
デフォルトの名無しさん :2006/07/25(火) 00:21:55
>>660 単純挿入法の意味がわかりません
どうみてもググレです本当にありがとうございました
664 :
デフォルトの名無しさん :2006/07/25(火) 00:27:44
>>662 ありがとうございます。助かりました。。
665 :
デフォルトの名無しさん :2006/07/25(火) 00:31:28
>>664 ごめん違う!間違ってる!
これ積じゃない商だ!!!!!!!
おいおい、そういう問題じゃないだろ。
>>640 の方。
震え上がるほどの見事な解答、有難う御座いました。。
(うちの環境ではstdlibヘッダが不要なようでしたが、勿論のこと結合できました。)
知らない方が良いことも世の中にはある
>>665 自分のレスにとは、言え何か凄い否定の仕方だなwwwwwwwwwww
/を*に変えれば良いと思うよ(判ってると思うけどさww)。
>>667 >>640 を含む問題文を見たけど凄いね。
学校でこんなレベルの事を学ぶんだ・・・・・。
何処の学校なの?
671 :
デフォルトの名無しさん :2006/07/25(火) 00:40:46
>>669 いや今自分のパソコンでコンパイルしなおしてみたんだが
%dで表示すると10進の整数で表示されるはずなのに-が付いて表示されるんだが・・・
>646は整数型をオーバーフローする整数の取り扱いの問題なんじゃないのか? それ以前に>662は8桁のチェックをしていないようだが。
673 :
デフォルトの名無しさん :2006/07/25(火) 00:42:22
>>662 1000000でいいんですか?0足りてますか?
1000000*1000000で計算してみたら分かるよ。
>>673 7桁未満を排除するのだからいいだろ。
尤も、>672の指摘する通り8桁を排除していないが。
>>671 >672の指摘通り、オーバーフローしているから。
long型にすべきだな。 後なんでunsignedなのかもよく判らない。
677 :
デフォルトの名無しさん :2006/07/25(火) 00:45:20
>>676 ごめんねセイスウチって書いてあるから符号つかっちゃだめかと思った
>>670 負の整数値のことも思い出してあげてください。
680 :
デフォルトの名無しさん :2006/07/25(火) 00:48:07
=─‐\\‐ /─'''''ニ二\''' |レレゝゝ、\  ̄く<<く >, ゙、/<三三二\ ̄\ゝゝゝゝゝゞ''ヽ、 <<<<〈__入 ゙、く彡三三三二ヽくゝ\メメメゝ、_ゝ、\ くく<<<<<< ゙、 ゙、ミ三三二ニ─ゝゝゝゝゝ,,,,,,,、 '( ゙''ヽ、ヽ、 くくくくくく彡‐ヽ ゙、ミ三三二ニ'''くくゝゝ_ゝゝ、\\_,>」ノ, く く く く く 彡゙、゙、三三二ニ‐くゝ、/ ,,,,,,,,メメゝヽ''''"ゝゞ丶、 二─二二彡彡、゙、三三二==くメゝ/ ゙'ヽ、メゝゝゝゝゝゝゞ''ヽ、,,,,,,_ ‐'''" ̄ \彡彡ミ、゙、三二=''"く<メ/:: \''、メメゝゝゝ_ゝ 、 ,,、ヽヽ 、 ,,,, ゙彡//ヾ、三二= くゝ/:::.... \>∠レ,‐ニ二メヽ''ヽ ノ ゙ヽ、,,,‐//_///,,、゙、三二= ゙、 ""''' ヽ>//レレヽ,,___ / ,,,,,,‐'''"""/////,,ヽ ゙、三二─ ゙ヽ. //ヘヘ,、 レレレレノ さあ願いを言え ''" ,l|"////ノ,、\彡'''''‐ニ,、 ::::::::::,,,,,,,,// ゙ヽフ/|/| レ' どんな願いも聞き流してやろう。 /ゝ、/ヽ|ヽレ,,゙ヽ、゙''ヽ、,,,,,,_ヽ''ニ='',,'"、─,,,,,_  ̄"'ノ /メ / レ/,''"へへべ''─ ̄メヽ"ゝゞゝヽ、 >''"
682 :
デフォルトの名無しさん :2006/07/25(火) 00:54:40
>>646 #include <stdio.h>
int main () {
long x,y;
scanf("%d",&x);
scanf("%d",&y);
if(x<1000000||y<1000000) return 1;
printf("%x",x*y);
return 0;
}
これでなんとか騙せないかな・・・orz
一体全体この>682(バカ)は何をしたいのだろう……
>>683 > [5] その他の制限: 初心者が書くような、プログラムでつくって頂きたいです。
685 :
デフォルトの名無しさん :2006/07/25(火) 01:31:05
>>683 もうどうしていいかわからないから
とりあえず-が付くとあからさまに積ではないので
16進数にして誤魔化せないかと
printf("%I64d",(__int64)x*y);
690 :
デフォルトの名無しさん :2006/07/25(火) 01:40:59
691 :
デフォルトの名無しさん :2006/07/25(火) 01:42:07
692 :
デフォルトの名無しさん :2006/07/25(火) 01:47:59
>>689 わかった符号なし表示するのに使うのね
でも使っても桁全然たりねえよorz今日はもう寝る
明日考える
>>660 たしか4つある66のどれかに回答があった。
694 :
デフォルトの名無しさん :2006/07/25(火) 01:57:49
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): キーボードからファイル名を入力し,そのファイルの文字コードを判別し,画面に表示 する.ただし,指定ファイルの文字コードはJIS,EUC,SJISとする. [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VisualStudio2003 [3.3] 言語: C [4] 期限: できるだけ早くお願いします [5] その他の制限: 特になし。よろしくお願いします
何かちょっと上の方ワオタ
>>646 たしか4つある66のどれかに回答があった。
>>670 某大のコンシス専攻っす。
独学でもやってないと毎週大変っす(汗
//他には1からavi,wav,jpegを作ったりもします。(いずれmpeg,movもやるらしい…
何年生ですか?
毎週ちゃんとやってるなら授業大変そうだと思うけど、 宿題丸投げするくらいだから授業も聞き流してるんだろうなぁ・・・
そんな奴らが社会に出てくるんだよな・・・ 仕事も惰性、大きなミスがあっても反省なし・・・ むしろ、ミスがあっても良いという価値観のズレ
>>694 手抜きだが。手抜きしない場合大変なことになると思われ。
#include <stdio.h>
#include <stdlib.h>
#define JIS 0
#define EUC 1
#define SJIS 2
int doit(const char *fname)
{
FILE *fp;int c;int ret = EUC;
const char *jtypes[] = { "JIS", "EUC", "SJIS" };
if ((fp = fopen(fname, "rt")) == NULL) { perror(fname); return -1; }
while ((c = fgetc(fp)) != EOF) {
if (c == 0x1b) { ret = JIS; break; }
if (c >= 0x80 && c < 0xa0) { ret = SJIS; break; }
}
fclose(fp); puts(jtypes[ret]); return ret;
}
int main(void)
{
char fname[1024]; int rc; int len;
if (fgets(fname, sizeof (fname), stdin) == NULL) return EXIT_FAILURE;
len = strlen(fname);
if (fname[len-1] == '\n') fname[--len] = '\0';
if (fname[len-1] == '\r') fname[--len] = '\0';
rc = doit(fname);
return rc >= 0 ? rc : EXIT_FAILURE;
}
>1からavi,wav,jpegを作ったりもします wavは正弦波や三角波のジェネレータ作って組み合わせるのかな、とかオモタ
704 :
死にかけてるものでした :2006/07/25(火) 10:23:48
マージソートって再帰なしで書けるものだっけ?
>>704 ソートのforの継続条件が両方ともおかしい。
前者はendと等しいところまで回しているが、コメントではそうは言っていない。
後者はdouble値を文字と比較しているし、そもそもバッファオーバフローしてしまう。
707 :
デフォルトの名無しさん :2006/07/25(火) 12:24:08
どなたか
>>618 をお答えいただけないでしょうか?
既出といわれたのですが、どこにあるのかわからなくて・・・
#include <stdio.h> int func(int num){ int i, flag = 0; for(i = 2; i <= (num - 1); i++){ if(num % i == 0){ flag=1; break; } } return flag; } int main(void){ int n, ans, i; scanf("%d", &n); for (i = 2; i <= n; i++) if (func(i) == 0) ans = i; printf("%d", ans); return 0; }
>>707 #include<stdio.h>
#define N 256
int sosu(int n){int i,j,prime[N];
if(n < 2) return -1;
for(i=1;i<N;i++)prime[i]=0;prime[0]=2;
for(j=3;j<=n;j++){for(i=0;i<N;i++){
if(prime[i]==0){prime[i]=j;break;}
if(j%prime[i]==0)break;}}
for(i=0;i<N;i++)if(prime[i]==0)break;
return prime[i-1];}
int main(){int n=2;
while(n>1){scanf("%d",&n);
printf("%d\n\n",sosu(n));}
return 0;}
効率とか特に考えずに書いた。反省はしてない。
なんか勘違いしてた orz 丸ごと関数にしたら駄目じゃん
別にいいんじゃないの
712 :
642 :2006/07/25(火) 13:22:36
713 :
デフォルトの名無しさん :2006/07/25(火) 13:23:13
>>618 #include <stdio.h>
int sosu2(int x){
int i;
for(i=2;i<x;i++){
if(x%i==0){
return 1;
}
}
return 0;
}
int sosu(int x){
int i;
int y=0;
if(sosu2(x)!=0){
for(i=2;i<x;i++) {
if((x%i!=0)) y=i;
}
}
else y=x;
return y;
}
int main () {
int x;
scanf("%d",&x);
x=sosu(x);
printf("%d",x);
return 0;
}
会ってる保障はない
714 :
デフォルトの名無しさん :2006/07/25(火) 13:32:25
つうかね未だに整数がたのオーヴァーフローの解決ができませんよorz 突破口すらみつかりませんよ
>>714 =
>>646 か?
#include<stdio.h>
int main(){long a,b;scanf("%ld %ld",&a,&b);
printf("%.0f",(double)a*(double)b);return 0;}
1234567を123*10^5 + 4567とかに分解して掛け算すりゃいいんじゃねーの?
10^5 -> 10^4 orz
>>714 どれかわからんがBignumとかでぐぐりゃやろうとしてるの解決できるよ
中身見てないけど66代目の552に対する回答じゃダメなの? まあ、同じ回答すると教授にバレてしまうかもしれないけど
723 :
デフォルトの名無しさん :2006/07/25(火) 15:09:23
>>721 なるほど
巨大すぎる整数は扱える桁に分割してあつかうでおk?
724 :
死にかけてるものでした :2006/07/25(火) 15:22:53
>>706 指摘されたところを調べたところfor文のjが暴走していることに気づき
無事に解決できました。ありがとうございましたm(_ _)m
725 :
デフォルトの名無しさん :2006/07/25(火) 15:41:41
とりあえず巨大な整数を表示することはできたが これからどうやって積だしたらええねん
筆算するときの要領で
727 :
デフォルトの名無しさん :2006/07/25(火) 16:03:07
728 :
デフォルトの名無しさん :2006/07/25(火) 16:07:21
>>646 #include <stdio.h>
int main () {
long x,y;
scanf("%ld",&x);
scanf("%ld",&y);
if(x<1000000||y<1000000) return -1;
if(x>9999999||y>9999999) return -1;
printf("%.0f",(double)x*(double)y);
return 0;
}
会ってる保障はない
[1] C言語実習
[2]
3つの係数a,b,cを読み込み、2次方程式 a*x*x+b*x+c=0の解を求める
関数void qurd(double a,double b,double c)を作成せよ。
ただし、解が重解、2つの実数解、虚数解を持つ場合の3つに分けて答を出力せよ。
何組かのデータを入力でき、ctrl+zで終了するプログラムを作成すること。
問題の画像です。
http://venus.aez.jp/uploda/index.php?dlpas_id=26134 pass:cplus
[3.1] Windows XP
[3.2] VC 6.0
[3.3] C++
[4] 金曜日までに
[5] 標準ライブラリ関数までは習っています。
h抜くの忘れた…すみません。
[1] 授業単元:基礎C++プログラミング [2] 問題文:1800年から2100年の間で入力された 西暦と月からその月のカレンダーを表示する。 また、カレンダーの下にその月の祝祭日を日にち付きで表示する。 ただし、祝祭日は海の日などは改定前と後できちんと分ける。 (春分の日、秋分の日は一定でよい。) 閏年も考慮し、月初めの曜日はツェラーの公式で求める。 カレンダーの表示は2次元配列で表示し、日曜始まりの形式か 月曜はじまりの形式かをユーザが選べるようにする。 関数を最低1つは使用すること。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C++ [4] 期限: 2006年8月4日17:00まで [5] その他の制限: 配列・関数まで習いました。クラスなどは ならっていないです。 遅くとも8月10日までにA〜E5段階で評価が返ってくるので、 作成者様のご希望があれば、評価がきたらここでご報告いたします。 ではよろしくお願いします。
>>731 旧暦とか法改正とか国民の休日とかむちゃくちゃ大変だと思うが、その割に六曜は無視していいというアンバランスさ。
とりあえず各祝日の定義と有効期間を調べてまとめてくれよ。
>>700-701 すまそ、今回初めて訊いたんだ。。
//しかもテスト1週前に課題出されるというOTL
成人の日と海の日と国民の休日と天皇誕生日4代分の場合分け処理を強要するくせに 春分の日と秋分の日は一定なのか… つか明治の改暦前の日付はどう処理するんだ。グレゴリオ暦じゃ明治の休日は表記できないぞ。 天保暦にするのか?天保暦には曜日はないぞ。天保暦の休日は1、6の日と5節句、24節季だけ でいいのか?神道の大祭を入れるのか?仏教か? 今上天皇の在位を何年までと見積もるんだ? そこら辺の仕様がわからんと手が出せない。
735 :
デフォルトの名無しさん :2006/07/25(火) 18:39:42
恋の呪縛〜♪
ま〜たいつものカレンダーかと思ったら一味違っててバロスwww
はっきり言って、法定休日の場合分けやるくらいなら春分と秋分の計算の方がはるかに 簡単のような気がしてならない。
>>733 毎週ちゃんと授業を受けてるなら丸投げはしないだろ
試験前でも寝食を削って勉強に勤しめ
>>739 国民の休日は「法定祝日に挟まれた平日を休日」なので、日曜日と祝日に挟まれた日は除外。
ちなみに適用も1986年から。
振替休日は2006年までは「日曜日と法定祝日が重なった日の翌日」で2007年からは「日曜日と
法定祝日が重なった日の次の平日」となる。
そのため、春分・秋分を固定にしてしまうと国民の休日と振替休日が正しく表示できない。
新嘗祭は、1872年までは「11月の2回目の卯の日」。
一年中夏休みなので休日とかどうでもいいです(´・ω・`)
731はsourceforgeにスレをたてろ。
下限が1800年てことは寛政暦も入るな。閏月の入り方が不定期だからこれもテーブル化しないと いけないんだが資料がない。
ちょっとその課題出した教師ここに呼んで来い
746 :
デフォルトの名無しさん :2006/07/25(火) 20:41:11
[1] 授業単元:コンピューター演習 [2] 問題文(含コード&リンク): ****問題1**** ファイルxxx.txt から文字を読み込み, 大文字と小文字を区別しないでアルファベット26文字の出現頻度をカウントし, 最も頻度の大きいアルファベットとその出現回数を出力するプログラムを作成し,ソースコードを投稿せよ. ****問題2**** ファイル yyy.txt の中身は, ある文書中の文字をすべて数文字づつずらした文書とすることで暗号化したものである. このファイルから文字を読み込み, 大文字と小文字を区別しないでアルファベット26文字の出現頻度をカウントし, 最も頻度の大きいアルファベットが暗号化される前の e という文字であると仮定して, ずらした文字を推測し,元の文書を出力して表示するプルグラムを作成し,ソースコードを投稿せよ. [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:明日 [5] その他の制限:特になし お願いします><
>>740 あと四方拝は法律上制定されてないみたいだけど、もしかして皇室典範の方も
調べないといけない?
748 :
デフォルトの名無しさん :2006/07/25(火) 21:04:04
お願いします [1] 授業単元:基本プログラミング [2] 問題文(含コード&リンク):入力した整数n(0<n<10)に対してサイズnの九九表を出力するプログラム. 0以下,もしくは10以上の数を入力したところで終了 実行例 Input n : 6 1 2 3 4 5 6 1 1 2 3 4 5 6 2 2 4 6 8 10 12 3 3 6 9 12 15 18 4 4 8 12 16 20 24 5 5 10 15 20 25 30 6 6 12 18 24 30 36 Input n : 3 1 2 3 1 1 2 3 2 2 4 6 3 3 6 9 Input n : 12 Good bye [3] 環境 [3.1] OS: UNIX [3.3] 言語:C++ [4] 期限: 明日 [5] その他の制限: なし
749 :
デフォルトの名無しさん :2006/07/25(火) 21:08:32
>>748 の実行例の九九表が変ですね・・・本当は右端に揃ってます。改めてお願いします
>>747 皇室祭祀令という法律で規定されているはず。
>>748 #include <stdio.h>
int main(){
int kuku[9][9] = {
{1, 2, 3, 4, 5, 6, 7, 8, 9}, {2, 4, 6, 8,10,12,14,16,18},
{3, 6, 9,12,15,18,21,24,27}, {4, 8,12,16,20,24,28,32,36},
{5,10,15,20,25,30,35,40,45}, {6,12,18,24,30,36,42,48,54},
{7,14,21,28,35,42,49,56,63}, {8,16,24,32,40,48,56,64,72},
{9,18,27,36,45,54,63,72,81}
};
int i, j, n;
while(1){
printf("Input n : ");
scanf("%d",&n);
if(n<=0 || n>=10)
break;
for(i=0; i<n; i++){
for(j=0; j<n; j++)
printf("%2d ",kuku[i][j]);
printf("\n");
}
}
return 0;
}
753 :
デフォルトの名無しさん :2006/07/25(火) 21:40:49
キーボードから円の直径dを整数で入力し、文字を使って直径dの円を表示 するプログラムを作成してください。ただし、入力する半径の範囲は2〜79 に制限し、正しい値が入力されるまで何度も入力させるようにして下さい。
>文字を使って直径dの円を表示 _
int main(){ float input=0; while(input<2 || input>79) scanf("%f",&input); printf("直径%fの円",input); return 0; }
課題3 Linuxでは、多重アドレス空間(多重仮想記憶)を採用しており、 プロセスごとに別々の仮想アドレス空間を利用している。 以下のような手順でこれを確認しなさい。 ・二つのプロセスで、同じ番地に別々のデータが記録されている ・二つのプロセスのうち、片方のプロセスである番地にデータを書込んでも、 もう一方のプロセスの同じ番地には変化がない なお、特定の番地のデータを調べたり、その番地にデータを書込んだりするには、 C言語ではポインタを利用する。
>>746 #include <stdio.h>
int main()
{
const char *filename="yyy.txt";
int count[26]={0}, i;
char ch;
char max_index=-1, max_value=0;
FILE *fp;
if ((fp=fopen(filename, "r"))==NULL)
return 1;
while( (ch=fgetc(fp)) != EOF)
{
if (ch>='a' && ch<='z')
{
count[ch-0x60]++;
}
else if (ch>='A' && ch<='Z')
{
count[ch-0x40]++;
}
}
759 :
デフォルトの名無しさん :2006/07/25(火) 21:57:24
>>758 for (i=0 ; i<26 ; i++)
{
if (count[i]>max_value)
{
max_index=i;
max_value=count[i];
}
}
if (max_index == -1)
printf("アルファベットはありませんでした\n");
else
printf("最も頻度の大きいアルファベットは%cでその出現回数は%d回でした\n", max_index+0x60, max_value);
fclose(fp);
return 0;
}
[1] プロセス制御 [2] Linuxでは、多重アドレス空間(多重仮想記憶)を採用しており、 プロセスごとに別々の仮想アドレス空間を利用している。 以下のような手順でこれを確認しなさい。 ・二つのプロセスで、同じ番地に別々のデータが記録されている ・二つのプロセスのうち、片方のプロセスである番地にデータを書込んでも、 もう一方のプロセスの同じ番地には変化がない なお、特定の番地のデータを調べたり、その番地にデータを書込んだりするには、 C言語ではポインタを利用する。 [3] 環境 [3.1] OS: Linux [3.2] [3.3] 言語: C [4] 期限:週末 [5] その他の制限:
>>748 #include <iostream>
#include <iomanip.h>
using namespace std;
int main(){
int n;
cout << "Input n : ";
cin >> n;
if (n <= 0 || n >= 10){
cout << "Good bye" << endl;
} else {
cout << " ";
for (int i = 1; i <= n; i++) cout << setw(3) << i ;
cout << endl;
for (int i = 1; i <= n; i++){
cout << i;
for (int j = 1; j <= n; j++) cout << setw(3) << i * j;
cout << endl;
}
}
return 0;
}
762 :
デフォルトの名無しさん :2006/07/25(火) 22:32:18
>>731 です、遅くなってすいません、先生に祝日の定義を聞きました…
年によって変わるのは
成人の日(2000年からは1月の第2土曜日・それ以前は全て1月15日)
海の日(2003年から7月の第3月曜日・それ以前は全て7月20日)
体育の日(2000年から10月の第2月曜日・それ以前は全て10月10日)
天皇誕生日(1900〜1987年は4月29日
1988〜2030年は12月23日、それ以前は無くて良し)
それ以外は今の祝日と全部一緒の日にちで。この程度でいいよ、だそうです…
一生懸命難しいことを考えてくださったみなさま申し訳ないorz
じゃあなんで1800年からなんですかって聞いたら
深く考えずに適当作っちゃった、この授業でそんな難しい課題
だすわけないだろと…言われました。
いろいろ考えてくれた皆様ほんとにごめんなさい…
授業時にちゃんときいておくべきでした…
>>760 わかんないけど Segmentation Fault とか Bus Error とか出ないことを保証するやりかたって
あるのかねえ?
766 :
デフォルトの名無しさん :2006/07/25(火) 23:08:06
お願いします [1] 授業単元:計算機演習 [2] 問題文(含コード&リンク) 50文字以内の文字列をキーボードから入力させると, その文字列中に"ok"という部分文字列が含まれている場合は,"Yes" 含まれていない場合は,"No" と出力するプログラムを作成せよ。 ただし,"Yes" の場合はその出現回数も出力すること. [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 今週の金曜日 [5] その他の制限: なし
>>766 #include<stdio.h>
#include<string.h>
int main(){
char buf[51],*p=buf,*q;
int count = 0;
gets(buf);
while((q=strstr(p,"ok")) != NULL)
p=q+2,++count;
printf(count?"Yes %d":"No",count);
return 0;
}
769 :
765 :2006/07/25(火) 23:15:01
770 :
764 :2006/07/25(火) 23:17:23
すまそ。上764な。
>>731 のつづき。
765もおれだけど。。765はファイルスコープの変数つくってそれにアクセスしたら .data だか .sdata だかに
領域確保されるから複数プロセスで同一アドレスが保証されそうな希ガス。
連投すまん。fork()しろってことかもだ。
772 :
デフォルトの名無しさん :2006/07/25(火) 23:29:44
>>760 >・二つのプロセスで、同じ番地に別々のデータが記録されている
すまん、試してみたがこれを実現できねえorz
[1] 授業単元:情報 [2] 問題文(含コード&リンク): 課題1 次の仕様を満たすプログラムをC言語を用いて作成せよ: ・入力: 整数a、d、自然数n ・出力: 初項a、公差dの等差数列の初項から第nまでを全て 課題2 次の仕様を満たすプログラムをC言語を用いて作成せよ: ・入力: 非負整数を有限個(初めて負の数が入力された時点で打ち切り、その直前までの数を使う) ・出力: 入力された数の中にある偶数の個数と奇数の個数 課題3 ・入力: 自然数n≧2 ・出力: 入力された0,1,2…n-1の中でnと互いに素なものの個数 なお、mとnが互いに素であるとは、それらの最大公約数が1であることを言う。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Bcc5.5 [3.3] 言語:C [4] 期限:明日 17:00 [5] その他の制限: なし 宜しくお願いします。
>>773 これでいいんじゃね?
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv){
char buf[256] = {0};
strcpy(buf, argv[1]);
for(;;){
printf("%p : %s\n", buf, buf);
sleep(1);
}
return 0;
}
上をコンパイルして、ターミナル二つひらいて、片方で
./a.out aaaaa
もう片方で、
./a.out bbbbbb
とかやれば。保証はないけど、上のbufのアドレスは、、あず一致する。
× あず一致する。 ○ まず一致する。
つーか、バッファ取らなくても、argv[0] のアドレスが同じだろうな。
778 :
760 :2006/07/26(水) 00:32:13
>765 >769 >773 ご協力感謝します! mmap()とかは関係ないですかね? もうホントC苦手 助けて下され…
779 :
765 :2006/07/26(水) 00:33:33
>775 感謝!試してみます!
780 :
779 :2006/07/26(水) 00:34:39
↑ >779は>760です、失礼しました
c:16:8: warning: unknown escape sequence: '\211' エラーが出てしまうのですが、、 なんなのでしょう、、 たすけてください
これですべての要求を満たしたはず。 pidは同じ番地で異なる値が入る。fork()の仕様だけど。 valは子プロセスが値を書き換えたあと、親プロセスで表示しても値変化なし。 #include <stdio.h> #include <unistd.h> int main(void){ int pid; int val = 0; pid = fork(); if (pid == 0) { printf("child: pid:%08x=%d\n", &pid, pid); val = 1; printf("child: val:%08x=%d\n", &val, val); } else { printf("parent: pid:%08x=%d\n", &pid, pid); wait(NULL); printf("parent: val:%08x=%d\n", &val, val); } return 0; }
783 :
760 :2006/07/26(水) 01:03:54
セグメンテーション違反…
おちけつ。コマンドライン引数を与えるんだ。
785 :
デフォルトの名無しさん :2006/07/26(水) 01:22:49
正の整数n から1,3,5,…と順に奇数を引けるだけ引いた時、引けた奇数の個数が√n の整数部分になる。 このようにして、√n の整数部分を求める方法を女の子(めのこ) 平方という。 正の整数n を読み込み、女の子平方によって√n の整数部分を求めるプログラムを作りなさい。 main() { int n, x, f; n=200; x=n; for (f=1; f<0 ; f++) { x = x-((f*2)-1); if (x < 0) { break; } } f--; printf("√%dの整数部分は%d。", n, f); } これで√200の整数部分が0になってしまうんですがなぜでしょう? 救って下さい。期日今日
786 :
760 :2006/07/26(水) 01:31:42
皆に感謝。・゚・(ノ∀`)・゚・。 賢人たちよ、ありがとう
f<0ってループに入らないけど
>>763 そのクソ教師の名前を晒したら教えてやる。
>天皇誕生日(1900〜1987年は4月29日
ありえねえ。
f>0
同じ授業だ>785 オネガイ一問目の答えも教えて(;;)
793 :
785 :2006/07/26(水) 01:39:14
>>787 14と表示されました。
本当にありがとうございましたー!
おまえら必死すぎて微笑ましいな。
795 :
785 :2006/07/26(水) 01:58:24
>>792 まず、おつりを10000で割る。→福沢先生の枚数
tmpには余りをぶちこんどく。
次はその余りを5000で割る。→5000円札の枚数
tmpにはその余りを。
今度はその余りを1000でry
これを5円玉まで繰り返せば最後に余ったのが自動的に1円玉の枚数だ
ぽまえもK大学でおk?
俺へぼだからあんまあてにすんな
>>795 アリガトンクス^^できたぽ
そだよ、あのTAの人絶対小さいころガリガリ君って呼ばれてたよねww
と内輪ねたスマソ
みなさんと795サンにとても助けられました。
賢人たちよ、ありがとう
>>791 有難うございます!助かりました〜。
でも課題3が
不要な}
ってエラーが出てしまうんですが、何処が不要なのか分かりません…
解いてもらった上にこんなこと言ってご迷惑かけますが、修正お願いできませんか?
よろしくお願いしますっ(^-^)
>>797 うちじゃエラーでないのでなんともいえん。つづきでうpしたらみないこともないが。
ちなみに提出時は課題1,2,3で別々のプログラムにわけたほうがいいお。
>>753 #include <stdio.h>
#include <math.h>
#define PI 3.1415926535897932
#define CLEAR() printf("\x1b[2J")
#define LOCATE(x,y) printf("\x1b[%d;%dH",y,x)
#define SCREEN_H 80
#define SCREEN_V 80
int input_decimal(int min, int max) {
char buf[1024]; int n;
for (;;) {fprintf(stderr, "Type an number between %d and %d.\n", min, max);
if (fgets(buf, sizeof (buf), stdin) == NULL) continue;
n = atoi(buf);if (n >= min && n <= max) break;
}
return n;
}
void circle(int n) {
double r = n/2.0;
double step = PI*2/180;
double d, x, y;
CLEAR();
for (d = 0; d < PI*2; d += step) {
x = cos(d) * r; y = sin(d) * r;
LOCATE(SCREEN_H/2+(int)(x+.5), (SCREEN_V/2+(int)(y+.5))/2);
putchar('#');
}
fflush(stdout);
}
int main(void) { int n = input_decimal(2, 79); circle(n); }
>>729 #include <stdio.h>
void quad(double a, double b, double c)
{
double d = b*b-4*a*c;
printf("a = %5.2lf, b = %5.2lf, c = %4.2lf\n", a, b, c);
if (d > 0) {
printf("実数解 : x1 = %5.2lf, x2 = %5.2lf\n",
(-b+sqrt(d))/(2*a),
(-b-sqrt(d))/(2*a)
);
} else if (d == 0) {
printf("重解 : x = %5.2lf\n", -b/(2*a));
} else {
printf("虚数解 : 実数部 = %5.2lf, 虚数部 = %5.2lf\n",
-b/(2*a), sqrt(-d)/(2*a));
}
}
int main(void)
{
double a,b,c;
puts("2次方程式の3つの係数を入力してください");
while (scanf("%lf %lf %lf", &a, &b, &c) != EOF) {
if (a == 0) { puts("係数 a は 0 意外でなければなりません"); continue; }
quad(a, b, c);
}
return 0;
}
>>802 暇なときは回答もするが、忙しいと問題をさっと眺めるだけ。
>729の問題は、わざわざ画像だと言うから何かと思って見てみたのだ。
助けてください、、急に変なエラーが出るようになった、、 こんなエラーです $ gcc otsuri.c /cygdrive/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccSCn32t.o:otsuri.c:(.text+0x288): u ndefined reference to `_ptintf' collect2: ld returned 1 exit status 問題は (1) 品物の値段とお客の支払った金額を読み込んで、おつりが必要なときには、その額を貨幣の種類と枚 数で表示するプログラムを作りなさい。
続き 作ったプログラムはこれです #include <stdio.h> main() { int price, pay,n; printf("おつりを計算します、品物の値段を入力してください\n品物の値段="); scanf("%d", &price); printf("支払われた金額を入力してください\n支払われた額="); scanf("%d", &pay); n=pay-price; if(n<0){ printf("お金が足りまひぇん"); } else{ printf("10000円の数=%d",n/10000); printf("5000円の数=%d",n%10000/5000); printf("2000円の数=%d",n%5000/2000); printf("1000円の数=%d",n%2000/1000); printf("500円の数=%d",n%1000/500); printf("100円の数=%d",n%500/100); printf("50円の数=%d",n%100/50); ptintf("10円の数=%d",n%50/10); } } ヘルプミー^^;
綴り間違いを直せ。どこかで"printf"じゃなく"ptintf"になってる。
808 :
729 :2006/07/26(水) 10:19:35
>>807 出来た!!
ありがとう(;;) 今日提出なんです、ホントに助かりました、、
誰かお願いしますヽ(´Д`;≡;´Д`)丿 [1] プロセス制御 [2][任意] mmap()を使うと、 複数のプロセス間で仮想アドレス空間の一部を共有することができる。 このようなプログラムを作成し、 実際に仮想アドレス空間の一部が共有されていることを確認しなさい。 [3] 環境 [3.1] Linux [3.2] gcc 3.4 [3.3] C [4] 期限:週末
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): サーバープログラムを作りエンゲル係数を求めよ (家計の消費支出と飲食費を入力しエンゲル係数を求める) [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語:どちらでも可 [4] 期限: 2006年07月26日まで [5] その他の制限: 特になし どうか、よろしくお願いします。
こりゃまた珍妙な。
>> 810 こんなんでいいのかな?匿名メモリマッピングで親子のプロセスが交互に値を増やすのを確認できます。 #include <stdio.h> #include <sys/types.h> #include <sys/mman.h> #include <unistd.h> int main(void) { pid_t pid; int i; int *mapped_ptr = (int *)mmap(NULL, /* start */ sizeof (int), /* length */ PROT_READ | PROT_WRITE, /* prot */ MAP_SHARED | MAP_ANONYMOUS, /* flags */ -1, /* fd */ 0 /* offset */ ); if (mapped_ptr == MAP_FAILED) { perror("mmap"); return 1; } *mapped_ptr = 0; if ((pid = fork()) == -1) { perror("fork"); return 1; } for (i = 0; i < 5; i ++) { while ((*mapped_ptr&1) == (pid==0)) usleep(200000); (*mapped_ptr) ++; printf("%s: Incremented to %d.\n", pid == 0 ? "Parent":"Child", *mapped_ptr); } if (pid != 0) wait(NULL); munmap(mapped_ptr, sizeof (int)); return 0; }
うは pid == 0 ? "Parent":"Child", *mapped_ptr); これは pid != 0 ? "Parent":"Child", *mapped_ptr); のまちがいな。
>>814 ホームページ上で入力された数値を計算してその結果を表示させる
みたいな感じのやつです
CGIをCで作るってことか。正気とは思えんな。
Σ(゚Д゚;≡;゚д゚) え?
ここはやはりエンゲル係数計算プロトコルの策定から始めるべきではないだろうか
当然UTF8だよな?
CGI作ったけど面白そうだからしばらく静観するw
分散コンピューティング対応プロトコルでお願いします。
812はどんな流れででた課題なのかちゃんと説明したほうがいいよ。期限切れのようだが。
827 :
812 :2006/07/26(水) 18:57:27
先生に頼んで期限を2日のばしてもらいました。 この課題はオリジナルのWWWサーバの作成で、 TCPによるサーバプログラムを作成せよという課題でした。
こっちともう1つ、どっち使えばええのん?(スレ。
ココ山岡
>(その筋の人は一つ抜き法と呼ぶそうです) ワロタ
>>812 #include <stdio.h>
#include <string.h>
#include <netdb.h>
#define PORT 8888
void httpserver(int fd) {
char buf[4096], *p;
int t = 0, f = 0;
FILE *fp = fdopen(fd, "r");
while (fgets(buf, sizeof (buf), fp) != NULL) {
if (buf[0] == '\r' || buf[0] == '\n') break;
if ((p = strstr(buf, "t=")) != NULL) t = atoi(p+2);
if ((p = strstr(buf, "f=")) != NULL) f = atoi(p+2);
}
if (t == 0) { p = "ERR\r\n"; send(fd, p, strlen(p), 0); }
else { sprintf(buf, "%d", 100 * f / t); send(fd, buf, strlen(buf), 0); }
close(fd);
}
int main(void) {
int sock;
struct sockaddr_in server;
int i = 1;
sock = socket(AF_INET , SOCK_STREAM , 0);
setsockopt(sock , SOL_SOCKET , SO_REUSEADDR , (char *)&i , sizeof(int));
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(PORT);
if (bind(sock , (struct sockaddr *)&server , sizeof (server)) < 0) { perror("bind"); return 1; }
listen(sock , 5);
for (;;) httpserver(accept(sock, NULL, NULL));
return 0;
}
改定。ちゃんと入力フォームを出すようにした。 頭でこれを追加。 #define FORM "<html><body><form>TOTAL<input type=text name=t><br>FOODS<input type=text name=f><input type=submit></body></html>" if (t == 0) { p = "ERR\r\n"; send(fd, p, strlen(p), 0); } のかわりに if (t == 0) { p = FORM; send(fd, p, strlen(FORM), 0); }
>>832-833 ありがとうございます!
学校じゃないとできないんで、さっそく明日やってみます!
>>834 お前何度もこのスレにお世話になってるだろ?
いい加減cygwin入れろよ。
家でプログラミングできない環境で、宿題なんかできるはずもないしw
>>835 わかりました!
いつもありがとうございます!
>>836 いや、答えてるのは複数人だから。今回は俺じゃねーし。
>>837 いいんだよ。みんな「宿題スレの中の人」さ。
>>830 (#^ω^)ビキビキ
難しくて最後まで読めなかったお
[1] 授業単元: 卒業研究
[2] 問題文(含コード&リンク):下に記載
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン VC 6.0等
[3.3] 言語:どちらでも可(出来たらC++)
[4] 期限: 2006年08月01日まで
[5] その他の制限: 特になし
宿題というか、卒業研究なのですが
「ニューラルネットワークをバックプロパゲーション法(BP)で学習させて、
その学習させたネットワークを使って出力を出す」
というプログラムが作りたいです。
ttp://www.sist.ac.jp/~suganuma/cpp/3-bu/18-sho/18-sho.htm#e-18-4 ここにあるBP法は、VC++で動いたのですが、
このプログラムだと、学習のみで、テストをすることが出来ません。
学習させたネットワークを使って出力を出したいのですが・・・。
もう、藁にもすがる思いです。
よろしかったら、どなたかお分かりになる方、よろしくお願いします・・・。
宿題ならとりあえず提出すればそれでいいだろうけどさ 卒研とか自分でやらないと意味ないんじゃ?
843 :
810 :2006/07/26(水) 23:07:19
>815-816 " ゚☆,。・:*:・゚★o(´▽`*)/♪Thanks♪\(*´▽`)o゚★,。・:*:・☆゚ "
844 :
830 :2006/07/26(水) 23:28:25
>>839 すみません…
単純化すればただ値を代入して左辺と右辺を比べるだけというものなんで、
文章の説明の仕方がへたくそなのが大きいと思います。
>>844 というか何を識別したいのかさっぱりなんだお
識別器というからには何らかの基準で学習行うんだろけど、何の識別器かわからないんじゃ手の打ちようがないお
846 :
830 :2006/07/26(水) 23:48:56
>>846 何も考えずにSVMとかにしちゃっていいのかお?
線形識別可能とか非線形もとか何か言ってなかったかお?
849 :
830 :2006/07/27(木) 00:00:06
指示としては2通りの方法をプログラムにして、
誤識別率を推定せよ、ということだったので、おそらく何も考えずにやっちゃって構わないと思います。
線形識別可能や非線形といったことには触れていなかったはずです。
>>847 一番分からないのは出た値を最終的にどう判断すればいいのかが…
とりあえず左辺と右辺との値を算出して、それを元に何とか考えようかと思ったのですが…。
学のある奴らは難しいことやってんだな 俺は高卒だから恥ずかしいわw
851 :
830 :2006/07/27(木) 00:12:37
この場における最も恥ずかしい存在が、 自力で解決できない私であることは間違いないですから…。
>>849 ごめんお、教師有学習と勘違いしてたお
一つ抜き法でぐぐっててきとーに理解したお
気分が向けば、てきとーな理解でてきとーなプログラム書くお
正直、その筋の人を呼んできたほうがいいと思うお
854 :
830 :2006/07/27(木) 00:22:53
とにかく気分が向いてくれるのを願ってます…ひたすら。
>>830 識別器を設計する2つの方法の1つ目は、・・・
最終的に全部の要素について判定するというものです。
もう1つの方法は、・・・
全部の要素がテストサンプルになるまで繰り返すというものです。
日本語おかしいお
856 :
830 :2006/07/27(木) 08:35:20
1つ目の設計方法は与えられた2つのクラスの全要素(30個の8次元ベクトル)で共通のものを設計、 そこに一つ一つ代入して識別、 2つ目の設計方法は1要素を抜き出してそれ以外(29個)で設計、 そこにその抜き出した要素を代入して識別、 次に一度抜き出した要素とは別の要素を抜き出してそれ以外(29個)で設計、 そこに抜き出した要素を代入して識別…ということです。 すみません…。
問題文は難しいけど、右辺とサ変を実装すればいいってことか?
し し する する すれ しろ!
859 :
デフォルトの名無しさん :2006/07/27(木) 10:24:09
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):下に記載 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:visual studio2003 [3.3] 言語:C++ [4] 期限:明日の朝まで [5] その他の制限:特になし キーボードからの入力で指定されたファイルに書かれている数式を読み込み 数式を計算した結果を表示する。ただし、数式に含まれる可能性がある記号は 「0123456789*/+-()」のみ(すなわち整数と四則演算と括弧だけ)で256以内とする。 また、計算結果が整数とならない場合は浮動小数点で計算結果を表示する。 どなたかお願いしますつ-;)
最近の宿題って内容の割に期限が短くないか?
多重括弧があるとものすごく面倒だな
862 :
デフォルトの名無しさん :2006/07/27(木) 10:34:23
すみません。 一週間以上前に出た課題なのですが自力でやるつもりが、、、 結局できなくて、ぎりぎりに助けを求める感じになってしまいました。 _| ̄|●
中置記法から後置記法に変換して計算って方法なら過去スレにあるのを組み合わせてできるかもわからんね
>>862 で、自力でどこまでやったの?
逆ポーランド記法とかそのパージングとか直接法とかはやってみたの?
やるつもりが、、、ということはやってないんだろ?氏ねばいいよ。
867 :
orz :2006/07/27(木) 11:46:11
[1]授業単元;レポート [2]問題文(含コード&リンク)西暦と月を入力し、その月のカレンダーを出力してください。 曜日は「月、火、水、木、金、土、日、月、火、水・・・」と周期的に繰り返されます。もしある月の一日が月曜日なら 、次の月曜日は八日、その次の月曜日は十五日と七日ずつ違ってくる。つまり一日が日曜日である月のday日が何曜日であるかはdayを七で 割った余りを計算することでわかる。例えば十八日の場合七で割った余りが四なので木曜日になります。 プログラムの構成:西暦yearと月monthを入力します。 西暦year年month月一日が何日目(days)かを計算します。 daysを七で割った余りに応じて空白を出力し、その後1,2,3...と出力します。このとき七つのデータを出力するごとに改行して頂ければ..... [3]環境:C言語です [4]お願いします。スルーしないでください。助けてくださいorz 配列までしかならっていません。関数はまだ習っていないです。 期限:7月31日です。お願いします。
>>866 お主はこのスレに向いてないと思うでござる。
>>867 説明の意味が分からない。。。
その月の一日の曜日が分かれば、あとはなんにも計算する必要はないと思うが。
870 :
デフォルトの名無しさん :2006/07/27(木) 12:26:24
>>867 その月の1日の曜日を計算しなくてはいけないのが非常に面倒
>>870 mktime()で、年月日から時間を作って、localtimeで、struct tmに戻せば、
曜日もセットされてるんじゃない?
872 :
デフォルトの名無しさん :2006/07/27(木) 12:30:32
if(k - 1) puts("OK"); else puts("NG"); であるとき,どういう場合に NG と印字されるか説明せよ. char s[] = "foo"; と,char *p = "bar"; の二つの初期化の違いを述べよ. call by reference と関数の引数との関係を説明せよ. s *= (x > y) ? a : b; を if 文を用いて書き直せ. k = 0; while (k < 100){ k++; } を,永久ループを用いて書き直せ. 整数変数 a, b にそれぞれ 3 が代入されているとき, c = a--; と d = ++b; によって,整数変数 a, b, c, および d には何が代入されるか述べよ. 静的変数と自動変数の違いについて述べよ. 'z' と "z" のそれぞれの違いを述べ,占有するメモリのサイズを答えよ. すいません 教えてください
875 :
デフォルトの名無しさん :2006/07/27(木) 12:33:52
876 :
デフォルトの名無しさん :2006/07/27(木) 12:55:17
[1] 授業単元: Cプログラミング [2] 問題文 if(k - 1) puts("OK"); else puts("NG"); であるとき,どういう場合に NG と印字されるか説明せよ call by reference と call by reference について両者の違いを述べよ k = 0; while (k < 100){ k++; } を,永久ループを用いて書き直せ 静的変数と自動変数の違いについて述べよ. double型のポインタ変数と int型のポインタ変数 は,それら自身のサイズについて,どちらがどれだけ大きいか述べよ 次の記述において,誤り3を下線で示し,どこが悪いかを説明して,正しいコードに直せ. double x = 1 / 3; int k = 3, x[k]; char x[9] = "hoge hoge"; char *p[10] = "test"; char *s = "foo"; *s = 'a'; [3] 環境 [3.1] Linux [3.3] 言語: C [4] 期限: 14:35からテストです。 お願いします。
>>876 double x = (double)1/(double)3; // これは間違いなのか?微妙
int k =3, x[3];
char x[] = "hoge hoge"; // intの配列のxと、名前がかぶってるのは無視
char *p = "test"; // char p[] = "test"; or char *p[10] = { "test" }; どれが正しいのか微妙
char s[] = "foo"; s[0] = 'a'; //たぶんこういうこと?
>>876 (k-1)が否零のとき。
どう見ても同じです。本当にあ(ry
k=0;while(1)if(++k>100)break;
どう見ても同じです。本当にあ(ry
どう見ても誤りが4カ所ある。目的不明なのでどう直せばいいのかも不明。
>>876 うえにもあったのか、
■NGと印字される時
k-1が0のとき
( kが1(か、1にきわめて近い時) )
■call by valueのまちがい?
call by reference : オブジェクトそのもの(へのポインタ)をわたす
call by value : オブジェクトのコピーを渡す
■永久ループ
for( k=0;;k++ ) if( 100 <= k ) break;
■静的変数と自動変数(自信ないけど、この回答だと、少なくとも△くらいはもらえると思う)
動的変数は制御がブロック内にあるときだけ有効、制御がブロックから外れるとなくなる
静的変数は、プログラム実行中はずっとある。
■double型のポインタとint型のポインタ
ポインタの大きさは一緒
( これって規格で補償されてるんだっけか?)
結論 問題には番号を付けろ!回答しにくいっ!!
882 :
デフォルトの名無しさん :2006/07/27(木) 13:18:06
「1」double x = 1 / 3; 「2」int k = 3, x[k]; 「3」char x[9] = "hoge hoge"; 「4」char *p[10] = "test"; 「5」char *s = "foo"; *s = 'a'; わかりづらくて、すいません 5個問題があってそれぞれの間違いを示す問題です。
883 :
デフォルトの名無しさん :2006/07/27(木) 13:18:07
>>867 カレンダー状に出力するのが面倒だからあきらめていいかな
まあ、冷たいカルピスでも飲んで落ち着けや
885 :
help ◆g/ZMVdytmo :2006/07/27(木) 13:19:22
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 問1、整数型変数iにすでに1以上5以下の値が読み込まれているものとする。 switch分を用いて、iの値が5ならfive、4ならfour、3ならthree、2ならtwo、1ならoneと印刷するプログラムの一部を答えなさい。 問2、上と同じ問題で、iの値が例えば5ならfive four three two one、3ならthree two one と、カウントダウンしていくように印刷するには、(a)の回答の何処をどのように変えたらよいか? (変数部分だけを答えればよい) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2006/07/27 PM2:30まで [5] その他の制限: 特になし
887 :
デフォルトの名無しさん :2006/07/27(木) 13:22:44
>>884 カルピスねえ
精子のむおwwwwwwwwwwwwwww
>885 ■一部? switch(i) { case 5: printf("five"); break; case 4: printf("four"); break; case 3: printf("three"); break; case 2: printf("two"); break; case 1: printf("one"); break; } ■変数?? 案1:printfのパラメータを"five four three two one"とかにかえる 案2:breakをとっぱらう 案3:swichのまえにfor( ; 0 < i; i-- ) を置く
>>889 ごめんなさい。
メインプログラムのことです。
>>889 変数部分ではなくて変更部分でした
何度もすいません
>>890 ,891
まあ、
>>889 のまま提出してもOKとおもう。
問2の方は、どれか一つに絞った方がいいかな。案3がおすすめ
switch文の勉強なんだろうから、案2の方がいいと思うが・・・
>>877 自分で見直してみたが無様なコードだな...
>>892 どうもありがとうございます。
もうひとつ如何しても分からないのがあるのでお願いしたいのですが…
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
問1、float型の配列要素a[0]〜a[n-1]のあいだの最大値maxと、最小値minを求めて返すvoid型の関数max_minのプロトタイプ宣言を書きなさい。
問2、関数max_minの呼び出しの例を1つ書きなさい。
問3、ダミー要素付き(headerという名の構造体変数)の連結リストによって実現されたスタック(空でないと仮定する)に、関数mallocで確保され、ポインタnewで指されている新しい要素を積む(pushする)ために必要なポインタの付け替えをC言語で書きなさい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006/07/27 PM2:30まで
何度もすいません。
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): ある消費者金融で、gankin円を月利riritsu%の福利で借りた。毎月hensai円ずつ返していくものとする。 gankin(int型), riritsu(float型), hensai(int型) の3つの数値を入力して、返済額合計goukeiを求めて出力するプログラムを作ったら、その一部は次のようになった。 while, if の中、gankin, goukei の後の部分を埋めよ。 [3] 環境 [3.1] OS:Vine Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2006/07/27 PM2:40まで
>>896 それ、ホントに問題全文?
なんか条件がよくわかんない。
不明な点は脳内で補完したけど...文句言わないでよ
問1:
void max_min( const float* a, int n, int* max, int* min );
問2:
#define SIZE 100
float array[SIZE] = { ... };
int x, y;
max_min( array, SIZE, &x, &y );
問3:
header -> next = new;
new -> prev = header;
new -> next = 0;
header = new;
こういうこと????
プログラムを忘れていました。 goukei = 0; while(){ gankin = gankin*(1+riritsu*0.01); /* 円未満は切り捨て */ if(){{ goukei += hensai; gankin ; } else{ goukei ; gankin = 0; } }
>>898 はい、これが全文なんです…
笹井奈琴さんを信じます!
>>898 floatの配列の最大値と最小値をintで受けてどうする。
おまけに、変数名xだとかyだとかって、何考えてるんだ?
>>899 >gankin円を月利riritsu%の福利で借りた。
問題を書いた香具師が間抜けなのか書き写した香具師が阿呆なのかどっちだ?
>>901 ああ、値そのものを返すのか。
( インデックスを返すつもりになってた )
xとかyとかは、まあ...「仮引数と実引数の区別ついてますよ!」ってアピールwww
>>900 問1:
void max_min( const float* a, int n, float& max, float& min );
で、
問2:は、int x, y;をfloat x, y;になおす。
904 :
デフォルトの名無しさん :2006/07/27(木) 14:17:24
う
goukei = 0; while(gankin>0){ gankin = gankin*(1+riritsu*0.01); /* 円未満は切り捨て */ if(gankin>hensai){ goukei += hensai; gankin -=hensai; }else{ goukei += gankin; gankin = 0; } }
>>902 福利→複利でしたね
写し間違えました…orz
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): (a)曜日を含む日付(年月日)を表すことのできる構造体date_tを定義しなさい。 ただし、曜日はSun,Mon....Satのいずれかで表すものとする (b)date_t型の変数dateを宣言し、その年は2006,月は7であることを仮定して、 日と曜日が一致していればYesと、一致していなければNoと出力する部分を 書きなさい。ただし、2006年7月1日は土曜日であった。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 30分 意味がわかりません助けてくださいお願いします!
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 次に示す挿入ソートの内側の繰り返しに [j >= 1] という条件をAMDで加える必要がある理由を、どういう場合(例示でもよい)にそれが必要になるかも含めて述べなさい。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2006/07/27 PM2:45までです さっぱり分かりません。 ご教授お願いします。
プログラムです。 void insertion_sort( int a[], int a) { int i, j, t; for(i = 1; i < n; i++){ j = i; while( j >= 1 && a[j-1] > a[j] ){ t = a[j]; a[j] = a[j-1]; a[j-1] = t; j--; } } }
期限が15:00までに延長されました さすがに時間が厳しいとでしょうけどお願いします
914 :
デフォルトの名無しさん :2006/07/27(木) 15:03:17
【質問テンプレ】 [1] 授業単元:c言語プログラミング [2] 問題文(含コード&リンク): これまでに作成した3種類のソート 単純選択法、単純交換法、単純挿入法について、それぞれを関数化しなさい。 大きさ20の配列keyを用意し、キーボードから値を入力する。 この配列keyの要素を、昇順にソートする 各ソートの途中経過を画面に出力すること。 また、最後に各ソートの比較回数を画面に出力すること。 【ヒント】 キーボードから配列にデータを入力する関数 input_array 配列の内容を画面に出力する関数 output_array 単純選択法を行う関数 linear_sort 単純交換法を行う関数 bubble_sort 単純挿入法を行う関数 insertion_sort メイン関数 [3] 環境 [3.1] OS: xp [3.2] visual studio2003 [3.3] 言語: C [4] 期限: 今月末まで [5] その他の制限:配列ループポインタソート関数
j >= 1なんて不要なんじゃね? i == 1から始まってるし。強いて言えば、配列がa[0]から始まっていると いう事か。でもそれじゃ理由にならんね。C言語では当たり前だし。
先頭に挿入する場合、それより前と比較するのを防ぐためじゃないか?
917 :
デフォルトの名無しさん :2006/07/27(木) 15:14:24
[1]コンピューティングT [2]10進の整数を入力し、これをn進(1<n<10)の整数に変換するプログラムを作れ。 int を使う。 例.10進整数92を7進数にする場合、94と7を入力すると163が出力されるようにする。 ヒント.94を7進表記する場合 94÷7=13…3なので、3を配列要素a[0]に代入する。 次に、13÷7=1…6なので、6を配列要素a[1]に代入する。 同様に、1÷7=0…1なので1を配列要素a[2]に代入する。 このように商が0になるまで続け、配列要素を逆順に表示する。 [3]Windows C++ [4]2006/7/31 [5]習った制御構造は if else for while だけです。 return や break は習っていません。 配列はほんのさわりだけ習いました。 超初心者ですが、よろしくお願いします。
>>896 >最大値maxと、最小値minを求めて返すvoid型の
ポカーン(AA略
>>917 #include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[100];int i,n;printf("10進整数:");fgets(tmp,sizeof(tmp),stdin);
i=atoi(tmp);printf("(1<n<10):");fgets(tmp,sizeof(tmp),stdin);n=atoi(tmp);
printf("%s\n",itoa(i,n));return 0;}
>>919 最後の行訂正。
itoa(i,tmp,n);printf("%s\n",tmp);return 0;}
>>917 #include<stdio.h>
int main(){int a[256],x,n,i=0;
scanf("%d",&x);scanf("%d",&n);
if(n<1||10<n)return 1;
while(x>=n){a[i]=x%n;x/=n;i++;}
a[i]=x;while(i>=0){printf("%d",a[i]);i--;}
return 0;}
なんか急に宿題出すぎてどれが解決したのかしてないのかもうわからない
923 :
917 :2006/07/27(木) 16:01:27
>>921 >>919 すごく早いレス、本当にありがとうございます。
確かに作動できました。
できれば return を使わないでやりたいのですが、それは可能ですか?
習ったものだけで出来ると先生は仰っていたので。
まとめサイトがあればいいんじゃない? wikiとか
>>923 #include<stdio.h>
main(){int a[256],x,n,i=0;
scanf("%d",&x);scanf("%d",&n);
if(1<n&&n<10){
while(x>=n){a[i]=x%n;x/=n;i++;}a[i]=x;
while(i>=0){printf("%d",a[i]);i--;}}}
>>924 はい、言い出しっぺの君がやることに決定
>>923 >できれば return を使わないでやりたいのですが、それは可能ですか?
mainは値を返さなければならない。
928 :
917 :2006/07/27(木) 16:22:24
>>925 本当に早いですね。助かりました。
ありがとうございました。
>>922 未解決と思わしき課題を全部拾い上げて来い。
お前がだ。
930 :
830 :2006/07/27(木) 20:29:33
>>857 そうしていただけると、兎にも角にも次のステップに進めるので、
そうしていただけると極めてありがたいです。
>>931 『これまでに作成した3種類のソート 』を晒せ
よろしくおねがいします [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): @ファイルから40個の数値を読み込み, バブルソートによって数値を降順に並べ替えるプログラムを作成し, 23番目に大きい数を出力するプログラム ○○○.dat を入力データとして使用すること Aポインタを用いてswap関数を定義し、 数値を降順に並べ替えるクイックソートを実行し、 8番目に大きい数値を出力するプログラム ○○○.dat を入力データとして使用すること [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 明日まで [5] その他の制限:特になし
以降、ソートの宿題禁止で。
>>830 識別器の式は与えられてるものなのかお?
(たぶん)事後確率が最大で出てくるクラスと判別するんだと思うんだが
これだと何を指標に判別すればよいのやら
右辺>左辺の場合どっちのクラスで、左辺>右辺の場合どっちなのかも書いておくれ
936 :
830 :2006/07/27(木) 23:16:55
右辺<左辺 → x∈A1 右辺>左辺 → x∈A2 とあります。 書くのを省いてしまってすみません。
>>937 です。
単純挿入法のプログラムの方はソートとしてはできあがっているのですが、かなり修正が必要です
そこで挫折してしまいました
そこまで自分でやれるなら最後までやったらどうだ?
>>938 比較回数だからlinear_sortのcoutの位置が違う
for(j=i+1; j<SIZE; j++)
{
if(p[k] > p[j])
k = j;
count++;
}
tmp=p[i];
p[i]=p[k];
p[k]=tmp;
for(j=0;j<SIZE;j++)
printf("%d ",p[j]);
↑はcoutじゃなくてcountね
942 :
ど素人 :2006/07/28(金) 02:12:37
前期の追試です。この2問に単位がかかっています。ぜひ、お願いします。 2.通常プログラムカウンタはプログラムの実行にしたがって一定の大きさだけ増えていく. しかし,時に,プログラムカウンタに直前の値とは大きく異なる値がセットされる 時がある.それはどんな時か? 3.次のプログラムは何を行うプログラムか.簡単に説明しなさい.また, 結果を得るまでに,A[k]==aの比較が行われた回数を書きなさい. A=new Array(3, 8, 19, 20, 22, 24, 45); i=0; j=A.length-1; a=19; k=Math.floor((i+j)/2); while(i<=j){ if(A[k] == a){ break; } else if(A[k] > a){ j = k - 1; } else{ i = k + 1; } k = Math.floor((i+j)/2); } if(i>j) k=-1; document.write(a," ",k);
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): ある整数をキーボードから入力したとき 整数を引数として,その整数が素数ならば 1 を値として返し, 素数でないならば 0 を値として返す関数に書き換えなさい. その関数を用いて, ある整数をキーボードから入力すると1からその整数までの素数の数を出力するプログラムを作成しなさい [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 今日 おねがいします
>>943 #include<stdio.h>
int sosu(int n){int i;
if(n<2)return 0;
for(i = 2; i < n; i++)
if(n % i == 0) return 0;
return 1;}
int main(){int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
if(sosu(i))printf("%d ",i);
return 0;}
2.割り込み、割り込みから復帰、ジャンプ、故障、電源投入、パルプンテ
>>942 これないと動かないと講師に注意しとけ
#include <iostream>
using namespace std;
class Array {
private:
int array[8];
public:
Array() {}
Array(int a, int b = -1, int c = -1, int d = -1,int e = -1, int f = -1, int g = -1, int h = -1) {
array[0] = a; array[1] = b; array[2] = c; array[3] = d;
array[4] = e; array[5] = f; array[6] = g; array[7] = h;
for (length = 0; length < 8; length ++) if (array[length] == -1) break;
}
int operator[](int index) { return array[index]; }
int length;
};
struct Math {static int floor(int n) { return n; } };
Math Math;
struct Document {static void write(int a, char* s, int k) {cout << a << s << k << endl;}
};
Document document;
#define new
949 :
デフォルトの名無しさん :2006/07/28(金) 03:41:43
今日提出の課題なんですが、さっぱりわからなくて焦ってます! 教えて下さい!お願いします! ABCDの4人が一列に並ぶ方法は、全部で4!=24通りある。その24通りを全て表示する関数 make_pattern を作成せよ。ただし、printf文を10回以上使ってはいけない。 ヒント:4重ループを作成し、ある条件を満たす時にのみ並びを表示する。
ひまだから作ってみた。 #include <stdio.h> #include <stdlib.h> static int is_gaishutsu(int *buffer, int size, int number) { for (--size; size>=0; --size) if (buffer[size] == number) return 1; return 0; } static void make_pattern_sub(int *buffer, int radix, int size, int index) { int i,j; if (index >= size) { for (i = 0; i < size; i ++) putchar('A' + buffer[i]); putchar('\n'); return; } for (i = 0; i < radix; i ++) { if (is_gaishutsu(buffer, index, i)) continue; buffer[index] = i; make_pattern_sub(buffer, radix, size, index+1); } } void make_pattern(int radix, int size) { int *buffer = malloc(sizeof (int) * size); make_pattern_sub(buffer, radix, size, 0); free(buffer); } int main(void) { for (;;){for (;;){for (;;){for (;;){ make_pattern(4, 4); goto END;}}}} END: return 0; }
スルーされると悲しいので自演しとく。 > for (;;){for (;;){for (;;){for (;;){ make_pattern(4, 4); goto END;}}}} ちょw
printfが使えないなら、putcharを使えばいいじゃない void make_pattern(void){ int i, j, k, l; for(i=0;i<1;i++)for(j=0;j<1;j++)for(k=0;k<1;k++)for(l=0;l<1;l++) if(i==0){ putchar('A');putchar('B');putchar('C');putchar('D'); putchar('A');putchar('B');putchar('D');putchar('C'); 以下略 } } printfが使えないなら、putcharを使えばいいじゃない
そのヒントを真に受けると以下のようになるが、はっきりいうと問題出した講師を見下していいと思うぞ。 #include <stdio.h> void make_pattern(void) { int i, j, k, l; char letters[] = "ABCD"; for (i = 0; i < 4; i ++) { for (j = 0; j < 4; j ++) { for (k = 0; k < 4; k ++) { for (l = 0; l < 4; l ++) { if (((1<<i)|(1<<j)|(1<<k)|(1<<l))==0x0f) { printf("%c%c%c%c\n", letters[i], letters[j], letters[k], letters[l]); } } } } } }
N人の時はどう書けばよいのでしょうか?
阿呆ですか?
958 :
デフォルトの名無しさん :2006/07/28(金) 08:08:01
みなさんありがとうございます!
いつの間にか寝てました。。
>>953 この講師が厄介でO阪大学を首席で卒業したらしく、頭が悪いうちの生徒はいつも見下されてるんです。。
953の if (((1<<i)|(1<<j)|(1<<k)|(1<<l))==0x0f) { これを if (i!=j&&i!=k&&i!=l&&j!=k&&j!=l&&k!=l) ( にしとくと目立たない模範解答になるよ。
960 :
デフォルトの名無しさん :2006/07/28(金) 08:30:56
>>959 ありがとうございます!
ホントに助かりました!!
>>958 #include <stdio.h>
int main()
{
printf("ABCD\nABDC\nACBD\nACDB\nADBC\nADCB\nBACD\nBADC\nBCAD\nBCDA\nBDAC\nBDCA\nCABD\nCADB\nCBAD\nCBDA\n"
"CDAB\nCDBA\nDABC\nDACB\nDBAC\nDBCA\nDCAB\nDCBA\n");
return 0;
}
これで提出しちゃえ
出題者のセンスを疑うなぁ
横20cm、縦30cmの長方形の台を考え、左下の隅を原点(0,0)とする。 台の上には(10cm,27cm)の位置に半径1cmの玉があり、 時刻0に(x,y)(0≦x≦20,0≦y≦30)の位置から質点をθ(0≦θ≦2π)の角度に 速度v(cm/sec)で突き出すとする。台には摩擦はないものと仮定し、壁面でも エネルギーを失うことなく、入射角=反射角を満たしつつ跳ね返るものとする。 【問題】引数(x,y,θ,v,T)に対して、もし質点がT秒以内で玉に衝突するなら 衝突するまでの時間を秒単位で、衝突しないなら-1を返す関数を定義し、 (x,y,θ,v,T)=(10,0,π/6,5,45)に対して実行せよ。 学校のC言語の課題です。提出まで残り2時間です>< よろしくお願いします><
>>966 C++とC99の話じゃないかな?<戻り値省略
まぁ、レガシーCでも警告だけだし。
968 :
デフォルトの名無しさん :2006/07/28(金) 12:58:40
C言語で円をコマンドプロンプト上に描く方法,プログラムを教えて下さい。 できれば,直径を使いたいです。
>>969 エスパーではないが意味はかなり明瞭だと思うぞ
テンプレに従ってないからなあ
むしむし
975 :
デフォルトの名無しさん :2006/07/28(金) 14:19:25
キーボードから円の直径dを入力し,文字を使って直径dの円を表示するプログラム を作成して下さい。ただし入力する半径の範囲は2から79に制限して下さい。
#include <stdio.h> int main(void) { int c; while((c = fgetc(stdin)) != EOF){ fprintf(stdout, "○ (d = %c)\n", c); } return 0; }
ばかばっかだな
単位がないからどうとでもなる
遠近法か!
ひどい質問者だ
埋めてしまえ
989 :
デフォルトの名無しさん :2006/07/28(金) 14:46:43
すいません。 [1]2単位 [2]キーボードから円の直径dを入力し,文字を使って直径dの円を表示するプログラム を作成して下さい。ただし入力する半径の範囲は2から79に制限して下さい。 [3]OS(windowsxp),c言語 [4]後,3時間です。 [5]do-while文,for文をつかって下さい。 ほんとにお願いします。
テンプレもまともに埋められないのかね 単位落としていいよ
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。