C/C++の宿題を片付け ..
136:デフォルトの名無しさん
07/06/25 03:51:42
>>124
これは難問だ
何をもって面白いとするかがわからんことには作りようがない
技術的には>>124は全然問題なさそうだから、こんなのはどうだ?
怪しいswitch文だが、ちゃんとコンパイルは通る
実行結果が予想できるかい?
プログラムの挙動的には面白いと思うんだが
int main(){
switch(1){
while(1){
case 0:
printf("0");
break;
default :
printf("default");
case 1:
printf("1");
}
}
return 0;
}
良い子はマネしないようにな
137:デフォルトの名無しさん
07/06/25 04:06:16
もう一つ怪しいswitch文
01default って出力されそうだけど、実行結果は case 1: のところで無限ループになる
int main(){
int i = 0;
switch(i){
while(1){
case 1:
printf("1");
i++;
continue;
case 0:
printf("0");
i++;
continue;
default :
printf("default");
break;
}
}
return 0;
}
138:デフォルトの名無しさん
07/06/25 04:10:19
[1] 授業単元: プログラミング基礎A
[2] 問題文(含コード&リンク):
n乗の数を求める関数を、作成しなさい。
◎以下を参考の事
・n乗値を求める関数
n乗値
数字iのn乗値を返す関数
関数定義 double myPow(double i, int n)
例1:i=1.2,n=3の場合,1.728になる
例2:i=1.2,n=-3の場合,0.5787[037]になる
例3:i=1.2,n=0の場合,1.0になる
正,0,負の3つの場合があることに注意
[3]
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
[3.3] 言語:C++
[4] 期限:2007年6月25日10時30分
[5] その他の制限:出来るだけ複雑ではなく簡単(初歩的)なものにすること。
よろしくおねがいします。
139:デフォルトの名無しさん
07/06/25 04:27:21
>>137
コンパイラ何?
もしかしてBCCじゃね?w
140:デフォルトの名無しさん
07/06/25 04:35:55
BCCでもよく見たら01111…ってなってた
てっきり11111…と怪しい動作するもんだと思った
BCCを疑ってごめんなさい。
141:デフォルトの名無しさん
07/06/25 05:37:21
>>137
こんなコードは出来ればごめん被りたいが、
「switchはラベルに飛ぶだけ」てのが良く分かる例かもね。
142:デフォルトの名無しさん
07/06/25 05:43:33
[1] 授業単元: 複雑学
[2] 問題文(含コード&リンク):
次のH´enon 写像(エノン写像) のボックスカウンティング次元を考える.
(Xn,Yn)→(Xn+1,Yn+1)=(Yn+1-a*X^2*n, b*Xn) :a = 1.4, b = 0.3 に固定する.
10×10分割したマス目内にアトラクタの点が入っているかどうか調べる.点が入っているマス目の数を数えよ
サンプルプログラム URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 25日正午
[5] その他の制限: プログラムをリザイレクションしてdatファイルにしてGNUPLOTでグラフを表示させる。
グラフ URLリンク(vista.jeez.jp)
よろしくお願いします。
143:デフォルトの名無しさん
07/06/25 07:23:55
>>138
double myPow(double i, int n)
{
double a=1.0;
if(n<0){
n=n*-1;
i=1/i;
}
if(n != 0){
while(n-->0) a*=i;
}
return a;
}
144:デフォルトの名無しさん
07/06/25 09:24:55
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 簡単な絵を書いて画面に出力しろ
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 無し
[5] その他の制限: printf();などの出力関数のみを使った場合はNGとする
145:124
07/06/25 10:02:36
>>136
2つもレスしていただいて、本当にありがとうございます。
早速試してみます。
教授の面白いというのはどうもお笑い系のようです。
関西出身のようで、講義に使うプログラムもがんばって笑いを誘おうとしていますので。
146:デフォルトの名無しさん
07/06/25 10:34:26
>>142
nS
hist[i][j]
printf("%f %f\n", x, y), hist[px][py]++;
147:デフォルトの名無しさん
07/06/25 10:56:51
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): テキストファイルを読み込み、A〜Zまでの文字がそれぞれ何個現れたかを数えろ。大文字と小文字は区別しないもとする。
[3] 環境
[3.1] OS: (Windows/Linux/等々) WinXP
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Borland C++ Compiler 5.5
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 無期限
[5] その他の制限:
自分で書いたコード
URLリンク(kansai2channeler.hp.infoseek.co.jp)
上記のコードの中の
/* ファイルに含まれているアルファベットの個数をカウント */
この部分がうまく働きません
何がいけないんでしょうか?
148:デフォルトの名無しさん
07/06/25 11:01:39
>>147
なんだこれ。
--
if('a' <= ch && ch >= 'z')
--
やりたいことは、if (ch >= 'a' && ch <= 'z')かif ('a' <= ch && ch <= 'z')じゃないのか?
149:デフォルトの名無しさん
07/06/25 11:03:11
if('a' <= ch && ch >= 'z')
else if('A' <= ch && ch >= 'Z')
if('a' <= ch && ch <= 'z')
else if('A' <= ch && ch <= 'Z')
chと文字の位置を変えるから(略
150:デフォルトの名無しさん
07/06/25 11:04:41
>>148
ああああああああああ、、、
アホみたいなミスしてました・・・
恥ずかしい
151:デフォルトの名無しさん
07/06/25 11:07:42
[1] 授業単元: プログラミング
[2] 問題文:
1、英大文字は小文字に英小文字は大文字に変えて出力するプログラムを作りなさい
2、テキストの中に現れる0から9までの数字の頻度を調べるプログラムを作りなさい
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: ([2007年06月25日14:20まで
[5] その他の制限:特にありません
時間があまりありませんが、できるところまででも
よろしくお願いします
152:デフォルトの名無しさん
07/06/25 11:15:41
>>151
1
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
int main(void)
{
char ch;
ch = getche();
if('a' <= ch && ch <= 'z') printf(" -> %c\n",toupper(ch));
else if('A' <= ch && ch <= 'Z') printf(" -> %c\n",tolower(ch));
return 0;
}
2
>>147のアルファベットのとこを数字に変える
153:デフォルトの名無しさん
07/06/25 11:21:14
is関数使っとけ
154:デフォルトの名無しさん
07/06/25 11:34:14
<ctype.h>使ってるんならis関数使わないほうが不自然だよな。
155:デフォルトの名無しさん
07/06/25 11:39:39
isalpha( ) か
存在を忘れてた
156:デフォルトの名無しさん
07/06/25 11:41:20
>>151
1.
#include <stdio.h>
#include <ctype.h>
int main(void){
int ch;
while((ch = getchar()) != EOF){
if(islower(ch)) putchar(toupper(ch));
else if(isupper(ch)) putchar(tolower(ch));
else putchar(ch);
}
return 0;
}
2.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void){
int i, count[10] = {0};
char buf[2] = {0}, *p = buf;
while((*p = getchar()) != EOF)
if(isdigit(*p))
count[atoi(buf)]++;
for(i = 0; i < 10; i++) printf("%d : %d\n", i, count[i]);
return 0;
}
157:デフォルトの名無しさん
07/06/25 12:26:34
>>128
URLリンク(kansai2channeler.hp.infoseek.co.jp)
悪い。元のがちょっとアレだったんでコマンドライン引数から入力拾うように勝手に仕様変えちった
要点を掴んでほしい
158:デフォルトの名無しさん
07/06/25 12:47:34
152ー156の方々非常に迅速な解答ありがとうございました
159:デフォルトの名無しさん
07/06/25 16:15:49
[1] 授業単元: プログラミング
[2] 問題文:
成績を管理するプログラムを作成する.一人一人の学生には,学籍番号(整数)がつけられているの
で,学籍番号と成績(実数)の組みで管理することとする.本問題で作成するプログラムは,4人の学生について,
英語と数学の成績を入力すると,英語と数学の合計点で最高点を取った学生を出力するものとする.
成績を管理する構造体の名前をstudent_t(この名前はtypedefで定義した名前を指す)とし,構造体のメンバを,
学籍番号はint型とし,名前をidとする
英語の成績はdouble型とし,名前をengとする
数学の成績はdouble型とし,名前をmathとする
とする.また,以下の関数を作成し,それを利用すること.
n人のデータを入力する関数:void InputData(student_t s[], int n)
第一引数は学生の配列
第二引数は学生の人数
関数自体は,何人でも扱えるように作成すること
課題実行においては以下の点に注意すること.
プログラム名は「score」とすること.
結果の表示は小数点以下3桁で表示すること.
各教科の得点は,正の数に限定してよい.
最高点が複数人いた場合は,最高点を取った中で最初に入力された人を表示すること.
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
期限はいつでもいいです。よろしくおねがいします。
160:デフォルトの名無しさん
07/06/25 16:21:04
[1] 授業単元: プログラミング
[2] 問題文:
数字の書かれているテキストファイルを読み込んで、その数字に1を加えた数をテキストファイルに出力するプログラムを作成しなさい.
読み込むテキストファイルには1行目に整数が書かれており、2行目以降には何も書かれていないとする.
課題実行においては以下の点に注意すること.
プログラム名は「count」とすること.
読み込むテキストファイル名はcount.txtとする.
出力するテキストファイル名はcount.txtとする.
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
これもわかりません。よろしくおねがいします。
161:デフォルトの名無しさん
07/06/25 16:23:20
>>159
#include <stdio.h>
main()
{
FILE *fpin,*fpout;
char c;
int i,j;
int B[3][3];
fpin = fopen("in-1.txt","r");
fpout = fopen("out-1.txt","w");
while(fscanf(fpin,"%c",&c)!=EOF)
if(c == 'B')
{for(i=0;i<3;i++)
{for(j=0;j<3;j++)
{fscanf(fpin, "%d", &B[i][j]);
}}}
for (i=0; i<3; i++) {
for (j=0; j<3; j++)
fprintf(fpout,"%3d",B[i][j]/3);
fprintf(fpout,"\n");
}
fclose(fpin);
fclose(fpout);
return(0);
}
162:デフォルトの名無しさん
07/06/25 16:26:54
>>127
#include <iostream>
#define STACK 10
#define QUEUE 10
typedef int stack;
typedef int queue;
static int sfirst = 0, slast = 0, qfirst = 0, qlast = 0, qcount = 0;
int push(stack *s, int i){ return slast == STACK ? -1 : (s[slast++] = i);}
int pop(stack *s){ return slast == sfirst ? -1 : s[--slast];}
int enqueue(queue *q, int i){
if(qlast == qfirst && qcount) return -1;
q[qlast] = i, qcount++;
qlast = (qlast + 1)%QUEUE;
return i;
}
int dequeue(queue *q){
int ret;
if(qlast == qfirst && !qcount) return -1;
ret = q[qfirst], qcount--;
qfirst = (qfirst + 1)%QUEUE;
return ret;
}
int main(){
stack s[STACK];
queue q[QUEUE];
std::cout << "push" << std::endl; for(int i = 0; i < 13; i++) std::cout << push(s, i) << std::endl;
std::cout << "pop" << std::endl; for(int i = 0; i < 13; i++) std::cout << pop(s) << std::endl;
std::cout << "enqueue" << std::endl;for(int i = 0; i < 13; i++) std::cout << enqueue(q, i) << std::endl;
std::cout << "dequeue" << std::endl;for(int i = 0; i < 13; i++) std::cout << dequeue(q) << std::endl;
return 0;
}
163:デフォルトの名無しさん
07/06/25 16:29:50
>>126さんありがとうございます
自分自身でも理解できるように勉強してみます
164:デフォルトの名無しさん
07/06/25 16:31:20
>>162
> [3.3] 言語: C言語のみ
165:デフォルトの名無しさん
07/06/25 16:32:25
>>160
#include <stdio.h>
int main(void)
{
int n = 0;
FILE *fp;
if ((fp = fopen("count.txt", "r+")) == NULL)
return 1;
fscanf(fp, "%d", &n);
rewind(fp);
fprintf(fp, "%d\n", ++n);
fclose(fp);
return 0;
}
166:デフォルトの名無しさん
07/06/25 16:41:16
>>144
$ cat vitamin.c
#include <stdio.h>
int main(int argc, char **argv)
{
if (argc < 2 || argv[1][0] == 0)
return 0;
putchar(argv[1][0]);
++argv[1];
return main(argc, argv);
}
$ cc vitamin.c
$ ./a.out "簡単な絵"
167:デフォルトの名無しさん
07/06/25 16:50:21
>>165
ありがとうございました。
168:デフォルトの名無しさん
07/06/25 16:54:15
>>160
#include <stdio.h>
int main(void){
FILE *fp = fopen("count.txt", "r");
size_t len;
int i, flag = 1;
char buf[1023], ret[1024] = {0}, *p;
if(!fp) exit(1);
fgets(buf, sizeof(buf), fp);
if((p = strchr(buf, '\n')) != NULL) *p = '\0';
len = strlen(buf);
for(i = 0; i < len; i++){
if(flag && (buf[len - i - 1] == '9')) ret[len - i] = '0', flag = 1;
else if(flag) ret[len - i] = buf[len - i - 1] + 1, flag = 0;
else ret[len - i] = buf[len - i - 1];
}
if(flag) ret[0] = '1', p = ret;
else p = ret + 1;
if((fp = freopen("count.txt", "w", fp)) == NULL) exit(2);
fputs(p, fp);
fclose(fp);
return 0;
}
169:デフォルトの名無しさん
07/06/25 17:42:43
>>159
#include <stdio.h>
typedef struct tag_student_t{
double eng, math;
int id;
}student_t;
void InputData(student_t s[], int n){
int i;
for(i = 0; i < n; i++){
printf("student %d\ninput data (id, eng, math) : ", i + 1);
scanf("%d%lf%lf", &s[i].id, &s[i].eng, &s[i].math);
}
}
int main(void){
student_t s[4];
double max = -1;
int i, i_max = 0;
InputData(s, 4);
for(i = 0; i < 4; i++)
if(max < s[i].eng + s[i].math)
i_max = i, max = s[i].eng + s[i].math;
printf("id : %d eng : %.3f math : %.3f sum : %.3f\n",
s[i_max].id, s[i_max].eng, s[i_max].math, s[i_max].eng + s[i_max].math);
return 0;
}
170:デフォルトの名無しさん
07/06/25 17:48:10
>>162
#include <stdio.h>
#define STACK 10
#define QUEUE 10
// <中略>
int main(void){
stack s[STACK];
queue q[QUEUE];
int i;
puts("push");
for(i = 0; i < 13; i++) printf("%d\n", push(s, i));
puts("pop");
for(i = 0; i < 13; i++) printf("%d\n", pop(s));
puts("enqueue");
for(i = 0; i < 13; i++) printf("%d\n", enqueue(q, i));
puts("dequeue");
for(i = 0; i < 13; i++) printf("%d\n", dequeue(q));
return 0;
}
171:デフォルトの名無しさん
07/06/25 17:52:09
>>162
すいません。C言語までしか習っていないのでC言語のみでお願いします。
172:デフォルトの名無しさん
07/06/25 17:53:48
>>170
できればでいいのですが問1と問2にわけて頂けないでしょうか
173:デフォルトの名無しさん
07/06/25 18:15:22
>>172
URLリンク(kansai2channeler.hp.infoseek.co.jp)
174:デフォルトの名無しさん
07/06/25 18:29:03
>>128
URLリンク(kansai2channeler.hp.infoseek.co.jp)
175:デフォルトの名無しさん
07/06/25 19:18:34
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio .NET 2003
[3.3] 言語:C
[4] 期限:2007/6/26 10:30
[5] その他の制限:入力はfopen系関数を使用したものではなく、コマンドプロンプトから入力が保存されたテキストファイルを読み込む方法で行うようにしなければならない。
どんなに考えてもわかりません。わからないまま前日になってしまいました…
よろしくお願いします。
176:デフォルトの名無しさん
07/06/25 19:24:03
まいったな……何の問題なのかも分からないや。
177:デフォルトの名無しさん
07/06/25 19:59:11
[1] 授業単元:プログラム技術
[2] 問題文:
(2)次に引数の順番を入れ替えて逆順に表示するプログラムに直せ。
ソースプログラムを書き込んで提出せよ。*/
main(int argc , char *argv[]){
int i;
printf("%d argument(s).\n" , argc -1);
for(i=argc-1; i>=0; i--){
printf("argv[%d] : \"%s\"\n", i , argv[i]);
}
}
引数の順番を入れ替えると(char *argv[] , int argc)入力した文字は反映されず、argument(s).の前に
意味不明の数字が表示されて動作を終了してしまいます。
C:\c>smp2 a b c
3616655 argument(s).
ちなみに、引数を入れ替えなければ、逆に表示されます。
回答、よろしくお願いします。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio .NET 2003
[3.3] 言語:C
[4] 期限:2007/6/26
[5] その他の制限:
178:デフォルトの名無しさん
07/06/25 20:02:43
>>173
ありがとうございました!
いろいろ注文多くすいませんでした。
179:デフォルトの名無しさん
07/06/25 20:05:55
>>177
argumentでスレを検索汁
180:デフォルトの名無しさん
07/06/25 20:07:42
>>177 >>14
181:デフォルトの名無しさん
07/06/25 20:11:23
>>177
> 引数の順番を入れ替えると(char *argv[] , int argc)
っつか吹いたっw
182:177
07/06/25 20:16:15
>>179>>180
検索しましたが、何の参考にもなりませんでした。
まだ習い始めたばかりでよく分からないんです・・・
>>181
なにか根本的に間違っていたりしますか?
いや、冗談抜きでこの授業分からないんです・・・
183:デフォルトの名無しさん
07/06/25 20:18:02
>>182
言葉の意味を勘違いしているだけでしょ。main関数の中の引数の変数の定義を逆にしてどーすんだと。
仕様からして不適切だし、もしそれで答えろっていうなら、そんな講師は全世界レベルで非難を浴びますw
184:デフォルトの名無しさん
07/06/25 20:22:35
[1] 授業単元:情報処理
[2] 問題文:
3つのベクトルA=(a1,a2,a3),B=(b1,b2,b3),c=(c1,c2,c3)がある。次のベクトル三重積に関する等式を示すプログラムを条件にしたがって作成せよ。
(A×B)×C=-(B,C)A+(A,C)B ここにA×Bは外積(A,B)は内積を示す。
データの入出力はファイルを使用
ファイル入出力に関してもサブルーチン化
ベクトルはそれぞれ一次元配列化
外積、内積ともにサブルーチンを作成し、外積は左辺、内積は右辺を計算できるようにすること
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:g77 fortran
[3.3] 言語:fortran
[4] 期限:2007/6/26
ぜひともおねがいします><
185:177
07/06/25 20:24:28
>>183
レスどうもです。なるほどorz
>次に引数の順番を入れ替えて
↑では、これは何をしろと言っているのでしょうか・・・。
う〜ん、ますます分からなくなってきたorz
186:デフォルトの名無しさん
07/06/25 20:24:50
>言語:fortran
( ^ω^)・・・
187:デフォルトの名無しさん
07/06/25 20:26:37
>>185
問題文を全て一字一句違わず書けばいいよNE☆
188:デフォルトの名無しさん
07/06/25 20:28:15
>>160
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *p;
long l;
char buff[128];
FILE *fop = fopen("count.txt","r");
fgets(buff,sizeof(buff),fop);
l =strtol(buff,&p,10);
fclose(fop);
fop =fopen("count.txt","a+");
fprintf(fop,"\n%d",l+1);
return 0;
}
189:177
07/06/25 20:29:13
>>187
/*(1)次のプログラムを実行し結果を確認せよ。
(2)次に引数の順番を入れ替えて逆順に表示するプログラムに直せ。
ソースプログラムを書き込んで提出せよ。*/
問題文はコレで全てですorz
190:デフォルトの名無しさん
07/06/25 20:33:31
>>189
だから、受け継いだ値を逆から表示しろって問題なんでしょ?そういうこと。
括弧の中を逆にして受け継げって問題だったら全世界レベルで爆笑もんだよw
スイスのジュネーブにあるISO団体が、んだごるぁ?てめぇんとこは俺らが決めた標準はおろか
C言語の基本も理解していないおかしな授業をしてんのかと?国際的な裁判にかけられちゃいますよ?
191:デフォルトの名無しさん
07/06/25 20:35:29
>>177
まぁ、もし 入れ替え っていうなら、例えば引数を3つ受け継いだのなら
1番目と3番目を入れ替えるコードを書けと?そして argv[1] から順に表示しろと?
そういう問題ならそうすべきだが、そんなことせずに単純に逆から表示すりゃ良いでそ。
192:177
07/06/25 20:41:53
みなさんどうもです。そうですね、main()の中を入れえ変えるってのは
いくらなんでも無さそうですね。
有難うございました。
193:デフォルトの名無しさん
07/06/25 20:41:56
>>177
mainに関して、いろいろ実験してみるといい。
例えば、こんなのも駄目だ。
#include <stdio.h>
int main(char *argv[])
{
printf("%s\n", argv[0]);
return 0;
}
194:デフォルトの名無しさん
07/06/25 20:42:00
>>189
ほれよ。無駄な上に君の環境で動くかどうか分からないソース
(多分大丈夫だろうけど)
#include <stdio.h>
int main(int argc, char **argv)
{
int i, j;
char *tmp;
printf("%d argument(s).\n" , argc -1);
printf("argv[0] : \"%s\"\n", argv[0]);
for (i = 1, j = argc - 1; i < j; ++i, --j) {
tmp = argv[i];
argv[i] = argv[j];
argv[j] = tmp;
}
for (i = 1; i < argc; ++i)
printf("argv[%d] : \"%s\"\n", i, argv[i]);
return 0;
}
195:デフォルトの名無しさん
07/06/25 20:49:58
乱数を発生させて、1〜100までを網羅するように表示せよ。(順番は問わない)
まったく、わからんよ。見かけによらず重い
196:デフォルトの名無しさん
07/06/25 20:55:07
>>195
日本語でおk
197:デフォルトの名無しさん
07/06/25 20:59:13
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define swap(type, x, y) do{ type temp = x; x = y; y = temp;}while(0)
int main(void)
{
int x[100], i, j, k;
srand((unsigned int)time(NULL));
for(i = 0; i < 100; i++) x[i] = i + 1;
for(i = 0; i < 1000; i++){
j = (int)(((double)rand()/(RAND_MAX + 1))*100);
k = (int)(((double)rand()/(RAND_MAX + 1))*100);
swap(int , x[j], x[k]);
}
for(i = 0; i < 100; i++) printf("%3d ", x[i]);
return 0;
}
198:デフォルトの名無しさん
07/06/25 21:04:26
>>195
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int a[100],i,tmp,pos;
int a_sz=sizeof(a)/sizeof(a[0]);
srand((unsigned)time(NULL));
for(i=0; i<a_sz; i++)
a[i]=i+1;
for(i=0; i<a_sz; i++) {
pos=rand()%a_sz;
tmp=a[pos];
a[pos]=a[i];
a[i]=tmp;
}
for(i=0; i<a_sz; i++)
printf("%d ",a[i]);
return 0;
}
199:デフォルトの名無しさん
07/06/25 21:07:18
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):
・ポインタを説明せよ。(Wikipedia,Google等参照不可。また書籍の参照も不可。自分の文章で答えること)
・構造体を説明せよ。(同上)
[3] 環境
[3.1] OS:NULL
[3.2] コンパイラ名とバージョン:NULL
[3.3] 言語:C
[4] 期限:2007年06月25日(本日)
[5] その他の制限:同じ文章を見つけた場合は成績評価「不可」とする。
よろしくお願いします。
200:デフォルトの名無しさん
07/06/25 21:08:14
そっか、配列の要素を一回ずつ交換してやればいいんだな。
201:デフォルトの名無しさん
07/06/25 21:09:29
>>199
同じ学校の学生が見てたら終わりじゃん
202:デフォルトの名無しさん
07/06/25 21:09:52
>>199
Wikipedia項目リンク
Wikipedia項目リンク
何も丸々言葉を写さなきゃおk。自分が理解して自分の言葉で書けばええやん。
203:デフォルトの名無しさん
07/06/25 21:10:22
OS NULLって何?
204:デフォルトの名無しさん
07/06/25 21:10:59
>>203
Oナニー Siてたら NULLヌルしちゃった、てへっ ♥
205:デフォルトの名無しさん
07/06/25 21:11:53
むずいね。
206:デフォルトの名無しさん
07/06/25 21:12:03
>>199
先生がこのスレを見ている可能性は考えなかったのか
207:199
07/06/25 21:16:56
>>206
先生、にちゃんねる大嫌いそうだったから、つい書いてしまいました。
208:デフォルトの名無しさん
07/06/25 21:19:10
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
Mission 1 で作成した「Projection1.java 」は「0 列目」と,
「引数で指定した列」をCSV 形式で出力しましたが, 今度は
「0 列目」と「引数で指定した列以外の全ての列」をCSV 形式で
取り出すプログラムに変更せよ.
それを「Quiz6.java 」というファイルとして作成し,
いつもの要領で,WebCT に添付ファイルとして提出.
「CSV.java 」または「Projection1.java 」をコピーして作
ると良い. クラス名は「Quiz6 」としてください
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Java?
[3.3] 言語: C
[4] 期限: 今日中に提出
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
209:デフォルトの名無しさん
07/06/25 21:20:17
class Quiz6{
public static void main(String[] args){
String[][] seiseki = {
{"名前"," 国語"," 算数"," 英語"},
{"あべ","45","56","98"},
{"いいだ","70","45","30"},
{"いしかわ","32","70","75"},
{"おがわ","90","10","42"},
{"かご","85","32","80"},
{"かめい","75","92","40"},
{"こんの","30","30","100"},
{"たかはし","85","20","50"},
{"たなか","80","38","68"},
{"つじ","20","60","75"},
{"にいがき","82","42","75"},
{"ふじもと","18","70","78"},
{"みちしげ","60","46","88"},
{"やぐち","28","99","82"},
{"よしざわ","76","45","80"}
};
int col = Integer.parseInt( args[0] );
quiz6(seiseki,col);
}
210:デフォルトの名無しさん
07/06/25 21:21:26
public static void Quiz6(String[][] table,int col){
int i,j;
for(i=0; i<table.length; i++){
System.out.println(table[i][0]+","+table[i][col]);
}
}
public static void printTable(String[][] table){
int i,j;
for(i=0; i<table.length; i++){
System.out.print(table[i][0]);
for(j=1; j < table[i].length; j++){
if( ★指定した列でなければ ){
System.out.print(★);
}
}
System.out.print( "\n" );
}
}
}
★の箇所がわかりません。お願いします。
211:デフォルトの名無しさん
07/06/25 21:21:26
>>208
スレ違い
212:デフォルトの名無しさん
07/06/25 21:21:35
>>208
スレタイ100回読み直せ
ついでに>>1も
213:128
07/06/25 21:28:26
>>157さん、>>174さんありがとうございました
参考にさせていただきます
214:デフォルトの名無しさん
07/06/25 21:29:58
こいつCとJAVAの区別ついてないんじゃないの?
215:デフォルトの名無しさん
07/06/25 21:31:07
なるほど
> [3.2] コンパイラ名とバージョン: Java?
> [3.3] 言語: C
だものな
216:デフォルトの名無しさん
07/06/25 21:32:59
[1] 授業単元:情報数理
[2] 問題文(含コード&リンク):
複素数型を扱うライブラリcomplex.cを後述するヘッダ
ファイル complex.hに基づいて作ってください。
さらにmain.cというファイルで適当な計算のサンプル
を作り#include “complex.h”として作成したライブラリ
が適切に動作するか検証してください。
typedef struct complex complex; /* complex 型の宣言 */
struct complex {
double real; /* 実部 */
double imag; /* 虚部 */
};
/* プロトタイプ宣言 */
complex cAdd(complex, complex); /* 複素数の加算 x+y */
complex cMult(complex, complex); /* 複素数の乗算 xy */
complex cDiv(complex, complex); /* 複素数の除算 x/y */
double cAbs(complex); /* 複素数の絶対値 |x| */
complex cSub(complex, complex); /* 複素数の減算 x-y */
void printComplex(complex); /* 複素数型データのstdoutへの表示出力 */
[3] 環境
[3.1] OS:WindowsXP
[3.2] bcc32
[3.3] C
[4] 期限:無期限
217:デフォルトの名無しさん
07/06/25 21:37:10
sageし忘れました・・・。
218:デフォルトの名無しさん
07/06/25 22:09:55
>>134 どうかお願いしますー
219:デフォルトの名無しさん
07/06/25 22:12:28
>>216
加算と乗算と除算と表示。
あとは他の人に任せた。
complex cAdd(complex x, complex y){/* 複素数の加算 x+y */
complex ret; /*戻り値*/
ret.real = x.real + y.real;
ret.imag = x.imag + y.imag;
return(ret);
}
complex cMult(complex x, complex y){ /* 複素数の乗算 xy */
complex ret; /*戻り値*/
ret.real = (x.real * y.real) - (x.imag * y.imag);
ret.imag = (x.real * y.imag) + (x.imag * y.real);
return (ret);
}
complex cDiv(complex x, complex y){/* 複素数の除算 x/y */
complex ret;/*戻り値*/
ret.real = ((x.real * y.real) + (x.imag * y.imag)) / ((y.real)*(y.real) + (y.imag)*(y.imag));
ret.imag = ((x.imag * y.real) - (x.real * y.imag)) / ((y.real)*(y.real) + (y.imag)*(y.imag));
return (ret);
}
void printComplex(complex x){ /* 複素数型データのstdoutへの表示出力 */
printf("実部 = %lf, 虚部 = %lf", x.real, x.imag);
}
220:デフォルトの名無しさん
07/06/25 22:19:12
>>218
何ゆえ>135は無視?
221:デフォルトの名無しさん
07/06/25 22:21:23
途中までってのも気持ち悪いから、全部やるか…。
>>216
math.hは使ってもいいの?
使っていいのなら平方根の計算が楽なんだけど…。
222:デフォルトの名無しさん
07/06/25 22:25:10
216です。はい、math.hを用いていただいても大丈夫です。ありがとうございます。
223:デフォルトの名無しさん
07/06/25 22:32:24
絶対値と減算。
math.hを使っていいのなら、累乗もpow()で表現すればよかったか…。まあいいや、合ってれば。
気に入らない箇所があったら適当に直しておいて。
とりあえず、x(4,2)とy(-2,3)で検証した。
よく分からないけど、これは学部一回生レベル?
double cAbs(complex x){ /* 複素数の絶対値 |x| */
return(sqrt((x.real)*(x.real) + (x.imag)*(x.imag)));
}
complex cSub(complex x, complex y){ /* 複素数の減算 x-y */
complex ret; /*戻り値*/
ret.real = x.real - y.real;
ret.imag = x.imag - y.imag;
return(ret);
}
224:デフォルトの名無しさん
07/06/25 22:46:01
あ、もう答えのソース出たんだ。
ソース書いてて、「公式のコピーをC言語として写してるだけでちょうどだるくなったところだった」
225:デフォルトの名無しさん
07/06/25 23:03:32
どうか>>175お願いしますー。
グラフにおける深さ優先探索です。
226:デフォルトの名無しさん
07/06/26 00:22:48
>>225
問1
URLリンク(kansai2channeler.hp.infoseek.co.jp)
dfs.exe -r のようにして起動すると再帰版
引数なしだとスタック版として動作する
見ればわかると思うが
dfs_recurse()が再帰版の関数
dfs_stack()がスタック版の関数な
超適当に作ったから確認は自分でやってくれ
227:デフォルトの名無しさん
07/06/26 01:48:12
[2] 問題文(含コード&リンク):
指定されたテキスト(data.txt)から1行ずつデータを取り込んでいき、
1行のデータが300文字以上の時はその行数と共にエラーメッセージを表示し終了。
また行頭に#が付いた行をコメント行として読み飛ばす。
[3] 言語: C
[4] 期限:6.26
よろしくおねがいします
228:デフォルトの名無しさん
07/06/26 01:57:42
>>227
data.txt の中身の例を詳しく
229:デフォルトの名無しさん
07/06/26 02:07:37
>>226
ありがとうございました!
230:デフォルトの名無しさん
07/06/26 02:12:06
>>227
#include<stdio.h>
#include<string.h>
#define N 300
int main()
{
FILE *fp;
int i = 0;
char data[N+1];
fp = fopen("data.txt","r");
while(fgets(data,N+1,fp) != NULL)
{
i++;
if(strlen(data) > N)
{
printf("行数:%d エラーメッセージ\n",i);
break;
}
if(data[0] != '#')
{
;
}
}
return 0;
}
てきとー。質問がてきとーなんだから回答もてきとーでおkだよな?
231:デフォルトの名無しさん
07/06/26 02:14:28
if(strlen(data) > N)
↓
if(strlen(data) >= N)
300より上を300以上に変えたときにミスった
232:デフォルトの名無しさん
07/06/26 03:55:32
[1] プログラミング実習
[2] 問題文(含コード&リンク):
要素数nの整数型配列からk個の要素を選んで足し合わせ
bを超えない範囲での最大数を求めるプログラムを書け
ただしnは100程度、kは3程度、配列とbの値は適当に設定すること
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: BCC5.5
[3.3] 言語: C
[4] 期限: 7月20日
[5] その他の制限:特にありません
よろしくお願いします
233:232
07/06/26 03:57:41
すいません
>>232のkは95程度の間違いです
234:デフォルトの名無しさん
07/06/26 04:07:13
>>232
> 最大数
何の最大数?合計?範囲を超えないbの要素の個数k?
235:232
07/06/26 05:35:30
>>234
足し合わせた合計です。
kは自分で適当に設定してください。
236:デフォルトの名無しさん
07/06/26 08:07:25
>>232問題文はちゃんと書きましょう。
>要素数nの整数型配列からk個の要素を選んで足し合わせ
>bを超えない範囲での最大数を求めるプログラムを書け
>ただしnは100程度、kは3程度、配列とbの値は適当に設定すること
要素数を100として、その配列の中身は何?
どうやって設定するの?rand()で良いの?
>kは95程度の間違いです
>kは自分で適当に設定してください。
せめてお前が設定しろよ
237:デフォルトの名無しさん
07/06/26 09:59:09
[1] 授業単元: プログラミング
[2] 問題文:
テキストファイルを読み込んで、"{"の数と"}"の数を数え、テキストファイルに出力するプログラムを作成しなさい.
課題実行においては以下の点に注意すること.
プログラム名は「chkpair」とすること.
ここで指定するデータ(ファイル),は存在するものとして仮定してよい.
読み込むテキストファイル名はプログラムを実行後にキーボードから指定する.
ファイル名の長さは最大で(マクロ定数)FILENAME_MAX文字までとしてよい.
出力するテキストファイルはchkpair.outとする.すでにchkpair.outがあり書き込み権限がある場合は、出力を上書きすること.
入力ファイルによって結果が異なるので、必ずしも実行例と同じ出力になる必要はない.
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
238:デフォルトの名無しさん
07/06/26 10:01:19
[1] 授業単元: プログラミング
[2] 問題文:
商品の在庫を管理するプログラムを作成する.在庫を扱う場合,在庫の平均単価(実数),
在庫数(整数)を管理する必要がある.本問題で作成するプログラムは,4回商品を入荷した時の平均在
庫単価と在庫総数を出力するものとする.商品入荷の時は,商品の単価と入荷数を順に入力していくものとする.このとき,平均単価と在庫数をひとつの構造体で管理するものとする.
変数を管理する構造体の名前をstock_t(この名前はtypedefで定義した名前を指す)とし,構造体のメンバを,
平均単価はdouble型とし,名前をpriceとする
在庫数はint型とし,名前をquantityとする
とする.
課題実行においては以下の点に注意すること.
プログラム名は「stock」とすること.
プログラム実行開始直後の在庫数は0とする
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
./stock
100.0 10
200.0 10
300.0 10
555.0 30
377.5 60/*←出力*/
239:デフォルトの名無しさん
07/06/26 10:21:46
>>237
#include <stdio.h>
#define FILENAME_MAX 128 // 環境によってはマズイ
int main(void)
{
FILE *fpin, *fpout = fopen("chkpair.out", "w");
int ch, count1 = 0, count2 = 0;
char filename[FILENAME_MAX], buf[128];
printf("filename for input : ");
scanf("%s", filename);
if((fpin = fopen(filename, "r")) == NULL)
perror(filename), exit(1);
while((ch = fgetc(fpin)) != EOF){
if(ch == '{') count1++;
else if(ch == '}') count2++;
}
sprintf(buf, "{ : %d\n} : %d\n", count1, count2);
fputs(buf, fpout);
fclose(fpin);
fclose(fpout);
return 0;
}
240:デフォルトの名無しさん
07/06/26 10:30:48
>>238
#include <stdio.h>
typedef struct tag_stock_t{
double price;
int quantity;
}stock_t;
int main(void)
{
stock_t x[4];
double price_sum = 0, price_ave;
int i, num = 0;
for(i = 0; i < 4; i++)
scanf("%lf%d", &x[i].price, &x[i].quantity);
for(i = 0; i < 4; i++){
price_sum += x[i].price*x[i].quantity;
num += x[i].quantity;
}
price_ave = price_sum/num;
printf("%.1f %d\n", price_ave, num);
return 0;
}
241:227
07/06/26 10:43:16
data.txtはこんなかんじです。
#正の数
133
535
846
167
335
#負の数
-647
-673
-384
-384
-373
242:デフォルトの名無しさん
07/06/26 10:47:29
>>239
> #define FILENAME_MAX 128 // 環境によってはマズイ
うむ、かなりまずい。stdio.h にマクロ定義されていると思われるんで
敢えてそこで定義しない方が良いかも
243:デフォルトの名無しさん
07/06/26 10:56:24
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
3d^2x/dt^2+dx/dt+2x=4
x(t=0)=0
dx/dt(t=0)=0
上記の微分方程式をルンゲークッタ法を用いて解け
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: C言語
[4] 期限: ([2007年6月25日まで
[5] その他の制限: なし
お願いします
244:デフォルトの名無しさん
07/06/26 11:16:50
[1] 授業単元:プログラミング1
[2] 問題文(含コード&リンク):
年と月を入力すると、カレンダーを表示するプログラムの作成。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.3
[3.3] 言語: C
[4] 期限: 6月27日
[5] その他の制限:入門者らしいつくりでお願いします。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
此所まではやってみたのですが、実行したときに" 日 月 火 水 木 金 土"
の部分しか表示されないので困っています。
245:デフォルトの名無しさん
07/06/26 11:41:21
>>244
曜日を得るのは標準関数を使えばいいのに……
それはさておき、
・monthは1〜12なのに[0〜11]の配列をそのまま参照している。
・「土」の後に改行していない。
のは問題かな。
後はもっと細かく見ないと判らん。
246:デフォルトの名無しさん
07/06/26 11:49:09
if(month==2&&(year % 4 == 0 && year % 100 != 0 || year % 400 == 0))
return(day[2]+1);
これねぇ、本当は良くない。できればうるう年なら day[2] = 29; そうでないなら
day[2]=28; にした方が良い。ここでは問題ないけど、何回か呼び出しをした場合
これだとうるう年に該当するたびに2月の日数が1ずつ加算されていくから。
247:デフォルトの名無しさん
07/06/26 11:51:01
何を言ってるんだ
248:デフォルトの名無しさん
07/06/26 11:51:24
>>246
もしもーし、脳味噌入ってますか〜?
249:デフォルトの名無しさん
07/06/26 11:59:00
>>247
>>248
理解力のない馬鹿は視ねよw
250:デフォルトの名無しさん
07/06/26 12:00:26
>>245,246返信ありがとうございます。
指摘頂いた部分やその他修正したらカレンダーらしいものは表示が出るようになりました。
あとは1月2月3月らへんが多少ずれてるのですがこれはどう直したら良いでしょうか。
251:デフォルトの名無しさん
07/06/26 12:01:34
>249
頭が腐ってるのか目が腐ってるのか知らんが、もう一度よく見直せ。
252:デフォルトの名無しさん
07/06/26 12:03:51
>>249
マジで言ってるなら医者に行くか、取り敢えず寝てきたら? 100年くらい。
>>250
エスパーじゃないからどうずれるのか判らんし、そこがデバッグの楽しみだろう。
つーか、曜日の計算と改行する条件判断はあってる?
youbiが1のときは何曜日のつもり?
253:デフォルトの名無しさん
07/06/26 12:05:23
やった!おまいら釣られてやんのっ(プ
コードを見りゃ加算されるわけねーってバレバレじゃんw
254:デフォルトの名無しさん
07/06/26 12:08:09
いや、顔真っ赤にして後釣り宣言しなくていいから。
255:デフォルトの名無しさん
07/06/26 12:12:20
プププッ、ネタでボケて書いたことをマジに受けて茶化し、煽りレス入れている
こんな時間にいる引きこもりニーツがきめぇ〜〜んだよ(プ
俺?俺は大学の研究室からやw
256:デフォルトの名無しさん
07/06/26 12:14:46
どこの脳内研究室なんだか。
257:デフォルトの名無しさん
07/06/26 12:15:18
都内の某ランクSの大学ですが何か?
258:デフォルトの名無しさん
07/06/26 12:16:38
それじゃ、次のボケをお願いします。もうちょっと判り難いのがいいかな。
259:デフォルトの名無しさん
07/06/26 12:19:03
>257
本当にSランクなら、そもそも釣りなんて無駄なことはしない
260:デフォルトの名無しさん
07/06/26 12:20:19
>>244 を実行してみたけど、1日の表示がおかしい、曜日がきちっと算出されていない。
もうこんなんじゃ、月(付き)合ってらんね〜
261:デフォルトの名無しさん
07/06/26 12:21:39
>>259
Sランク級の釣りにビビッてんだろぉ?Sランク級の釣りにお前がチビッているのがわかるぜ?
262:デフォルトの名無しさん
07/06/26 12:25:59
ランクSAITEIのランクSだなw
263:デフォルトの名無しさん
07/06/26 12:28:03
ちっちっち、違うぜ?Sugoi、Super、SutekiのSだぜ?お前らとは質が違うよ、質が。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4768日前に更新/213 KB
担当:undef