2get
【質問テンプレ】 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):西暦を入力するとその年の祝日一覧を表示するプログラムを作れ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:c [4] 期限:2008年1月8日 [5] その他の制限:いかにも初心者が組みましたっぽいのをお願いします
6 :
4 :2008/01/05(土) 16:30:41
>>5 それらはありで大丈夫です
書き忘れましたが、祝日名もおねがいします
振り替え休日は考慮しなくてもよいです
国民の休日(両隣が祭日になっている祭日でない日)も無視っていい?
あと、春分の日・秋分の日も無視ってるけど
10 :
デフォルトの名無しさん :2008/01/05(土) 17:03:34
>>10 aichi_yubin.txtの書式教えて
>10 見てみた。回答とは関係無いんだけど > fflush(stdin); ってどうよ?
>>12 I'm not
>>10 普通じゃね?ってかscanf使うなっていいたくはなるけど・・・
%*s(だっけ?)とか入れてもいいんだろうけど
どうするかなぁ。
17 :
デフォルトの名無しさん :2008/01/05(土) 19:40:25
[1] 授業単元:プログラミング [2] 問題文 以下のpoint構造体について、 プログラム中で扱える点の数を可変にしたい。 実行時にキーボードから点の数を入力し、それにより動的に構造体の配列を確保するプログラムを作成せよ。 確保後、全ての座標値を0.0で初期化し、その結果を表示せよ。 最後に確保した領域を解放するのを忘れずに! typedef struct { double x; double y; } point; [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008/01/08 [5] その他の制限:
18 :
デフォルトの名無しさん :2008/01/05(土) 19:50:07
[1] 授業単元:プログラミング [2] 問題文 N x 3の行列を動的 に確保し、2つの行列の和を表示するプログラムを作成せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008/01/08 [5] その他の制限:
>>19 コマンドライン引数の一つ目は実行しているプログラムのパスが入る。
なので実際には2つ目から使うことになるので+1する
引数の数はプログラムのパス以外の数なので-1する。
わかんなかったらコマンドライン引数全部出力して見るべし。
22 :
デフォルトの名無しさん :2008/01/06(日) 00:13:27
23 :
デフォルトの名無しさん :2008/01/06(日) 00:13:38
>>11 テキスト ドキュメント (.txt)です。
aichi_yubin.txtをアップロードしろ、説明するよりそっちの方が早い
>>23 お前の説明能力がいかに凄いものかわかった気がする。
暇人だから、この102代目スレから日付変更時刻あたりに
スレの残り宿題をまとめる事にするわ。 よろしく。
解答が一つでもあって、返答も無いやつは満足したと見なす方向で。
【未解決問題】
>>10 1/7
>>13 1/9
>>16 1/8
>>17 1/8
>>18 1/8
>>22 1/8
うぜえ
28 :
◆7jGtaEUa1U :2008/01/06(日) 02:17:01
>>28 課題1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, j, k, a[10][10];
srand(time(NULL));
for(i=0; i<100; i++) {
j = rand() % (i + 1);
a[i/10][i%10] = a[j/10][j%10];
a[j/10][j%10] = i + 1;
}
for(i=0; i<10; i++) {
for(j=1; j<10; j++) {
for(k=j; k>0 && a[i][k] < a[i][k-1]; k--) {
int temp = a[i][k];
a[i][k] = a[i][k-1];
a[i][k-1] = temp;
}
}
}
for(i=0; i<10; i++) {
for(j=0; j<10; j++) printf("%4d", a[i][j]);
putchar('\n');
}
return 0;
}
32 :
デフォルトの名無しさん :2008/01/06(日) 04:33:19
整数が入力されたとき16進数で返す関数をつくる。 お願いします
>>32 #include <sstream>
#include <string>
#include <iostream>
#include <cassert>
template <typename T1, typename T2>
T1 hexadecimal_cast(T2 dec) {
std::stringstream stream;
stream << std::hex << dec;
T1 result;
stream >> result;
return result;
}
int main() {
assert("80" == hexadecimal_cast<std::string>(128));
}
35 :
デフォルトの名無しさん :2008/01/06(日) 09:08:14
37 :
35 :2008/01/06(日) 09:11:59
>>35 すまん、メモリ解放し忘れてるわ
main関数のreturn前に
free(stemp.ave);
free(stemp.max);
free(stemp.min);
を追加してください。
>>16 for(j=0;j<n-5;++j){ /* 変更 */
sumx = sumy = sumxy = sumx2 = 0; /* 付け足し */
for(i=j;i<j+5;++i){
sumx +=x[i];
sumy +=y[i];
sumxy+=x[i]*y[i];
sumx2+=x[i]*x[i];
}
// printf("%lf %lf %lf %lf - ",sumx,sumy,sumxy,sumx2);
a=(5.0*sumxy-sumx*sumy)/(5.0*sumx2-sumx*sumx);
b=(sumx2*sumy-sumxy*sumx)/(5.0*sumx2-sumx*sumx);
printf("a=%f b=%f\n",a,b);
}
とりあえずexcelで5ずつズラしながら線形近似の数式みてあってるっぽかったんで。
39 :
デフォルトの名無しさん :2008/01/06(日) 09:52:52
40 :
jtetyky :2008/01/06(日) 11:43:25
[1] 授業単元:情報処理演習 [2] 問題文 1、こちらで用意した暗号化ファイルlast_report.txtを読みで、 % ./a.out last_report.txt と実行することにより、暗号を複合化した内容を書き出したファイル decode.txtを作成するプログラムを作りなさい。 2、複合化のときは通常ずらした通常ずらした文字数を あらかじめ知ることはできないので、1から25文字だけ ずらしてできた文章を書き出しなさい。 3、複合化する部分は関数化しなさい。ただし、関数は void Decording (unsigned char *cript, unsigned char *plain, unsigned char shift)という型とし、criptは複合化前の文字列の ポインタ、plainは複合化後の文字列のポインタ、shiftはずらした 文字の数である。 4、実行結果としてこちらが用意した暗号ファイルlast_report.txtを 複合化したものを載せなさい。 [3] 環境 [3.1] OS:Linux 2.4 [3.3] 言語:C [4] 期限:2008年01月07日 [5] その他の制限: last_report.txtのファイルの文章は cuhho sxhyijcqi qdt xqffo dum oughです。
41 :
デフォルトの名無しさん :2008/01/06(日) 11:57:52
42 :
デフォルトの名無しさん :2008/01/06(日) 12:48:31
43 :
デフォルトの名無しさん :2008/01/06(日) 13:17:22
[1] 授業単元:プログラミング [2] 問題文:以下の行列A,PにおいてtPAPを計算するプログラム。(tPはPの行列式の行と列を入れ換えたものです。) |2 1 1| |1/√2 1/√6 1/√3| A=|1 2 1| P=|-1/√2 1/√6 1/√3| |1 1 2| |0 -2/√6 1/√3| [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [2008年1月7日14:00まで] [5] その他の制限:関数を使ってください よろしくお願いします。
44 :
デフォルトの名無しさん :2008/01/06(日) 13:18:56
[1] 授業単元:プログラミング [2] 問題文:以下の行列A,PにおいてtPAPを計算するプログラム。(tPはPの行列式の行と列を入れ換えたものです。) |2 1 1| |1/√2 1/√6 1/√3| A=|1 2 1| P=|-1/√2 1/√6 1/√3| |1 1 2| |0 -2/√6 1/√3| [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [2008年1月7日14:00まで] [5] その他の制限:関数を使ってください よろしくお願いします。
45 :
デフォルトの名無しさん :2008/01/06(日) 13:20:54
>>43 と
>>44 なんですが、同じことをやってしまい、また、わかりづらくて申しわけありません
merry christmas and happy new yeqr 先生ーーーーーーーーーー!!!! cryptはcriptになってるし、つっこみどころ多すぎだなw
50 :
デフォルトの名無しさん :2008/01/06(日) 14:03:29
16進数を文字列として入力して、それを整数にして返す関数の作成 容易なものをおねがいします。
複合もな
53 :
デフォルトの名無しさん :2008/01/06(日) 14:08:52
文字列が与えられたとき、それをアスキーコードの小さいものからならべなおす関数の作成 わかりやすいものをお願いします
>>53 【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):()
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
>>41 #include <stdio.h>
int main () {
int i, yama=0, tani=0, iarray[100];
for (i = 1; i < 99; ++i) {
if (iarray[i-1] <= iarray[i] &&
iarray[i+1] > iarray[i]) {
++yama;
}
if (iarray[i-1] >= iarray[i] &&
iarray[i+1] < iarray[i]) {
++tani;
}
}
printf("山:%d個 谷:%d個", yama, tani);
return 0;
}
>>53 #include <stdio.h>
void qsortString(char *a){
int n=strlen(a);
int i,j;
char t;
/* quick sort */
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(a[i]>a[j]){
t = a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
int main(){
char test[]="a1b2x3d7d6g2";
printf("Before:%s\n",test);
qsortString(test);
printf("After :%s\n",test);
return 0;
}
はい、どうぞ
>>53 void SortString(std::string & rStr) {
std::sort(rStr.begin(), rStr.end());
}
58 :
デフォルトの名無しさん :2008/01/06(日) 14:23:12
>>41 課題2
#include <stdio.h>
#include <stdlib.h>
int main () {
int a, b, c=1, x=0;
scanf("%d %d", &a, &b);
if (a < 0) {
a = abs(a);
c = -c;
}
if (b < 0) {
b = abs(b);
c = -c;
}
if (a < b) {
while (a--) x += b;
} else {
while (b--) x += a;
}
if (c < 0) x = -x;
printf("%d", x);
return 0;
}
61 :
デフォルトの名無しさん :2008/01/06(日) 14:30:21
文字列が与えられたとき、その最後の3文字を表示する関数の作成 (3文字より短い場合はtoo short と表示) わかりやすいソースでおねがいします
62 :
60 :2008/01/06(日) 14:32:54
abs関数必要なかったな abs(a) -> -a abs(b) -> -b に置き換えてちょうだい
>>61 #include <stdio.h>
void b(char *a){
int n = strlen(a);
if(n<3){printf("too short");return;}
printf("%s",a+n-3);
}
int main(){
b("123456789");
b("1AB");
b("12");
return 0;
}
64 :
デフォルトの名無しさん :2008/01/06(日) 14:39:52
[1] 授業単元:プログラミング [2] 問題文:以下の行列A,PにおいてtPAPを計算するプログラム。(tPはPの行列式の行と列を入れ換えたものです。) |2 1 1| |1/√2 1/√6 1/√3| A=|1 2 1| P=|-1/√2 1/√6 1/√3| |1 1 2| |0 -2/√6 1/√3| [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [2008年1月7日14:00まで] [5] その他の制限:関数を使ってください 見にくいかもしれませんがよろしくお願いします。
65 :
k5j7636j :2008/01/06(日) 14:40:01
>>64 #include <stdio.h>
#include <math.h>
void show(double src[3][3]){
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%9.5lf",src[i][j]);
printf("\n");
printf("\n");
}
void inverse(double dst[3][3],double src[3][3]){
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
dst[j][i]=src[i][j];
}
}
}
void multiple(double dst[3][3],double src1[3][3],double src2[3][3]){
int i,j,k;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
dst[i][j]=0;
for(k=0;k<3;k++){
dst[i][j]+=src1[k][j]*src2[i][k];
}
}
}
}
67 :
60 :2008/01/06(日) 14:55:05
課題3 (1) #include <stdio.h> int main () { unsigned int i = 0, uiarray[30]; for ( ; i < 30; ++i) { while (uiarray[i]--) printf("*"); printf("\n"); } return 0; } (2) #include <stdio.h> int main() { int i = 0, j, min = 0, iarray[30]; for ( ; i < 30; ++i) { if (iarray[i] < min) min = iarray[i]; } min = -min; for (i = 0; i < 30; ++i) { if (0 < iarray[i]) j = min; else { j = min + iarray[i]; iarray[i] = -iarray[i]; } while (j--) printf(" "); while (iarray[i]--) printf("*"); printf("\n"); } return 0; }
>>64 >>66 の続き
int main(){
double R2 = sqrt(2), R3 = sqrt(3), R6 = sqrt(6);
double A [3][3] = {{2,1,1},{1,2,1},{1,1,2}};
double P [3][3] = {{1/R2, 1/R6, 1/R3},{-1/R2, 1/R6, 1/R3},{0,-2/R6,1/R6}};
double tP [3][3], tPA [3][3], tPAP[3][3];
int i,j;
show(A);
show(P);
inverse (tP ,P);
show(tP);
multiple(tPA ,tP ,A);
show(tPA);
multiple(tPAP,tPA,P);
show(tPAP);
}
69 :
デフォルトの名無しさん :2008/01/06(日) 15:08:12
>>59 対象データは見つかりませんでした。ってなります。
>>69 同じフォルダにaichi_yubin.txtって名前のファイルをおけ。
つーかそんなメッセージでてこないと思うぞw
71 :
デフォルトの名無しさん :2008/01/06(日) 15:11:20
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 入力された二つの数値の論理積、論理和、排他的論理和をそれぞれ出力するプログラムを作成 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ:gcc [3.3] 言語: C [4] 期限:1/8 [5] その他の制限:特にないです
>>69-70 おっとしっけい、メイン側のほうか。
具体的に何を入れてどううまくうごかない?
>>71 #include <stdio.h>
int main () {
int x, y;
scanf("%d %d", &x, &y);
printf("論理積:%p 論理和:%p 排他的論理和:%p",
x & y, x | y, x ^ y);
return 0;
}
なんか今日宿題多いな 冬休みが空けるから皆あせってんのか
#include <string.h>が足りない気がする
んじゃ、小一時間いなくなるんで、宿題があったら書いといてくれ。 暇になったらやる。
プログラミングなんて興味ない学生が困って投稿し始めたのか知らんが 今日はやり応えある問題が少ないな。
80 :
rwlu.o :2008/01/06(日) 15:27:09
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 入力した整数を2進数に変換せよ。 [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 2.4 ) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: 1月8日 [5] その他の制限: 関数を用いる。
81 :
デフォルトの名無しさん :2008/01/06(日) 15:37:45
>>80 #include <stdio.h>
int main () {
int in, bit = 1;
scanf("%d", &in);
while (bit < in) bit *= 2;
if (!(in & bit)) bit /= 2;
while (bit) {
printf("%d", in & bit ? 1 : 0);
bit /= 2;
}
return 0;
}
if文のところなくす方法ないかな?
83 :
j :2008/01/06(日) 15:41:58
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): したのjavaプログラムをc++言語に書き直す。 [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: (gcc 2.4 ) [3.3] 言語: (C++) [4] 期限: 1月7日 [5] その他の制限: なし import java.io.*; import java.util.regex.*; class Test { public static void main(String[] arg) throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String buf; Pattern p = Pattern.compile("[0-9A-Za-z]+"); Matcher m; while((buf=br.readLine())!=null){ m= p.matcher(buf); while(m.find()){ System.out.println(m.group()); } } } }
84 :
デフォルトの名無しさん :2008/01/06(日) 15:43:35
03-1234-5678のように表された電話番号を引数として、市内局番(例だと1234)を整数値としてかえす関数の作成。 お願いします
85 :
82 :2008/01/06(日) 15:44:19
よく見たら整数か、自然数に脳内変換してしまった、スマンコってす。 一応今から整数版書き始めるけど、先に誰かできたら投稿しちゃってください。
[1] 授業単元:プログラム実習 [2] 問題文(含コード&リンク): C言語を用いて空いた上位部分に符号ビットと同じビットが入る 算術右シフトを行うプログラムを作成する [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 1月8日 [5] その他の制限:特になし よろしくお願いします
>>85 せっかくだから突っ込んでおくとその他の制限も読んだ方がいいよ
>>85 さらに突っ込ませてもらうと値によっては無限ループにおちいるよ
無限ループはアレだが、別に2の補数表現するとは書いていないから 0以下の場合頭に-つけるだでいいんじゃねーの。
>>84 何も確認してないが……
int main(int argc, char* argv[])
{
if (argc != 2)
{
fprintf(stderr, "電話番号入力しろゴルァ\n");
return 0;
}
int x, y, z;
int scan = sscanf(argv[1], "%d-%d-%d", &x, &y, &z);
if (scan == 3)
{
printf("市内局番は%dじゃねーの? 間違ってても責任とらん\n", y);
}
else if (scan == 2)
{
printf("市内局番は%dじゃねーの? 間違ってても責任とらん\n", x);
}
else
{
printf("知らねwww\n");
}
return 0;
}
#include <stdio.h> void binaryPrint(int in) { unsigned int bit = 1<<(sizeof(int)*8-1); while (!(in & bit)) bit >>= 1; while (bit) { printf("%d", !!(in & bit)); bit >>= 1; } } int main () { int in; scanf("%d", &in); binaryPrint(in); printf("\n"); return 0; } お題に沿ってif文を排除してみた。whileを使うのはずるいって意見は無視することにした。 0以下の場合頭に-つけるタイプは他の人に任せた
92 :
91 :2008/01/06(日) 16:04:28
あ、無限ループするのでよろしく
93 :
デフォルトの名無しさん :2008/01/06(日) 16:05:21
平面上の点3個の点が与えられたとき、その3点の作る三角形の面積を返す関数をつくる。 3点はdouble p[3][2]で与え、面積の計算はヘロンの公式を使う
>>93 三点の座標が与えられてるのに、ヘロンの公式とな……
>>86 これでおkかな?
#include <stdio.h>
int rshift(int x, int n){
int mask = 0, i;
for(i=0; i<n; ++i) mask += 1<<sizeof(int)-i;
if(x>0)return x >> n & ~mask;
else return x >> n | mask;
}
int main(){
int x,n;
scanf("%d %d", &x, &n);
printf("%d", rshift(x,n));
return 0;
}
96 :
デフォルトの名無しさん :2008/01/06(日) 16:12:49
98 :
95 :2008/01/06(日) 16:18:04
訂正 #include <stdio.h> int rshift(int x, int n){ int mask = 0, i; for(i=0; i<n; ++i) mask += 1<<sizeof(int)-i; if(x>=0)return x >> n & ~mask; else return x >> n | mask; } int main(){ int x,n; scanf("%d %d", &x, &n); printf("%d", rshift(x,n)); return 0; }
なるほどなー。上のビットからみてくって発想はなかったわ。参考になるわ。 無限ループ解消と頭に-つけるバージョン。凡庸ですまん。 void binaryPrint(int in) { unsigned int bit = 1<<(sizeof(int)*8-1); if (in == 0) { printf("0"); return; } if (in < 0) { printf("-"); in = -in; } while (!(in & bit)) bit >>= 1; while (bit) { printf("%d", !!(in & bit)); bit >>= 1; } }
100 :
デフォルトの名無しさん :2008/01/06(日) 16:31:14
[1] 授業単元:プログラミング [2] 問題文: ファイルを読み込み、英字のみか、先頭が英字で二文字目以降が英字または数字である文字列を出力するプログラム [3] 環境 [3.1] windows [3.2] コンパイラ名とバージョン:gcc [4] 期限: 1/7 [5] その他の制限:なし よろしくお願いします
101 :
デフォルトの名無しさん :2008/01/06(日) 16:33:10
102 :
デフォルトの名無しさん :2008/01/06(日) 16:35:01
104 :
デフォルトの名無しさん :2008/01/06(日) 16:41:18
>>103 お前は、何に言ってんだ、
なんにかよめねぇのか
>>103 こんな感じ?
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int main( )
{
ifstream ifs("data.txt");
string buf;
getline(ifs, buf); /* ファイルを読み込む */
cout << "ABCDEFG"; /* 英字のみか、先頭が英字で二文字目以降が
英字または数字である文字列を出力する*/
return 0;
}
>>100 mixiでは解答が得られそうに無いとの判断ですか?
>>100 >>105 もっと単純に
#include <iostream.h>
int main(void)
{
cout <<"ファイルを読み込み、英字のみか、先頭が英字で二文字目以降が英字または数字である文字列";
return 0;
}
なんじゃね?
[1] 授業単元: C言語演習 [2] 問題文(含コード&リンク):与えられた10進数の数値を4桁の16進数にして文字型配列に格納する また、数値は16ビットで最上位ビットは符号を表すものとする 例) 567->0237 -2->FFFE [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 1月9日
>>111 int main () {
int i = 3, input;
scanf("%d", &input);
unsigned int mask = 0xF000;
while (mask) {
printf("%X", (input & mask)>>(i*4));
mask >>= 4;
--i;
}
return 0;
}
>>113 それって配列使ってなくてテレビに表示してるだけじゃないの?
>>114 つ・・・つられな・・・ いやつられよう。
「テレビかよ!!」
テレビに表示するかどうかは実行環境に依存します。
>>114 ごめんなさいね。お母さん問題文よく読まない上にゴミコードを書いちゃって・・・。
#include <stdio.h>
int main () {
char hex[5] = "";
int in, i;
scanf("%d", &in);
sprintf(hex, "%C%C%C%C",
(in & 0xF000)
>>12 ,
(in & 0x0F00)
>>8 ,
(in & 0x00F0)
>>4 ,
in & 0x000F);
for (i = 0; i < 4; ++i) {
if (hex[i] < 10) {
hex[i] += 48;
} else hex[i] += 55;
}
printf("%s", hex);
return 0;
}
>>117 かあちゃん、null terminatorはどこ?
あら?そんな子はいないわよ。
>>119 かあちゃん!!これじゃhex[4]が'\0'じゃなかったらprintfで出力結果がバグるだろうが!!
もうしっかりしてくれよなぁー
>>120 と、ここまで書いてあれ?sprintfで処理すると勝手に付くんだっけ?と考え直してみたり。
ごめんね。お母さんドジでごめんね。 そんな子、要らない子だと思っていたわ。 念のためにも sprintf(hex, "%C%C%C%C\0", と置き換えてあげてください。
>>122 かあちゃん、ごめん、弁当のふたんとこに海苔くっついてた・・・じゃなかった
sprintfでかってにつくから問題なさそう。むしろそれをやるとhex[5]に'\0'が代入されそうな悪寒。
大丈夫、sprintf()には"%C%C%C%C\0"と"%C%C%C%C"を区別することができないから。 寧ろ、%Cそのものの方が問題。
125 :
111 :2008/01/06(日) 21:07:52
126 :
デフォルトの名無しさん :2008/01/06(日) 21:17:01
127 :
126 :2008/01/06(日) 21:21:11
>>124 たしかに。sprintf使っていいなら%x使えばいいし。自家製でdec2hexするならこんな感じかな?
hex[0]=( (in & 0xf000)
>>12 );
hex[1]=( (in & 0x0f00)>> 8 );
hex[2]=( (in & 0x00f0)>> 4 );
hex[3]=( (in & 0x000f) );
hex[4]='\0';
for(i=0;i<4;i++){
if( (0<=hex[i]) && (hex[i]<=9)) hex[i]+='0';
else if( (10<=hex[i]) && (hex[i]<=15) ) hex[i]+='A'-10;
else hex[i]='?';
}
>>128 あれ?ちょっとまって。
hex[0]には最上ビットに符号の意味を持たせなきゃいけないんじゃないかな?
多分これだと
0x7fffffffと0xffffffffが同じ数字になりそうな悪寒。
>>129 ちゃうちゃう・・・ごめん
0x7fff以上の正の整数がだめってだけですね。
131 :
124 :2008/01/06(日) 21:43:44
>>128 いや、単純に%Cなんて普通使えないって言いたかっただけ。
133 :
デフォルトの名無しさん :2008/01/06(日) 23:30:29
134 :
デフォルトの名無しさん :2008/01/06(日) 23:46:58
[1] 授業単元:プログラミング [2] 問題文:連立1次方程式 0.001x1+10000.0x2=1000.0 10000.0x1+10000.0x2=2000.0 における解のプログラム{x1,x2は×(かける)1の掛け算ではなくx1(エックスワン)です} [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [2008年1月7日14:00まで] [5] その他の制限:2×2の逆行列のプログラムは新規作成 よろしくお願いします
136 :
デフォルトの名無しさん :2008/01/06(日) 23:58:22
>>134 #include <stdio.h>
int main(){
double A[2][2]={{0.001,10000.0},{10000.0,10000.0} };
double b[2] = {1000,2000};
double tA[2][2];
double x[2];
double ad_bc = A[0][0]*A[1][1]-A[0][1]*A[1][0];
if( fabs(ad_bc) < 1e-6 ){
printf("解なし");
return 1;
}
tA[0][0] = A[1][1] / ad_bc;
tA[0][1] = -A[1][0] / ad_bc;
tA[1][0] = -A[0][1] / ad_bc;
tA[1][1] = A[0][0] / ad_bc;
x[0] = b[0]*tA[0][0]+b[1]*tA[1][0];
x[1] = b[0]*tA[0][1]+b[1]*tA[1][1];
printf("x1 = %.15e, x2 = %.15e",x[0],x[1]);
return 0;
}
140 :
デフォルトの名無しさん :2008/01/07(月) 01:55:39
141 :
デフォルトの名無しさん :2008/01/07(月) 02:19:05
[1] 授業単元:C [2] 問題文 2つの3 x 3の行列を2次元配列に格納、 2つの行列の積を表示するプログラム。 [3] 環境 [3.1] OS: windows XP [3.2] コンパイラ名とバージョン:stady C [3.3] 言語: C [4] 期限: 2008/01/08(月)(〜22:00) [5] その他の制限:入門課題なので猿以上人未満でもわかるくらいでお願いします。 急で申し訳ありませんがお願いしますm(_ _)m
人未満にわかるように書くのは至難の業だろ
144 :
141 :2008/01/07(月) 02:52:09
期限: 2008/01/07(月)(〜22:00) 申し訳ありません 高校生以上社会人未満でお願いします
147 :
141 :2008/01/07(月) 10:51:44
行列の入力は使用者の任意でscanfでお願いします。
>>146 さん
ありがとうございます
しかし、文字化けで読めないのと難しいです
すみませんがもう少し低級なプログラムでお願いします
申し訳ありません
レポートが出されたのですが、全く出来ないので、どうかよろしくお願いしますm(__)m問題文をwordで送りたいので、やって戴ける方は、どうかメールを下さい。 ほんと出来ないので、どうかお願いします… [1] 授業単元: プログラミング演習(木構造) [2] 問題文:長いので、メールを下さいm(__)m [3] 環境 [3.1] OS: Linux [3.2] GNOME端末 [3.3] 言語: C言語 [4] 期限: 1月12日正午 [5] 習った範囲 if文 switch文 for文 while文 関数 配列 構造体 ポインタ ファイル操作 リスト スタックとキュー 探索 木構造
149 :
デフォルトの名無しさん :2008/01/07(月) 11:00:39
うpしろよ
150 :
デフォルトの名無しさん :2008/01/07(月) 11:21:41
メールはねぇよw
151 :
◆vLIz8KOkPM :2008/01/07(月) 11:24:31
図が入ってるんで… どうかお願いしますm(__)m
[1] 授業単元: 情報基礎 [2] 問題文 1000以下の素数を全て表示するプログラム [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C++ [4] 期限: 2008/01/08 [5] if文とfor文程度で作れるもの
153 :
デフォルトの名無しさん :2008/01/07(月) 11:36:01
まぁ期限まで日数があるのは待つべし 期限が早いものからガンガル
ごめんなさい、どうしてもできなくて悩んでたんですが今できましたorz 一応張ってみます #include <stdio.h> int main() { int a, b; for(a = 2; a <= 100; a++){ for(b = 2; b < a; b++){ if(a % b == 0)break; } if (a == b) printf("%d \n", a); } return 0; }
155 :
デフォルトの名無しさん :2008/01/07(月) 11:40:02
#include <iostream> using namespace std; #define N 1000 main(){ int n,k, sosu[N+1]; for(n=0;n<=N;n++)sosu[n]=1; for(n=2;n*n<=N;n++) for(k=2*n;k<=N;k+=n)sosu[k]=0; for(n=2;n<=N;n++)if(sosu[n])cout<<n<<endl; }
156 :
デフォルトの名無しさん :2008/01/07(月) 11:40:46
>>152 #include <stdio.h>
#define N 1024
int main(void)
{
int i, j, k = 2, prime[N] = {2, 3};
for(i = 5; i <= 1000; i += 2){
for(j = 0; j < k && i%prime[j] != 0; j++);
if(j == k) prime[k++] = i;
}
for(i = 0; i < k; i++) printf("%5d", prime[i]);
putchar('\n');
return 0;
}
157 :
デフォルトの名無しさん :2008/01/07(月) 11:42:46
>>154 それだと数が多い場合に時間がかかる エネ***の篩が定番
>>148 l三`ー 、_;:;:;:;:;:;:j;:;:;:;:;:;:_;:;:;_;:-三三三三三l
l三 r=ミ''‐--‐';二,_ ̄ ,三三三彡彡l_ この感じ・・・・
lミ′  ̄ ー-'" '=ミニ彡彡/‐、ヽ
l;l ,_-‐ 、 __,,.. - 、 彡彡彳、.// ZIPか・・・・
_______∧,、_‖ `之ヽ、, i l´ _,ィ辷ァ-、、 彡彡'r ノ/_ ______
 ̄ ̄ ̄ ̄ ̄ ̄ ̄'`'` ̄ 1  ̄フ/l l::. ヽこ~ ̄ 彡彳~´/  ̄ ̄ ̄ ̄ ̄ ̄
ヽ ´ :l .l:::. 彡ィ-‐'′
ゝ、 / :. :r-、 彡′
/ ィ:ヘ `ヽ:__,ィ='´ 彡;ヽ、
_,,..-‐'7 /:::::::ヽ _: :_ ヽ ィ´.}::ヽ ヽ、
_,-‐'´ { ヽ:::::::::ヘ `'ー===ー-- ' /ノ /::::::ヘ, ヽー、
>>155-156 ありがとうございます、こんな早くレスがもらえるものなんですね。
参考にさせてもらます
160 :
デフォルトの名無しさん :2008/01/07(月) 11:57:06
161 :
デフォルトの名無しさん :2008/01/07(月) 12:19:28
素人の俺に
>>154 の
if(a % b == 0)break;
の部分でで何で2以外の時も抜けられるのか教えてくれ
2以外というか、aとbをそれぞれインクリメントしていって a/bであまりがでない場合、つまり割り切れる場合は抜けるって構造だろう
164 :
デフォルトの名無しさん :2008/01/07(月) 12:47:44
[1] 授業単元:プログラミング [2] 問題:5を入力して以下の表示をするプログラム ____* ___*_* __*_*_* _*_*_*_* *_*_*_*_* (_はスペースです) [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:c [4] 期限:2008年1月8日 [5] その他の制限:for文でお願いします
>>164 #include<stdio.h>
int main(void){
int a;
scanf("%d",&a);
if(a==5){
printf(" *\n * *\n * * *\n * * * *\n* * * * *\n");
}
return(0);
}
>>164 #include <stdio.h>
int main() {
int i, ch, num;
scanf("%d", &num);
for (i = 1; i < num+1; ++i) {
for (ch = num - i; ch > 0; --ch) printf(" ");
for (ch = i; ch > 0; --ch) printf("* ");
printf("\n");
}
return 0;
}
>>164 #include <stdio.h>
int main(){
while(getchar() != '5');
puts(" *\n * *\n * * *\n * * * *\n* * * * *");
return 0;
}
169 :
デフォルトの名無しさん :2008/01/07(月) 14:29:32
[1] 授業単元:C [2] 問題文 複数の数値に対する最大公約数を求める関数を作成し、それを利用するプログラムを作成せよ。関数は下記の通りとする。 int gcm(int *in,int num) in 入力値が格納された配列の(先頭)ポインタ num 入力値の最大公約数 入力に関して キーボードから、入力値がスペース1つ開けて1行で入力する。この時、入力を促す文字等は決して表示しないこと。 出力に関して 結果+改行のみ出力。指定した数値・改行以外の文字等の出力は一切行わないこと。 [3] 環境 [3.1] OS: windows XP [3.2] コンパイラ名とバージョン:stady C [3.3] 言語: C言語 [4] 期限: 2008/01/08(月)(〜22:00) [5] その他の制限:簡単にお願いします
171 :
ぽぴぴおぷ :2008/01/07(月) 14:36:18
0度から180度までのsin cosの値を10度ずつ表形式で表示せよ。 ただし sin cosはmath.h(算術計算用ヘッダー)をインクルードすること。 また、角度は弧度(ラジアン)で入力すること 値=sin(角度/360.0+2.0*3.14); [3.1]OS:windows XP [3.2]C++Builder 言語:C言語 期限:いますぐお願いします
>>171 #include <stdio.h>
#include <float.h>
#include <math.h>
#define PI (3.14)
#define Rad(x) ( (x)/180 * PI )
int main()
{
double i = 0;
for (i = 0; i <= 180; i += 10) {
if ( (0 != i) && (180 != i) ) {
printf("sin(%3g) = %.*f\n",
i, DBL_DIG, sin(Rad(i)) );
} else {
printf("sin(%3g) = 0\n", i, DBL_DIG);
}
}
for (i = 0; i <= 180; i += 10) {
if ( 90 != i ) {
printf("cos(%3g) = %.*f\n",
i, DBL_DIG, cos(Rad(i)) );
} else {
printf("cos(%3g) = 0\n", i, DBL_DIG);
}
}
return 0;
}
174 :
ぽぴぴおぷ :2008/01/07(月) 15:11:19
おつ!! 0度から180度までのsin cosの値を10度ずつ表形式で表示せよ。 ただし sin cosはmath.h(算術計算用ヘッダー)をインクルードすること。 また、角度は弧度(ラジアン)で入力すること 値=sin(角度/360.0+2.0*3.14); [3.1]OS:windows XP [3.2]C++Builder 言語:C言語 期限:いますぐお願いします for文でお願いします まだ1年生なので
>>164 #include <stdio.h>
int main()
{
int n,i,j,k;
scanf("%d",&n);
for(i = n; i >= 0; i--){
for(j=0;j <=i-1; j++)
putchar(' ');
for(k =n- j; k>0;k--)
printf("%c%c",'`*',' ');
putchar('\n');
}
}
176 :
175 :2008/01/07(月) 15:17:58
return 0; を忘れてた。
#include <stdio.h> #include <float.h> /* DBL_DIG */ #include <math.h> #define PI (3.14) #define Rad(x) ( (x)/180 * PI ) int main() { double i = 0; for (i = 0; i <= 180; i += 10) { if ( (0 != i) && (180 != i) ) { /* かなり適当 */ printf("sin(%3g) = %.*f\n", i, DBL_DIG, sin(Rad(i)) ); } else { printf("sin(%3g) = 0\n", i); } } for (i = 0; i <= 180; i += 10) { if ( 90 != i ) { /* ここも */ printf("cos(%3g) = %.*f\n", i, DBL_DIG, cos(Rad(i)) ); } else { printf("cos(%3g) = 0\n", i); } } return 0; }
誤爆った。 orz
179 :
デフォルトの名無しさん :2008/01/07(月) 15:21:02
[1] 授業単元:C [2] 問題文 コマンドラインから与えられた整数の引数をひとつ受け取って,その数と等しい個数のベクトルからなる配列を作成し,各ベクトルのx成分・y成分を読み込み,各ベクトルの長さを出力するプログラムを完成しなさい. [3] 環境 [3.1] OS: windows XP [3.2] コンパイラ名とバージョン:任意 [3.3] 言語: C言語 [4] 期限: 2008/01/08 15時まで
180 :
デフォルトの名無しさん :2008/01/07(月) 15:26:20
#include <stdio.h> #include <stdlib.h> #include <math.h> ??????? struct { double x; double y; } ???????; void InputVector(Vector *v) {scanf("%lf", ???????); scanf("%lf", ???????); }double LengthVector(Vector v) {return sqrt(???????);} int main(int argc, char **argv) { int i; int num; Vector *varray; if(argc !=2){ return 1; } num = atoi(???????); if(num < 0){ return 1; } varray = (???????)malloc(???????);
181 :
デフォルトの名無しさん :2008/01/07(月) 15:26:53
>>180 続き
if(!varray){
return 1;
}
for(i = 0; i < num; i++){
InputVector(???????);
}
for(i = 0; i < num; i++){
printf("%lf\n", ???????);
}
???????;
return 0;
}
182 :
デフォルトの名無しさん :2008/01/07(月) 15:31:15
問題:コマンドラインから与えられた入力ファイルが存在すれば, そのファイルの中から与えられた整数の引数をひとつ受け取って,その数と等しい個数のベクトルからなる配列を作成し,各ベクトルのx成分・y成分を読み込み, コマンドラインから入力ファイルが存在しなければ, コマンドラインから与えられた整数の引数をひとつ受け取って,その数と等しい個数のベクトルからなる配列を作成し,各ベクトルのx成分・y成分を読み込む. コマンドラインから与えられた出力ファイルが存在すれば, 各ベクトルの長さをそのファイルに出力し, コマンドラインから与えられた出力ファイルが存在しなければ, コマンドラインに出力する.
183 :
デフォルトの名無しさん :2008/01/07(月) 15:32:53
>>182 続き
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
??????? struct {
double x;
double y;
} ???????;
int InputVector(FILE *stream, Vector *v)
{
int result = fscanf(stream, "%lf", ???????);
if(result < 0) return result;
result = fscanf(stream, "%lf", ???????);
return result;}
double LengthVector(Vector v)
{return sqrt(???????);
}int main(int argc, char **argv)
{int i, num, checker;
Vector *varray;
FILE* inputstream;
FILE* outputstream = stdout;
//set input
if(argc < 2) {
fprintf(stderr, "input data from stdin\n");
inputstream = stdin;
}else
{inputstream = fopen(???????, ???????);
if(!inputstream)
{fprintf(stderr, "input file open error\n");
return 1;
184 :
デフォルトの名無しさん :2008/01/07(月) 15:34:52
>>17 #include <stdio.h>
#include <stdlib.h>
struct point{
double x;
double y;
};
int main()
{
struct point *cdl,*tmp;
int i, n;
printf("データの数は?: ");
scanf("%d", &n);
if((cdl = (struct point *)malloc(n * sizeof(struct point))) == NULL){
printf("メモリ確保に失敗しました。終了します。\n");
return 0;
}
185 :
デフォルトの名無しさん :2008/01/07(月) 15:35:35
>>184 >>17 の続き
tmp = cdl;
for(i=0;i<n;i++){
tmp->x = 0.0;
tmp->y = 0.0;
tmp++;
}
/*好きな作業しろ*/
tmp = cdl;
for(i=0;i<n;i++){
printf("point%d(%.2f,%.2f)\n",i,tmp->x,tmp->y);
tmp++;
}
free(cdl);
return 0;
}
>>179-183 は全部同一人物って事?
それならろだ使うなりしてほしい。
あとそのソース改変義務はあり?
187 :
デフォルトの名無しさん :2008/01/07(月) 15:37:12
188 :
デフォルトの名無しさん :2008/01/07(月) 15:40:58
189 :
◆vLIz8KOkPM :2008/01/07(月) 15:41:25
結構時間がかかるプログラムなので、どうか>148をお願いしますm(__)m
>>189 zipでまとめてUploaderにあげるといいよ。
>>188 for (i = 0; i < n; ++i) {
cdl[i].x = 0.0;
cdl[i].y = 0.0;
printf("point%d(%.2f,%.2f)\n", i, cdl[i].x, cdl[i].y);
}
free(cdl);
じゃだめなん?
192 :
デフォルトの名無しさん :2008/01/07(月) 15:45:35
>>189 木構造そのものはできてるけど、何が欲しいのかわからない。
193 :
デフォルトの名無しさん :2008/01/07(月) 15:48:47
>>191 たぶん大丈夫だけど、初期化だけなのか、
その後データを扱うのかわからなかったから
拡張性を持たせてみた。
必要なきゃ、
>>191 のほうがすっきりしていいはず。
>>169 #include <stdio.h>
#include <stdlib.h>
int gcm_(int l, int g){
return l == 0 ? g : gcm_(g % l, l);
}
int gcm(int *in, int num){
if (num == 2) return gcm_(in[0], in[1]);
if (num > 2) return gcm_(*in, gcm(in + 1, num - 1));
return *in;
}
int main(){
int *p, n = 1;
p = malloc(sizeof(int));
if (p == NULL) return 1;
while (scanf("%d", p + n - 1) == 1) {
int *tmp = realloc(p, sizeof(int) * ++n);
if (tmp == NULL) {
free(p);
return 1;
}
p = tmp;
}
printf("%d\n", gcm(p, n - 1));
free(p);
return 0;
}
195 :
◆vLIz8KOkPM :2008/01/07(月) 16:00:21
>190 使い方がイマイチわからないのですが、ちょっと試してみます。 >192 課題に対して解答のプログラムが欲しいんです…よろしければメール頂けませんか?
196 :
194 :2008/01/07(月) 16:01:55
この方が簡潔か。 int gcm(int *in, int num){ if (num == 1) return *in; else return gcm_(*in, gcm(in + 1, num - 1)); }
197 :
デフォルトの名無しさん :2008/01/07(月) 16:08:57
>>195 うpろだ使った方がみんなに聞けていいと思いますよ。
自分も木構造は作ってありますが、問題見るまでできるかわからないので。。
198 :
デフォルトの名無しさん :2008/01/07(月) 16:48:12
宿題かもーん。
201 :
167 :2008/01/07(月) 17:17:25
すみません。
>>167 の課題2の区間は[1、2]です。
202 :
◆vLIz8KOkPM :2008/01/07(月) 17:22:37
>195です うpろだに投稿できたのですが、URLとかはどうやって貼るのですか?
203 :
163 :2008/01/07(月) 17:23:35
204 :
デフォルトの名無しさん :2008/01/07(月) 17:47:07
205 :
デフォルトの名無しさん :2008/01/07(月) 18:00:54
[1] 授業単元: アルゴリズム [2] 問題文(含コード&リンク): #include<stdio.h> #include<string.h>/*必要ならば使う。*/ int main(void){ char buf[200]={"0 2 4 5 12"}; printf("buf=%s\n",buf); char a[100]={0}; /*ここから下のプログラムを完成させたい*/ /*bufから空白文字(スペース)を取り除いた、 0,2,4,5,12のみを配列aの先頭から順に格納する つまり a[0]=0,a[1]=2,a[2]=4,a[3]=5,a[4]=12,a[5]='\0' となるように配列aに格納する。 ただし、bufは今"0 2 4 5 12"と整数5個で初期化してあるが、 実際は、整数が何個であっても(1つ以上100個以下)、動作するようにしたい。 (必ず整数の間には空白文字が入って初期化されているとする。) */ printf("a=%s\n",a); return 0; } [3] 環境 [3.1] OS:Mac Os X [3.2] gcc [3.3] 言語: C [4] 期限:明日まで、至急お願いします [5] その他の制限:なし たぶん簡単な問題だと思います。 どなたかお願いします。
206 :
デフォルトの名無しさん :2008/01/07(月) 18:12:38
>>204 >>141 は作ってくる。すぐできると思うから張りついていてくれ。
ちなみにintか?doubleか?
207 :
デフォルトの名無しさん :2008/01/07(月) 18:22:13
>>141 >>204 #include<stdio.h>
#include<stdlib.h>
#define MAX 3
int main()
{
int i,j,k;
double matrix1[MAX][MAX],matrix2[MAX][MAX],matrix3[MAX][MAX];
double tmp;
/**** Format matrix ****/
for(i=0; i<MAX; i++)
for(j=0; j<MAX; j++){
matrix1[i][j] = ((double)rand() / ((double)RAND_MAX+1)*(double)MAX);
matrix2[i][j] = ((double)rand() / ((double)RAND_MAX+1)*(double)MAX);
matrix3[i][j] = 0.0;
}
208 :
デフォルトの名無しさん :2008/01/07(月) 18:23:15
intでお願いします
209 :
デフォルトの名無しさん :2008/01/07(月) 18:23:28
>>207 続き
/**** Transposed matrix
for(i=0;i<MAX;i++)
for(j=i+1;j<MAX;j++){
temp = matrix2[i][j];
matrix2[i][j] = matrix1[j][i];
matrix1[j][i] = temp;
}
****/
for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++){
tmp = 0.0;
for(k=0;k<MAX;k++)
tmp += matrix1[i][k] * matrix2[j][k];
matrix3[i][j] = tmp;
}
/*後は好きに表示しな*/
return 0;
}
210 :
デフォルトの名無しさん :2008/01/07(月) 18:24:50
>>208 すまん、doubleで作ってしまった・・・
douboleをintに変換してくれ。
間のtrans・・・は転置行列用だから必要になったら使ってみてくれ。
>>205 >a[0]=0,a[1]=2,a[2]=4,a[3]=5,a[4]=12,a[5]='\0'
こうかいてあるけど、この通りに作るとしたら最後の出力の表示バグるよ
a[0]=0,a[1]=2,a[2]=4,a[3]=5,a[4]=1,a[5]='2',a[6]'\0'
ならできるけど
問題に忠実に作った。 #include<stdio.h> #define DEBUG int main(void){ char buf[200]={"5 2 4 5 12"}; printf("buf=%s\n",buf); char a[100]={0}; int i = 0, j = 0; for ( ; i < 200 && buf[i] != '\0'; ++i) { if (buf[i] == ' ') continue; if (buf[i+1] != ' ') { a[j] = a[j]*10 + buf[i]; } else { a[j] += buf[i] - '0'; ++j; } } #ifdef DEBUG for (i = 0; a[i] != '\0'; ++i) { printf("a[%d]=%x\n", i, a[i]); } #endif printf("a=%s\n",a); return 0; }
213 :
212 :2008/01/07(月) 18:41:54
補足で、buf[0]にいきなり'0'が入っているせいで 出力がいきなり終わるから、確認できるように5に置き換えてある。
214 :
212 :2008/01/07(月) 18:44:43
訂正 誤 a[j] = a[j]*10 + buf[i]; 正 a[j] = a[j]*10 + buf[i] - '0';
215 :
デフォルトの名無しさん :2008/01/07(月) 18:47:19
ありがとうございます。
216 :
デフォルトの名無しさん :2008/01/07(月) 19:45:52
画像を上げたいんですがいいロダ無いですか? もちろん、課題関連です
218 :
デフォルトの名無しさん :2008/01/07(月) 19:48:00
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク) 1〜12までの数字をそれぞれ3回ずつ使いランダムな数列を作る。 ただし、それぞれの数字は Aグループ:12、2、10、7 Bグループ:4、3、1、11 Cグループ:9、8、6、5 のようにグループ分けされていて、同じグループの数字は最低1つ空けないといけない。 つまり、「… 9 4 3 …」などの並びを許さないが、「… 9 4 2 3 …」は可となる。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008/01/14 [5] その他の制限: 特になし よろしくお願いします。
219 :
デフォルトの名無しさん :2008/01/07(月) 19:52:23
222 :
デフォルトの名無しさん :2008/01/07(月) 20:13:44
>>218 444や919みたいなことは許されるの?
うpろだができたので、再び投稿します。
問題が難関だとおもわれるため、できる限り早めにやっていただけたら幸いです…
どうかよろしくお願いしますm(_ _)m
[1] 授業単元: プログラミング演習(木構造)
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5665.txt [3] 環境
[3.1] OS: Linux
[3.2] GNOME端末
[3.3] 言語: C言語
[4] 期限: 1月12日正午
[5] 習った範囲
if文、switch文、for文、while文、関数、配列、構造体、ポインタ、ファイル操作
リスト、スタックとキュー、探索、木構造
いかにも初心者が作りましたって感じでお願いします。
>>216 #include <stdio.h>
#include <stdlib.h>
#define FMAX 100 /* ファイル名最大値 */
#define LMAX 300 /* 1文の最大値 */
int main() {
FILE *fp;
char filename[FMAX], line[LMAX];
int count=1;
/* ここにプログラムを書く */
scanf("%s", filename);
if ((fp = fopen(filename, "r")) == NULL) {
printf("file not found");
return -1;
}
while (fgets(line, LMAX, fp) != NULL) {
printf("%3d : %s", count, line);
++count;
}
fclose(fp);
return 0;
}
225 :
218 :2008/01/07(月) 20:27:07
>>222 「4 4 4」は同じグループなのでアウトで
「9 1 9」は同じグループは連続していないのでOKです。
説明へたくそですいません。
226 :
デフォルトの名無しさん :2008/01/07(月) 20:34:37
227 :
デフォルトの名無しさん :2008/01/07(月) 21:01:22
>>218 1レスにするために無理してるので、自分で適当に展開しておいて
#include<stdio.h>
#include<stdlib.h>
typedef struct tag_group{
int num, rest[4*3];
}group_t;
group_t group[]={
{12,{12,12,12, 2, 2, 2,10,10,10, 7, 7, 7}},
{12,{ 4, 4, 4, 3, 3, 3, 1, 1, 1,11,11,11}},
{12,{ 9, 9, 9, 8, 8, 8, 6, 6, 6, 5, 5, 5}}
};
int main(void){
int i, j, wholenum=0, prev=-1, cur, group_num=3, idx;
for(i=0;i<group_num;i++) wholenum+=group[i].num;
while(wholenum){
if(prev<0) cur=rand()%group_num;
else cur=(prev+1+(rand()%(group_num-1)))%group_num;
for(j=0;j<group_num;j++) if(group[j].num*2>wholenum) cur=j;
if(group[cur].num<=0){
group[cur]=group[--group_num];
if(prev==cur) prev=-1;
if(prev==group_num) prev=cur;
continue;
}
idx=rand()%group[cur].num;
printf(" %2d", group[cur].rest[idx]);
group[cur].rest[idx]=group[cur].rest[--group[cur].num];
wholenum--;
prev=cur;
}
return 0;
}
[1] 授業単元:アルゴリズム理論 [2] 問題文(含コード&リンク): 2つのn次元のベクトルa,bに対して、 内積はc=Σa[i]b[i]で定義される。 a,bの各要素が一様な確率p(0~1)で0でない値を取る時、 np^2回の乗算で内積を計算する方法は存在するか? 存在するならその方法でプログラムを書き、しないならそれを証明せよ 計算前に計算量及び記憶容量をO(n)だけ使用してa,bを改変してよい。 ただしその操作でaとbを同時に扱ってはならない。(例えば、その操作で先に各要素の積を計算してはならない) if文などによるa,bの要素の比較は乗算と同じコストを持つとみなされ、乗算回数に含まれる [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VS2005 [3.3] 言語: C++ [4] 期限:2008年1月31日 [5] その他の制限: 無し お願いします。
230 :
デフォルトの名無しさん :2008/01/07(月) 21:30:42
[1]プログラミングU [2] (1) 次の学生の成績表を元に,出力結果のように合計点と平均点を出力するプログラムを作成せよ。ただし,for文を使うこと。 (成績表) 学籍番号 5001 5002 5003 数学 62 45 76 英語 75 65 93 国語 54 82 63 (出力結果) 数学の合計点=177点,数学の平均点=59.0点 英語の合計点=233点,英語の平均点=77.7点 国語の合計点=199点,国語の平均点=66.3点 (2) (1)で作成したプログラムを元に,学生別の合計点を出力するプログラムを作成せよ (出力結果) 学籍番号5001の合計点は,191点です。 学籍番号5002の合計点は,192点です。 学籍番号5003の合計点は,226点です。 (3) (1)で作成したプログラムを元に,科目別の最高得点を表示するプログラムを作成せよ。 (出力結果) 数学の最高得点は70点です。 英語の最高得点は93点です。 国語の最高得点は82点です。
(4) (1)で作成したプログラムを元に,70点以上を得点した学生の人数を科目別に表示するプログラムを作成せよ。 (出力結果) 数学:1人 英語:2人 国語:1人 [3]環境 [3.1]XP [3.2]visual studio 2005 [3.3]C++ [4]1/26 [5]なし 試行錯誤やりましたが、どうもうまくいきません。 よろしくお願いいたします。
234 :
219 :2008/01/07(月) 21:41:10
イエーイ!! あんなソースでもありがとうございましたの言葉 もらえたぜ〜 / ---\/----------------------------- '`,、('∀`) '`,、
>>227 ニュートン・ラフソン法を理解することに必死になってしまったがこんな感じでいいと思う
#include<stdio.h>
#include<math.h>
double f(double x, double a, double b, double c){
return a * x * x + b * x + c;
}
double df(double x, double a, double b, double c){
return 2 * a * x + b;
}
int main(void){
double x = 1.0;
double maxerror = 0.00000001;
double a = 3, b = 4, c = 1; /* x = -1/3 */
double EPS = f(x, a, b, c) / df(x, a, b, c);
int N;
for(N = 0; fabs(EPS) > maxerror; N++){
x -= EPS;
EPS = f(x, a, b, c) / df(x, a, b, c);
}
printf("X = %10.24f\n", x);
printf("N = %d\n", N);
printf("EPS = %3.24f\n", EPS);
return 0;
}
238 :
237 :2008/01/07(月) 22:07:10
ああ、ロケールがUTFだからか 17行目の日本って部分が化けてるな もし化けてたら日本ってかえておいて。
239 :
デフォルトの名無しさん :2008/01/07(月) 22:08:37
>>239 ああ、申し訳ない。何を考えていたんだろう。
mainでdouble a,b,c,dを定義して
fはax^3+bx^2+cx+d
dfは3ax^2+2bx+c
をreturnするように書き換えればおk
241 :
デフォルトの名無しさん :2008/01/07(月) 22:21:01
つぎのようなファイルをオープンしようとすると読み込めないのですが改善策はありますでしょうか? index.php_cmd=kgg&cmds=displaytxt&kid=0
244 :
デフォルトの名無しさん :2008/01/07(月) 22:29:59
245 :
237 :2008/01/07(月) 22:33:12
246 :
デフォルトの名無しさん :2008/01/07(月) 22:41:09
[1] 授業単元:プログラミング技術 [2] 問題文(含コード&リンク): マクロ#ifdefなどを使い、条件コンパイルできるようなソースを書け。 なお#ifdefは #ifdef 名前 //実行本体 #else //なくてもよい //実行本体 #ifdef //#ifdefの終了 という使い方をする。 [3.1] OS:Linux [3.3] 言語:C [4] 期限:2008年01月09日10:20まで [5] その他の制限: なしです あけましておめでとうございます。 よろしくお願いします。。
>>246 実行本体のところは何でもいいってこと?
>>248 /* 一年前の日付を求める */
void day_prev(int *y){
(*y)--;
}
250 :
デフォルトの名無しさん :2008/01/07(月) 23:12:43
面倒くさいプログラムですが、グラフィック得意な職人さんよろしくお願いします。 [1] 授業単元:C言語演習〜3次元グラフィック〜 [2] 問題文(含コード&リンク): 最終課題としてオリジナル作品を制作する。 以下の仕様を満たすように作成すること。 ・3次元オブジェクトを作成する。(基本なんでも良い) ・アニメーションを入れること。(自動アニメーションなど) ・シェーディングを用いること。(グローシェーディングなど) ・プログラムの説明をプログラム中に記載すること。 自分の希望は球体を3D描画し、光源を1つ用意し、グローシェーディングで球体表面に影を付け 自動アニメーションで360度光源が球体の周りを回転して、「月の満ち欠け」再現するようなプログラムを希望します。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: cygwin gcc (Devel, Libs, Graphicsをインストール) [3.3] 言語: C言語 [4] 期限: 2008/1/13(日) [5] その他の制限: cygwinでインストール時にDevel,Libs,Graphicsをインストールしてある環境で動作するものをお願いします。 コンパイル:-DWIN32 -lglut32 -lopengl32 -lglu32 GLUT,GLUIはインストールされています。
251 :
219 :2008/01/07(月) 23:14:37
>>244 (2)だけやった
#include <stdio.h>
double Simpson(int range)
{
double one_r = 1/(double)range;
double s,e = 0.0;
for(s = 1.0; s < 2.0; s += one_r)
e += (((1/(s + one_r))-1/s)/2 + (1/(s + one_r)))*one_r;
return e;
}
int main()
{
printf("区切りの数は5で%lf \n",Simpson(5));
printf("区切りの数は10で%lf \n",Simpson(10));
printf("区切りの数は20で%lf \n",Simpson(20));
printf("区切りの数は40で%lf \n",Simpson(40));
printf("区切りの数は100で%lf \n",Simpson(100));
printf("区切りの数は1000で%lf \n",Simpson(1000));
printf("区切りの数は5000で%lf \n",Simpson(5000));
return 0;
}
>・プログラムの説明をプログラム中に記載すること。 これは欲張りすぎだろう・・・
253 :
デフォルトの名無しさん :2008/01/07(月) 23:20:56
>>252 そうですね。
問題にそう書いてあるだけなので、プログラムを作成していただければ
後は自分でプログラムの説明を書きます。
どうかお願いします。
254 :
デフォルトの名無しさん :2008/01/07(月) 23:24:35
>>248 1年ずらすだけなら
yが閏年か判断してからインクリメントして、
1足すか足さないかでできるんじゃないか?
255 :
248 :2008/01/07(月) 23:25:45
>>249 ありがとうございます!
難しく考えていました。
あとmainの中での処理はどう付け加えたら良いでしょうか?
拾い忘れは無いと思うが、アンカーが多すぎますとか初めて食らった。
遠い順からアンカー無しで
【未解決問題】
>>179 1/8 15時
>>18 1/8
>>22 1/8
>>29 1/8
>>244 1/8 残り(1)のみ
>>246 1/09 10:20
>>96 1/9
>>13 1/9
>>138 1/9
>226 1/10
>148 1/12 正午
>250 1/13
>231-232 1/26
>229 1/31
>>228 ありがとうございました。
早い回答で大変助かります。
せっかく時間があるので中身はきちんと自分で理解してから
提出しようと思います。
>>246 #include <stdio.h>
#define jap
int main(){
puts(
#ifdef jap
"世界よ、こんにちは!"
#else
"Hello, World!"
#endif
);
return 0;
}
260 :
248 :2008/01/07(月) 23:46:34
>>254 ありがとうございます。
それだと]
>>249 さんに教えて頂いたものと違ってきますか?
具体的にプログラムを書いていただけると、
とても助かるのですがお願いできないでしょうか。。
>>259 >どうすれば良いでしょうか?
スレ違い。関数化する宿題であればきちんと問題から書き直しするように。
262 :
デフォルトの名無しさん :2008/01/07(月) 23:46:48
[1] 授業単元:C [2] 問題文 複数の数値に対する最大公約数を求める関数を作成し、それを利用するプログラムを作成せよ。関数は下記の通りとする。 int gcm(int *in,int num) in 入力値が格納された配列の(先頭)ポインタ num 入力値の最大公約数 入力に関して キーボードから、入力値がスペース1つ開けて1行で入力する。この時、入力を促す文字等は決して表示しないこと。 出力に関して 結果+改行のみ出力。指定した数値・改行以外の文字等の出力は一切行わないこと。 [3] 環境 [3.1] OS: windows XP [3.2] コンパイラ名とバージョン:stady C [3.3] 言語: C言語 [4] 期限: 2008/01/08(月)(〜22:00) [5] その他の制限:簡単にお願いします
263 :
デフォルトの名無しさん :2008/01/07(月) 23:50:09
>>259 つまり
・読み込み用にopenfile関数。
・計算部分用にmath関数。
・最後にmain関数で結果を出力。
って感じで構成すればいいの?関数名は適当だけど。
264 :
デフォルトの名無しさん :2008/01/07(月) 23:53:34
93スレの問いの答えお願いします
265 :
219 :2008/01/07(月) 23:56:01
267 :
デフォルトの名無しさん :2008/01/08(火) 00:01:08
>>264 何のOS?コンパイラはなに?そもそもCかC++かすら分からないのに答えるのは相当なエスパー。
268 :
デフォルトの名無しさん :2008/01/08(火) 00:03:37
いくつかわからない問題があるのですが これが一番解りませんでした。どうぞよろしくお願いします [1] 授業単元: Cプログラム [2] 問題文:while文または、for文を使って以下のように☆と★を表示させるプログラム [表示例] ★ ★☆★ ★☆★☆★ ★☆★☆★☆★ ★☆★☆★☆★☆★ ★☆★☆★☆★☆★☆★ ★☆★☆★☆★☆★☆★☆★ ★☆★☆★☆★☆★☆★☆★☆★ ・最下段は★と☆が合計15個ならぶ ・☆印だけではなく、空白も表示させるようにする *表示例が崩れた場合に一応。ツリー型です。 [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語:C [4] 期限: 今週金曜日昼まで [5] その他の制限: 現在for文が終わったところです。まだループの中断は習っていません。if文も使用可能との事です どうぞよろしくお願いします。また別の問題が解らなかったら現れるかもしれません。
>>269 #include <stdio.h>
int main(void){
int n=7,i,j;
for(i=0;i<n;i++){
for(j=1;j<n-i;j++)
printf(" ");
for(j=0;j<i;j++)
printf("★☆");
printf("★\n");
}
return 0;
}
>>269 #include<stdio.h>
#define N 7
int main(void){
int i,j;
for(i=0;i<N;i++){
printf("%*s★",(N-1-i)*2,"");
for(j=0;j<i;j++)
printf("☆★");
printf("\n");
}
return 0;
}
273 :
デフォルトの名無しさん :2008/01/08(火) 00:55:42
>>273 仕様はそれであっているのか。なら書くが。
% はくっつくのかくっつかないのか、それともどちらも正しいのか。
文字(列)操作でも、オプションは printnum なのか
275 :
273 :2008/01/08(火) 01:06:55
printnumはオプションじゃなくて実行ファイル名ですけど?
>>273 #include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv) {
if (argc != 3) {
printf("usage: printnum [mode] [value]\n");
return -1;
}
switch (argv[1][0]) {
case 'o':
printf("%o", atoi(argv[2]));
break;
case 'x':
printf("%x", atoi(argv[2]));
break;
case 'd':
printf("%d", atoi(argv[2]));
break;
}
return 0;
}
279 :
259 :2008/01/08(火) 01:26:02
>>263 はいそういうことです。わかりにくくてすみません。
280 :
259 :2008/01/08(火) 01:31:23
>>261 定積分の計算を台形の公式をつかっておおよその値を求めるプログラムを作る
宿題が出たのですがそのプログラムは、「データの読み込み関数」と、「積分値を計算する関数」
を作ることが必須だったのです。関数名は何でもかまわないのですが..。
分かりにくくてすみませんでした。
281 :
デフォルトの名無しさん :2008/01/08(火) 01:39:44
[1] 授業単元:最終課題 [2] 問題文: 10×10(変えることができる)の迷路の脱出過程(どこをどのように通ったか)を表示するプログラムを作成せよ なお、Sはスタート地点・Gはゴール地点・Wは壁・Rは経路を示す また脱出者は迷路に関する情報は事前に持っていないこととし、 脱出過程の表示は、定期的に現在地を表示するものと、最終的な経路を表示するものを用意すること。 SWWWWRWWWW RWRRWRWWWW RWWRWRWWWW RRRRRRRRRR WWRWWRWWWW WWRWWRWWWW WWRWWRWWWW RRRRRRRRRR WWWWWWWWWR WWWWWWWWWG [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン: [3.3] 言語:C++ [4] 期限:2008年1月9日 [5] その他の制限:関数を使って、なるべく簡単な方法でお願いしますm(_ _)m
>>280 宿題であればちゃんとテンプレに沿って問題を書け
(その上で前スレで類似解答があったことを書く)
他人のを使って横着はイクナイ
284 :
デフォルトの名無しさん :2008/01/08(火) 01:52:29
[1] 授業単元:ライブラリ強化週間
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5679.zip えーっと、新しいガベージコレクト方法を思いついたというか、参照カウント法の拡張で循環参照に対応できないかという試みです。
その名もユニークカウント法!ってやってたら、ウイークポインタがあるらしいけど、それともちょっと違う。
で、個人では追跡しきれないので手伝ってほしいというものです。
要点は配列クラスとして、最低限満たしているかということと、メモリのスマッシュとリークが発生しないことを確かめたいです。
TMemoryはメモリの操作のラッパーでメチャメチャ低機能です。
UniqueCounterは所有権を他の同じクラスと共有して一意なモノの所有者をカウントします。破棄は最後に残ったひとつが担当しています。
TArrayは上の二つを利用してD言語の影響で作った配列クラスを実現します。っていうかそういう予定です。
[3] 環境
[3.1] OS: Any(筆者はWindows使用)
[3.2] コンパイラ名とバージョン:VC++9 Express。他。
[3.3] 言語:C++
[4] 期限: 3日間位
[5] その他の制限: STL可。BOOST&TR1以降禁止。なるべく標準の範囲で。マルチスレッドは考慮しない。
よろしくお願いします。
285 :
237 :2008/01/08(火) 01:54:11
286 :
デフォルトの名無しさん :2008/01/08(火) 01:55:50
1] 授業単元:プログラミング [2] 問題文 次のsample.txtを配列a[][]にいれてからモニターに表示しなさい。 101 287 345 391 348 287 391 371 388 39 388 88 404 150 428 404 387 145 299 404 197 320 397 141 342 428 429 206 36 214 412 88 176 214 346 210 406 308 250 26 112 370 328 328 284 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:[2008年1月8日 13:00まで [5] その他の制限:ファイルの入出力を最近ならいました
>>287 自分への宿題って言うのはだめ。。。ですよねぇ〜。
λ...<帰る。
ファイルは寝て起きたら消します。
乱文失礼しました。
289 :
259 :2008/01/08(火) 02:09:21
>>283 すみませんでした。以後気をつけます。
まだ時間があるのでなんとか頑張ってみます。
〜を作れってのならまだしも、デバッグしろってのはスレ違いすぎる
291 :
デフォルトの名無しさん :2008/01/08(火) 02:20:14
>>286 汎用性は持たせずにそれを解ければおk?
292 :
246 :2008/01/08(火) 02:34:38
>>247 ちょっとそこらへん怪しく感じたので、明日に友人に聞いてみます;;
>>258 回答ありがとうです!実行本体がなんでもよかったら是非使わせてもらいます!
293 :
デフォルトの名無しさん :2008/01/08(火) 03:13:57
>>286 #include <stdio.h>
#define GYOU 6
#define RETU 11
int main()
{
FILE *fp = fopen("sample.txt","r");
int a[GYOU][RETU] = {0};
int ch,num,tmp,i,j;
for( i = 0; i < GYOU; i++){ for( j = 0; j < RETU; j++){
for(num = 0;(ch = fgetc(fp)) > ' ';){
tmp = ch - '0';
num *= 10;
num += tmp;
}
if(ch == ' ')
a[i][j] = num;
else if(ch == '\n')
break;
}
}
for( i = 0; i < GYOU; i++){ for( j = 0; j < RETU; j++){
if(a[i][j])
printf("%d ",a[i][j]);
}
putchar('\n');
} return 0;
}
>>29 #include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <functional>
#include <map>
using namespace std;
typedef multimap<int,string,greater<int> > mmap;
int main(void){
string name;
cout <<"ファイル名教えれ:";
cin >> name;
ifstream ifs( name.c_str() );
if( !ifs ) { cerr << name << "なんか知らないんだからね" ; return 1; }
mmap tensu;
string buf;
while ( getline( ifs, buf ) ) {
string::size_type pos ( buf.find( " " ) );
tensu.insert( mmap::value_type( atoi( buf.substr( pos ).c_str() ), buf.substr( 0, pos ) ) );
}
for( mmap::iterator it ( tensu.begin() );it != tensu.end(); ++it )
cout << it->first << ":" << it->second << endl;
}
課題の要求が良くわからんのだが,適当に
>>282 ありがとうございます
結果が白黒になるんでしょうか?家にLINUX環境が無いので確認できません…
なるのでしたら修正方法をご教授いただきたいです
>>297 結果を白黒にしないのなら、310 行目の bmpimg_monochrome() 関数の
呼び出しを削除すればおk。
299 :
るRJ :2008/01/08(火) 11:29:39
[1] 授業単元:情報処理演習 [2] 問題文(含コード&リンク): 10進数で入力した整数を2進数に変換するプログラムを作成せよ。 ただし関数を用いること。 [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: gcc 2.4 [3.3] 言語: C [4] 期限: 1月9日 九時 [5] その他の制限:
300 :
◆vLIz8KOkPM :2008/01/08(火) 11:51:41
もうほんと助けてくださいお願いします 講義 プログラミング概論(教養 (平面状の座標を構造体で表す 平面状の二点の座標を読み込み、それら2点の距離を出力するCプログラムを作成せよ 但し、プログラム作成においては、平面状の点をX座標(実数値)、Y座標(実数値)の組の構造体で表し、 それにpointというデータ型名を付けるものとする ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ です、お願いします。
書き忘れました [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: (C [4] 期限: 30分後・・・・・
303 :
デフォルトの名無しさん :2008/01/08(火) 12:32:01
304 :
デフォルトの名無しさん :2008/01/08(火) 12:37:24
>>301 見てるか?後5分待て。今気がついたから即効作る。
>>299 #include<stdio.h>
void d2b(unsigned int n){
unsigned int m=0;
int i;
for(i=0;n>0;m=m*2+n%2,n/=2,i++);
for(i+=!i;i>0;printf("%d",m%2),m/=2,i--);
printf("\n");
}
int main(void){
int n;
printf("n=");
scanf("%d",&n);
d2b(n);
return 0;
}
ありがとうございますお願いします (:_;)
307 :
デフォルトの名無しさん :2008/01/08(火) 13:02:45
>>300 typedef struct NODE {
char name[NMAX];
struct NODE *parent;
struct NODE *child[CMAX];
}NODE;
309 :
◆vLIz8KOkPM :2008/01/08(火) 13:43:38
310 :
デフォルトの名無しさん :2008/01/08(火) 14:19:33
未終了の課題まだー?
宿題かもーん。
312 :
デフォルトの名無しさん :2008/01/08(火) 15:00:07
[1]C言語 [2]三つのint型整数を昇順に並びかえる関数 void sort3(int *n1,int:n2,int:n3){/*…*/} を作成せよ [3] OS:XP 言語:C++ [4] 1月11日(金) よろしくお願いします
313 :
デフォルトの名無しさん :2008/01/08(火) 15:25:19
281 誰かお願いします(ノ_・。)
314 :
デフォルトの名無しさん :2008/01/08(火) 15:31:58
//
>>312 #include <ostream.h>
#include <stdlib.h>
template<class T>
class Sort {
private:
void sort2(T& i1, T& i2) {
T temp = 0;
if ( i1 > i2 ) {
temp = i1; i1 = i2; i2 = temp;
}
}
public:
void sort3(int* n1, int* n2, int* n3) {
sort2(*n1, *n2);
sort2(*n2, *n3);
sort2(*n1, *n2);
}
};
int main()
{
int x, y, z; Sort<int> sort;
srand(time(NULL));
x = rand(); y = rand(); z = rand();
sort.sort3(&x, &y, &z);
cout << x << " <= " << y << " <= " << z << endl;
return 0;
}
316 :
デフォルトの名無しさん :2008/01/08(火) 15:43:57
>>313 迷路自体のプログラムはできてるんですか?
表示というか、経路管理の関数だけ作ればおk?
318 :
デフォルトの名無しさん :2008/01/08(火) 16:27:20
1 C言語 2 8パズルの解法 1、84 162 537 の状態から 123 456 78 に至る(空白=0)コマの動かし方を求める。まず初期状態から動かせる向きをその都度ランダム に選んで状態を変えることによって目標状態を目指すプログラムを作りなさい。 2、1のプログラムを改良して過去に一度なったことがある状態に2回以上ならないようにしてください。 3,1 unix 3,2 gcc 3,3 c 4 今日中 プログラムの宿題なんですが解いてくださいお願いします。こまってます。
何年から何年まで対応するんだ。 ハッピーマンデー前後だけでも大きく変わるのだが
321 :
デフォルトの名無しさん :2008/01/08(火) 16:50:28
318誰か助けてください。やばいんです。
>>320 1948年以降です
現行の休日制度が変わらないと仮定して、9999年ぐらいまで対応していただきたいです
wikiのページを参照だと!?
>>318 とりあえず
自分の書いた中で
どこかおかしなとこがないか見直そうぜ
326 :
デフォルトの名無しさん :2008/01/08(火) 17:05:49
327 :
デフォルトの名無しさん :2008/01/08(火) 17:08:41
>>325 さん
すいません。
840
162
537
から
123
456
780
です。これでいいでしょうか?
他におかしい点あったら指摘お願いします。
328 :
デフォルトの名無しさん :2008/01/08(火) 17:23:10
>>327 325じゃないけど、何がしたいのか分からない。
・最初の数字バラバラの状態は、手動入力で受付るようにすのか?
それともファイルを読み込むのか?
もしくはランダムで作成するのか?
・パズル解くまでの過程は1つ1つ表示するのか?
それとも手動入力orファイル読み込み後、いきなり並び替え後を表示していいのか?
それだと、どういう順序で解いたのか分からない。(題意では>>コマの動かし方を求める。ってあるぞ?)
>>138 なんですけど、明日までなんでどうかよろしくお願いします(>_<)
330 :
◆CxWBqy7wZQ :2008/01/08(火) 18:53:37
331 :
273 :2008/01/08(火) 18:56:29
>>274 すいません。%のことは書き間違えてました。%は全部くっついてません。
>>278 ありがとうございます。
誰か2番の問題の方も書いていただけませんか?
[1] 授業単元:卒論
[2] 問題文(含コード&リンク):素数の連結リストの作成
[3] 環境
[3.1] OS: windows home
[3.2] コンパイラ名とバージョン: gcc(cygwin)
[3.3] 言語: C
[4] 期限: 特にないですが、早ければ早いほどありがたいです
[5] その他の制限: 特になし
一応プログラムを作ってみました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5694.txt 数値のリストへの格納、2の倍数が格納されているリストの削除までは正常に行えているようなのですが
3の倍数が格納されてるリストを削除しようとする時にcore dumpしているようです。
カーマイケル数を求めるために必要なリストを作っている最中なので、先に進めず悩んでいます
core dumpの原因が分かる方、ヒントor修正お願いします
333 :
デフォルトの名無しさん :2008/01/08(火) 19:37:42
>>315 ありがとうございました
参考にさせて頂きます
335 :
デフォルトの名無しさん :2008/01/08(火) 20:46:22
>>332 60行目あたりの
>for(j=pow(q,2);j<MAX;j=j+2*q) list_remove(list_search(&data,j));
でlist_searchからNULLが返ったときにコアダンプ。
おそらくポインタの使いかたとかじゃないかと思うけど。
正確にはlist_removeのif (*p != NULL)でエラーが出てるはず。
for文にあまりぶち込まない方がいいとおもいます。
>>332 list_search(&data, j)がNULLのときにエラーが起きてる気がする。
q=3;
while(pow(q,2)<=MAX){
for(j=pow(q,2);j<MAX;j=j+2*q) list_remove(list_search(&data,j));
/*リストから9,15,21,24,...のデータが入ってるリストを削除*/
q += 2;
/*次はリストから25,35,45,55,...のデータが入ってるリストを削除*/
//45は既に無いからlist_search(&data, j)はNULLでエラー
}
そもそも篩には向いてないような。
いきなり2からMAXまでリストにするのではなく、
小さい素数から順にリストにしていくのがこの場合妥当だと思われ。
337 :
デフォルトの名無しさん :2008/01/08(火) 21:19:58
338 :
デフォルトの名無しさん :2008/01/08(火) 21:27:37
340 :
237 :2008/01/08(火) 21:46:33
>>309 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5696.txt このプログラムで定義した木構造は、それぞれのノードが
そのノードの名前、親ノードへのポインタ、子ノードへのポインタを持っている。
ただし、子ノードへのポインタは、ノード構造体ポインタの配列として所持している。
その配列の限界値、つまりひとつのノードが持つことができる子ノードの数はCMAXとしてマクロ定義してある。
DMAXマクロ定義は木構造の深さの最大値を定義してある。
これは検索コマンド実行時に、検索によって見つかったノードのパスを表示する際に使用している。
NMAXマクロ定義はノードの名前の最大値を定義してある。
したがって、NMAX、CMAX、DMAXはそれぞれ違う意味を持つため一括で定義することはオススメできない。
一応、一度手を出した宿題だからやったけど、もうこれ以上のことは期待しないでくれ。
コメントは
>>285 を基に、若干修正しながらつけた(プログラムの構造自体は全く変わっていない)
ファイルエンコードはshift-jis
341 :
デフォルトの名無しさん :2008/01/08(火) 21:50:50
[1] 授業単元:プログラミング [2] 問題文: 次のパターンを識別する単一パーセプトロンを構成せよ。 x2=x1-0.5 (0.5<x1<1)の範囲で上部分をy=0,下部分をy=1でお願いします [3] 環境 [3.1] XP [4] 期限: 1/9 [5] その他の制限:特に無いです
344 :
デフォルトの名無しさん :2008/01/08(火) 22:28:54
[1] 授業単元:プログラミング技術
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5699.txt このソースコードを2つ以上に分けて分割コンパイルできるようにせよ
大域変数のmain以外のファイルからの参照に関してはextrnキーワードを使う
例:
gcc s1.c s2.c
gcc -o s.out s1.o s2.o
とするとs1とs2をリンクしてs.outを作成してくれる
[3.1] OS:Linux
[3.3] 言語:C
[4] 期限:2008年01月09日10:20まで
[5] その他の制限: なしです
あけましておめでとうございます!
どうかよろしくお願いします。
いい加減little busters消そうぜ
>>318 意味わからんが15ゲームの簡単バージョンってこと?
「群論 置換群」でググッてみなさいとエスパーしてみる
>>344 //ヘッダファイルsh.h
#include <stdio.h>
#include <stdlib.h>
typedef struct node{int x;int y;int data;struct node *next;}MyList;
extern MyList *datahead;
MyList *AllocMyList(void);
int initialize(void);
int SumMyList(MyList *m);
int CountMyList(MyList *m);
double AveMyList(MyList *m);
int DeleteMyList(MyList *m, int n);
int AppendMyList(MyList *m, int x, int y, int data);
void PrintMyList(MyList *m);
int CmpX(MyList *p, MyList *q);
int CmpY(MyList *p, MyList *q);
int CmpData(MyList *p, MyList *q);
MyList *Merge(MyList *a, MyList *b, int (*cmp)(MyList*, MyList*));
MyList *MergeSort(MyList *m, int (*cmp)(MyList*, MyList*));
void quit(void);
//s1.c #include "sh.h" int main(int argc, char *argv[]){...} //s2.c #include "sh.h" MyList *AllocMyList(void){...} int initialize(void){...} int SumMyList(MyList *m){...} int CountMyList(MyList *m){...} double AveMyList(MyList *m){...} int DeleteMyList(MyList *m, int n){...} int AppendMyList(MyList *m, int x, int y, int data){...} void PrintMyList(MyList *m){...} int CmpX(MyList *p, MyList *q){...} int CmpY(MyList *p, MyList *q){...} int CmpData(MyList *p, MyList *q){...} MyList *Merge(MyList *a, MyList *b, int (*cmp)(MyList*, MyList*)){...} MyList *MergeSort(MyList *m, int (*cmp)(MyList*, MyList*)){...} void quit(void){...}
忘れてた。 s2.cに下記を追加。 MyList *datahead=NULL;
【時間切れ】 (1/8)
>259 >318 >319
【未解決問題】
>>13 >>333 1/9 明日の朝一
>>138 1/9
>>338 1/9
>>341 1/9
>>330 1/9 24:00
>148 1/12 正午
>250 1/13
>231-232 1/26
>229 1/31
>343 不明
353 :
344 :2008/01/09(水) 00:16:29
>>347-349 解答ありがとうございます!
追加というのはs2.cの一番下でいいんですよね?
s1.cが短いのですが、これコンパイルできるのですか!?
355 :
354 :2008/01/09(水) 00:21:57
あっ、ごめ。 ソート順が逆だったよ・・・ itemrel_compare 関数の戻り値をひっくりかえせばおk。
[1] 授業単元:プログラミング
[2] 問題文
http://www.uploda.org/uporg1194609.rar.html パス:C++(半角)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VisualStudio2005
[3.3] 言語:C++
[4] 期限:1/9 18:00
[5] その他の制限:
問題文と一緒に同梱してあるプログラム(自作)程度しか分かりません。orz
「新しいプロジェクト」→「VisualC++」→「CLR」→「Windowsフォーム アプリケーション」にて作成。
提出の指定形式になります。
同梱したプログラムに何か付け足せば正常作動することが分かっています。
(他の人に聞きましたが、それ以上教えてくれませんでした)
今日中とかいうのは無理なお願いだと承知ですが、どうかよろしくお願いします。。。
ぱっと見ただけでqsortからnが参照できるとは思えんが
>>356 C++/CLR はこのスレの範疇なのかというのは置いくとして,
まあ,おそらくはこういうことなんだろうけど,
void qsort(int m,int k){
j=m;
if (m<n){
v=a[m]; p=m-1; q=k+1;
for(i=m;i<=n;i++) { if(a[i]<v) { b[j++]=a[i]; } }
p=j-1;
//修正 if(a[i]=v) → if(a[i]==v)
for(i=m;i<=n;i++) { if(a[i]==v){ b[j++]=a[i]; } }
q=j;
for(i=m;i<=n;i++){ if(a[i]>v){ b[j++]=a[i]; } }
// 追加
for(i=1;i<=n;i++){ a[i]=b[i]; }
if(m<=p){ qsort(m,p); }
if(q<=n){ qsort(q,n); }
}
}
これをクイックソートとは言いたくないなぁ
>>354 わっふるわっふる
じゃなくて、ありがとうございますm(__)m
よろしければ、わっふるわっふるw
>>360 さん、どうもありがとうございました!m(__)m
>>330 1. それぞれのNodeのdataの領域を確保してない.
typedef struct node {
char data[20]; //char *data;
struct node *left;
struct node *right;
} Node;
とするか,逐一 realloc() するようにする.
2. main()でのdata への代入が文字列なので,strcpy() なり,strcat() なりで.
>>362 dd
文字列ポインタがまずかったみたいですね
364 :
デフォルトの名無しさん :2008/01/09(水) 03:37:42
LINUX上でWORDファイルの読み取り属性を変更したいのですが、LINUXでWIN32APIは使用できるのでしょうか? 教えてください
>>364 Linux板池。
それとも「WORDファイルの読み取り属性を変更するプログラムを作れ」って宿題か?
とりあえず
>>1 な。
367 :
364 :2008/01/09(水) 03:51:11
>>365 >>366 どうもすみません。以下が質問文です
[1] 授業単元: ソフトウェア開発の演習
[2] 問題文
LAMP環境のwebアプリを作っていますが、PHPからC言語プログラムを実行して、
ワードファイルの読み取り属性を変更したいと思っています。しかしながら、windowsでは
win32APIなどの関数を使って、読み取り属性変更はできますが、Linux上ではそのようなことができるのでしょうか ?また、PHPからC言語のプログラムは実行可能でしょうか?
[3] 環境
[3.1] OS: FedraCore6
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 1/10 までです
[5] PHP上からC言語の実行ファイルを実行して、読み取り属性を変えたいと思っております。
>>367 問題文は先生から出されたままを記述しろ
PHPによるwebアプリはスレ違いだから他へ行け
369 :
364 :2008/01/09(水) 03:59:57
>>367 Linux板行った方がいいと思うけどな。
あっちなら専門だから。
>>365 input[0]の内容
0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
input[1]の内容
0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
格納されてるように見えるが
372 :
デフォルトの名無しさん :2008/01/09(水) 04:28:27
>>250 です。
期限13日までと書きましたが、ソースコードの詳細な仕様書を書かないといけないので
余裕を持って前日12日くらいまでに作成していただけると助かります。
(自分のレベルではソースコードを理解して、仕様書作るのを1日でやるのは難しいので)
お手をわずらわせますが、よろしくお願いします。
373 :
デフォルトの名無しさん :2008/01/09(水) 04:32:46
>>・プログラムの説明をプログラム中に記載すること。 これも自分でやりますので、プログラムの作成をよろしくお願いします。m(_ _)m
374 :
365 :2008/01/09(水) 04:54:24
>>371 input[]は
input[]="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
で初期化しているので
input[0]=0
input[1]=1
ではないのでしょうか?
それともtableのことなのでしょうか・・・
375 :
365 :2008/01/09(水) 05:00:14
ちなみにcur,ch,nextは 3行目以降の左から数字、記号、数字に対応しています。 3行目を読み込むプログラムで table[cur][p-input]=next; の後にprintfでその中身を表示すようとしてもなにも表示されないのです@@; たぶんwhileの条件で蹴られてると思うのですがよくわかりません; よろしくお願いします<(_ _)>
>>365 int i, j;をブロック先頭で宣言して
for(i = 0; i < 2; i++){
for(j = 0; j < sizeof(input) - 1; j++)
printf("%d ", table[i][j]);
printf("\n");
}
をreturn 0;直前にやれば、中身はきっちり表示される。
377 :
365 :2008/01/09(水) 05:43:46
例えばなのですが3行目の始めの
0 a 1
を読み込むときに
table[cur][p-input]=next;のときに
curが0でp-inputが記号aの場所(配列inputの中のaの場所、何番目か)
なのでp-inputが10でnextが1なので
table[0][10]=1となると思うのですが
>>367 のプログラムを加えても0000000・・・・
しか表示されないのですがなぜでしょうか@@;
すみません無知で・・・
>>365 読み込んでるファイルをチェック。
1行目の末尾に、つまり改行前に半角スペースがあるとか。
1行目だけじゃないや、3行目以降も。
380 :
365 :2008/01/09(水) 06:03:44
う〜ん、半角スペースとかはなかったですね; 末尾の数字を打ってすぐ改行していました・・・。 なにがおかしいんでしょうかね;
381 :
365 :2008/01/09(水) 06:36:04
3行目を読み込むときのwhileの条件がおかしくて elseでの格納がうまくいってないみたいです;(どこがおかしいのかはわからずorz) ちなみにgcc -Wallでコンパイルしたときには whileの条件の行に warning: format '%c' expects type 'char *',but argument 4 has type 'int *' みたいなのが出てきます・・
383 :
365 :2008/01/09(水) 08:03:43
エラーっぽいのはきえましたが3行目以降が読み込めないorz
[1] プログラミング演習 [2] 降順のマージソートを作れ。 [3.1] mac os [3.2] gcc [3.3] C [4] 期限: 1月10日 [5] 単純な問題だろうと思うのですがつまづきまくりです。。お願いします。。。演算子<=を変えるだけではだめですよね。 昇順のマージソート↓ WORD *merge_sort(WORD* x) { WORD *a, *b, *y; if(x == NULL || x->next == NULL) return x; a = x; b = x->next; if(b != NULL) b = b->next; while(b != NULL) { a = a->next; b = b->next; if(b != NULL) b = b->next; } y = a->next; a->next = NULL; return merge(merge_sort(x), merge_sort(y)); } WORD *merge(WORD* x, WORD* y) { WORD z, *p; p = &z; while(x != NULL && y != NULL) { if(x->count <= y->count) { p->next = x; p = x; x = x->next; } else{ p->next = y; p = y; y = y->next; }} if(x == NULL) p->next = y; else p->next = x; return z.next; }
ソース自体意味が分からんのだが・・・ こんな面倒な事する必要あるか?
>>384 マージソートってこんなアルゴリズムだったっけ?
[1] 授業単元:プログラミング総合 [2] 問題文(含コード&リンク): (1)1〜1000の範囲の乱数を100個発生させて、50〜500までの数字のみを抜き出して画面に表示させる。 (2)トランプゲームのブラックジャックを作れ (3)-10〜10までの範囲の整数の乱数を3つ発生させ、それぞれを二次方程式ax^2+bx+cの係数値として方程式の解を求めよ。また、それを1000回繰り返した場合の、二つの実数解になる確率、虚数解になる確率、十回となる確率をそれぞれ画面に表示せよ (4)1〜20の乱数を二つ発生させ、その和を予測しキーボードから入力、正解したら終了。チャンスは10回 (5)引数としてA,B,Cグループの値を関数heikinに渡し、以下を求め画面に表示させる。 1.A、B、Cそれぞれの平均値 2.全部の平均値 A.(123、234、531、768、981) B.(918、392、029、250、762、520、238) C.(987、098、518、987) (6)自然数0〜99の範囲の乱数を30個発生させて、それらを小さい順に並び替えて画面に表示させる (7)英文のテキストファイルから、aとbの数を数える (8)1940年1月1日を0として生年月日を連続値に置き換え、その数値を種として乱数を発生させ、乱数値を4で割った余りが0「大吉」、1「中吉」、2「小吉」、3「凶」となるおみくじを作成せよ [3] 環境 [3.1] OS Windows XP [3.2] コンパイラ名とバージョン: Visual Studio.NET2003 [3.3] 言語: C [4] 期限:1/10の午後1時まで よろしくお願いします。
>>384 普通にできてるだろ。
プロトタイプ宣言してなくてエラーとかじゃない限り。
もしくは単方向リストじゃないとか。
>>384 連結リストにしてるから面倒くさいな。
WORD *merge(WORD* x, WORD* y) {
WORD z, *p; p = &z;
while(x != NULL && y != NULL) {
if(x->count >= y->count) { /* 変更箇所 */
p->next = x; p = x; x = x->next;
} else{
p->next = y; p = y; y = y->next; }}
if(x == NULL) p->next = y;
else p->next = x;
return z.next; }
これでいいんじゃね
390 :
384 :2008/01/09(水) 10:05:43
失礼しました追記です。 WORD x、yは構造体のリストです。 構造体はint型のcountを持っていてこの数字の順に並べ替えます。 このソースで昇順のソートはできているのですが…
>>387 (1)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int i, x;
srand(time(NULL));
for (i = 1; i <= 100; ++i) {
x = (rand()+1) % 1000;
if (50 <= x && x <= 500) {
printf("%3d: %d\n", i, x);
}
}
return 0;
}
>>387 (3)
>>392-393 #include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int dim() {
int a, b, c, D;
a = rand() % 20 - 10;
b = rand() % 20 - 10;
c = rand() % 20 - 10;
printf("%dx^2 + %dx + %d = 0\n", a, b, c);
D = b * b - 4 * a * c;
if (D > 0) {
printf("x = %lf, %lf\n",
(-b+sqrt(D))/(2*a), (-b-sqrt(D))/(2*a));
return 1;
}
if (D < 0) {
printf("x = %lf + j%lf, %lf - j%lf\n",
(float)-b/(2*a), sqrt(-D)/(2*a), (float)-b/(2*a), sqrt(-D)/(2*a));
return -1;
}
if (D == 0) {
printf("x = %lf\n", (float)-b/(2*a));
return 0;
}
}
int main() { int i = 0, a = 0, b = 0, c = 0, result = 0; srand(time(NULL)); for ( ; i < 1000; ++i) { result = dim(); if (result == 1) ++a; else if (result == -1) ++b; else if (result == 0) ++c; } printf("実数解の確率 = %2.2f%%\n", (float)a/10); printf("虚数解の確率 = %2.2f%%\n", (float)b/10); printf("重解の確率 = %2.2f%%\n", (float)c/10); return 0; }
訂正 rand() % 20 - 10; じゃなくて rand() % 20 * rand() & 1 ? 1 : -1; だな。
ああスマン rand() % 21 - 10; だ、脳みそに蛆わいてたって事で
396 :
デフォルトの名無しさん :2008/01/09(水) 12:10:30
プロセス終了すれば解放されるさ。
398 :
332 :2008/01/09(水) 12:32:50
>>335-336 重複してる数の処理のところで不具合起こってたんですね、なるほど
学科での課題では連結リスト扱う機会が少なかったもので…正直知識不足の状態です
wikipediaに掲載されてたプログラムをベースに手探りで作ったものだったので、
自分じゃどこが悪いのか途方に暮れてました
これを機会に色々勉強してみます。ありがとうございました!
>>339 ありがとうございます!自分が作ったものより単純明快でありがたいです
今このプログラムにカーマイケル数を探すプログラムを追加して動かしてます
とりあえず一千万までの数値を見つけてますが、いつ終わることやらw
>>399 #include <stdio.h>
#include <math.h>
int main() {
unsigned int x, y, z, i;
int tunnel[20];
printf("物体のサイズ(縦,横,高さ):");
scanf("%d,%d,%d", &x, &y, &z);
for (i = 0; i < 20; ++i) {
printf("%d番目のトンネルの半径:", i+1);
scanf("%d", &tunnel[i]);
if (tunnel[i] <= 0) {
tunnel[i] = 0;
break;
}
}
printf("物体のサイズ:縦:%d,横:%d,高さ:%d\n", x, y, z);
if (x > y && x > z) x = z;
else if (y > x && y > z) y = z;
for (i = 0; tunnel[i] != 0; ++i) {
printf("%d番目のトンネル(半径%d):", i+1, tunnel[i]);
if (sqrt(x*x + y*y) < (double)(tunnel[i]<<1)) {
printf("YES\n");
} else printf("NO\n");
}
return 0;
}
401 :
384 :2008/01/09(水) 13:43:22
>>389 さん
それだとリストの要素がなぜか減ってしまうんです。
100個のはずが50個になったり。。。
402 :
365 :2008/01/09(水) 13:48:29
期限がちょっとすぎてしまってやばいので
どなたか
>>365 の問題点を教えていただけないでしょうか?
よろしくお願いします。
>>402 ちゃんと>371が指摘した通りに出力されているのが>376のロジックで確認できるよ。
その他の問題は兎も角、それだけに関しては問題がなさそうなんだが。
あーそうそう、table[]は初期化しておくべきだと思うけどね。
404 :
◆vLIz8KOkPM :2008/01/09(水) 14:47:55
>>340 さん
大変ありがとうございます。おかげさまで助かりました。
わざわざ時間を割いて頂き、ほんとうにありがとうございましたm(_ _)m
405 :
365 :2008/01/09(水) 14:53:28
>>403 0で初期化した後に試してみたら
>>371 の
ように表示されるならいいのですが
ずっと0しか表示されないのです;;
なので代入できていないのかと思っているのですが。
もう一回、改めてソースとデータを貼ってご覧。
407 :
365 :2008/01/09(水) 15:10:13
>>407 はい、実行結果。
--
0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
--
これの何が問題なのか判らん。
409 :
365 :2008/01/09(水) 16:42:53
>>408 現在Terminalというソフト?でやっているのですが
なぜか0 0 0 0 0 0 0 0・・・・しかでないんですよね;
別の翻訳するの探してみたいと思いますorz
randが駄目だ……
>>409 まさかとは思うがデータファイルの改行が CR (0x0d) とかいう落ち?
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 端末から2つの整数aとbを入力し、a以上b以下の範囲の素数を小さい順に ファイルlist.txtに出力するプログラムを書け。一行に一個の素数となるようにせよ。 ソースプログラムと、a=300、b=340とした場合の実行結果を提出せよ。 なお、あるひとつの整数が素数であるかないかの判定の部分は、関数sosuuとして mainの外に書くこと。つまりint sosuu(int);として、sosuu(10);は偽つまり0を、 sosuu(13);は真つまり0以外の値をretuenするようにせよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC [3.3] 言語:C [4] 期限: 2008.01.10 [5] その他の制限:なんでもありです 授業に出ていたにもかかわらず、まったくわかりません。よろしくお願いいたします・・。
[1] 画像処理演習 [2] 問題文 255*255のpgm形式の画像がある。 各ピクセルのRGBから輝度を読み取りその平均を出力するプログラムを作成せよ。 [3] 環境 [3.1] OS: Vine-Linux4.1 [3.2] コンパイラ名とバージョン: gcc バージョンは不明です。 [3.3] 言語:C言語 [4] 期限: 1/10 正午まで [5] その他の制限: freadを使って作成するようにとのことでした。fgetはNG。 以上よろしくお願いします。
417 :
416 :2008/01/09(水) 18:24:00
訂正です。 画像サイズは256*256です。 すいませんでした。
>>416 pgmはグレイだから、RGBはないわけだが。
それから、輝度の値域は?
例えばpgm画像のdepth指定に関わらず0-255と考えるのか、
或いはpgm画像のdepthを考慮して0-1と考えるのか。
>>415 結果は自分で確認して(うちでは実行できた)
#include <stdio.h>
#include <math.h>
#define TRUE (-1)
#define FALSE (0)
int sosuu(int num){
int count,limit;
count=2;
limit=(int)sqrt((double)num);
while(count<=limit)
{
if((num%count)==0)return FALSE;
count++;
}
return TRUE;
}
int main(void){
int a,b,count;
FILE *fp;
fp=fopen("list.txt","w");
if(fp==NULL){printf("fopen error!\n");return 1;}
printf("a=");scanf("%d",&a);
printf("b=");scanf("%d",&b);
if(a>b){printf("入力値はa<=bにして下さい。\n");return main();}
for(count=a;count<=b;count++)
{
if(sosuu(count))fprintf(fp,"%d\n",count);
}
fclose(fp);
return 0;
}
420 :
416 :2008/01/09(水) 18:38:11
>>418 早速レスが。
pgmってグレイですねorz
カラーの問題も読んで問題提示してたよ…
輝度の領域は0-255です。
>>420 それじゃ、depthは255であることを期待していいの?
サイズも決まっているみたいだからいいよね。
422 :
416 :2008/01/09(水) 19:41:10
OKです。 よろしくお願いします。
423 :
365 :2008/01/09(水) 19:52:00
>>414 データファイルの改行が CR (0x0d) とは
どうやって確認?するのでしょうか;
424 :
デフォルトの名無しさん :2008/01/09(水) 19:52:18
[1] 数値計算プログラム [2] 問題文 差分法(陰解法)を用いて d~2f/dt~2 = d~2f/dx~2 + d~2f/dy~2の解を求めるプログラムを作れ。 陽解法と比較して格子点の刻み幅を変えた場合の安定性などについて考察せよ。 [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン: gcc バージョンは不明です。 [3.3] 言語:C言語 [4] 期限: 1/10 24時まで [5] その他の制限: 特になし。 先生がある程度のソースをスライドで見せてくれたのですがよくわかりません。 どなたかお願いします。
425 :
365 :2008/01/09(水) 19:57:14
>>414 ちなみにmiというエディタを使っていて
DFA.defのような(DFA定義ファイル)のデータを使っています
426 :
414 :2008/01/09(水) 20:26:32
>>425 mi なら mi の機能で改行コードの判別が出来るはずだが,miは使ってないのでしらない.
とりあえず,od -tx1 <問題のデータファイル> ってやって
0000000 30 0d 31 20 32 0d 30 20 61 20 31 0d 30 20 62 20
こんなかんじなら,CR( 0x0d ),
0000000 30 0a 31 20 32 0a 30 20 61 20 31 0a 30 20 62 20
なら LF( 0x0a )
0000000 30 0d 0a 31 20 32 0d 0a 30 20 61 20 31 0d 0a 30
なら CRLF
mi ってどんなエディタ? vi クローン?
428 :
365 :2008/01/09(水) 20:42:12
>>426 さん
今調べてみたところCR(Mac)になっており
LF(UNIX)にしてみたらできました!><
改行コードで結果が変わるとは・・・
回答ありがとうございます_〆(;ωq`)
429 :
365 :2008/01/09(水) 20:53:29
>>427 よくはわかりませんが
みみかきエディタと呼ばれているものです@@
[1] 授業単元: C++ プログラミング [2] 問題文: USBカメラからの映像を動画、画像キャプチャーできるプログラムを作成せよ [3] 環境 [3.1] XP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C++ [4] 期限: 1/11 [5] その他の制限:特に無いです こんばんは。シンプルなものでよいそうなのですが、よくわかりません。 お手数ですが、どなたかよろしくお願いします。
. ィ .._ .......、._ _ /:/l! :~""''.>゙' "~ ,、、''‐'、| _ ゙、'、::::::ノ:::::::_,.-=. _〜:、 /_.}'':, ``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ ,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:' ノ゙ノブ <またまたご冗談を " .!-'",/ `'-‐'') /\ `/ でノ-〈 .-''~ >'゙:: ‐'"゙./ ヽ.,' ~ / //::::: ', / ,:'゙
432 :
デフォルトの名無しさん :2008/01/09(水) 21:20:57
433 :
デフォルトの名無しさん :2008/01/09(水) 21:59:48
#include <stdio.h> #define buffer_size 10000 main(char *argv[]) { char str[1000]; FILE *p; char buffer[10000]; p=fopen(argv[1],"r"); if(p){ while(fgets(buffer,buffer_size,p)){ printf("%s",buffer); } } if(!p){ p=fopen(argv[1],"w"); printf("ファイルに何か書き込んでください。\n"); while(fputs(buffer,p)!=-1); } fclose(p); } コマンドラインでmain.exe test.txtとすればtest.txt を読み込み or に書き込むプログラムを作りたいのですが、間違いを指摘してください。 main関数の引数は利用します。よろしくお願いします。
>>433 main(char *argv[]) ここが間違ってる
>>433 何を書き込みたいの???
while(fputs(buffer,p)!=-1);
436 :
433 :2008/01/09(水) 22:11:12
>>434 うん、俺もそこ意味わかんねぇけど、
適当にどっかからコードペーストした。
読んだところによるとそれやると、
argv[0]=main.exe
argv[1]=test.txt
argv[2]=何とか
argv[3]=・・・ってなるらしい。
どうしたらコマンドライン引数利用してファイル入出力できるんですか?
修正程度で指摘おね。
>>435 スキャることにします。ありがとう。
だから
>>434 に書いてあるだろ。それすら調べることもせんのか。
スレ違いだ。
int main(int argc, char *argv[]) argc:argvの要素数 argv:コマンドライン引数
440 :
◆g/ZMVdytmo :2008/01/09(水) 22:16:41
[1]プログラミング演習 [2]n次正方行列A,Bを読み込み和Cを求める。 同様にn次正方行列D,Eを読み込み、積Fを求め、行列C,Fを出力するプログラムを作成せよ。 但し、行列A,Dを共用体x_1、行列B,Eを共用体x_2として宣言し同じ記録領域を使用するものとする。 nは最大100まで対応し、要素はfloatとする。 下に、各行列の値を記す。 1 2 3 4 5 6 1 2 3 2 3 4 A= 4 5 6 B= 7 8 9 X= 4 5 6 Y= 5 6 7 7 8 9 1 2 3 7 8 9 8 9 1 [3.1]solalis [3.2]cc [3.3]C言語 [4]2008年1月14日 [5]#include<stdio.h>のみ 急で申し訳ありませんが、どうかよろしくお願いします。
441 :
◆g/ZMVdytmo :2008/01/09(水) 22:23:22
行列の値がずれてしまっていました。 各行列ともに3次正方行列です。 Aは、上から{1,2,3}{4,5,6}{7,8,9} Bは、上から{4,5,6}{7,8,9}{1,2,3} 行列Xが、正しくは行列Dであり、上から{1,2,3}{4,5,6}{7,8,9} 行列Yが、正しくは行列Eであり、上から{2,3,4}{5,6,7}{8,9,1} となります。 申し訳ありませんでしたでした。
442 :
お願いします :2008/01/09(水) 22:30:09
[1] 授業単元:プログラミング入門 [2] 問題文: 複数の整数の平均・分散を求めるプログラムを作成せよ. ただし平均・分散ともに小数点第3位以下を切り捨て小数点第2位まで求めるものとする. 入力に関して キーボードからまず入力する整数の個数を入力し(最大100とする)改行する. 次に指定した数の整数をスペース1ずつ開けて一行で入力するものとする.入力を促す文字等は表示しないこと 出力に関して 一行目に平均(+改行)二行目に分散(+改行)を数値のみ出力する.指定した数値・改行以外の文字等の出力は一切行わないこと. [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Study C Ver2 [3.3] 言語:C [4] 期限:平成19年1月10日14:00まで [5] その他の制限:Cプログラミングの入門教科からの出題ですので極々基礎的・簡単なコードでの解答をお願いします。
443 :
433 :2008/01/09(水) 22:33:15
>>439 ありがとうございます。
修正したら3秒で100Mを超える勢いで書き込むウィルスができました。
後は自分で修正いたします。
ありがとでした。
>>441 Eの値がおかしくないか?
共用体ならA=D, B=Eになると思うが。
>>441 #include <stdio.h>
void main()
{
float x_1[100][100],x_2[100][100];
float buf;
int n,i,j,k;
l: scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%f",&x_1[i][j]);
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%f",&x_2[i][j]);
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
buf=0;
for(k=0;k<n;k++){
buf+=x_1[i][k]*x_2[k][j];
}
printf("%f ",buf);
}
printf("\n");
}
goto l;
}
やっつけ。
どうでもいいが、buffer_sizeをdefineした意味無いなw
[1] 授業単元: 応用プログラミング演習 [2] 問題文: ペイントやAdobePhotoshopのような画像処理ソフトを作成せよ [3] 環境 [3.1] WindowsXP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C言語 [4] 期限: 1/13 [5] その他の制限:Win32APIをしっかり勉強すること
そんな課題今まで放置するなよwww
451 :
433 :2008/01/09(水) 22:51:19
>>447 どっかの本に
「数値をその場で代入していくと長いコードになると
何の数値か意味わからなくなるからできるだけそうしろ」
って書いてた気がする
char buffer[10000];にもbuffer_size使わないとダメだろ
453 :
433 :2008/01/09(水) 22:58:33
454 :
デフォルトの名無しさん :2008/01/09(水) 23:16:24
>>444 別人だけどレス。おかしくないよ、共用体だから。
【時間切れ】 (1/9)
>13 >333 >341
【未解決問題】
>>416 1/10 12:00
>>387 1/10 13:00 済み(1),(3)
>>450 1/10 21:00
>>424 1/10 24:00
>>384 1/10
>>430 1/11
>148 1/12 12:00
>448 1/13
>250 1/13
>231-232 1/26
>229 1/31
>343 不明
457 :
456 :2008/01/10(木) 00:28:08
データファイルに無駄に改行が入ってるとクラッシュするから 気になるようならヘッダーに<ctype.h>をインクルードして fgetsのループのところに if (isprint(wordFreq[num].term[0]) == 0) { --num; continue; } を挿入してください。
458 :
◆g/ZMVdytmo :2008/01/10(木) 00:31:55
>>446 素早い返答ありがとうございます。
とても助かりました。
もし可能であれば、「goto」を使用せずに組む方法でご教授願えますでしょうか?
あまりgotoを使用しないように、と言われておりますので……。
何度も訂正してしまい申し訳ありませんが、もしお手数でなければ宜しくお願いいたします。
>>458 プログラムの流れを理解しようとしてる?
そのgotoは無限ループさせてるだけだよ
460 :
446 :2008/01/10(木) 00:54:25
>>458 while(1)かwhile(true)に変えればいい
C言語でtrueって定義されてたかなーと思ってgotoにしただけ
461 :
デフォルトの名無しさん :2008/01/10(木) 00:54:27
462 :
デフォルトの名無しさん :2008/01/10(木) 00:59:28
>>387 (7)
#include <stdio.h>
main()
{
int c,ca=0,cb=0;
char filename[100];
FILE *fp;
printf("入力ファイル名:");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL){
printf("ファイル名:%sを開けませんでした。\n");
exit(1);
}
while((c=fgetc(fp))!=EOF){
if(c=='a')
ca++;
else if(c=='b')
cb++;
}
printf("ファイル中のaの数:%d bの数%d\n",ca,cb);
fclose(fp);
}
適当につくってみた。aとbの数を分けなくていいならカウントしてるところと表示のところを
変更してください。
>>461 それ自分で実行してみて変だと思わない?
465 :
デフォルトの名無しさん :2008/01/10(木) 01:07:30
【解決済み?】
>>450 1/10 21:00
【未解決問題】
>>416 1/10 12:00 画像関係
>>387 1/10 13:00 済み(1),(3) (8)まである
>>424 1/10 24:00 差分法(陰解法)を用いて・・・
>>384 1/10 降順のマージソート 最終
>>411 >>430 1/11 c++でwebカメラ関係
>148 1/12 12:00
>448 1/13
>250 1/13
>231-232 1/26
>229 1/31
>343 不明
466 :
461 :2008/01/10(木) 01:11:53
いやソート自体が昇順だし、ソートもちゃんとスワップできてない。
つーか、
>>456 でいいんじゃないの?
468 :
461 :2008/01/10(木) 01:22:12
>>467 ちゃんと見た?
始めのは昇順だが後のは降順よ?
ソート関数名は間違えてたが、ちゃんと動いたの確認してるよ。
単語頻度であって、その後のアルファベット順にソートするとは書かれてないし。
>>387 (4)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main( int argc, char ** args ) {
const int chance = 10;
int r1, r2, s, i;
srand( time( NULL ) );
r1 = rand() % 20 + 1;
r2 = rand() % 20 + 1;
for ( i = 0; i < chance; ++i ) {
printf( "input num >" );
scanf( "%d", &s );
if ( s == ( r1 + r2 ) ) {
printf( "BINGO!! ( %d, %d ) \n", r1, r2 );
return 0;
}
printf( "NG\n" );
}
printf( "hidden num = %d ( %d, %d ) \n", r1 + r2, r1, r2 );
return 0;
}
470 :
467 :2008/01/10(木) 01:26:49
>>468 ゴミ入れたままっつーから何か取り除いたのかと思ったよ。すまんね。
でもこの問題の意図は分かってる?
単語と頻度がセットになって、頻度の高い単語を上に持ってこいって問題でしょ。
だからスワップするとき頻度だけでなく、単語もスワップしないと意味がない。
471 :
461 :2008/01/10(木) 01:35:55
>>470 たびたびすまんがまた違うのうpしてた。
が、言うとおり単語スワップはしてないので、
>>456 がいいね。
>>387 (5)
#include <stdio.h>
#define sizeofary( A ) (sizeof((A))/sizeof(*(A)))
long sum( int a[], int l ) {
long s = 0;
if ( !a || l < 1 ) { return 0; }
while ( l-- ) { s += a[ l ]; }
return s;
}
double av( int a[], int l ){ return ( !a || l < 1 ) ? 0 : (double)sum( a, l ) / l; }
void heikin( int a[], int al, int b[], int bl, int c[], int cl ) {
long len,ss;
len = al + bl + cl;
ss = sum( a, al ) + sum( b, bl ) + sum( c, cl );
printf( "avg of A = %lf\n", av( a, al ) );
printf( "avg of B = %lf\n", av( b, cl ) );
printf( "avg of C = %lf\n", av( c, cl ) );
printf( "avg of All = %lf\n", ( len < 1 ) ? 0 : (double)ss / len );
}
int main( int argc, char ** args ){
int a[] = { 123, 234, 531, 768, 981 }, b[] = { 918, 392, 29, 250, 762, 520,238}, c[] = { 987, 98, 518, 987};
heikin( a, sizeofary(a), b, sizeofary(b), c, sizeofary(c) );
return 0;
}
473 :
デフォルトの名無しさん :2008/01/10(木) 01:53:38
>>387 (6)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 30
int cmp( int * a, int * b ){ return *a - *b; }
int main( int argc, char ** args ){
int a[ N ], i;
srand( time( NULL ) );
for ( i = 0; i < N; ++i ) a[ i ] = rand() % 100;
for ( i = 0; i < N; ++i ) printf( "%d ", a[ i ] ); puts( "" );
qsort( a, N, sizeof ( a[ 0 ] ), (int(*)(const void *,const void *))cmp );
for ( i = 0; i < N; ++i ) printf( "%d ", a[ i ] ); puts( "" );
return 0;
}
>>450 sscanf使ってみた。
#include<stdio.h>
#define LENGTH 50 /* 一単語の最大長(文字数)*/
typedef struct {
char term[LENGTH]; /* 単語 */
int freq; /* 頻度 */
} termFreq;
void sortByFreq(termFreq word[],int num){
int i,j;
termFreq tmp;
for(i=0;i<num;i++){
for(j=num-1;j>i;j--){
if(word[j-1].freq < word[j].freq){
tmp=word[j-1]; word[j-1]=word[j]; word[j]=tmp;
}
}
}
}
main(){
int num=0,i;
char line[LENGTH*2];
termFreq wordFreq[500];
FILE *fp;
fp=fopen("dat.txt","r");//ファイル名は任意で書き換える
while(fgets(line,2*LENGTH-1,fp)!=NULL){
sscanf(line,"%s\t%d",wordFreq[num].term,&wordFreq[num].freq); num++;}
sortByFreq(wordFreq,num);
for(i=0;i<num;i++)
printf("%s\t%d\n",wordFreq[i].term,wordFreq[i].freq);
}
476 :
デフォルトの名無しさん :2008/01/10(木) 02:09:00
>>416 1/10 12:00 画像関係
>>387 1/10 13:00 済み(1),(3)(4)(5)(6)(7) 後(2)(8)
>>424 1/10 24:00 差分法(陰解法)を用いて・・・
>>384 1/10 降順のマージソート 最終
>>411 >>430 1/11 c++でwebカメラ関係
>148 1/12 12:00
>448 1/13
>250 1/13
>231-232 1/26
>229 1/31
>343 不明
>473 1/14
479 :
デフォルトの名無しさん :2008/01/10(木) 02:49:11
こうして、切磋琢磨しあいできあがった
>>450 のプログラムは
先生にも解読不能ながら、最高速の演算速度を叩き出すのであった。
>>387 (8)
#include<stdio.h>
#include<stdlib.h>
int f(int y, int m, int d){
if(m < 3)
y--, m += 12;
return y * 365 + y / 4 - y / 100 + y / 400 + (m + 1) * 306 / 10 + d - 428 - 708205;
}
int main(void){
char a[][5] = {"大吉", "中吉", "小吉", "凶"};
int y, m, d;
printf("年 月 日 = ");
scanf("%d %d %d",&y, &m, &d);
srand(f(y, m, d));
printf("%s\n", a[rand() % 4]);
return 0;
}
>450 >構造体wordFreqに格納し どこにそんな構造体が?
482 :
デフォルトの名無しさん :2008/01/10(木) 03:51:58
483 :
デフォルトの名無しさん :2008/01/10(木) 08:31:31
[1] 2次元配列
[2] 次の文章を2次元配列で初期化し、使われている単語の数を求めたい。ただし、文字数、行数はわかっていないものとする。
A time to work
And a time to play
I think I will find another way
It's not my time to go
[3] 環境
[3.1] Windows
[3.2] gcc
[3.3] C
[4] 期限:2007/1/18
[5] 条件分岐(if,switch など)、繰り返し計算(for,while など)、自作関数、配列・多次元配列などは学びました
以下やっていないので内容はよく分かりませんが、「ポインタ」、「ファイルの入出力」、「構造体」、「マクロ」(以上、教科書の項目より)などは
まだやっていないので、これらの知識を要しないものでお願いします
あと、文章の行数と1行あたりの文字数が既知であるとしたときのプログラムは自分でつくることができたので、
それを
>>484 (あたり)に載せておきます。これを改良していただけると幸いです。
484 :
483 :2008/01/10(木) 08:34:06
自分で書いたプログラム([5]に書いたように題意は満たしませんが、一応動きました) #include <stdio.h> int main() { char str[4][35]={"A time to work", "And a time to play", "I think I will find another way", "It's not my time to go" }; int i,j,count=0; for(i=0;i<4;++i){ for(j=0;j<35;++j){ if(str[i][j]==' ') {count+=1;} } } printf("単語数=%d",count+4); /*1行につき「(単語数)=(空白文字数)+1」で、それが4行分*/ }
>>424 波動方程式の陰解法の差分式が、
よほどマイナーなのか見つからない(もしかすると、拡散方程式の間違いか?)。
ちょっと差分式調べてきて。
あと初期値と境界条件もよろしく。
486 :
485 :2008/01/10(木) 09:20:55
くそ……、書いた後に見つけちまった……。
#define e 4294967296 ... char str[e][e]=...
>>487 ごめんなさいヒント頂いたのですが勉強不足でわかりませんTT
3重ループを使うようなのですが・・・
どなたかよろしくお願い致します
491 :
416 :2008/01/10(木) 12:17:59
データの読み取りに時間がかかりましたが、何とか自己解決できました。
よって
>>416 終了とさせていただきます。
ありがとうございました。
#include <stdio.h> //
>>416 struct image {int width; int height; int depth; unsigned char * image;};
static struct image getPgm(const char * fileName)
{
struct image tmp = {0, 0, 0, NULL};
char buf[100];
FILE * fp = fopen(fileName, "r");
if (fp == NULL) return tmp;
fscanf(fp, "%99s", buf);
if (strcmp(buf, "P2") != 0) return tmp;
fscanf(fp, "%d%d%d", & tmp.width, & tmp.height, & tmp.depth);
tmp.image = malloc(tmp.width * tmp.height);
for (int ic = 0; ic < tmp.width * tmp.height; ++ic) {
int value;
fscanf(fp, "%d", & value);
tmp.image[ic] = value;
}
return tmp;
}
static void printPgmInfo(struct image img)
{
int sum = 0;
for (int ic = 0; ic < img.width * img.height; ++ic) sum += img.image[ic];
printf("width:%d, height:%d, depth:%d\nconc ave.:%g\n", img.width, img.height, img.depth, (double) sum / img.width / img.height);
}
int main(int argc, char ** argv)
{
if (argc < 2) {fprintf(stderr, "Usage:%s <ascii pgm file>.\n", argv[0]); return 1;}
printPgmInfo(getPgm(argv[1]));
return 0;
}
399です
>>400 さん早速の解答ありがとうございます。
しかしそのようにプログラミングして、実行してみた所、半径を入力できず(1〜20番目のトンネルの半径と表示されるだけ)、正しいプログラムになりませんでした…。
馬鹿な私にはどこがいけないのかわかりません…。
どなたか助けてください…。お願いします。
>>495 scant()のフォーマットをよく見てみな
secant()かと思った
>>495 >400のソースをコンパイルして実行して、>399にあった問題文の例の通りに入力したら例の通りに出力されたけど。
カンマが余計だとか、アルファベットを入れているだとか、なんかやらかしてない?
499 :
デフォルトの名無しさん :2008/01/10(木) 14:02:09
[1] 授業単元: プログラム [2] 問題文(含コード&リンク):(自然数n = 10, r = 0, 1, . . . , 10 に対してnCr を出力するプログラム) [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 本日16時まで [5]
>>499 #include <stdio.h>
int ncr(int n,int r){
if(n == r || r==0){
return 1;
}else{
return (ncr(n-1,r-1) + ncr(n-1,r));
}
}
void main(){
int n,r;
for(n=1;n<=10;n++){
for(r=1;r<=n;r++){
printf("%dC%d=%d\n",n,r,ncr(n,r));
}
}
}
#include <stdio.h> int main() { for (int r = 0; r <= 10; ++r) { printf("10C%d\n", r); } return 0; }
502 :
デフォルトの名無しさん :2008/01/10(木) 14:15:11
>>500 どうもありがとうございますm(__)m
/、;:;:;:;:;:;:;:;:;ー-:;、_;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:l
./ミミミミミ、;:;:;:;:;:;:;:;:;:;:ー-;:;、;:_;:;_:;::-‐'"´i
lミミミミミミミミミー-::、;;;;_;:;:;:;:;:;i;:;:;:;:;:;:;:;:i
,!ミミミミミミミミミ _;`-、;;;!:-‐'''´|ミi
//`,ヾミミミミシ‐'″ 'ー‐' : 'ニフ' i;/
l l ,rヾミミミ _,,,,, ノ _,,_ l
',ヽヾ、ヾミミ ィで)ヽ、 r';ィび、.ノ
ヽ、__,, ミミ `゙゙'''"フ` | `゙'''フ'i
〃 i l ミミ /´ | `ー'´l
/ヾ.l ミミ /' | /
. /:::::',ヽヽ` / ` `゙ー-' /
r/::::::::::',ヽヽ i:i ', /
>>501 /::::::::::::::ヽヽ\ '"ー===-'/ いとあはれなり
ヽ:::::::::::::::::ヾ、 ` 、 ゙'一''ー'ノ′
、 \:::::::::::::::ヽ ` ー‐-t't::i´゙ー-、
.`-、 `ー-:、::::::ヾ'、 //:::l ヽ `゙ー- 、
504 :
デフォルトの名無しさん :2008/01/10(木) 14:33:45
[1] 授業単元: プログラム [2] 問題文(含コード&リンク): 実数a, b, c に対して,2 次方程式ax2 + bx + c = 0 が実数解を持つ場合にはその解x1, x2 と相対誤 差(ax2i + bxi + c)/xi(i = 1, 2) を表示し,そうでない場合には「実数解無し」と表示するプログラム [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 本日16時まで 先ほどは大変ありがとうございます。もう一度お願いいたします。
505 :
デフォルトの名無しさん :2008/01/10(木) 14:59:09
>>498 どうやら私がやらかしていたようです。 もう一度見直して実行したら正確に出力されました。
506 :
デフォルトの名無しさん :2008/01/10(木) 17:51:12
[1] 授業単元: 計算物理学 [2] 問題文:self-avoiding ウォーク 格子上のランダムウォークでは、同じ格子点を何度も訪れることができる。これに対して1度訪れた格子点には2度と行けない条件を課したものが、self-avoidingウォークである。 2次元正方格子上のself-avoiding ウォークを実現するためのアルゴリズムを考案せよ。あらかじめ適当な大きさの格子をとり、その格子点にすでに来たかを示す変数を持つ必要がある。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: ? [3.3] 言語: C [4] 期限: 明日17:00 [5] その他の制限: なし どうかよろしくお願いします
>>507 課題4
#include <stdio.h>
int nArraySum(int nArray[], int nArraySize)
{
int i , kei=0;
for(i=0;i<nArraySize;i++){ kei+=nArray[i]; } //kei=kei+nArray[i]と同じ
return kei;
}
int main(void)
{
char input[10];
int a[10]={1, 2, 11, 4, 15, 7, 9, 12, 3, 6};
int nArraySize;
int kei;
nArraySize=sizeof(a)/sizeof(a[0]); //配列のサイズ求める
kei=nArraySum(a,nArraySize); //戻り値で合計の値を受け取る
printf("合計=%d\n",kei);
return 0;
}
>>508 のchar input[10]消しといて
>>507 課題5(
>>508 のmain関数を以下に変える)
int main(void)
{
char input[20] , fileName[20];
int a[10];
int nArraySize;
int i=0 , kei;
FILE *fp;
printf("入力ファイル>>>"); scanf("%s",fileName);
if((fp=fopen(fileName,"r"))==NULL){ printf("ファイル%sが見つかりません\n",fileName); exit(1); }
printf("出力ファイル>>>"); scanf("%s",fileName);
while(fscanf(fp,"%s",input)!=EOF){
a[i]=atoi(input);
i++;
}
fclose(fp);
nArraySize=sizeof(a)/sizeof(a[0]); //配列のサイズ求める
kei=nArraySum(a,nArraySize); //戻り値で合計の値を受け取る
printf("合計=%d\n",kei);
fp=fopen(fileName,"w");
fprintf(fp,"合計=%d\n",kei);
fclose(fp);
return 0;
}
511 :
デフォルトの名無しさん :2008/01/10(木) 19:17:50
512 :
デフォルトの名無しさん :2008/01/10(木) 19:20:37
[1] 授業単元:自由課題 [2] 問題文(含コード&リンク):ランダムで麻雀牌を14枚取得し、その役を表示するプログラムを作成せよ。 なお、14枚目の牌をあがり牌とし、ツモ・ロン両方の場合に対応できるようにすること。 また、鳴き・立直・海底・ドラ・天和等やあまりにローカルな役は考えなくてもよいとする。 [3] 環境 [3.1] OS: 不問 [3.2] コンパイラ名とバージョン: 不問 [3.3] 言語: c [4] 期限: 2008/1/15 [5] その他の制限: 牌は4枚x34種=136枚でお願いします
それで役ができる確率は天和と同じだろw
516 :
273 :2008/01/10(木) 20:19:41
>>350 亀レスですがそれだとオプションと文字を同時に入力しないといけなくなります。
プログラムを起動させた後に標準入力させないとダメみたいです。
>>511 #include <stdio.h>
#include <math.h>
#define PI 3.141592
double radius(double x, double y);
double angle(double x, double y);
int main() {
double xpos, ypos;
printf("X座標:");
scanf("%lf", &xpos);
printf("Y座標:");
scanf("%lf", &ypos);
printf("極座標に変換すると\n");
printf("(動径r, 偏角θ)=(%f, %fπ)\n",
radius(xpos, ypos), angle(xpos, ypos));
printf("となります。\n");
}
double radius(double x, double y)
{
return sqrt(pow(x, 2.0) + pow(y, 2.0));
}
double angle(double x, double y)
{
return atan2(y, x)/PI;
}
//これでおk?
518 :
512 :2008/01/10(木) 21:01:48
>>512 のものです。
期限が過ぎてしまいましたので、スルーしてください。
ありがとうございました。
519 :
デフォルトの名無しさん :2008/01/10(木) 21:27:59
520 :
デフォルトの名無しさん :2008/01/10(木) 21:50:28
521 :
◆CxWBqy7wZQ :2008/01/10(木) 21:50:59
>>520 最小値を探したいのなら、minは100.0で初期化して rate[i] < min にかえるべき
>>521 関数 Node *term(void) 内の
tok = get_token();
で tok に NULL が代入されてるにもかかわらず
strcmp の引数に使ってるからとか?
>>521 char *term[5]={"5"}でcharポインタ配列のひとつめの要素は初期化してるけど
その後の要素は未定義なのにそれ取り出して比較しようとするからだろ。
二個取り出したいならchar *term[5]={"5","5"}とするべき
>>521 何がしたいのか分からないが、tokがNULLでないかチェックするor予め値を入れておく(今回が入れ忘れの場合)。
チェックはterm側でもget_token側でもいいな 何がしたいのか(ry
NULLなのに比較したせいなんですね つまらない質問すいませんでした
529 :
520 :2008/01/10(木) 22:17:02
530 :
450 :2008/01/10(木) 22:18:25
531 :
デフォルトの名無しさん :2008/01/10(木) 22:22:38
506にも誰か答えてやろーぜ って言っても俺は物理さっぱりだから何のことやら分かりかねるが
532 :
デフォルトの名無しさん :2008/01/10(木) 22:29:39
今の状況整理だれかヨロ
>>506 実現するだけなら3x3のbool配列の配列を作ればいいんじゃないの。
3x3でなくて、ただ単に正方格子サイズの配列を作って 一度行った地点をマークしてけばよい。
>>506 #include<stdio.h>
#include<stdlib.h>
#define FIELD_WIDTH 10
#define FIELD_HEIGHT 10
static int field[FIELD_HEIGHT][FIELD_WIDTH];
void adjust(int *x, int *y){
*x=(*x+FIELD_WIDTH)%FIELD_WIDTH;
*y=(*y+FIELD_HEIGHT)%FIELD_HEIGHT;
}
int is_passed(int x, int y){
adjust(&x, &y);
return field[y][x];
}
int main(void){
int i, x=0, y=0, dx[]={1,0,-1,0},dy[]={0,1,0,-1}, dir, dirlist[4], dirnum;
for(;;){
field[y][x]=1;
for(i=0,dirnum=0;i<4;i++)
if(!is_passed(x+dx[i], y+dy[i])) dirlist[dirnum++]=i;
if(dirnum<=0) break;
dir=dirlist[rand()%dirnum];
x+=dx[dir];
y+=dy[dir];
adjust(&x, &y);
printf("(%d,%d)\n", x, y);
}
return 0;
}
→→→→→↓ ↓←←←←← →→→→→↓ みたいに進めばいいんじゃないの?
>>536 それのどこがランダムウォークなんだよ
教養が無いな。
>>539 self-avoiding ウォーク
ランダムウォークなんていつ定義されたんだよww
>>538 少し上で同じようなのを解いたので
#include<stdio.h>
#include<math.h>
double f(double x, double a, double b, double c, double d){
return a * x * x * x + b * x * x + c * x + d;
}
double df(double x, double a, double b, double c){
return 3 * a * x * x + 2 * b * x + c;
}
int main(void){
double x = 1.0;
double maxerror = 0.0001;
double a = 1, b = -10, c = 10, d = 50;
double EPS = f(x, a, b, c, d) / df(x, a, b, c);
int N;
for(N = 0; fabs(EPS) > maxerror; N++){
x -= EPS;
EPS = f(x, a, b, c, d) / df(x, a, b, c);
}
printf("X = %10.24f\n", x);
printf("N = %d\n", N);
printf("EPS = %3.24f\n", EPS);
return 0;
}
乱数の種も置き換えずにランダムウォークと言い張る
>>535 が居るスレはここですか?
>>540 前提になるランダムウォークの条件すら満たしてないって事を言ってるんですけど?
>>544 self-avoiding walk = 自分自身と交わらないランダムウォーク
544じゃないが、前提条件はランダムウォーク。
それに加えて、同じ地点に移動しようとした場合はフォールトさせれば良い。
それだけのことだが、
>>538 のは現地点を考慮せずに目茶目茶にポイントしてくだけだからだめだし、
>>535 (
>>538 もだが)乱数の種を指定しなおさないから、2回目の実行以降は実質的に乱数ではなくなる。
【時間切れ】 (1/10)
>384 >387 (2) >487 >504 >512 >521
【未解決問題】
>>506 1/11 17:00
>>430 1/11
>>148 1/12 12:00
>>250 1/12
>>448 1/13
>>473 1/14
>514 1/15
>483 1/18
>231-232 1/26
>229 1/31
>343 不明
551 :
デフォルトの名無しさん :2008/01/11(金) 01:00:30
per*sumよりも乱数aの数が小さい場合はstudentに1を入れて その数を数えるプログラムを作ります。 それを10回繰り返して最終的な1の数を数えたいです。 ですが以下のようにすると数字が正しく出ません。 どこがいけないのでしょうか?? 条件としてmain以外の関数を使うようにとのことです。 すべてmain内に書いた時はちゃんと動いたんですが 外に出したらどこかがおかしくなってしまって・・・。 お願いします。
552 :
デフォルトの名無しさん :2008/01/11(金) 01:01:08
#include <stdio.h> #include <stdlib.h> /*---------------確率判定--------------------------*/ void fun1(int *sum,double *per,int student[]){ int i; double a,per2; srand(2000); for(i=0;i<300;i++){ a = (double)rand() / (RAND_MAX +1.0); per2 =(*sum) * (*per); if(a<per2) student[i]=1; } } /*---------------要素が1であるものの数を数える関数---------------------*/ void Count(int student[],int *num,int *sum,int *day){ int i; for(i=0;i<300;i++){ if(student[i]==1) *num= *num +1; } *sum=*num; printf("# %d %d \n",*day,*sum); }
553 :
デフォルトの名無しさん :2008/01/11(金) 01:02:08
/*--------------------------main関数--------------------------------------*/ int main(void){ int student[300],i,num=0,day,sum[10]; double per,a,per2; sum[0]=1; for(day=1;day<=10;day++){ fun1(&sum[day-1],&per,student); Count(student,&num,&sum[day],&day); num =0; } return 0; } /*-----------------------------------------------*/
何で整数までポインタで渡してるんだ?別にどうでもいいけど
double per,...; fun1(納day-1],&per,student);
557 :
デフォルトの名無しさん :2008/01/11(金) 01:42:22
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): キーボードから数式を入力して、その数式の因子間に半角空白を 入れて表示するプログラムを作成する。 ただし結果は1つの文字列として表示すること。 ex) 1*2*(3+5)/4+5-1 1 * 2 * ( 3 + 5 ) / 4 + 5 - 1 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc3.3 [3.3] 言語: C [4] 期限: 1月11日 12:00 [5] その他の制限: 特にないです よろしくお願いします。
558 :
557 :2008/01/11(金) 01:45:32
追記です 入力は数字、演算子(+,-,*,/)、括弧のみです
ローマ数字でも、いいですかね?
ネタかもしれんが、2ch一時停止するんだっけ?
>>1 のうpろだにアンカ付きでうpすればおkかな。
>>557 字句解析はしてない
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int i, size = 1024, len;
char *buf = (char*)malloc(size), *str;
for(i = 0; ; i++){
if((i - size)/size == 0)
if((buf = (char*)realloc(buf, (i/size + 1)*size)) == NULL)
return perror("malloc"), 1;
if((buf[i] = getchar()) == EOF || buf[i] == '\n' || buf[i] == '\0')
break;
}
buf[i] = '\0';
if((len = (int)strlen(buf)) == 0)
return 1;
if((str = (char*)malloc(2*len)) == NULL)
return perror("malloc"), 1;
for(i = 0; i < len; i++)
str[2*i] = buf[i], str[2*i + 1] = ' ';
str[2*i - 1] = '\0';
puts(str);
free(buf);
free(str);
return 0;
}
× (i - size)/size == 0 ○ (i - size)%size == 0
>>557 //あまりテストしてないが
#include <stdio.h>
#include <string.h>
int main()
{
char buff[256];
//入力を受け取る
scanf_s("%s", buff, 128);
//空白の挿入
char numbers[] = "0123456789 "; //数字
char operators[] = "()+-*/";
for(int i = 0; buff[i] != '\0'; i++) {
for(int j = 0; j < strlen(operators); j++) {
if(buff[i] != operators[j]) {
continue;
}
char workbuff[256];
strcpy_s(workbuff, 256, &buff[i+1]);
buff[i+1] = buff[i];
buff[i] = ' ';
buff[i+2] = ' ';
strcpy_s(&buff[i+3], 128, workbuff);
i += 2;
goto L_END;
}
//エラー出たので続き for(int j = 0; j < strlen(numbers); j++) { if(buff[i] != numbers[j]) { continue; } goto L_END; } printf("error\n"); L_END:; } printf("%s\n", buff); return 0; }
こんにちはVisual Studioさん
566 :
◆P2TN8xagh2 :2008/01/11(金) 10:42:07
[1]授業単元: コンピュータグラフィックス演習 [2]問題文: 1−7章の内容を用いて,アニメーションを表示するプログラムを作れ. 1章 ウィンドウ設定と基本図形の描画 2章 3次元図形の描画と陰面処理 3章 モデリング入門 4章 アニメーション 5章 イベント処理 6章 シェーディング 7章 光源の設定 [3]環境 [3.1]XP [3.2]VC 6.0 [3.3]C++ [4]期限: 1/15 9:00 [5]その他の制限: ・異なる時刻における表示結果を数枚貼ること. ・異なる反射モデルを用いた複数の物体を含むこと. ・光源の設定を時間と共に変えること. アニメーションの具体例は提示されてないのでどのようなアニメーションでも構いません。 かなり丸投げですがよろしくお願いいたします。
http://oshiete1.goo.ne.jp/qa3668420.html 質問者は回答ではなくヒントを求めているようなので
ちょっとココで話させてくれ。
この問題、難しくね? オレの頭が硬いのか?
普通は一の位から始めて c = d % 10; d /= 10; と進めていくと思うんだけど。
d = 502で決めうちだとしても、いきなり「5」を求めるにはどうすればいい?
(d / (int)(pow(10, (2-i))) % 10 としたいがmath.hはない。
まさか i == 0? ((d / 100) % 10):(i == 1? ((d / 10) % 10):(d % 10)) なわけないよな。
568 :
デフォルトの名無しさん :2008/01/11(金) 11:17:15
[1] 授業単元:C入門 [2] 問題文 円周率を求めるプログラムを作成せよ。 1.rand()関数を用いて0〜1のx座標,y座標を生成する。 2.原点との距離を求め,座標が半径1の円内かどうか調べ,円内である場合,円外である場合をそれぞれカウントする。 3.以上を指定回数分繰り返し,半径1の円内である確率がπ/4であることからπを求める 入力に関して キーボードから,繰り返し回数を入力する。上限はint型の最大値(実際には最大値を入れると膨大な時間がかかるのでテストは1分程度で終了する値でよい)。 出力に関して 結果(求めた円周率)のみを浮動小終点(double型を%lf)で出力(+改行)。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Study C [3.3] 言語:C [4] 期限:1月13日14:00 [5] その他の制限:一年なのでそこまで難しいのはつかわずにお願いします。
569 :
デフォルトの名無しさん :2008/01/11(金) 11:20:14
[1] 授業単元:C入門 [2] 問題文 英文の文字列を入力した場合,文字数・単語数・文章数を求めるプログラムを作成せよ。 英文中の特殊文字は(,(カンマ).(ピリオド)!(イクスクラメーション)?(クエスチョンマーク))のみとする。単語の間には1つ以上(2つ以上でも可)のスペースが入れるものとする。 文章の最後には必ず .(ピリオド)!?のどれかが単独で使われる。,(カンマ)や.(ピリオド)!?の後にスペースが入る可能性があるが前にはスペースは入らないものとする。 省略につかう .(カンマ)は今回はないものとする。 入力に関して キーボードから,文字列を一行で入力 出力に関して 文字数・単語数・文章数をそれぞれスペース1つあけて1行で出力(+改行)[3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Study C [3.3] 言語:C [4] 期限:1月13日14:00 [5] その他の制限:一年なのでそこまで難しいのはつかわずにお願いします。
571 :
デフォルトの名無しさん :2008/01/11(金) 12:53:27
506、430期限近し がんがれ
>>569 文字数、単語数、文章数の意味がわからない
573 :
デフォルトの名無しさん :2008/01/11(金) 14:10:41
574 :
デフォルトの名無しさん :2008/01/11(金) 14:19:32
>>572 Many people have to work on the weekend. Some people do not mind. Other people think it is terrible.
なら
文字数79 単語数19 文章数3
って事です。
1] 授業単元:数値解析 [2] 問題文(含コード&リンク):n次正方行列Aが狭義対角優位行列か否かを判定するプログラムを作成せよ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003 [3.3] 言語: C [4] 期限: 2008.1.17日中 [5] その他の制限:
577 :
デフォルトの名無しさん :2008/01/11(金) 15:16:47
#include <stdio.h> #define buffer_size 10000 main(int argc ,char *argv[]) { FILE *p,*q; char buffer[buffer_size]; p=fopen(argv[1],"r"); if(p){ while(fgets(buffer,buffer_size,p)){ printf("%s",buffer); } } fclose(p); q=fopen(argv[1],"w"); if(!q){ printf("文字列を書き込んでください\n"); gets(buffer); fprintf(q,buffer);}; fclose(q); } ファイルを読み込めばすれど、書き込めません。 どの箇所が間違っているのでしょうか。
>>577 スレ違い。
・p がNULLのときにfclose()しちゃダメ。
・q がNULLのときにfprintf()しちゃダメ。
・そもそもgets()は使っちゃダメ。
579 :
デフォルトの名無しさん :2008/01/11(金) 15:34:27
580 :
デフォルトの名無しさん :2008/01/11(金) 15:35:40
581 :
デフォルトの名無しさん :2008/01/11(金) 15:37:05
[1] 授業単元:プログラミング [2] 問題文: 文字列を逆順にコピーする関数xcopyをポインタを用いて作り、確認のための プログラムを作成してください。ただしxcopy(char *to,char *from)とします。 なお対象とするデータは通常の英数字とします。 [3] 環境 [3.1] OS: windowsXP [3.2] コンパイラ名とバージョン: bcc?ですかね。。。 [3.3] 言語: Borland C++ [4] 期限: [2008年01月13日21:00まで] [5] その他の制限: 特にありません。 よろしくお願いします。
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 20 static int su[N][N], x, y; typedef enum{UP, RIGHT, DOWN, LEFT}dir; unsigned nrand(int n){ return (unsigned)(n*(double)rand()/(RAND_MAX + 1.0));} dir drand(void){ return nrand(4);} int chkdir(dir d){ if(d == UP) return y <= 0 ? 0 : su[x][y - 1] == 0; if(d == RIGHT) return x >= N - 1 ? 0 : su[x + 1][y] == 0; if(d == DOWN) return y >= N - 1 ? 0 : su[x][y + 1] == 0; return x <= 0 ? 0 : su[x - 1][y] == 0; } int ismove(void){return chkdir(UP) || chkdir(RIGHT) || chkdir(DOWN) || chkdir(LEFT);} void move(dir d){d == UP ? y-- : d == RIGHT ? x++ : d == DOWN ? y++ : x--;} void print(void){ int i, j; for(i = 0; i < N; i++, putchar('\n')) for(j = 0; j < N; j++) putchar(i == x && j == y ? '*' : su[i][j] ? '+' : ' '); } int main(void){ srand((unsigned int)time(NULL)); x = nrand(N), y = nrand(N); su[x][y] = 1, print(); while(ismove()){ dir d = drand(); su[x][y] = 1; if(chkdir(d)) move(d), print(); } return 0; }
>>430 ってファームウェア作れってこと?
とても個人レベルでできる問題の気がしないんだがw
584 :
デフォルトの名無しさん :2008/01/11(金) 16:37:16
>>581 #include<stdio.h>
void xcopy(char *to,char *from){
int i=0,j=0;
while(from[i]!=NULL) i++;
while(from[i-1]!=NULL){
to[j]=from[i-1];
j++;
i--;
}
to[j]=NULL;
}
main(){
char *to,*from;
scanf("%s",from);
xcopy(to,from);
printf("%s",to);
}
>>584 ダウト。偶偶動くかも知らんが、大抵動かないと思う。まして、規格に未定義なロジックになっている。
586 :
デフォルトの名無しさん :2008/01/11(金) 17:06:44
ていうか何がおかしいのかわからんわけだが
>>586 ホントに? BCCだと必ず動く保証がある? 普通にメモリアクセスエラーが起きそうなんだけど。
つ[from[i-1]]
>>588 動くだろ。
まあ
from[i-1]!=NULL
↓
i!=0
で解決すっけど
591 :
588 :2008/01/11(金) 17:16:44
>589の指摘したところも問題だけど、main()が無茶苦茶なんだけど?
mainは問題無いんじゃないかと。voidとか細かい話?
昔の音楽家のことだろ?
実際に動くかどうかはともかく、 これのどこがおかしいか分からないというのはやばいと思うが #include<stdio.h> void xcopy(char *to,char *from){ int i=0,j=0; while(from[i]!=NULL) i++; //まあ動くがNULL→'\0' while(from[i-1]!=NULL){ //from[-1]が0である保証はない(ちゃんと止まる保証は無い) to[j]=from[i-1]; j++; i--; } to[j]=NULL; } main(){ char *to,*from; //領域確保しろよ scanf("%s",from); xcopy(to,from); printf("%s",to); }
>>588 の指摘はなるほどと思ったんだけどさ、
>>594 ポインタオンリーでやれとは書いてないだろ
用いてるんだから
>>595 どこにこの程度の課題で麻呂する奴がいるんだよw
>>596 「配列使え」と書くべきだったのかもしらんが、
俺が言いたいのは領域確保せずにポインタ使うなということなんですが。
そんなにおかしい指摘か?
>>581 #include <stdio.h>
void xcopy(char *to, char *from)
{
int i, len = 0;
while(from[len] != '\0')
len++;
to[len] = '\0';
for(i = 0; i < len; i++)
to[i] = from[len - 1 - i];
}
int main(void)
{
char from[128], to[128];
scanf("%127s", from);
xcopy(to, from);
puts(to);
return 0;
}
>>596 自分の馬鹿を棚に上げないで、ちゃんと現実を直視しろよ。
その程度のプログラムも書けないならもっと謙虚に他人のレスを読め。
601 :
598 :2008/01/11(金) 17:45:00
すまん、「領域確保せずにポインタ使うな」じゃおかしいな 「どこ指してっか分からんポインタをそのまま使うな」くらいで
メモリクリーンニングだと思えばどうということはない
つーか、そうするとmallocって何って気がしてくるな 非常に哲学
ま、こんなもんでしょ。
--
#include <stdio.h>
#include <string.h>
void xcopy(char *to,char *from)
{
char * p = strchr(from, '\0'); // strchr()使っちゃいけないならその辺は適当に。
while (p > from) { // ポインタを使うと、いかにもCらしく書けますな。逆に言えば、読みにくいw
* to++ = * --p;
}
* to = '\0';
}
int main(){
char from[100], to[100];
scanf("%99s", from); // 99で制限しておけばオーバフローは回避できる。
xcopy(to, from);
printf("[%s]\n", to);
return 0;
}
--
がーん、既に>599に書かれていたかw
>>602 見苦しい。
>>605 >
>>595 >どこにこの程度の課題で麻呂する奴がいるんだよw
麻呂 = mallocと意訳してしまった
私女だけどmalloc()をマロックって言う人って・・・
日本人はエムアロック派とマロック派がいるが、 ネイティブは大抵マロックなんだぜ。
確かに留学生はマロックって言うわ、 発音しやすいのかな
めもりーあろけーしょん派
それは、ない
614 :
577 :2008/01/11(金) 18:41:25
>>578 ありがとうございます。
gets()は使っちゃ駄目なんですか?
知りませんでした。勉強になりました。
#include <stdio.h>
#define buffer_size 10000
main(int argc ,char *argv[])
{
FILE *p;
char buffer[buffer_size];
p=fopen(argv[1],"r");
if(p){
while(fgets(buffer,buffer_size,p)){
printf("%s",buffer); }
}
if(!p){
printf("なにか書き込んでください。\n")
scanf("%s",buffer);
p=fopen(argv[1],"w");
if(EOF==fprintf(p,buffer))
printf("見事にエラーです。\n");
};
fclose(p);
}
>>583 単に普通のプログラムだろ?
俺もやってみたけどわかんないんでやめたw
すまん
>>614 だからスレ違いだというのに……
で、gets()を使っちゃダメなのと同じ理由で、scanf()で素の"%s"を使っちゃダメ。
>>614 if(p){
……
}
if(!p){
って書き方は嫌い。
p=fopen(argv[1],"r");
はもっと嫌い。
>>614 が何をしたいのかがわからないが
エスパー的に解釈してこういうことか?
#include <stdio.h>
#define buffer_size 10000
void main(int argc ,char *argv[])
{
FILE *p;
char buffer[buffer_size];
p=fopen(argv[1],"r");
if(p){
while(fgets(buffer,buffer_size,p)){
printf("%s",buffer); }
}
fclose(p) ;
p=fopen(argv[1],"a");// ファイルに追記する(前回の内容を破棄していいなら"w"で)
if(p){
printf("\nなにか書き込んでください。\n") ;
scanf("%s",buffer);
fprintf ( p, buffer ) ;
};
fclose(p);
}
619 :
デフォルトの名無しさん :2008/01/11(金) 21:05:46
[1] 授業単元: [2] 問題文: 2つの最大50桁の自然数を入力して、その和・差・積を求めるプログラムを作成せよ [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン:CPad for Borland [3.3] 言語:C++ [4] 期限:2008年1月12日まで [5] その他の制限: 10文字以上入力するとエラー発生しちゃいます。。 50桁も入力できません おねがいします!(>_<)
>>619 どの程度習ったんだ? 多倍長と言って意味がわかるか。これによってだいぶ違ってくるんだが……
621 :
デフォルトの名無しさん :2008/01/11(金) 22:12:55
多倍長.. 習ってないです(ノ_・。)
>>621 そうか。だが、残念なことに課題は多倍長をモロに使う問題なんだな……
というより、多倍長整数そのものが課題だと言ってもいい。
とりあえず、多倍長でぐぐれ。
623 :
デフォルトの名無しさん :2008/01/11(金) 22:23:06
624 :
デフォルトの名無しさん :2008/01/11(金) 22:25:10
>>623 int isfloat(char * f)の作成のみ
int isfloat(char* f)
{
if (f == NULL || strlen(f) == 0)
{
return 0;
}
char* err;
strtod(f, err);
if (strlen(err) == 0)
return 1;
else
return 0;
}
626 :
536 :2008/01/11(金) 22:57:39
>>623 もっと格好良い方法がないものか
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int isfloat(char *f){
while(isspace(*f)) f++;
if(*f == '-') f++;
while(isdigit(*f)) f++;
if(*f == '\0') return 1;
if(*f != '.') return 0;
f++;
while(isdigit(*f)) f++;
if(*f == '\0') return 1;
return 0;
}
int main(void){
float num, sum = 0;
char f[128];
while(1){
printf("実数を入力(q:end):");
scanf("%127s", f);
if(f[0] == 'q' && f[1] == '\0') break;
if(isfloat(f)){
num = atof(f);
sum += num;
printf("num = %f\nsum = %f\n", num, sum);
}else
printf("この文字列は実数が(ry\n");
}
printf("sum = %f\n", sum);
return 0;
}
629 :
デフォルトの名無しさん :2008/01/12(土) 00:02:47
>>619 ですが、
入力を文字列として読み取ってひと桁ずつを配列に入れて計算する方法教えてください!
ちなみにこの方法って差も積も出せますか?
【時間切れ】 (1/11)
>430
【未解決問題】
>>579 1/12 10:30
>>148 1/12 12:00
>>619 1/12
>>569 1/13 14:00
>>448 1/13
>>473 1/14
>566 1/15 9:00
>514 1/15
>576 1/17日中
>483 1/18
>231-232 1/26
>229 1/31
>343 不明
631 :
デフォルトの名無しさん :2008/01/12(土) 00:03:07
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 課題:(吸収スペクトルや)蛍光スペクトルの測定で得られるデータを処理するプログラムを作成せよ. ただし,以下の機能を有し,最初の画面(またはメインの画面)には作成者のIDと氏名が 一緒に表示されるようにすること. 1.データの読み込み 2.データの表示(数値,グラフ,ピークトップの波長や強度など) [ 3.データの印刷(数値,グラフ,ピークトップの波長や強度など) ] プログラムは,提出者が作成したデータおよび配布したデータ(ex01data.txt, em01data.txt))で テストすること. グラフには両軸とも目盛と説明を入れること(縦軸は蛍光強度,横軸は波長(nm)). [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual C++ 6.0 [3.3] 言語: C++ [4] 期限: [2008年01月12日17:00まで] [5] その他の制限: ポインタを使ってテキストをよみこんでください。 全然歯が立ちません。 助けてください。 よろしくおねがいします。
情報が少なすぎ
>>631 ・作成者のIDと氏名
・配布したデータ(ex01data.txt, em01data.txt))
これが無いとエスパーじゃなきゃ無理。
>>629 右の1文字を切り取って配列にぶち込むだけだろ。
>>628 それって、指数表記に対応できるか?
tp://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
1.2e10みたいな感じの奴。
637 :
デフォルトの名無しさん :2008/01/12(土) 00:15:54
>>634 めっっちゃ初歩ですが配列の使い方、いまいちよくわかっておりません
時間があるかた作っていただけるとありがたいです(ノ_・、)
>>635 >>623 の問題より
条件1. 文字列内の各文字が0〜9までの数字か、マイナス記号(-)、小数点(.)のみで構成されている。
条件2. マイナス記号は文字列の最初(0番目の要素)以外は入らない。(もちろんなくても良い。)
条件3. 小数点は1つしか含まない。(場所はどこでもよい。)
639 :
デフォルトの名無しさん :2008/01/12(土) 00:22:48
初めまして プログラミングの課題が出されたのですが、さっぱりわかりません。 代わりにプログラムを作って頂けないでしょうか。お願いします。 [1] 授業単元:プログラミングU [2] 問題文(含コード&リンク):正整数a以上b以下のHappyNumberを求めるプログラムを作成せよ。 ただし、関数を使うこと。 HappyNumberとは、正整数nの各桁の数を2乗し、その合計を求め、 その合計の各桁の数を2乗し、またその合計を求める計算を繰り返したとき、 最終的に1となる正整数nのことをいう。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: よくわかりません。 [3.3] 言語: C++ [4] 期限: 2008年1月14日まで [5] その他の制限: 関数を使うところまで
640 :
229 :2008/01/12(土) 00:36:54
自分でもやってますがどうにも難しいですね・・・ 乗算回数がnpより良い方法が見つかりませんし、存在しないかもしれません。
>>640 ぶっちゃけ協力してあげたくても数学の知識が足りない。すまん。
>>229 (
>>640 やってみたけど、問題の意味を取り違えてるかもしれん
この場合だと乗算回数はどっちになるの?
n * ( 2 + p * p )
それとも
n * p * p
#include<iostream>
int main(void)
{
double a[10]={0.0, 0.1, 0.0, 2.2, 0.0, 0.0, 3.3, 4.4, 0.0, 5.5};
double b[10]={0.1, 0.0, 2.2, 0.0, 0.0, 3.3, 4.4, 0.0, 5.5, 0.0};
double c=0.0;
int i, skip_flag[10]={0};
for(i=0;i<10;i++) if(a[i]==0.0) skip_flag[i]=1;
for(i=0;i<10;i++) if(b[i]==0.0) skip_flag[i]=1;
for(i=0;i<10;i++) if(!skip_flag[i]) c+=a[i]*b[i];
std::cout << c << std::endl;
return 0;
}
>>639 #include<iostream>
#include<algorithm>
#include<list>
using namespace std;
int DigitPowSum(int n){
int sum = 0;
while(n){
int i=n%10;
sum+=i*i;
n/=10;
}
return sum;
}
bool IsHappyNumber(int n){
list<int> check;
while(1){
if(n==1)return true;
if(find(check.begin(),check.end(),n)!=check.end())return false;
check.push_back(n);
n=DigitPowSum(n);
}
}
int main(void){
int a,b;
cin >> a;
cin >> b;
for(int i=a;i<=b;++i)if(IsHappyNumber(i))cout<<i<<endl;
return 0;
}
list使っていいのか知らないけど。もしかしたら大きな勘違いで無駄なことやってるかも。
644 :
642 :2008/01/12(土) 01:12:14
>>640 >>642 をちょっと修正した
>aとbを同時に扱ってはならない
に抵触するかもしれない
#include<iostream>
int main(void){
double a[10]={0.0, 0.1, 0.0, 2.2, 0.0, 0.0, 3.3, 4.4, 0.0, 5.5};
double b[10]={0.1, 0.0, 2.2, 0.0, 0.0, 3.3, 4.4, 0.0, 5.5, 0.0};
double c=0.0;
int i, j, skip_flag[10]={0};
// 改変のターン ここから
for(i=0;i<10;i++) if(a[i]==0.0) skip_flag[i]=1;
for(i=0;i<10;i++) if(b[i]==0.0) skip_flag[i]=1;
for(i=0,j=0;i<10;i++) if(!skip_flag[i]) a[j++]=a[i];
for(i=0,j=0;i<10;i++) if(!skip_flag[i]) b[j++]=b[i];
// 改変のターン ここまで
// 乗算のターン ここから
for(i=0;i<j;i++) c+=a[i]*b[i];
// 乗算のターン ここまで
std::cout << c << std::endl;
return 0;
}
>>643 list<int> が激しく無駄じゃね?
set<int> にして global か static にしたほうがいい気がする.
ただ,
>>639 の定義に従うと,1,10,100,1000,...,10^n しか該当しない気がするので
bool IsHappyNumber( int a )
{
while ( a > 1 ) {
if ( a % 10 ) {
break;
}
a /= 10;
}
return ( a == 1 || a == 10 ) ;
}
でいいんじゃないかとおもうが,自信はない.
>>645 7とか13とかも該当するでしょ?
list<int>は無駄っぽいけど、
循環してるのをどうやって判定すればいいかわからんから力技でやってみた。
>>645 残念ながら、その予想は間違い。
31とかが、HappyNumberになるよ
#include<iostream> #include<set> using namespace std; bool IsHappyNumber( int n ){ set<int> check; while(1){ check.insert(n); int sum=0; while(n) { int i=n%10; sum+=i*i; n/=10; } n=sum; if(n==1)return true; if(check.find(n)!=check.end()) return false; } } int main(void){ int a,b; cin >> a; cin >> b; for(int i=a;i<=b;++i)if(IsHappyNumber(i))cout<<i<<endl; return 0; } 確かにsetの方が簡潔にかけるのと、あと関数2つも必要なかったので書き直してみた。 staticにしたほうがいいってのがよくわかんないけど・・・
これ面白いな。 最終的には4を含むループにはまるか、1で終わるかのどっちかなんだな。 証明もできたがはじめて知ったよ。
ああ 力技で解いた自分が恥ずかしい orz
>>569 /* goto使いまくりだけど */
#include <stdio.h>
#include <string.h>
int main(void)
{
char buff[256];
gets_s(buff, 256);
int charaNum = 0;
int wordNum = 0;
int sentenceNum = 0;
for(int i = 0; i < strlen(buff); i++) {
if(buff[i] == '.') {
sentenceNum++;
wordNum++;
goto LABEL_SPACESKIP;
}
/* 続き */ if((buff[i] == ',') || (buff[i] == ' ')) { wordNum++; goto LABEL_SPACESKIP; } charaNum++; if(false) { LABEL_SPACESKIP:; for(int j = i+1; j < strlen(buff); j++) { if(buff[j] != ' ') { i = j-1; goto LABEL_CONTINUE; } } break; } LABEL_CONTINUE:; } printf(" %d\n", charaNum); printf(" %d\n", wordNum); printf(" %d\n", sentenceNum); return 0; }
訂正。 if(buff[i] == '.') { ↓ if((buff[i] == '.') || (buff[i] == '!') || (buff[i] == '?')) {
>>617 >p=fopen(argv[1],"r");
>はもっと嫌い。
後学のために、その理由を教えていただけませんか?
当方は
if ((p = fopen(argv[1], "r")) == NULL) { }
と書いています。ただ、
if(isplaha(c)) { }
はよく使いますが、
if (!(p = fopen(argv[1], "r"))) { }
は私自身がつまづくのでしません。
宗教論争のつもりはないです。ただ、他の方の感覚を知りたいだけです。
656 :
655 :2008/01/12(土) 03:50:30
s/isplaha/isalpha/g
他のスレでやれ
/* 棒を倒す */のところの処理が不思議で妊娠しそう
x = 2のところのせいで判りづらいけど、 必ず一通りの経路しかないようになってんのか。 迷路って面白いな。
662 :
デフォルトの名無しさん :2008/01/12(土) 11:22:51
663 :
デフォルトの名無しさん :2008/01/12(土) 11:30:16
>231-232 の書き込みをした者です。 今日の午後2時までに可能なところまで回答していただけないでしょうか。 よろしくお願いいたします。
>>642 その場合2n+(n*p*p)と扱われます。
ifによって乗算回数を減らす事はほぼ禁止されています。
>>644 は0でない要素数が同じでないと正しく動きません。
>>663 最初の数学の合計点が出力結果にならないので諦めた
>>569 #include <stdlib.h>
static void in_word(char *t, int *c, int *w, int *s);
static void in_space(char *t, int *c, int *w, int *s);
static void in_word(char *t, int *c, int *w, int *s)
{
if (!*t || *t == '\n')
return;
*c += 1;
switch (*t) {
case ' ': case ',':
return in_space(++t, c, w, s);
case '.': case '?': case '!':
*s += 1;
return in_space(++t, c, w, s);
default:
return in_word(++t, c, w, s);
}
}
/*続く*/
/*続き*/ static void in_space(char *t, int *c, int *w, int *s) { if (!*t || *t == '\n') return; *c += 1; switch (*t) { case ' ': case ',': return in_space(++t, c, w, s); default: *w += 1; return in_word(++t, c, w, s); } } int main(int ac, char **av) { char text[1024]; int c, w, s; fgets(text, sizeof text, stdin); c = w = s = 0; in_space(text, &c, &w, &s); printf("character:%d word:%d sentence:%d\n", c, w, s); return 0; }
音声出力のソースを作っています。 以下のソースで、ファイルは出力されるのですが、音声が出てきません。 どこを修正すればよいか教えていただけませんか? #include <stdio.h> #include <stdlib.h> #include <math.h> #define SIZE 22050*5 #define OFFSET 23 int main(int argc,char *argv[]) { FILE *fp; short int inbuf[SIZE]; short int outbuf[SIZE]; int i,f,f0,amp,PI; f = 440; f0 = 11050; amp = 5000; if((fp = fopen("test-sound-16-22.wav", "rb")) == NULL ) { printf("ファイルオープンエラー\n"); exit(EXIT_FAILURE); }
続き fread(inbuf, sizeof(short int), SIZE, fp); fclose(fp); for (i=OFFSET; i<200; i++) printf("%d, ",inbuf[i]); printf("\n"); for (i=0; i<OFFSET; i++) outbuf[i]=inbuf[i]; for (i=0; i<(SIZE-OFFSET); i++){ outbuf[i+OFFSET] = amp * sin(2*PI*i*(f/f0)); } for (i=(SIZE-OFFSET); i<SIZE; i++) outbuf[i]=0; if((fp = fopen("testfile2.wav", "wb")) == NULL ) { printf("ファイルオープンエラー\n"); exit(EXIT_FAILURE); } fwrite(outbuf, sizeof(short int), SIZE, fp); fclose(fp); return 0; }
>>668 スレ違い。
もし宿題であって丸投げするのであれば
>>1 をよく読んで書き直し。
671 :
デフォルトの名無しさん :2008/01/12(土) 12:56:54
>>663 すみません、間違えた数字を書いていました。
(成績表)
学籍番号 5001 5002 5003
数学 62 45 70
英語 75 65 93
国語 54 82 63
672 :
デフォルトの名無しさん :2008/01/12(土) 13:00:20
(1)はここまでできているのですがこの先がわかりません。 #include <stdio.h> int main(void) { int seiseki[3][4]={{5001,62,75,54},{5002,45,65,82},{5003,70,93,63}}; int i, total[3]={0,0,0}; double ave[3];
>>655 ためしに、引数つけずにプログラムを実行したらどうなる?
>>677 を読むまで疑問にすら思わなかった俺涙目w
coutを書き換えるくらいでOKなように書いてあるけど
679 :
デフォルトの名無しさん :2008/01/12(土) 13:49:45
>>674-676 ありがとうございます。でもこのプログラムだと習ってないことが多いので申し訳ないのですがこれは自分には難しすぎます。
あと合計点や平均点の画面出力にはprintf文でやりたいと思います。
#include <stdio.h>
void main(void) ←ここ間違えていたので直しました
{
int seiseki[3][4]={{5001,62,75,54},{5002,45,65,82},{5003,70,93,63}};
int i, total[3]={0,0,0};
double ave[3];
681 :
デフォルトの名無しさん :2008/01/12(土) 14:05:12
>>680 このプログラムはC++ではないのですか?
学校ではこういう風に教わったので、他の方法などはわかりません。すみません
682 :
658 :2008/01/12(土) 14:06:02
C++という区分だけでなく、 クラス、STL、Boostを使用とかも明記すればいいかもね(Boost使う授業とか熱そうだな)。
685 :
デフォルトの名無しさん :2008/01/12(土) 14:28:58
[1] 授業単元:C言語 [2] 問題文:構造体としてT1時T1分T1秒とT2時T2分T2秒をキーボードから入力し、経過時間を求め、表示するプログラムを作成しなさい。但し、秒は実数型とする [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:fujitsu workbench [3.3] 言語:C [4] 期限:1月16日16:00 [5] その他の制限:T1=7時25分12.33秒 T2=12時3分27.55秒.時間は24時間60分60秒で それ以上はNGで安全装置を働かせる
C言語だと 制御文、配列、関数、構造体、ポインタ あたりがおおまかな節目になるかな?
688 :
デフォルトの名無しさん :2008/01/12(土) 14:34:34
689 :
デフォルトの名無しさん :2008/01/12(土) 14:37:53
690 :
デフォルトの名無しさん :2008/01/12(土) 14:39:20
>>683 非常に参考になりました、感謝致します。
どうもありがとうございました。
692 :
デフォルトの名無しさん :2008/01/12(土) 14:55:21
>>691 double ですか??
使っても50桁入力できません(ノ_・。)
>>692 んじゃ、今からとっかかる
他にやってる人がだしたらまあそっちで。
694 :
デフォルトの名無しさん :2008/01/12(土) 15:07:53
掛け算が面倒だな
696 :
デフォルトの名無しさん :2008/01/12(土) 15:39:21
この方法だと掛け算はむりですかねー
ヒント 2*3 2+2+2 と思ったが50桁分ループさせるのはそれはそれで面倒そうだな
698 :
デフォルトの名無しさん :2008/01/12(土) 15:52:02
あーその手があった! もうめんどくてもなんでもいいっス(ノ_・。)
いや、掛け算だって筆算でやるようにやっていけばできるだろ。
少ない数なら
>>697 でもいいけど1億回以上も加算してたら処理が終わらん。
最近のCPUならちょっとくらい無理させても平気だって! たぶん 最初は加算ができてれば実装が楽かと思ったんだけど・・・
>>700 期限はまだあと4日もあるのにたった2時間で催促するなよw
703 :
デフォルトの名無しさん :2008/01/12(土) 16:08:47
たしかに、、
704 :
685 :2008/01/12(土) 16:27:18
サーセン、コピペした時の手違いで期限が今日なんで 焦ってんです。
今日ならもう期限切れだから焦る必要は無いような・・・
というか
>>700 に期限を間違えてたって書けよ
707 :
685 :2008/01/12(土) 16:37:42
>>705 700が別人なんで重ね重ねすいません。
'\0'で制御してた俺は一体……
>>708 char A[]="123"を、
"321\0" に変換し、
"32100000000...000\0" に変換してから
0x03, 0x02, 0x01, 0x00, ... に変換
して計算しようとしていた自分は一体……
すべて1+1で計算させてみようとしてた俺は orz 無謀すぎた
>>707 で、別人なのはいいけど期限は結局いつなの?
711 :
デフォルトの名無しさん :2008/01/12(土) 17:24:55
>>619 です!
ほんとありがとうございました!
これで宿題はとりあえず..(ノ_・。)
面接があって、自分で説明するにはまだわかんないことだらけなのでまた質問しにきます!
713 :
デフォルトの名無しさん :2008/01/12(土) 17:45:44
>>619 また現れました
あのーまだ
#define
ってならってないんですけども
ないと出来ないですか?(ノ_・。)
714 :
デフォルトの名無しさん :2008/01/12(土) 17:46:27
[1] 授業単元:c++ [2] 問題文(含コード&リンク): 名前、出身都道府県、生年月日を読み込み、名前、生年月日、満年齢、出身都道府県の順に 出力するプログラムをクラスを用いて作成せよ。満年期を計算する場合には現在の日付 (年月日)が必要となるが、これはアクセサを用いて値を入れること。 名前:内藤大介 出身都道府県:東京都 生年月日:1987年08月07日 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C++ 期限: ([2008年01月15日12:30まで] [5] その他の制限
( ゚д゚) _(__つ/ ̄ ̄ ̄/_ \/ /  ̄ ̄ ̄ ( ゚д゚ ) _(__つ/ ̄ ̄ ̄/_ \/ /  ̄ ̄ ̄
>>685 #include <stdio.h>
/* 7時25分12.33秒 なら 7 25 12.33 と入力 */
typedef struct _stime {
int hour;
int minute;
float second;
} stime;
void safety(stime* ptr)
{
if(ptr->hour > 24) ptr->hour = 24;
if(ptr->minute > 60) ptr->minute = 60;
if(ptr->second > 60.0f) ptr->second = 60;
}
int main(void)
{
stime t1, t2, t3;
/* 時 分 秒で入力 */
scanf("%d %d %f", &t1.hour, &t1.minute, &t1.second);
scanf("%d %d %f", &t2.hour, &t2.minute, &t2.second);
/* 安全装置 */
safety(&t1);
safety(&t2);
/* 続く */
/* 続き */ t3.hour = t2.hour - t1.hour; t3.minute = t2.minute - t1.minute; t3.second = t2.second - t1.second; if(t3.second < 0) { t3.minute--; t3.second += 60.0f; } if(t3.minute < 0) { t3.hour--; t3.minute += 60; } if(t3.hour < 0) { t3.hour += 24; } printf("経過時間 %d時間%d分%5.2f秒\n", t3.hour, t3.minute, t3.second); return 0; } /* 題意がよく分からないけどこういうこと? */
720 :
デフォルトの名無しさん :2008/01/12(土) 19:24:33
>>639 mixiにも書いてるマルチじゃん。
ttp://mixi.jp/view_bbs.pl?id=26879853&comment_count=0&comm_id=602606 820 2008年01月11日 14:01
りょ〜
初めまして
プログラミングの課題が出されたのですが、さっぱりわかりません。
代わりにプログラムを作って頂けないでしょうか。お願いします。
[1] 授業単元:プログラミングU
[2] 問題文(含コード&リンク):正整数a以上b以下のHappyNumberを求めるプログラムを作成せよ。
ただし、関数を使うこと。 HappyNumberとは、正整数nの各桁の数を2乗し、その合計を求め、
その合計の各桁の数を2乗し、またその合計を求める計算を繰り返したとき、最終的に1となる正整数nのことをいう。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: よくわかりません。
[3.3] 言語: C++
[4] 期限: 2008年1月14日まで
[5] その他の制限: 関数を使うところまで
愛知教育大学に通報しといた。
721 :
デフォルトの名無しさん :2008/01/12(土) 19:25:17
>>619 です
何度もすいません
あと100回くらい来そうです、、
>>706 のプログラムで、
一桁ずつ配列に入れる部分てどこになりますか?
変な質問だったらすいません
真面目にコード理解する気あるなら、一度自分で書き直して つまったところでサンプルみて補った方が良いよ。 ここは基本的に丸投げされた宿題を解く場であって 、解き方を教える場ではないしな。 まあ親切な解答者なら解説までしてくれるかもしれないが。
723 :
デフォルトの名無しさん :2008/01/12(土) 19:50:08
>>717 (<、,,> ":::::::::::::::::::::::::::: 、
〜〈/::::::::::::::::::::::::::::::::::::::::::::)
〃:::::::::::::::::::::::::::::::::::::::::<、 ど ロ こ
~そ:::::::::::::::::::::::::::::::::::::::::::::::::::::,) も リ の
、_ ,, /::::::::::::::::::::::::、,ゝ===く:::::::,:::::ヽ め コ
`V::::::::::::::::::::、_γ `ヾ,_ < ! ン
l::::::::::::::::::::::く( r,J三;ヾ )> く,
〜v,ん:::::::::::::::´:::::::=; {三●;= } ,=ニ `/l/!/⌒Y
l:::::::::::::::::::::::::::::ゝ≡三=イ ´::::゙:::::::::::::::::::::::::::::::
、m,.. ,ゞ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#include <stdio.h> #define BUF_SIZE 1024 int main() { char in[BUF_SIZE]; int i; scanf("%s", in); for (i = 0; in[i] != '\0'; ++i) { if (in[i] == 't' && in[i+1] == 'i') { printf("chi"); ++i; } else putchar(in[i]); } return 0; }
>>710 1/12 26:00が定刻です。
>>718 大変ありがとうございます、安全装置は時間が単位ごと
に24時60分60秒を超えない様に設定するようです。
その他の制限:T1=7時25分12.33秒 T2=12時3分27.55秒は正直この数値は
なんでもいいです。
くだらねえ
>>727 ,728
ありがとうございます、助かりました。
732 :
デフォルトの名無しさん :2008/01/13(日) 00:12:01
>>732 #include <stdio.h>
int main()
{
for(long a=1001; a<=9999; a+=2)
{
long b=987654321/a;
if(a*b==987654321)
printf("%ld * %ld = %ld\n", a, b, a*b);
}
return 0;
}
>>733 やっぱり一番上の桁0は駄目なんじゃないかな
とりあえず俺は
for(i = 1000; i < 9999; i++)
for(j = 100000; j < 999999; j++)
条件を満たすか判定
でやるから、おまいはもっと賢い方法でやれ
>>732 #include<stdio.h>
int main(void){
int i,j,k=987654321;
for(i=1000;i<=9999;i++)
if(k%i==0){
j=k/i;
printf("%9d\n",i);
printf("x %7d\n",j);
printf("---------\n");
printf("%9d\n",j%10*i);
printf("%8d\n",j/10%10*i);
printf("%7d\n",j/100%10*i);
printf("%6d\n",j/1000%10*i);
printf("%5d\n",j/10000%10*i);
printf("%4d\n",j/100000%10*i);
printf("---------\n");
printf("%9d\n",i*j);
}
return 0;
}
>732 途中表示を忘れたので訂正 #include <stdio.h> int main() { for(long a=1000; a<=9999; a++) { long b=987654321/a; if(a*b==987654321) { printf(" %4ld\n* %6ld\n----------\n" " %4ld\n" " %4ld\n" " %5ld\n" " %5ld\n" " %5ld\n" " %4ld\n" "----------\n" " %9ld\n\n\n", a, b, b%10*a, (b/10)%10*a, (b/100)%10*a, (b/1000)%10*a, (b/10000)%10*a, (b/100000)%10*a, a*b); } } return 0; }
740 :
732 :2008/01/13(日) 00:54:27
こんなに早くやってもらえるとは思いませんでした。 本当に助かりました。 ありがとうございます。
741 :
◆u2YjtUz8MU :2008/01/13(日) 01:01:32
[1] 授業単元: C言語 [2] 問題文(含コード&リンク):1から10までの数値を並び替えし、並び替えた10個の数字の合計(和)を出力。 またその合計を10で割った商と余りを出力する。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Borland C++ 5.5.1 [3.3] 言語: C言語でよろしくお願いします。 [4] 期限: 明日まで。 [5] その他の制限:void inputnum outputnum for sortnum 等はOKらしい。
742 :
◆u2YjtUz8MU :2008/01/13(日) 01:03:15
>>741 元データはランダムに並んでるのか? > 1から10
使っていいライブラリは?
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): n角形(n>2)の面積を求めるプログラムを作成せよ 関数を用いてtxtファイルにある座標を読み込む形式のもの 解答においては三角形分割せずに台形の面積の総和として表す方法で解く事を指定する [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:visual stadio 2005 [3.3] 言語: C [4] 期限: 1月14日24時まで [5] その他の制限:特にありません
>>732 ベンチマークと思えばどうということはない
#include <stdio.h>
int cntdigit(int n)
{
int cnt = 0;
while(n) cnt++, n /= 10;
return cnt;
}
int main(void)
{
int i, j, w[6];
for(i = 1000; i <= 9999; i++){
for(j = 100000; j <= 999999; j++){
w[0] = i*(j%10);
w[1] = i*((j/10)%10);
w[2] = i*((j/100)%10);
w[3] = i*((j/1000)%10);
w[4] = i*((j/10000)%10);
w[5] = i*((j/100000)%10);
if(cntdigit(w[0]) == 4 && cntdigit(w[1]) == 4 &&
cntdigit(w[2]) == 5 && cntdigit(w[3]) == 5 &&
cntdigit(w[4]) == 5 && cntdigit(w[5]) == 4 &&
w[0] + 10*w[1] + 100*w[2] + 1000*w[3] + 10000*w[4] +100000*w[5] == 987654321)
printf("%d , %d\n", i, j);
}
}
return 0;
}
746 :
◆u2YjtUz8MU :2008/01/13(日) 01:17:54
>>743 元データはランダムに並んでいます。
ライブラリに関しては一切問題文には、触れられていませんでしたがあまり高度なものは使用しないで頂きたいです
。
>746 なに順に並び替えるの?
748 :
◆u2YjtUz8MU :2008/01/13(日) 01:24:59
>>744 >台形の面積の総和として表す方法で解く事
>>1 >・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
750 :
664 :2008/01/13(日) 01:32:13
>>642 勘違いをしていました。この場合はn+(n*p*p)と扱われます
751 :
デフォルトの名無しさん :2008/01/13(日) 01:39:53
解答においては三角形分割せずに台形の面積の総和として表す方法で解く事を指定する この一文が全くもって意味不明なのだが… 四角形(特に凸四角形)はどうするんだろうか n>2となっているが三角形はどうするんだろうか
おまえどんだけ内藤大介が好きなんだよw
>>749 あほか? その数式含めて解けってのが出題の意図だろうが?
つか、こんなもん計算問題のうちにも入らんだろ?
>>752 X軸なりX軸で切って、切ったところの交点求めれば台形ってことでは?
端は 3角形になるけど…………
まさか禁止してないよね?
>>744
757 :
751 :2008/01/13(日) 01:51:23
>>714 ごめん、満年齢でソートが意味ないんだった、逆だ
生年月日でソート掛けんといかんよな、場所はわかると思うから適当に直してくれ
>>754 「出題の意図」とか言い始めるとこのスレの存在そのものを否定するような・・・
ふとした疑問? 与えられたn角形が凸であることの保証はあるんだろうか?
761 :
◆u2YjtUz8MU :2008/01/13(日) 02:11:24
>>760 遅い時間までありがとうございます。 助かりました。
>>756 の方ので正しいと思います
自分の文章がアレで迷惑かけてしまい申し訳ない
>>741 辞典丸写しわっしょい
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define MIN 1
#define N 1000
int sum_and_distsort(int n, int a[], int b[]){
int i, x, sum = 0, cnt[MAX - MIN + 1] = {0};
for(i = 0; i < n; i++) cnt[a[i] - MIN]++;
for(i = 1; i <= MAX - MIN; i++) cnt[i] += cnt[i - 1];
for(i = n - 1; i >= 0; i--){
x = a[i] - MIN;
b[--cnt[x]] = x + MIN;
}
for(i = 0; i < MAX - MIN; i++) sum += cnt[i]*(MIN + i);
return sum;
}
int main(void){
int i, a[N], b[N], sum;
srand((unsigned)time(NULL));
for(i = 0; i < N; i++) a[i] = rand()%(MAX - MIN + 1) + MIN;
sum = sum_and_distsort(N, a, b);
puts("\nビフォア");
for(i = 0; i < N; i++) printf("%3d ", a[i]);
puts("\nアフター");
for(i = 0; i < N; i++) printf("%3d ", b[i]);
printf("\n合計 %d 商 %d 余り %d\n", sum, sum/10, sum%10);
return 0;
}
sumの計算の位置がまずい…… for(i = 0; i < MAX - MIN; i++) sum += cnt[i]*(MIN + i); を for(i = n - 1; i >= 0; i--){ の上に移動希望
765 :
1問目 :2008/01/13(日) 03:00:14
[1] 授業単元: [2] 問題文:方程式 f(x)=x^2-c の近似値をニュートン法で求めることにより √c の近似値を求めよ。x の初期値は2、収束条件は|X_n+1 - X_n| < 10^(-5)とする。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限:2008年1月15日24:00まで [5]下みたいになるようにお願いします。 <実行結果> 平方根を求めいた値を入力せよ:2 初期値x[0]:2 収束条件:1.0e-5 計算結果 -n--x-------y------ 0 2.00000 2 1 1.50000 0.25 2 1.41667 0.0069444 3 1.41422 6.0073e-06 4 1.41421 4.5108e-12 √2.0の近似値は1.414214です。
766 :
2問目 :2008/01/13(日) 03:03:29
[1] 授業単元:情報処理演習 そのほかは上と同じです。 問題文:次の微分方程式を、オイラー法を用いて近似解を求めなさい。 L(di/dt)+Ri=E 実行結果(例) L:0.1 R:1 E:10 刻み幅:0.05 終了時間:1.0 t0:0.0 i0:0.0 近似解 0.00 0.00000 0.05 5.00000 0.10 7.50000 ・・・ 1.00 9.99999
俺、数学にがてなんだぜ。
卒業研究で一緒にやってるヤツが ↓こんなコード書いたんだが何でこれで上手くいくのか 解説してくしてほしい・・・・ void strcpy (char *s, char *t){ while (*s++ = *t++) ; }
while ((*s++ = *t++) != '\0') の簡略形
>>770 質問とは関係ないけどtはconst char *にした方が良い。
>>770 質問とは関係ないけどtはregister const char *にした方が良い。
>>771 何で簡略できるのかわからん・・・
俺グループで一番馬鹿なんだ・・・・
while( *t != '\0' ){
*s = *t;
++s;
++t;
}
これくらい分解したらわかりやすいんじゃないの?
*s ++s;は*(s++)と省略できて、優先順位の関係から括弧も省略できて*s++になる
まず「後置インクリメント」でぐぐるところからはじめるといいと思う
>>770 質問とは関係ないけどスレ違い
>>770 while(a != 0)をwhile(a)と省略できる
while(a == 0)をwhile(!a)と省略できる
文字列の終端にはNULL文字('\0')が入っている。
これは値は0なので
>>771 の言うとおり簡略できる。
>>775 卒業研究も宿題のうちだから、それでわからないことなんだしいいんじゃね?
卒研は宿題とは違うものだし、まぁ百歩譲って宿題だとしても
テンプレつかって丸投げしてもらわないと
>>770 みたいな「ごく普通の質問」は質問スレでやるべき
このスレは別に学校スレじゃない
779 :
714 :2008/01/13(日) 10:14:04
>>751 私ははすごいエラーが出てたいへんだったのに(笑)
とても助かりました。
ありがとうございます。
>>766 #include <stdio.h>
double f(double l, double r, double e, double i)
{
return (-r*i + e)/l;
}
int main(void)
{
double l, r, e, dt, tn, t, i;
printf("L:"); scanf("%lf", &l);
printf("R:"); scanf("%lf", &r);
printf("E:"); scanf("%lf", &e);
printf("刻み幅:"); scanf("%lf", &dt);
printf("終了時間:"); scanf("%lf", &tn);
printf("t0:"); scanf("%lf", &t);
printf("i0:"); scanf("%lf", &i);
printf("近似解\n");
printf("%.2f %.5f\n", t, i);
while(t <= tn){
i += dt*f(r, l, e, i);
t += dt;
printf("%.2f %.5f\n", t, i);
}
return 0;
}
>>765 右揃えが再現できてない
#include <stdio.h>
#include <math.h>
double f(double c, double x){ return x*x - c;}
double g(double x){ return 2*x;}
int main(void){
double c, x, prevx, epsilon;
int n = 0;
printf("平方根を求めいた値を入力せよ:");
scanf("%lf", &c);
printf("初期値x[0]:");
scanf("%lf", &x);
printf("収束条件:");
scanf("%lf", &epsilon);
printf("-n--x-------y------\n");
printf("%3d %.5f %g\n", n, x, f(c, x));
while(1){
prevx = x;
x = prevx - f(c, prevx)/g(prevx);
n++;
printf("%3d %.5f %g\n", n, x, f(c, x));
if(fabs(x - prevx) < epsilon)
break;
}
printf("√%.1fの近似値は%.6fです。\n", c, x);
return 0;
}
%g -> %11g
>>781 書式でマイナス指定するんじゃなかったっけ?
NUL文字が代入されないってことかな? かな? マージャンどうしよっかなー。 達成感なさそうだしなー。
マージャンの役なんて知りません ><
>>514 は本当に学校で出る宿題なのかw
麻雀ww 役全部知らないといけないじゃん。
いや、自由課題だから自分で考えたんでしょ。 それを丸投げしてるわけだが。
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ | わかやまぁ〜 | \____ _____/ V / ̄ ̄ ̄ ̄ ̄\ , ゛ 三 ミ ヽ | わかやま | ( ( (( ゚∀゚ )) ) ) | わかやま | ヾヽミ 三彡, ソ′\_ ___/ ワカヤマ〜,、,、 )ミ 彡ノ V ヽ゚・゚っ (ミ 彡゛ (\|\|\∩ 彡JJ \( ヽ( ゚∀゚)|ミ )) \ ヽミ ( \ __つミ \)ミ
792 :
デフォルトの名無しさん :2008/01/13(日) 13:31:16
793 :
デフォルトの名無しさん :2008/01/13(日) 13:44:00
int janken(void) { int p, c; char *hand[] = {"グー","チョキ","パー"}; printf("あなたの手は?\n(0.グー、1.チョキ、2.パー):"); scanf("%d", &p); c = rand() / (RAND_MAX + 1.0) * 3; printf("ジャンケン!ポン!!\nあなた:%s <vs> COM:%s\n", hand[p], hand[c]); return (c - p + 2) % 3; }
795 :
◆u2YjtUz8MU :2008/01/13(日) 16:55:26
>>741 です。皆さんありがとうございました。
もう一つだけお願いしたい事があるんです。
#include <stdio.h>
#define OK 0
main(){
int num1,num2,num3,num4,num5,num6,num7,num8,num9,num10;
long a,d,r;
printf("num1 =");
scanf("%d",&num1);
printf("num2 =");
scanf("%d",&num2);
printf("num3 =");
scanf("%d",&num3);
printf("num4=");
scanf("%d",&num4);
796 :
◆u2YjtUz8MU :2008/01/13(日) 16:56:17
printf("num5="); scanf("%d",&num5); printf("num6="); scanf("%d",&num6); printf("num7="); scanf("%d",&num7); printf("num8="); scanf("%d",&num8); printf("num9="); scanf("%d",&num9); printf("num10="); scanf("%d",&num10); a = num1+num2+num3+num4+num5+num6+num7+num8+num9+num10; d = a/10; r = a%10; printf("和 =%d\n",a); printf("商 =%d\n",d); printf("余 =%d\n",r); return(OK); }このプログラムに10個のに入力した数値を昇順にソートする機能をつけて欲しいです。お願いします。
もとプログラムの改版はだめなのか? 配列にしねぇとめんどくせぇよw
配列を使えない人だって居るんだぞう!
799 :
◆u2YjtUz8MU :2008/01/13(日) 17:06:49
大きく改版してもかまわないです。 自分でも長いなあと思っていたので。
配列にしない利点が全くないようなw
嫌がらせのようにmallocで動的確保
[1] 授業単元: [2] 問題文:複数のコンテナから、最初に見つかった、空のコンテナの番号を求めよ、但し空のコンテナが無かった場合は-1をかえすこと。 [3] 環境 [3.1] OS: Windows XP SP2 [3.2] Visual Studio 2005 [3.3] C++ [4] 期限:特になし [5] その他の制限:templateによる、コードでお願いします。 vector<int> vec1 vector<int> vec2 vector<int> vec3 以降、vectorコンテナの数は不定とします、 この中から、空のコンテナが見つかったら、最初に見つかった番号返し、無ければ -1を返したいのですが、今はこんな格好が悪く、汎用性もない関数しか書けません templateを使って、Genericな書き方を教えてください int SearchEmptyContainer() { if( vec1.empty() ) return 1; if( vec2.empty() ) return 2; if( vec3.empty() ) return 3; if( vec4.empty() ) return 4; if( vec5.empty() ) return 5; return -1; }
>>802 vec1, vec2, vec3を更にvectorに放り込んじゃいかんの?
>>803 >>802 です、thxです
その方法でも、全然問題ありませんが、templateというか、
ちょっと複雑になると、特殊化ちか、ファンクタが書けないので教えてもらえませんか
806 :
538 :2008/01/13(日) 18:21:54
亀すみません。
>>542 さんのとおりやったのですがうまくいきません。
X = 7.951602932829518799451307
N = 4
EPS = 0.000000041451814407547454
実行するとこうなります。
あと、できれば初心者が書くようなやつでお願いします。
>>805 言わんとしてる事がよく分からんが、こんなのか?
#include <iostream>
#include <vector>
using namespace std;
template <typename Container>
int GetEmpty(const vector<Container> & rVct) {
typename vector<Container>::const_iterator it = find_if(
rVct.begin(),
rVct.end(),
mem_fun_ref(&Container::empty)
);
return (it == rVct.end()) ? -1 : distance(rVct.begin(), it)+1;
}
int main()
{
vector< vector<int> > vct(4, vector<int>(1));
vct[2].clear();
cout << GetEmpty(vct) << endl;
}
ありゃ、インデント効いてない…。
ちなみに
>>808 の実行結果は3ね。
810 :
538 :2008/01/13(日) 19:13:37
すみません自己解決しました
811 :
802 :2008/01/13(日) 19:42:45
>>809 thxです、教えてもらったコードを、そのままコンパイルすると、
思いっきりエラーが出るんですが・・・・
(8) : error C3861: 'find_if': 識別子が見つかりませんでした
(21) : コンパイルされたクラスの テンプレート のインスタンス化 'int GetEmpty<std::vector<_Ty>>(const std::vector<std::vector<_Ty>> &)' の参照を確認してください
with
[
_Ty=int
]
(11) : error C3861: 'mem_fun_ref': 識別子が見つかりませんでした
(13) : warning C4244: 'return' : '__w64 int' から 'int' への変換です。データが失われる可能性があります。
エラー 2、警告 1
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
812 :
802 :2008/01/13(日) 20:08:15
>>809 へ
#include <functional>
#include <algorithm>
を追加したら、コンパイルが通りました
813 :
デフォルトの名無しさん :2008/01/13(日) 20:16:59
ああ
814 :
デフォルトの名無しさん :2008/01/13(日) 20:17:24
ほ
815 :
802 :2008/01/13(日) 20:23:35
使い方なんですが vector< vector<int> > vct(4, vector<int>(1)); として定義して GetEmpty(vct)で関数を読んでますけど 例えば、既に出来合いのint型のvectorコンテナがこのようにある場合 vector<int> foo; vector<int> hoge; vector<int> hage; のコンテナをGetEmpty(vct)に引き渡す場合、どのように呼んだらいいでしょうか お願いします。
>>815 vct.push_back(foo);
vct.push_back(hoge);
vct.push_back(hage);
817 :
802 :2008/01/13(日) 20:53:38
>>816 thx
vector<int> foo;
vector<int> hoge;
vector<int> hage;
は既に定義済みで、値は入っていたり、いなかったり、としてその場合
int main
{
vector< vector<double> > vct;
vct.push_back(foo);
vct.push_back(hoge);
vct.push_back(hage);
cout << GetEmpty(vct) << endl;
return 0;
}
これでできました
thx
>>775 while(1)
{
*s=*t;
if(*t=='\0') break;
++s;
++t;
}
819 :
◆Mvt5U7iySM :2008/01/13(日) 21:27:41
820 :
デフォルトの名無しさん :2008/01/13(日) 21:56:22
今全部みたけど、いろんな大学からきてるんだね。
>>819 > if(a[i][i] == 0){ double max = a[i][i];/* 最大値を求める*/ 〜 b[i] = e;} の部分が
> 間違っているようなのですが
ちょびっと見ただけだけど、fabs忘れてるとか?
double max = fabs(a[i][i]);/* 最大値を求める*/
>>783 ,785-786,818
寝る直前に書いたやつに突っ込むなよ ゚・(ノД`)
ちなみに9時に起こされました
>>820 でも、やっぱり超上位大はいないんだよね。
最高でも横国。
824 :
デフォルトの名無しさん :2008/01/13(日) 22:26:22
よろしくお願いします。 [1] 授業単元: [2] 問題文(含コード&リンク):二つの複素数Z1,Z2を読み込んで、それぞれの絶対値、及びZ1とZ2の和、差、積、商を求めて出力するプログラムをクラスを用いて作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C++ [4] 期限: 2008年1月18日 [5] その他の制限
if(a[i][i] == 0)がそもそもってのはとりあえず置いといて > for(j = i++; j < M; j++){ for(j = i+1; j < M; j++){
826 :
◆Mvt5U7iySM :2008/01/13(日) 22:32:06
827 :
デフォルトの名無しさん :2008/01/13(日) 22:53:54
[1] 授業単元: [2] 問題文:第1引数で指定したディレクトリのファイル一覧をファイルサイズと共に表示するプログラムを作れ。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年1月15日 [5] その他の制限: #include <stdio.h> #include <sys/types.h> #include <dirent.h> main(int argc,char **argv){ DIR *dp; struct dirent *dirp; if((dp = opendir(argv[1]))==NULL){ perror("opendir"); exit(0); } while((dirp = readdir(dp)) != NULL){ printf("%s\n",dirp->d_name); } closedir(dp); } ファイルの一覧を表示することは上のプログラムでできたのですが、サイズの表示法が分かりません。 どうかよろしくお願いします。
>>827 stat使わなきゃだめかな?
それとも他に何かあるんだろうか。
>>827 UNIXさっぱり判らん
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
int main(int argc, char *argv[])
{
DIR *dp;
struct dirent *dirp;
struct stat st;
if((dp = opendir(argv[1])) == NULL){
perror("opendir");
exit(EXIT_FAILURE);
}
while((dirp = readdir(dp)) != NULL){
printf("%s",dirp->d_name);
if(stat(dirp->d_name, &st) >= 0)
printf("\t%ldbyte", st.st_size);
printf("\n");
}
closedir(dp);
return EXIT_SUCCESS;
}
832 :
デフォルトの名無しさん :2008/01/13(日) 23:46:46
833 :
827 :2008/01/13(日) 23:57:07
>>831 それでできました!ありがとうございます!
構造体statというのを知らなかったので勉強してきます。
>>827 while ((dirp = readdir(dp)) != NULL) {
struct stat st;
char path[256];
snprintf(path, sizeof(path), "%s/%s", argv[1], dirp->d_name);
if (stat(path, &st)) {
perror("stat");
return 1;
}
printf("%s\t%ld\n",dirp->d_name, st.st_size);
}
つまらない質問かもしれませんが、配列の添え字の変数の型がdouble だとgccのコンパイルが通らないんですがこれは仕様ですか?
画像の出力のプログラミングなんですが。 #define WIDTH 600 #define HEIGHT 400 中略 for(i=0; i<HEIGHT; i++){ for(j=0; j<WIDTH; j++){ image[i][j] =(short int)(sin(j/50.0)*10000+10000); 上記で画像を作成してあります。そして指定した部分だけを出力するプログラムを作りたいです。 自分で簡単に作ったのは if(i < WIDTH /2) なんですがこれだとただ左半分しか出力されなくもっと細かく指定して出力したいんですが・・ 例えば、WIDTH200〜300番地、HEIGHT300〜400 ←この部分だけを出力するような 誰かお願いします。
仕様です、お勧めはしないが(int)でキャストすりゃ通ることは通る が、doubleを添え字に使うようなバカは普通しない
839 :
831 :2008/01/14(月) 00:23:18
>>836 今一どうしたいのかわかんないけど
矩形を転送するなら開始位置とサイズを指定するよ、こんな風に
void blt(int dx, int dy, int sx, int sy, int sw, int sh)
dx, dy = 転送先の位置
sx, sy = 転送元の開始位置
sw, sh = 転送元のサイズ
マージャンやってる人いる??
たぶん居ないんじゃないかと。
843 :
デフォルトの名無しさん :2008/01/14(月) 00:39:29
麻雀??
845 :
836 :2008/01/14(月) 00:41:12
>>840 その方法だと別の関数使いますか?
したいことは・・縦600×横400の画像があって、この画像のうち、縦200〜300の間の部分と横200〜300の間の部分だけを出力するような?やつです
文字だと説明しづらいですね;
if(i < 400<=200){
if(j < 300<=200){
これだと問題ありますよね?
麻雀ってどの課題??
>>845 とりあえず
>>1 のテンプレ読んだ方がいいと思うが、誰かに怒られそうだし
#define WIDTH 600
#define HEIGHT 400
image[i][j] =(short int)(sin(j/50.0)*10000+10000);
で指定された領域を転送したいのなら
void blt(int dx, int dy, int sx, int sy, int sw, int sh)
{
for(int y=0; y<sh; y++){
memcpy(&dest_image[dy+y][dx], &image[sy+y][sx], sw);
}
}
dest_imageは転送先ね、こんな感じになると思う。後、
if(i < 400<=200){
これコンパイル通ると思うけど、絶対意図した動きにならんから…
850 :
デフォルトの名無しさん :2008/01/14(月) 00:59:21
[1] 授業単元:C言語のシステムコール [2] 問題文: ln -s file1 file2と同じ動作をするコマンドslinkをつくりなさい。 [3] 環境 [3.1] OS: Windows(Cygwin) [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年1月14日中 [5] その他の制限: C言語でのシンボリックリンクのつくり方が全くわかりません。 シンボリックリンクの定義は理解しているのですが・・・。 かなり丸投げな質問ですが、よろしくお願いします。
852 :
514 :2008/01/14(月) 01:00:55
麻雀の者です。 まず、提出日が1/18であったことを訂正し、お詫び申し上げます。 あと、配牌をランダムにしてしまうと実質天和並みの確率になってしまうので 聴牌になるまでツモり続けるとか、1回だけ不要牌交換できるとか、 その辺の実装は皆さんにお任せします。
853 :
836 :2008/01/14(月) 01:01:39
847>>ありがとうございます。それもやってみます ちなみに出力する部分を数値で指定とかはできませんか?
>>853 コラー!! とにかく
>>1 のテンプレ嫁
小出しにすんな、後質問の意味もわからん
>>850 #include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
if (argc < 3) {
fprintf(stderr, "%s <srcpath> <dstpath>\n", argv[0]);
return 1;
}
if (symlink(argv[1], argv[2]) < 0) {
perror("symlink");
return 1;
}
return 0;
}
麻雀ってそういうことか。 うん。これはめんどくさいし、役しらないから無理ですね。
858 :
デフォルトの名無しさん :2008/01/14(月) 01:15:37
このスレを見ている人はこんなスレも見ています。(ver 0.20) 任天堂がゲオに対してスマブラXの出荷数を絞る [ハード・業界] 【ドラマ】「ハチミツとクローバー」低視聴率スタート、理由は原作破壊? [芸スポ速報+] ガニ股打法のいぶし銀@埼玉西武'08-2 [プロ野球] 【野球】埼玉西武、「デーブ式脳トレ」でV奪回へ [芸スポ速報+] 任天堂就職スレpart14 [
麻雀プログラムは 麻雀しってて めんどくさがりじゃなくて 時間に暇がある人 しかできないでしょ。
861 :
デフォルトの名無しさん :2008/01/14(月) 01:24:37
>時間に暇がある人 この条件はここに来てる時点で満たしていると思う。
>>859 回答に回ってる人は殆ど専ブラ使ってる気がす
線ブラ ハァハァ
864 :
デフォルトの名無しさん :2008/01/14(月) 01:43:58
みなみけハァハァ
アニヲタまでいるのですね。
866 :
514 :2008/01/14(月) 01:50:17
僕の考えはこうです。 @萬子、筒子、索子、字牌の順に、例えば0〜8、10〜18、20〜28、29〜35のようにナンバリングします。 A各牌が何個あるかを配列変数にカウントアップします。 B特殊な形式である、国士と七対子かを判定してしまいます。 C上記に該当しなかった場合、まず順子を優先して判定してしまいます。 D残りの牌で刻子および対子(雀頭)を判定し、一度点数計算しておきます。 Eもし順子が3組あって、かつ3つの順子が同じ牌であった場合 刻子に直したほうが点が高い可能性もあるので、点を比較し、低かったら順子に戻します。 これでいけますかね? もし無理そうならテンパイかどうかだけでもいいです。 ちなみに僕はすでにテンパってます(笑
HAHAHA!!
868 :
デフォルトの名無しさん :2008/01/14(月) 01:56:00
これがアメリカンジョークってやつか。
(笑
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5760.txt [3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:1/15 正午まで
[5] その他の制限:実行例はあくまでも一例なので、同様の処理を行えるのならばコマンドの出力内容は変更しても構いません
探索には深さ、幅優先探索のどちらを用いても構わないとの事です
可能なら、関数の処理内容等にコメントを付けて頂けると嬉しいです
実行例の検索の部分 下の「大阪府 大阪市 北区」は「京都府 京都市 北区」の間違いでした
>>871 ポインタ使っていいかどうかも書いてくれればなおよい。
aceg...グループとbdgh...グループの判定に論理演算使ってるけど、もし気に入らなければ
1つめの条件式を str[count]== 'a' || str[count]=='c' || ... 、2つめの条件式を str[count]=='b' || str[count]=='d' || ...とすればよい。
#include <stdio.h>
#include <ctype.h>
void EncryptAndDecrypt(char str[])
{
int count=0;
while(str[count]!='\0')
{
if(isalpha(str[count]))
{
if(str[count]&(0x01))
str[count]++;
else
str[count]--;
}
count++;
}
}
int main(void)
{
char test[100];
gets(test);
printf("暗号化前:%s\n",test);
EncryptAndDecrypt(test);
printf("暗号化後:%s\n",test);
EncryptAndDecrypt(test);
printf("複号化後:%s\n",test);
return 0;
}
>>866 >ちなみに僕はすでにテンパってます(笑
それは報告しなくていいです
875 :
デフォルトの名無しさん :2008/01/14(月) 10:32:12
>>866 >ちなみに僕はすでにテンパってます(笑
いりません。
麻雀の課題は大学ででたの??
878 :
デフォルトの名無しさん :2008/01/14(月) 10:42:33
そんなわけないでしょ。 麻雀知らない人だっていんじゃん。
だったら課題のテーマ変えたほいうがいいんじゃない? どうせだれもやらないでしょ。 面倒くさすぎて。
>>866 > ちなみに僕はすでにテンパってます(笑
じゃ、通しで。
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク):200×200の画像を作り、任意に指定した範囲を切り出せ。for文とif文を使用せよ [3] 環境 [3.1] OS: mac [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 1月15日 [5] その他の制限: やさしいC言語程度は習いました よろしくお願いします
882 :
デフォルトの名無しさん :2008/01/14(月) 12:33:25
883 :
◆P2TN8xagh2 :2008/01/14(月) 12:42:52
>>792 ありがとうございます
全くの無知なんでVC6への移行のやり方がさっぱりわかりませんが
四苦八苦しながらがんばりたいとおもいます
884 :
デフォルトの名無しさん :2008/01/14(月) 12:43:01
>>793 エラーがでるのでもう一回お願いします。
【ドラマ】「ハチミツとクローバー」低視聴率スタート、理由は原作破壊? [芸スポ速報+] 【野球】埼玉西武、「デーブ式脳トレ」でV奪回へ [芸スポ速報+] 任天堂就職スレpart14 [就職] トヨタグループについて語るスレ5 [就職] ◆◆自動車部品業界 その20◆◆ [就職]
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★ このスレを見ている人はこんなスレも見ています。(ver 0.20) 【ドラマ】「ハチミツとクローバー」低視聴率スタート、理由は原作破壊? [芸スポ速報+] 【野球】埼玉西武、「デーブ式脳トレ」でV奪回へ [芸スポ速報+] 任天堂就職スレpart14 [就職] トヨタグループについて語るスレ5 [就職] ◆◆自動車部品業界 その20◆◆ [就職]
たとえば「r_fp」のファイルの最後の5行を、出力ファイル「w_fp」に書き出す ってどうやれば良いですか?
892 :
343 :2008/01/14(月) 14:34:33
>>889 system("tail -5 r_fp > w_fp")
>>872 ありがとうございます!
すみませんポインタは使いません。
10行入力した場合のプログラム終了は
どうなるのですか??
WInXP Visual C++ 2005 pro で
>>896 C++なのかC++/CLIなのかはっきりしようぜ
そして質問はスレ違い。宿題であれば
>>1 を読んで書き直し。
多分そのうちtypoでコーラになるぞ
コーラ!!
900
901 :
343 :2008/01/14(月) 15:23:32
あっ期限は今日中までなんです・・・。 めんどくさいと思いますが、助けてください。 よろしくお願いします。
>>901 残念ながらすでにサーバー上から消えてるw
自分で強引に作ったならそれでいいじゃん
きっと先生もわかってくれるよ。
905 :
デフォルトの名無しさん :2008/01/14(月) 15:34:35
先生だって、人間だしな
俺が先生なら許さん。
908 :
デフォルトの名無しさん :2008/01/14(月) 15:47:46
それこそ『コラー!!』だよね。
>>881 > [3.1] OS: mac
これだけで敷居が激高になってるな、つか越えられない壁
コラーレベル Lv -1 : ほめる 宿題の題意まで理解して解答してくる。 Lv 0: まったく怒らない ちゃんと宿題をしてくる Lv 1: ちょっとおこる コンパイラは通るけど、まともに動かない。 あるいは仕様を間違えている。 → やり直す時間をくれたり。 Lv 2: 結構おこる コンパイラ通さずに「うごきませんでした・・・」 → とっとと直してこいという。 Lv 3: 相当おこる 何も提出物なしに「できませんでした・・・」 → 単位はやらん Lv MAX: キレる クラスの大半がコピー。
912 :
デフォルトの名無しさん :2008/01/14(月) 15:55:16
>Lv MAX: キレる ありえるww
>>912 ついでに、他人の宿題をしてやるときは、自分の解答とはまったく別に作るのが常識。
内容さえ理解すればコーディングスタイルとアルゴリズム変えて、5人分くらいすぐにできる。
914 :
343 :2008/01/14(月) 16:03:16
そんなこと言わずにどうかお願いします><
916 :
343 :2008/01/14(月) 16:09:28
>>892 にもう一回書きました。
よろしくお願いします。
918 :
343 :2008/01/14(月) 16:18:15
>>917 あっそうです
そこだけ出来てないです・・・
>>918 あーー、これまるっきり作り直しだな・・・
その反応はひどい @ファイルの内容全てをバッファに確保して、最後の5行だけ出力 Aバッファを5行ずつ確保して、ファイルストリームが最後まで行ったらバッファを出力 B先に行数をカウントして、最後の5行だけバッファに確保 Bが楽かな、Aは叩かれそう
A5行を逐一更新していくだな。
ここは冬休み中何もしなかった大学生が顔青ざめながら必死に書き込みしてる様が 容易に想像できるなw
まぁ、そんなに青ざめずにドライブでもしてぱーっと遊ぼうぜ。
924 :
デフォルトの名無しさん :2008/01/14(月) 17:12:45
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): Horner法を用いたNewton法で次の方程式の解を求めよ f(x) = x^5 - 7*x^4 + 16*x^3 - 8*x^2 -16*x + 16 = 0 [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2007年1月14日24:00まで [5] その他の制限: よろしくお願いします。
927 :
デフォルトの名無しさん :2008/01/14(月) 18:30:27
大学の冬休みって今日までなんだ。 7までかと思ってた。
928 :
デフォルトの名無しさん :2008/01/14(月) 18:35:08
大学によるでしょ
最近ニュートン法の課題多いね。
情報系ならどこでもやるからね>ニュートン
931 :
デフォルトの名無しさん :2008/01/14(月) 18:45:36
ハハハ。 Fランク大の僕は一度もみたことないけどね。
それは報告しなくていいです
サーセン。
934 :
デフォルトの名無しさん :2008/01/14(月) 19:07:08
[1] 授業単元:CPサイエンス [2] 問題文(含コード&リンク): 文字列照合についてです。 boyersearch(ボイヤー・ムーアのアルゴリズム)に対して、テキストは演習3で採用 したものと同じものを入力すると家庭する。その場合、長さ6のパターンの中で、比較回数が 最小となるものはどのようなパターンであろうか?そのパターンを求めよ。 そして、その場合に実行結果から求められる比較回数を書け。そして、 比較回数が最少となる理由を述べよ。 (パターンがテキスト内で出現しない場合について考えることとする。) 演習3のテキストは、オンラインヘルプcpの出力です。 man -c cp | col -b | [3] 環境 [3.1] OS: Mac [3.2] コンパイラ名とバージョン: [3.3] 言語: C [4] 期限: 2008/01/15の早朝(7時くらい) [5] その他の制限:
935 :
デフォルトの名無しさん :2008/01/14(月) 19:44:41
ニュートンって基礎だったんだ。
『情報系』ならね
>>937 %は余剰。5 % 2 = 2 あまり 1ね。
最初は
[0]
[1]
[2]
[3]
[4]
1個目は[0]にコピー。
2個目は[1]にコピー。
>>938 書きかけで送信したんで
1個目は[0]にコピー。
2個目は[1]にコピー。
3個目は[2]にコピー。
4個目は[3]にコピー。
5個目は[4]にコピー。
で、6個目は0にコピーしたいんで余剰を使う
5 % 5 = 1 あまり 0 で0になる
ところで、5個以下のときは全部だすんで最初から5こ暗い出力してる
ってことで。
940 :
デフォルトの名無しさん :2008/01/14(月) 20:47:46
そろそろ次スレ
941 :
デフォルトの名無しさん :2008/01/14(月) 20:47:49
#include <stdlib.h> でRAND_MAXとうつとシンボルが未定義ですとなります。 どぅすれば解消されますか?
コンパイラも書いてないからエスパー待ちだな
#ifndef RAND_MAX #define RAND_MAX 0x7FFF #endif
945 :
デフォルトの名無しさん :2008/01/14(月) 21:01:15
947 :
944 :2008/01/14(月) 21:11:56
RAND_MAXの定義例は0xFFFだってじっちゃんがいってた。 どのコンパイラか知りたいな。
948 :
デフォルトの名無しさん :2008/01/14(月) 21:12:36
冬休みはやっぱり課題すくなかったね。 終盤怒涛(みすず)だったけど。
>>939 何回も、理解が遅くてすいません
問題の最後の5行という部分はこの処理ではどの部分にあたりますか?
950 :
デフォルトの名無しさん :2008/01/14(月) 21:16:55
使ったことないし、手元にないな……。 開発者? のページみると、32767.0で割ってるな。 0x7FFFでいいんじゃない?(適当)
1] 授業単元:プログラミング [2] 問題文:セットした時刻になったらグラフィックを表示し音楽を鳴らすプログラムを作る。 [3] 環境 [3.1] Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: 1月15日 [5] その他の制限:グラフィックはchinouglなどを使いグラフィック画面に好きな絵を表示する。 音楽は、winmm.libをリンクすることによって、PlaySound関数やmciSendString関数を使いwavファイルやmp3ファイルを演奏することができる。 困っています。どうぞよろしくお願いします
953 :
デフォルトの名無しさん :2008/01/14(月) 22:12:02
結局麻雀はノータッチっと。
どなたかやっていただけないでしょうか・・・ 一時までに提出なのです(´;ω;`)
テキストの書式は?
質問に答えずにやってくれといわれてもね
957 :
デフォルトの名無しさん :2008/01/14(月) 22:21:34
[1] 授業単元:プログラミング [2] 問題文:物理プログラミングをせよ ウィンドウズアプリケーションで作成せよ 物: 正四角形(2次元)と地面を作る 地面の動き: 方後キーの←→でその方向に傾く 正四角形の動き: 地面に落ちたり 地面が傾いたらすべるようにする なおDxLibを使うこと [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:c [4] 期限:2008年1月5日 [5] その他の制限:期日しかいのでよろしくおねがいします どちらかというとゲームプログラミングに近い気がしたので ここで質問するべきか迷いましたが皆さんなら作ってくださるだろうと思い ここに書き込みさせてもらいました
冬休みの宿題ラッシュか
期日過ぎてるし。
960 :
デフォルトの名無しさん :2008/01/14(月) 22:30:25
wwwww
すいません。
どなたか
>>871 に救いの手をお願いします。。。
962 :
957 :2008/01/14(月) 22:33:07
>>959 すみませんタイプミスです
15日の誤りですでした
繁盛してるなw
964 :
デフォルトの名無しさん :2008/01/14(月) 22:39:52
みんな。 もうここは終わる。 次スレをたててくれ。」
自分でたてろww
>>961 ホレ。エラー処理は知らん。2バイト文字も知らん。
コメント入れてたんだけど改行多すぎ言われた・・・orz
#include <stdio.h>
#include <ctype.h>
char swap_char(char src)
{
if(isalpha(src)){
if(src%2 == 1){
return src + 1;
}
else{
return src - 1;
}
}
return src;
}
int main()
{
char line[83];
int i,j;
for(i = 0;i < 10;i++){
fgets(line, 83, stdin);
for(j = 0;line[j] != '\0';j++){
putchar(swap_char(line[j]));
}
}
return 0;
}
レス書き込んでから思ったんだけど、swap_charってなんだこの訳分からん関数名www まあいいや。
969 :
デフォルトの名無しさん :2008/01/14(月) 22:58:39
おつ!!
乙!
ume
sakura
bamboo
乙
埋め
この勢いだと埋まるのに時間がかかりそうだな まだ解答がもらえてない人はいまのうちにアピールしたら?
>>977 良いこといった。
1000までに回答するようがんばるよ。
いつものまとめ。 返答がないものは全て解決済みと勝手に判断している。
エラーで動かないなら、どういうエラーかはちゃんと書いて欲しいものだな。
【時間切れ】 (1/14)
>744 >741 >343(>892) >926
【未解決問題】
>>934 1/15 早朝(7時くらい)
>>870 1/15 正午
>>514 1/15
>>881 1/15
>>924 1/15
>>793 と別人?
>>794 ?
>>952 1/15
>>957 1/15
>576 1/17日中
>824 1/18
>229 1/31
>>966 さんありがとうございます。
でもエラーでは。。。;;
全くわからない自分にとってはキツいです;;
今のうちに回答してもらえるなら
>>871 をお願いします!!!
明日期限なのであせってます。。申し訳ないです。。
>>881 200x200の画像を表示するだけのプログラム作って晒してみな
ここの連中なら、そのソースがあれば任意部分の切り出しくらい朝飯前で作ってくれると思うぞ
【質問テンプレ】 [1] 授業単元: プログラミング [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5772.txt [3] 環境 [3.1] xp [3.2] コンパイラ名 gcc [3.3] 言語:C [4] 期限:1月15日 [5] その他の制限:初心者です。あまりプロっぽくなければいいです。それ以上は望みません。やってくれるだけでありがたいです。 ライブラリは学びました。
>>980 おまwww
あせりすぎ。
ちょっとぐらい動かしてから言ってくれ。
エラー処理ってのは異常な入力したら暴走するかも知れんっつーこった。
TDL 100 years!がSCK 100 zfbqt!になるとこまでは見た。(VCでやったケド)
問題文に文字コードの記述がないってことは、多分半角文字だけで大丈夫だから。
自分のトコで動かしてみてダメだったら、どうダメだったか書け。
とりあえず1時までは起きてるから。
【質問テンプレ】 [1] 授業単元:基礎 [2] 問題文(含コード&リンク):符号なし整数A,Bがある。 0≦A,B≦0xffffffffのとき、A/Bがもっとも円周率に近いものを、A,B共に列挙せよ。 なお、円周率は math.h で定義されている M_PI を用いること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: ? [3.3] 言語: C [4] 期限: 1/17 [5] その他の制限: 単位がかかっているのでおねがいします
分からないのでお願いします。
プログラミング習い始めて1年が経つ頃の問題です(再履修なので実質2年目…)。
[1] 授業単元:2分探索木
[2] 問題文(含コード&リンク):(
http://www.uploda.net/cgi/uploader1/index.php?dlpas_id=0000284278.txt )
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C言語
[4] 期限: 提出期限が過ぎてしまったので早めにお願いします
[5] その他の制限:特にないと思います。
2分探索木で登録回数をカウントするプログラムがあるので
それを非再帰版に書き換えるのと実行中のスタックの内容を逐次表示する問題
更に、スタックオーバーフローのエラーを表示する問題です。
自分でも何やってるのか全く分からないのでお願いします…。
書き忘れました。
>>986 のパスは「c」でお願いします。
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):マイコンと回路(sw2個とLED4個) 応用回路(モーター回路、A/D変換回路を用いても可)を使って オリジナル課題を作成 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:GCC Debeloper Lite [3.3] 言語:C言語 [4] 期限:1月16日中(17日が提出なので・・・) [5] その他の制限: 特に無いと思います ポートの番号はこちらで直しますので空白か適当に設定しておいていただければありがたいです 個人的にswを押した回数(sw1でもsw2でもどちらでもか、どちらか一方からの入力でもかまいません) でLED1〜4の点灯パターンが変わる みたいなプログラムを作ろうと考えたのですが 可能でしょうか? またほかにいいプログラムあればアドバイスお願いいたします
解答はいただけなかったようですが、ありがとうございました リアルでの他の課題にも追われていたため、質問への対応が遅くなったりして 迷惑をかけてしまい大変申し訳ない もし考えていた方がいらしゃったのなら、その方にお礼申し上げます
>>988 H8ならまけせとけ、他のマイコンだったらお手上げ
>>982 #include <stdio.h>
#include <stdlib.h>
void printint(int d)
{
char num[12];//数値10桁+符号用+\0用で12個分確保
itoa(d,num,10);
puts(num);
}
main()
{
int d;
printf("数値入力:");
scanf("%d",&d);
printint(d);
}
itoa使うなとは書いてないからこれで。
もううめるね。
松
竹
おしっこ漏れそうっ。
1000なら麻雀だれもやらない。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。