C/C++の宿題を片付けます 93代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/07/15(日) 22:31:51【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 92代目
http://pc11.2ch.net/test/read.cgi/tech/1183511364/
0002デフォルトの名無しさん
2007/07/15(日) 23:25:54[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4627.txt
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc 3.4 )
[3.3] 言語: (C)
[4] 期限: (7月18日まで)
[5] その他の制限: (基本はすべて習いました)
よろしくお願いします
0003デフォルトの名無しさん
2007/07/16(月) 00:05:11[2] 問題文: ニュートン法により、√2の近似値を求めよ。
[3] 環境
[3.1] OS: (Windows Vista business)
[3.2] コンパイラ名とバージョン: (gcc 2.95.2)
[3.3] 言語: (C言語)
[4] 期限: (7月19日まで][5] その他の制限:プログラミングについて全く無知です。
授業であまり文法の説明とかもなくいきなり課題を提示されたのですが、全くわかりません。
後学の為にも、どなたか作った後教えて下さい。お願い致します。
0004デフォルトの名無しさん
2007/07/16(月) 00:08:17>>2
のマージソートは再帰するからいいんじゃないの?
0005デフォルトの名無しさん
2007/07/16(月) 00:23:230006デフォルトの名無しさん
2007/07/16(月) 00:44:09#include <stdio.h>
double sqr(double c);
int main(){
double c;
c = sqr(2);
printf("√2は%fです。\n", c);
return 0;
}
double sqr(double c){
double xn;
int i,n;
n = 10;
xn = 0;
do {
xn += 1;
} while (xn * xn < c);
for (i = 0;i < n;i++) {
xn = (xn + c / xn)/2;
}
return xn;
}
これでいいよ
0007デフォルトの名無しさん
2007/07/16(月) 01:02:37ニュートン法になってないだろ
0008デフォルトの名無しさん
2007/07/16(月) 01:06:00ありがとうございます。
とても初歩的な質問なんですが、
2行目のdouble sqr(double c);にはどんな意味があるんですか?
doubleが倍精度って…言葉だけは知ってるのですが。
0009デフォルトの名無しさん
2007/07/16(月) 01:08:470010デフォルトの名無しさん
2007/07/16(月) 01:10:17それでわからないことがあったらスレで聞く。
0012デフォルトの名無しさん
2007/07/16(月) 01:12:36そうなんですか?
ニュートン法で√2を求める場合、
f(x)=x^2-2=0として解けばいいんですよね。
どうプログラムすればいいんですかね?
0013デフォルトの名無しさん
2007/07/16(月) 01:17:4600146
2007/07/16(月) 01:29:38俺工房だから間違えてるのかもしれない
0015デフォルトの名無しさん
2007/07/16(月) 01:43:43[2] 問題文:
�@標準入力から入力される文字列(英小文字のみ)をchar型の配列に格納し、各アルファベットの数を表示するプログラムを作れ。
ただし、0個のアルファベットについては表示させないものとする。
例:this is very nice book(入力後EOF)
b=1
c=1
e=2
h=1
(後略)
ヒント:要素が26個の配列を用意し、それぞれのアルファベットをカウントする。
文字コードを利用すれば、"a"-"a"=0であり、"b"-"a"=1である。
�A数字によって構成される文字列をchar型配列へ読み込み、それをint型のデータに変換する関数toatoi()を作れ。
ただし、文字列中に数字以外の文字がある場合は戻り値を-1として返すように設定せよ。
さらに、toatoi()を利用して標準入力から与える文字列を数値とし、printfの%dを用いて表示するプログラムを作成せよ。
�B最大10文字50行の文字列を読み込み、縦に変換して出力するプログラムを作成せよ。
例:
0001(改行)1100(改行)2222 と入力
102(改行)009(改行)012(改行)012 と出力
配列の項目なので、配列を使用した解法を伝授お願いします
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:どちらでも可
[4] 期限:7/19
[5] その他の制限:無し
前スレ589の課題だったのですが、締め切りが延びたので再度質問しました
どうかお願いしますorz
0016デフォルトの名無しさん
2007/07/16(月) 02:00:27#include <stdlib.h>
#include <string.h>
void arraycopy (int n, int *dst, int *src) {
memcpy (dst, src, sizeof(int)*n);
}
void mergesort (int n, int *a) {
int *b = calloc (n, sizeof(int)); /* temporal space */
int s = 1; /* segment size */
arraycopy (n, b, a);
while (s < n) {
int f; /* start of segments pair */
for (f = 0; f < n; f += 2*s) {
/* merge two segments b[f : f+s], b[f+s : f+2s] into a[f : f+2s] */
int i, i1, i2;
i = i1 = i2 = 0;
while (i1 != s || i2 != s) {
if (i2 == s || i1 != s && b[f+i1] <= b[f+s+i2]) {
a[f+i++] = b[f+i1++];
} else {
a[f+i++] = b[f+s+i2++];
}
}
}
arraycopy (n, b, a); /* copy a to b */
s *= 2;
}
free (b);
}
0017デフォルトの名無しさん
2007/07/16(月) 02:07:21�@
これでいいかな?
#include<stdio.h>
int main(void)
{
char alpha[26] = {0};
char c;
int i;
printf(" Input: ");
do{
c = getchar();
if( 'a'<=c && c<='z' ){
alpha[c-'a']++;
}
}while( c!=EOF && c!='\n' );
for(i=0;i<26;i++){
if( alpha[i] ){
printf("%c = %d\n",i+'a',alpha[i]);
}
}
return 0;
}
0018デフォルトの名無しさん
2007/07/16(月) 02:09:58�@
間違えていた
#include<stdio.h>
int main(void)
{
int alpha[26] = {0};
char c;
int i;
printf(" Input: ");
do{
c = getchar();
if( 'a'<=c && c<='z' ){
alpha[c-'a']++;
}
}while( c!=EOF && c!='\n' );
for(i=0;i<26;i++){
if( alpha[i] ){
printf("%c = %d\n",i+'a',alpha[i]);
}
}
return 0;
}
0019デフォルトの名無しさん
2007/07/16(月) 02:23:11�A
#include<stdio.h>
int toatoi(char *str)
{
int num = 0, sign = 1;
if( *str=='+' ){
str++;
}else if( *str=='-' ){
str++;
sign = -1;
}
do{
if( *str<'0' || '9'<*str )
return -1;
num *= 10; num += *str++ - '0';
}while( *str!='\0' && *str!='\n' );
return sign * num;
}
int main(void)
{
char line[100];
printf(" Input: ");
fgets( line, sizeof(line), stdin);
printf(" 数値: %d\n", toatoi(line));
return 0;
}
0020デフォルトの名無しさん
2007/07/16(月) 06:23:03x*x-c=0 限定なのは良いとしても,収束判定がまずい.
xn の初期値をそうとるなら sqr(100)とかは無駄に計算するし,sqr(1e-6)とかは精度が足りない.
double sqr(double c){
double x,xn=0,e = 1e-10;/* */
do {
xn += 1.0;
} while (xn * xn < c);
x = xn + 1.0;
while( fabs(xn - x) > e ) {
x = xn;
xn = (x + c / x ) / 2.0;
}
return xn;
}
0021デフォルトの名無しさん
2007/07/16(月) 08:54:14[2] 問題文(含コード&リンク):
セマフォを使い親子プロセス間でのメッセージ通信を実現させよ。
親プロセスでメッセージを入力すると子プロセスで表示され、
子プロセスでメッセージを入力すると親プロセスで表示されるものとする。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 今日
[5] その他:前スレで助けてもらい、それにいろいろ付け加えたらコンパイルエラーはなくなり、
以下のようなプログラムになりました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4629.c
しかし、これだと親プロセス内だけでの通信となってしまいます。
どなたかお力を貸してください!
よろしくお願いします
0022デフォルトの名無しさん
2007/07/16(月) 09:05:21[1] 授業単元: C言語 基礎&応用
[2] 問題文(含コード&リンク): 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4624.txt
ソース:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4625.txt
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:Visual studio.2005
[3.3] 言語:C言語
[4] 期限:問題1は2007/07/17/12:00まで。問題2.3は2007/07/19の12:00まで。
[5] その他の制限:特になし
前スレがすぐ1000になってしまったので、もう一度書きこまさせていただきます。
0023 ◆uaa3kJNAQA
2007/07/16(月) 10:01:22[2] 問題文
入力として英数文字(アルファベット、句読点等)の
文字列を受け取り、(入力終了はEOF)
その文字列の中の英大文字を英小文字に変換した文字列を出力
する。文字セットはASCII方式を用いるものとし、
<ctype.h>の関数は使用しない。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 18日の23:00まで
よろしくおねがいます。
0024デフォルトの名無しさん
2007/07/16(月) 10:55:39int main(void){
int i;
char str[31];
printf("文字列入力\n");
fgets(str, 30, stdin);
printf("入力文字列は %s です\n", str);
for(i=0; i<31; i++){
if(str[i]>'A' && str[i]<'Z'){
str[i] += 32;
}
}
printf("変換文字列は %s です\n", str);
return 0;
}
0025デフォルトの名無しさん
2007/07/16(月) 11:12:42課題と関係なしに趣味で組んでるが、駄目だよなw
つか、仕様だけ決めて課題出してくれればいいのに。
関数名とかロジックとか中途半端に決められてると萎える。
あと、このくらいのプログラムの規模になったらモジュール化しないと辛いんじゃね?
↓問題1のCPUのランダム対戦まで出来てる
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4631.zip
0026デフォルトの名無しさん
2007/07/16(月) 12:41:25for(i=0; i<31; i++){
if(str[i]>='A' && str[i]<='Z'){
str[i] += 'a'-'A';
}
}
0027デフォルトの名無しさん
2007/07/16(月) 15:34:01[2] 問題文(含コード&リンク):”rand1000.dat”というデータの個数nとその個数分の整数データが保存されているファイルがある
(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4151.txt)
次の手順で動作するプログラムmergesort.cを作成し,その動作を確認せよ.
まずファイルから保存されているデータ数nを読み込み,次にその数だけデータを読み込み格納する.
次に,保存されたデータについてマージソートを実行する関数mergesort()を呼び出し,データを整列する.
最後に,整列されたデータをディスプレイ上に表示しプログラムを終了する.
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語: C
[4] 期限: 7月22日
[5] その他の制限:結果がソートされていることをそれぞれのデータについて毎回確認すること. プログラム中で保存するデータは「ポインタを用いた線形リスト」で実現せよ.
解いてください。お願いします。
0028デフォルトの名無しさん
2007/07/16(月) 15:39:45[2] 問題文(含コード&リンク):
プログラム中でm×nの2次元の動的メモリ確保を行い、
その確保された変数の[i][j]の要素に、数値(i×n+j)を代入し、
結果を表示するプログラムを作成せよ。
(実行例)
mの値を入力せよ:2
nの値を入力せよ:3
a[0][0]=0
a[0][1]=1
a[0][2]=2
a[1][0]=3
a[1][1]=4
a[1][2]=5
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限: 7/19(木)
[5] その他の制限: なし
0029デフォルトの名無しさん
2007/07/16(月) 15:48:38[2] 問題文(含コード&リンク):
n個の文字列を読み込み、読み込んだ文字列を縦に読む
プログラムを作成せよ。
(空白、スペースを含む場合は空白、スペースを飛ばして表示)
但し、”ポインタのポインタ”をどこかに用いてプログラムすること。
「プログラムの動作」
何個の文字列を読み込みますか?:3
1番目の文字列:World
2番目の文字列:Cup
3番目の文字列:Soccer
1列目:WCS
2列目:ouo
3列目:rpc
4列目:lc
5列目:de
6列目:r
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限: 7/17までにお願いします。
期限ぎりぎりですがよろしくお願いします。
0030デフォルトの名無しさん
2007/07/16(月) 15:56:31http://oshiete1.goo.ne.jp/qa3022605.html
0031デフォルトの名無しさん
2007/07/16(月) 16:05:03[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4632.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年07月17日08:20まで
[5] その他の制限: 無し
よろしくお願いします。
0032デフォルトの名無しさん
2007/07/16(月) 16:21:27そんなんで分かる訳無いだろ
0033デフォルトの名無しさん
2007/07/16(月) 16:24:100034デフォルトの名無しさん
2007/07/16(月) 16:26:17こんな幹事会。ちなみに中身はtgz。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4633.zip
0035デフォルトの名無しさん
2007/07/16(月) 16:26:54すいません、2次元配列さっぱり分からないもので、参考のページで
論議されている内容もさっぱり分かりません。
0036デフォルトの名無しさん
2007/07/16(月) 16:33:04前スレ750さん、ありがとうございました
ただ、使い方が良くわからないのでできればご指導願います
0037デフォルトの名無しさん
2007/07/16(月) 16:39:19queue.h の中の
static int qfirst = 0, qlast = 0, qcount = 0;
の行は queue.c に移動したほうがいいんじゃね?
0038デフォルトの名無しさん
2007/07/16(月) 16:42:35そういやそうだね。あとmakefileも微妙だったりゴミが混じってたりするけど気にしないでくれ。
0039デフォルトの名無しさん
2007/07/16(月) 16:47:16単位やらなくてもいいんじゃない?と俺は思うよ。
0040デフォルトの名無しさん
2007/07/16(月) 16:52:34#include <stdio.h>
#include <stdlib.h>
int main(void){
int m,n,i,j,**a;
char buf[256];
printf("mの値を入力せよ:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&m);
printf("nの値を入力せよ:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&n);
a=(int**)calloc(m,sizeof(int*));
if(a==NULL){printf("メモリ確保失敗。\n");exit(1);}
for(i=0;i<m;i++){
a[i]=(int*)calloc(n,sizeof(int));
if(a[i]==NULL){printf("メモリ確保失敗。\n");exit(1);}
}
for(i=0;i<m;i++)for(j=0;j<n;j++){
a[i][j]=i*n+j;
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
for(i=0;i<m;i++)free(a[i]);
free(a);
return 0;
}
0041デフォルトの名無しさん
2007/07/16(月) 17:04:25レベルが低かろうが高かろうがどうでもいいと思うぜ
0042デフォルトの名無しさん
2007/07/16(月) 17:14:32[2] 問題文(含コード&リンク):
繰り返し複素数(実部,虚部はそれぞれ整数型とする)を入力し,ユーザが最後に1
(1+i*0)を入れたら今まで入力した複素数の実部と虚部のペアをすべて出力し,さらに
入力した複素数すべての積を出力するプログラムを作成せよ.
なお,ユーザが入力する回数に制限はないものとする.
stdio.hの他にstdlib.hをインクルードしておく必要がある.
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 最新版
[3.3] 言語: C
[4] 期限:2007年7月21日
[5] その他:参考プログラム(http://www-it.sci.waseda.ac.jp/ITB1/class1/list.c)を使ってください
0043デフォルトの名無しさん
2007/07/16(月) 17:15:08ありがとうございます。
提出期限と同じ木曜日に出題されて今日まで連休中考えていたけど
配列はどうしても苦手で参考サイトを回ってみたけど、さっぱりでした。
>>39
それでも単位は欲しいのが大学生です。
004442
2007/07/16(月) 17:15:52もう一度リンクしておきます
0045デフォルトの名無しさん
2007/07/16(月) 17:32:140046デフォルトの名無しさん
2007/07/16(月) 17:33:19ソース見りゃ分かるか。
0047デフォルトの名無しさん
2007/07/16(月) 17:39:27ソース自体は書いたんだが、ポインタのポインタを有効に使う方法が思いつかないなぁ・・・。
004847
2007/07/16(月) 17:50:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4634.txt
とりあえずupしといたんで、ポインタのポインタ使用版に改良できる人いたらお願い。
0049デフォルトの名無しさん
2007/07/16(月) 17:56:330050デフォルトの名無しさん
2007/07/16(月) 18:06:10宿題丸投げする奴への餞別のつもりだろ。
0051デフォルトの名無しさん
2007/07/16(月) 18:12:33【質問テンプレ】
[1] アプリ開発
[2] OS内にあるサウンド出力プログラム作成
[3.1] Windows
[3.2]eclipse バージョンは分かりません
[3.3] どちらでもイイらしいです
[4] 7/18(水)
[5] スタイルシートを自ら作りSQLで模擬エクセル作成、バックトラック法、動的計算法はやりました
0052デフォルトの名無しさん
2007/07/16(月) 18:16:04接続部位のデバイス設定をやりたいのか
WAVとかmp3とかの出力ファイルを作りたいのか
メディアプレイヤーとかのアプリを作りたいのかはっきりしろw
意味が中途半端で分からんw
0053デフォルトの名無しさん
2007/07/16(月) 18:17:54ちょっとしか触った事ないけどJava用IDEってイメージだった
0054デフォルトの名無しさん
2007/07/16(月) 18:18:36005536
2007/07/16(月) 18:18:48750 :デフォルトの名無しさん [sage] :2007/07/12(木) 13:00:15
>>748 ショボイですが
暗号
#include <stdio.h>
#include <ctype.h>
static char alpha[53] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
static char table[53] = "zNFeYMljvJXKicfrGyDEOwQpHkCLbxhqRAPsnouVTaWIZdUmBStg";
int getindex(char *str, int ch){
int i;
for(i = 0; i < 52 && str[i] != ch; i++) ;
return i;
}
int main(int argc, char *argv[]){
FILE *fpin, *fpout;
int ch, op;
if(argc < 3 || (fpin = fopen(argv[1], "r")) == NULL || (fpout = fopen(argv[2], "w")) == NULL) exit(1);
while((ch = fgetc(fpin)) != EOF)
if(isalpha(ch)) fputc(table[getindex(alpha, ch)], fpout);
else fputc(ch, fpout);
fclose(fpin), fclose(fpout);
return 0;
}
0056デフォルトの名無しさん
2007/07/16(月) 18:18:59ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4635.txt
2重ポインタ版。
縦に表示なんて面倒な指定さえなければもっとメモリ節約できるけど。
0058デフォルトの名無しさん
2007/07/16(月) 18:23:31「main」関数に「引数」があるわけだな
ぐぐってみろ
ぐぐってまったく意味不明だったら答えてやる
0059デフォルトの名無しさん
2007/07/16(月) 18:24:45006056
2007/07/16(月) 18:25:29putchar(str[j][i]);
の行を
if(str[j][i]!='\0')putchar(str[j][i]);
にしといて。
0061デフォルトの名無しさん
2007/07/16(月) 18:25:54問題文もくれなきゃ何がしたいのかわからん。
ソース見る限り単一換字暗号?
0062デフォルトの名無しさん
2007/07/16(月) 18:27:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4636.c
0063デフォルトの名無しさん
2007/07/16(月) 18:33:17多分これじゃダメなんだろうな
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
char cmd[10+FILENAME_MAX];
if(argc==2){
sprintf(cmd, "start %s", argv[1]);
system(cmd);
}
return 0;
}
0064デフォルトの名無しさん
2007/07/16(月) 18:37:24任意の英文について、換字暗号表を用いて暗号化するプログラムと、
暗号化した文を同様の表を用いて解読するプログラムを作成せよ。
入力する文章と換字暗号表の形式は自由にしてよいものとする。(別に用意したテキストファイルから読み込む形のほうが好ましい)
例
abcd… という英文があったとき、換字暗号表がa→t b→y c→e d→k…だったなら、
tyek…と出力されるプログラム、またその逆操作するプログラム
という意味です。
という文章でお願いしたところ、>>55のような回答をいただきましたが、使い方がわかりませんでした
よろしくお願いします
006551
2007/07/16(月) 18:37:46>>52さんの言われている中では「接続部位のデバイス設定」になると思います
>>63すいません OS無しで作る方法を・・・・・
0066デフォルトの名無しさん
2007/07/16(月) 18:39:580067デフォルトの名無しさん
2007/07/16(月) 18:40:10UNIX板行った方がいいと思うよ あっちは組み込み系だから・・・・・・
0068デフォルトの名無しさん
2007/07/16(月) 18:41:400069デフォルトの名無しさん
2007/07/16(月) 18:41:54スベース文字のスキップがない
0070デフォルトの名無しさん
2007/07/16(月) 18:42:240071デフォルトの名無しさん
2007/07/16(月) 18:46:30housurejiak2245589761045@hotmell〜
0072デフォルトの名無しさん
2007/07/16(月) 18:47:120073デフォルトの名無しさん
2007/07/16(月) 18:52:43申し訳無いが、俺らはソフト屋だ。そっち側はまったく分からん
助けにならなくて申し訳ない
0074デフォルトの名無しさん
2007/07/16(月) 19:00:12底辺マは出力結果にしか興味を持たない だからバグがでる
0075デフォルトの名無しさん
2007/07/16(月) 19:02:39サウンドデバイスの IO の定義が無いとどうにもならない
最低限でも
1.音量設定の方法
2.周波数設定の方法
3.サウンドバッファへの書き込み&失敗検出の方法
くらいは必要だと思うよ
0077デフォルトの名無しさん
2007/07/16(月) 19:06:56OS無しって難しすぎだろ
PlaySound("c:\\windows\\media\\chimes.wav", NULL, SND_SYNC | SND_FILENAME);
0078デフォルトの名無しさん
2007/07/16(月) 19:08:20./a.out 変換元ファイル 変換後ファイル名
0079デフォルトの名無しさん
2007/07/16(月) 19:10:28出てきたバイナリのコマンドラインに対象テキストファイル名と出力先ファイル名を追記。
例えばコンパイルして出てきたプログラムがa.exe、暗号化するテキストがbefore.txt、
出力先をafter.txtとするなら
a.exe before.txt after.txt
でafter.txtに暗号化済みのファイルが出力される。
逆操作は不可。そういう意味では>>55は要件を満たしていないね。
こんなとこに丸投げする人にいう事じゃないと思うけど
こんくらいのソース読めないでこれからやっていけると思ってる?
008051
2007/07/16(月) 19:12:04やっぱり 自分でやってみます
自分で考えて解決しなきゃ成長しませんもんね・・・・・
色々ありがとうございました。
>>71さん、心使いは嬉しいのですが学校で研究を続けるつもりなので・・・・
それと学校名は出せません。ごめんなさい
0081デフォルトの名無しさん
2007/07/16(月) 19:15:45[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4638.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: 出来る限り単純な方法で回答して下さると助かります。
よろしくお願いします。
0082デフォルトの名無しさん
2007/07/16(月) 19:16:44こんなんで分かればエスパーだろってぐらい。
で、分からんから後まわしにして課題出てくると四苦八苦するんだよな。
0084デフォルトの名無しさん
2007/07/16(月) 19:18:28前スレに同じのがあったから見てくるといいと思うよ。
0085デフォルトの名無しさん
2007/07/16(月) 19:20:270086デフォルトの名無しさん
2007/07/16(月) 19:27:12だれかお願いします。
>>47,48ががんばってくれたけど「ポインタのポインタ」使用版でないと
駄目な課題なので分かる方お願いします。
>>47,48
ありがとうございます。
008756=57=60
2007/07/16(月) 19:29:07008851
2007/07/16(月) 19:32:53自分も投げ出してたから人のこと言えないけど
時間かかってでも自分で考えて解決した方がいいと思う
0089デフォルトの名無しさん
2007/07/16(月) 19:34:51秀同って事でスレ終了 乙です
0090デフォルトの名無しさん
2007/07/16(月) 19:45:35その通りやっても出来ない・・・なぜでしょうか
0091デフォルトの名無しさん
2007/07/16(月) 19:57:19次の一連のコマンドを打ち込んだ結果を晒してみて
echo hello>a.txt
./a.out a.txt b.txt
echo $?
cat b.txt
009291
2007/07/16(月) 19:59:42ls -l a.out a.txt b.txt
0093デフォルトの名無しさん
2007/07/16(月) 20:00:57C:\Documents and Settings\******>./a.out a.txt b.txt
'.' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
C:\Documents and Settings\******>echo $?
$?
C:\Documents and Settings\******>cat b.txt
cat: b.txt: No such file or directory
こうなりました
0094デフォルトの名無しさん
2007/07/16(月) 20:02:44ls: a.out: No such file or directory
ls: b.txt: No such file or directory
-rw-rw-rw- 1 user group 7 Jul 16 19:59 a.txt
追加の分はこうなりました
コマンドプロンプトで実行しました
009591
2007/07/16(月) 20:05:31linux じゃなかったのかよ!
echo hello>a.txt
.\a.exe a.txt b.txt
type b.txt
dir
0096デフォルトの名無しさん
2007/07/16(月) 20:08:41どうみてもコマンドプロンプトかcygwinとかだね。
0097デフォルトの名無しさん
2007/07/16(月) 20:21:17皆さんの回答を参考にして作ってみた。これでどうかな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4639.txt
0098デフォルトの名無しさん
2007/07/16(月) 20:31:46if(buf[strlen(buf)-1] == '\n')
buf[strlen(buf)-1] = 0;
↑ifで判定する必要ない。
0099デフォルトの名無しさん
2007/07/16(月) 20:41:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4641.txt
参考コードは一部使用していない
010099
2007/07/16(月) 20:52:38http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4642.txt
一部訂正
0101デフォルトの名無しさん
2007/07/16(月) 21:00:34コンパイルしていない
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _{ int r, i; } img;
static img *ary=NULL;
static int arysize;
static int arylen;
void putimg(img img){
if(arysize<=arylen){
arysize+=10;
ary=realloc(ary, sizeof(img)*arysize);
}
ary[arylen++]=img;
}
int main(void){
img m;
int i;
for(;;){
scanf("%d,%d", &m.r, &m.i);
if(m.r==1&&m.i==0) break;
putimg(m);
}
for(m.r=1, m.i=i=0;i<arylen;i++){
printf("%d+%d*i\n", ary[i].r, ary[i],i);
m.r=m.r*ary[i].r-m.i*ary[i].i;
m.i=m.r*ary[i].i+m.i*ary[i].r;
}
printf("%d+%di\n", m.r, m.i);
}
0102デフォルトの名無しさん
2007/07/16(月) 21:04:13[2] 問題文(含コード&リンク):
• 区間[ a, b ]において連続なる関数f ( x) について,定積分の計算を行う
• 適用する公式は,シンプソンの公式
S=h/3{y(0)+y(2n)+4{y(1)+y(2)+....+y(2n-1)}+y(2)+y(4)+.....+y(2n-2)}
• f ( x)=1/(1+x2)
• a=0, b=10, e=0.0000001の場合の積分値とnの値を表示する
• 各変数(nを除く)の型はdoubleとする
[3] 環境
[3.1] OS:windows xp
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語:C++
[4] 期限:次の木曜まで
[5] その他の制限: これといって無し
リンク先に手順の例とかがあります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4644.txt
とりあえず自分でやってみたけど無理でした。この雑魚にどなたかご教授をorz
あと最後らへんのprintf文の、&nの&は無かったことに(´;ω;`)
0103デフォルトの名無しさん
2007/07/16(月) 21:05:06ぜんぜん良いと思います。
ありがとうございます。
ポインタのポインタを使っていてちゃんと動作するものなら問題ないので。
0104デフォルトの名無しさん
2007/07/16(月) 21:09:42[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4645.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin
[3.3] 言語: C
[4] 期限: 7/17午前中
[5] その他の制限: なし
0105デフォルトの名無しさん
2007/07/16(月) 21:19:06ベースは>>56さんのなので、よろ
0106デフォルトの名無しさん
2007/07/16(月) 21:34:45#include <stdio.h>
double f(double x){
return 1.0/(1.0+x*x);
}
int main(void){
double a=0.0, b=10.0, h, sum;
long n=10000000, i;
h=(b-a)/n;
sum=f(a)+f(b);
for(i=1;i<n;i+=2) sum+=2*f(a+h*i);
for(i=2;i<n;i+=2) sum+=4*f(a+h*i);
sum*=h/3;
printf("Answer: %f\n", sum);
return 0;
}
0107デフォルトの名無しさん
2007/07/16(月) 22:14:38それと、問題文に抜けてしまったんですが
• s2は最新の計算結果,s1は一つ前の計算結果
• |s2-s1|<eとなるまで,nを1増やしながら,以下の
処理を繰り返す
- s1←s2
- s2を新しいnで計算する
というのはどうすれば出来るでしょうか?よろしければご教授お願いします
0108デフォルトの名無しさん
2007/07/16(月) 22:24:21#include <stdio.h>
int main(void){
int masu[9], a, i, j, turn = 0;
char *koma[3] = {" 0 ", " X ", " * "};
for(i = 0; i < 9; i++) masu[i] = 2;
while(1){
do{
printf("?"), scanf("%d", &a);
if(a >= 9) continue;
}while(masu[a] != 2);
masu[a] = turn%2;
turn++;
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++) printf("%s", koma[masu[i*3 + j]]);
printf("\n");
}
if((masu[(a + 3)%9] == masu[a] && masu[(a + 6)%9] == masu[a]) ||
(masu[3*a/3 + (a + 1)%3] == masu[a] && masu[3*a/3 + (a + 2)%3] == masu[a]) ||
(a%4 == 0 && masu[0] == masu[a] && masu[4] == masu[a]&& masu[8] == masu[a]) ||
(a%2 == 0 && a%8 != 0 && masu[(a + 2)%8 + 2] == masu[a] && masu[(a + 4)%8 + 2] == masu[a])){
printf("%s\n", koma[masu[a]]);
break;
}else if(turn >= 9){
printf("draw\n");
break;
}
}
return 0;
}
0109デフォルトの名無しさん
2007/07/16(月) 22:29:18あんたすごいよ。
0111デフォルトの名無しさん
2007/07/16(月) 22:33:10#include <stdio.h>
#include <math.h>
double f(double x){
return 1.0/(1.0+x*x);
}
int main(void){
double a=0.0, b=10.0, e=0.0000001, h, s1=0.0, s2;
long n, i;
int is_first=1;
for(n=2;;n+=2){ // アルゴリズムの関係で n は偶数
h=(b-a)/n;
s2=f(a)+f(b);
for(i=1;i<n;i+=2) s2+=2*f(a+h*i);
for(i=2;i<n;i+=2) s2+=4*f(a+h*i);
s2*=h/3;
if(!is_first && fabs(s2-s1)<e) break;
s1=s2;
is_first=0;
}
printf("n=%ld integral=%f\n", n, s2);
return 0;
}
0112デフォルトの名無しさん
2007/07/16(月) 22:46:56[2] 問題文(含コード&リンク):
CSVファイルからデータを読み込み、構造体に入れる。
CSVファイルの中身は、名前・住所・電話番号で、10件以内である。
構造体には、登録番号・名前・住所・電話番号を入れる。
登録番号は自分でつける。
最初に、登録番号と名前を表示し、入力された登録番号に応じて
名前住所電話番号を表示する。
[3] 環境
[3.1] OS:windows cygwin
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 今日中
[5] その他の制限:特になし
色々かんがえたのですがわかりませんでした。。
よろしくおねがいします。
0113デフォルトの名無しさん
2007/07/16(月) 22:48:53素早い回答ありがとうございました。おかげで次の宿題は出せそうです。ありがとうございました。
0114デフォルトの名無しさん
2007/07/16(月) 22:49:29ごめん間違った
for(i=1;i<n;i+=2) s2+=2*f(a+h*i);
for(i=2;i<n;i+=2) s2+=4*f(a+h*i);
↓
for(i=1;i<n;i+=2) s2+=4*f(a+h*i);
for(i=2;i<n;i+=2) s2+=2*f(a+h*i);
0115デフォルトの名無しさん
2007/07/16(月) 22:50:120116スモーク
2007/07/16(月) 22:50:23整数型の変数a・b と、文字型の変数e を用意し、
キーボードから2つの数値と1つの演算子を入力し
、その計算結果cを出力するプログラムを作成しなさい。
実行される計算は和・差・積・商・剰余の5種類とし、
演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で
表現されるものとする。
演算子にそれ以外の記号が入力された場合は
エラーメッセージを表示する。
また0による除算の回避も含めること。
まだcaseになれていないのだろうか・・・。
教えてください。
0117スモーク
2007/07/16(月) 22:51:41多分岐型(2)
次の説明は冬季オリンピックの開催年についての説明である。
キーボードから変数year に入力された年号について、
開催された年に第何回大会が開催されたか
画面に表示するプログラムを作成しなさい。
また開催年でない場合は、画面にその旨メッセージを出力すること。
0118デフォルトの名無しさん
2007/07/16(月) 22:55:35説明がneeeeeeeeeeeee
0120デフォルトの名無しさん
2007/07/16(月) 22:57:52[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
文字列を置換するプログラムをつくれ。
どのような形でもいいので、置き換える文字列と置き換えられる文字列を受け取り
置換した文章を出力する。なるべくポインタを使うこと。試しにちゃんと動くか確認すること。
(例)”僕" を ”私” に置換する
僕は20才だ。僕の好きなたべものはお酒だ。
-> 私は20才だ。私の好きなたべものはお酒だ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:(gcc 2.95.3)
[3.3] 言語: C
[4] 期限: (2007年07月31日23:59まで )
[5] その他の制限: 無し
0121デフォルトの名無しさん
2007/07/16(月) 22:58:120122デフォルトの名無しさん
2007/07/16(月) 23:05:22あれでできてるんじゃねえのか?
scanfの前に"c2p Message:","p2c Message:"とか
printfをいれて挙動をチェックしろ
0123デフォルトの名無しさん
2007/07/16(月) 23:11:52[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4648.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio .NET 2003
[3.3] 言語:C
[4] 期限:2007/7/17(火) 10:30
[5] その他の制限:入力はfopen系関数を使用したものではなく、コマンドプロンプトから入力が保存されたテキストファイルを読み込む方法で行うようにしなければならない。
どうかよろしくお願いします。
0124デフォルトの名無しさん
2007/07/16(月) 23:16:50[2] 問題文(含コード&リンク): メンバx[]の値が定まっているPoint5Dのインスタンスを引数とし,
その2ノルムを計算して返す関数 Norm を書け.
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:無し
問題の意味がいまいち分かりません…orz
よろしくお願いします。
0125デフォルトの名無しさん
2007/07/16(月) 23:17:09#include <stdio.h>
#include <string.h>
void replace(char *sentence, char *src, char *dest){
char *ptr;
int src_len;
src_len=strlen(src);
for(;;){
ptr=strstr(sentence, src);
if(ptr==NULL) break;
printf("%.*s%s", ptr-sentence, sentence, dest);
sentence=ptr+src_len;
}
printf("%s", sentence);
}
int main(void){
char *sentence="僕は20才だ。僕の好きなたべものはお酒だ。";
char *src="僕", *dest="私";
replace(sentence, src, dest);
return 0;
}
0126デフォルトの名無しさん
2007/07/16(月) 23:18:52#include <stdio.h>
int main(int argc, char **argv)
{
char *queue;
int c, qhead = 0, qtail = 0, qsize;
if (argc < 3)
return fprintf(stderr, "usage: %s from to\n", argv[0]), 1;
qsize = strlen(argv[1]);
queue = malloc(qsize);
while ((c = getchar()) != EOF) {
queue[qtail] = c;
qtail = (qtail + 1) % qsize;
if (qhead != qtail) continue;
if (memcmp(&queue[qhead], argv[1], qsize - qhead) == 0
&& memcmp(queue, argv[1] + qsize - qhead, qtail) == 0) {
fputs(argv[2], stdout);
qhead = qtail = 0;
} else {
putchar(queue[qhead]);
qhead = (qhead + 1) % qsize;
}
}
while (qhead != qtail) {
putchar(queue[qhead]);
qhead = (qhead + 1) % qsize;
}
free(queue);
return 0;
}
0127126
2007/07/16(月) 23:21:41#include <stdlib.h>
#include <string.h>
もしといて。スマソ。
0128デフォルトの名無しさん
2007/07/16(月) 23:28:07ありがとうございます。かなりきれいにできていますね。
自分もstrstr ()を使ったのですが、途中でつまってしまいました。
0129デフォルトの名無しさん
2007/07/16(月) 23:28:59#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[1024], rep[2048], word1[32], word2[32], *p = buf, *q = rep;
scanf("%[^\n]%s%s", buf, word1, word2);
while(*p){
if(!strncmp(p, word1, strlen(word1))) strcpy(q, word2), p += strlen(word1), q += strlen(word2);
else *q++ = *p++;
}
*q = '\0';
puts(rep);
return 0;
}
0130デフォルトの名無しさん
2007/07/16(月) 23:31:06すごいですね。こんなやりかたもあったのですか。
0131デフォルトの名無しさん
2007/07/16(月) 23:38:44検索単語がみつかったら単語の文字の数だけ前に進めてstrcpy()をつかうのですね。
それも考えていたのですが、できそうでできませんでした。
みなさん、ありがとうございました。
0132デフォルトの名無しさん
2007/07/16(月) 23:40:48[2] 問題文:
・1から9までの数字を一回ずつ使った9桁の数字を小町数という。
自乗した数が小町数となるような自然数をすべて求めるプログラムを作成し
その数と小町数の両方を出力せよ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: (明日まで )
[5] その他の制限: 無し
C言語習いたてで、期限ぎりぎりまでがんばったんですけどダメでした
どなたかよろしくお願いします。
0133デフォルトの名無しさん
2007/07/16(月) 23:52:56013422
2007/07/16(月) 23:54:32ありがとうございます。
なんですが、元々のソースを追記修正して今まできたので
一応そのような形でって事になってます。
制限なしと書いていましたが、現在のソースを
やっと作れるか作れないかぐらいのレベルなので
>>25さんのだとまだちょっとわからないことがいろいろとあります。
勉強してみます。ありがとうございました。
0135デフォルトの名無しさん
2007/07/17(火) 00:08:28#include <stdio.h>
#include <string.h>
int check(unsigned long n)
{
char f[10] = { '0' };
for (n = n * n; n > 0; n /= 10)
f[n % 10] = '1';
return memcmp(f, "0111111111", 10) == 0;
}
int main(void)
{
unsigned long n;
/*
* 最小小町数 123456789, sqrt(123456789) = 11111.11...
* 最大小町数 987654321, sqrt(987654321) = 31246.96...
*/
for (n = 11111; n < 31428; ++n)
if (check(n))
printf("%lu * %lu = %lu\n", n, n, n * n);
return 0;
}
0136135
2007/07/17(火) 00:11:09sqrt(987654321) = 31426.96...
ね、正しくは。
0137デフォルトの名無しさん
2007/07/17(火) 00:18:27わざわざありがとうございます!
今できる環境にないので明日大学で試してみます
0138デフォルトの名無しさん
2007/07/17(火) 01:10:25[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4649.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:本日(17日)まで
[5] その他の制限:無し
よろしくお願いします。
0139デフォルトの名無しさん
2007/07/17(火) 01:50:51ありがとうございます。
終了条件の部分大変参考になりました。
0140デフォルトの名無しさん
2007/07/17(火) 03:38:07[2] 問題文(含コード&リンク):迷路の作成(探索)
2次元配列を用いて迷路をつくりSTARTからGOALまでの経路を視覚的にわかるように出力せよ。
(例)壁1 通路0 START8 GOAL9
データ
1 1 1 1 1 1 1 1 1 1
1 9 0 0 0 1 0 1 0 1
1 1 1 1 0 1 0 0 0 1
1 0 1 0 0 1 1 1 0 1
1 0 1 0 1 1 0 0 0 1
1 0 0 0 1 0 0 1 1 1
1 1 0 1 1 0 1 0 0 1
1 0 0 0 1 0 1 0 1 1
1 0 1 0 0 0 0 0 8 1
1 1 1 1 1 1 1 1 1 1
0141デフォルトの名無しさん
2007/07/17(火) 03:38:42出力結果
**********
*G+++* * *
****+* *
* *++*** *
* *+** *
* ++* ***
**+** * *
* ++* * **
* *+++++S*
**********
[3] 環境
[3.1] OS:Mac
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:本日(17日)まで
[5] その他の制限:無し
現在奮闘中ですがなかなかできませんorz
よろしくお願いします。
0142デフォルトの名無しさん
2007/07/17(火) 04:26:02#include <stdio.h>
#define X 10
#define Y 10
int map[X][Y]={ {1,1,1,1,1,1,1,1,1,1}, {1,9,0,0,0,1,0,1,0,1},
{1,1,1,1,0,1,0,0,0,1},{1,0,1,0,0,1,1,1,0,1},
{1,0,1,0,1,1,0,0,0,1},{1,0,0,0,1,0,0,1,1,1},
{1,1,0,1,1,0,1,0,0,1},{1,0,0,0,1,0,1,0,1,1},
{1,0,1,0,0,0,0,0,8,1},{1,1,1,1,1,1,1,1,1,1}};
char expr[]=" *+34567SG";
int next(int x, int y) {
if (map[x][y] == 0) map[x][y] = 2;
if (map[x-1][y] == 9 || map[x-1][y] == 0 && next(x-1, y)) return 1;
if (map[x][y-1] == 9 || map[x][y-1] == 0 && next(x, y-1)) return 1;
if (map[x+1][y] == 9 || map[x+1][y] == 0 && next(x+1, y)) return 1;
if (map[x][y+1] == 9 || map[x][y+1] == 0 && next(x, y+1)) return 1;
if (map[x][y] == 2) map[x][y] = 0;
return 0; }
int main() {
int x, y, r=0;
for (x=0; x<X; x++) for (y=0; y<Y; y++) if (map[x][y] == 8) next(x, y);
for (x=0; x<X; x++) {
for (y=0; y<Y; y++) putchar(expr[map[x][y]]);
putchar('\n');
}
return 0; }
0143142
2007/07/17(火) 04:30:540144デフォルトの名無しさん
2007/07/17(火) 04:46:270145デフォルトの名無しさん
2007/07/17(火) 08:50:03http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4650.txt
0146デフォルトの名無しさん
2007/07/17(火) 09:22:08#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char num[128], name[128], adr[128], tel[128];
}Data;
int main(int argc, char *argv[])
{
Data x[10];
FILE *fp;
int i = 0, j;
char buf[1024], *p, search[128];
if(argc < 2) fprintf(stderr, "usage : %s string\n", argv[0]), exit(1);
if((fp = fopen(argv[1], "r")) == NULL) perror(argv[1]), exit(2);
while(fgets(buf, sizeof(buf), fp) != NULL){
printf("num : "), scanf("%s", x[i].num);
if((p = strtok(buf, ",")) != NULL) sscanf(p, "%s", x[i].name);
if((p = strtok(NULL, ",")) != NULL) sscanf(p, "%s", x[i].adr);
if((p = strtok(NULL, ",")) != NULL) sscanf(p, "%s", x[i].tel);
i++;
}
for(j = 0; j < i; j++)
printf("%s %s\n", x[j].num, x[j].name);
printf("search : "), scanf("%s", search);
for(j = 0; j < i; j++)
if(!strcmp(search, x[j].num))
printf("%s %s %s\n", x[j].name, x[j].adr, x[j].tel);
return 0;
}
0147デフォルトの名無しさん
2007/07/17(火) 11:28:50[2] 問題文:繰り返し複素数(実部,虚部はそれぞれ整数型とする)を入力し,ユーザが最後に1 (1+i*0)を入れたら今まで入力した複素数の実部と虚部のペアをすべて出力し,さらに入力した複素数すべての積を出力するプログラムを作成せよ.
なお,ユーザが入力する回数に制限はないものとする.
stdio.hの他にstdlib.hをインクルードしておく必要がある.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c
[4] 期限:2007年7月30日
[5] その他の制限: 特になし
参考プログラムです→http://www-it.sci.waseda.ac.jp/ITB1/class1/list.c
よろしくお願いします。
0148デフォルトの名無しさん
2007/07/17(火) 11:38:25検索して死ね
0149デフォルトの名無しさん
2007/07/17(火) 11:39:39[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4651.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ: gcc
[3.3] 言語: C
[4] 期限:7/18まで
[5] その他の制限:特になし
よろしくお願いします
0150デフォルトの名無しさん
2007/07/17(火) 13:09:50[2]問題文:数独(wiki参照http://ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC)解読プログラム
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ: gcc
[3.3] 言語: C
[4] 期限:7/20
[5] その他の制限:関数は2つ以下、#include <stdio.h>のみを使用すること
宜しくお願いします
0151デフォルトの名無しさん
2007/07/17(火) 13:22:11http://www.techfinesse.com/game/sudoku_solver.php
こんなのがあるようだぞ
その制限には引っかかるようだがなw
0152デフォルトの名無しさん
2007/07/17(火) 13:30:55[2]treeprintのプログラムを参考にして木をカッコ表記で表示するプログラムを作り、コマンド X で動作するようにせよ。
/* treeprint() : 2分探索木を根から順にすべて表示する(1行10個毎) */
int num; /* 1行のデータ個数を制御するための変数。*/
void treeprint(void)
{
num= 0;
/* 木の根ノードからサブ関数trprintを用いてプリント開始。*/
trprint(start->right);
}
int trprint(TNODE *p) /* trprint(p) : p の2分木を再帰的にプリント。*/
{
if(p != end){ /* p が終端ノードでないならば */
trprint(p->left); /* pの左部分木を再帰的にプリント。 */
printf("%5d%c",p->key, (++num % 10) ? ' ':'\n'); /* pのkey値を表示。 */
trprint(p->right); /* pの右部分木を再帰的にプリント。 */
}
}
[3.1] Linux [3.2] gcc 3.4 VC 6.0等 [3.3] C言語
[4] 2007年07月18日12:00まで]
[5] プログラムの中のtreeprintだけ問題文の載せています
よろしくお願いします
0153デフォルトの名無しさん
2007/07/17(火) 13:33:01http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4652.c
bsdのportsの中に入ってるお
0155デフォルトの名無しさん
2007/07/17(火) 15:36:03何の工夫も無い力技だが一応やってみた。
出回っているソースは確実にこれよりはマシだろう。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4656.txt
0156デフォルトの名無しさん
2007/07/17(火) 16:23:42こっちのほうがいいのかな?マルチは怒られますよね?よければ誰かぼるじょあスレ見てください〜〜
0157デフォルトの名無しさん
2007/07/17(火) 19:15:37遅い時間にも関わらず回答ありがとうございます。
確かに動作できました。
しかしながら関数を3つ作ってとけとのことでしたorz
すみませんがお時間がありましたら回答おねがいします。
問題は>>140-141です
よろしくお願いします<(__)>
0158c言語初心者
2007/07/17(火) 20:00:23プリントを渡されてやってこいとのことでした。
問題1
サイコロを10000回投げたとき、1から6までのそれぞれの目が
何回ずつ出たか調べるプログラムを作成せよ
#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0))
int main(void)
{
int i, j,spot, f[ ?(1) ];
srand(0);
for (j = 1;j <= 6;j++){
f[j] = 0;
}
for( i = 1;i <= 10000; i++){
spot = (int)(6 * uniformrand()) + 1;
[ ?(2) ]
}
return 0;
}
です。どうかよろしくお願いします。
0159デフォルトの名無しさん
2007/07/17(火) 20:01:52距離の単位にyかmが入力されるともう片方の単位に変換するプログラムです。
ただし、距離を変換する部分は、関数transを定義し、main関数で呼び出すこと。
距離の数値を入れた後に動かなくなるんですが、何が違うのか教えてほしいです。。
よろしくお願いします
#include <iostream>
using namespace std;
double trans(char a,double b)
{
double c;
cin>>a;
cin>>b;
if(a='y')
{
c=b*0.914;
return c;
}
else if(a='m')
{
c=b/0.914;
return c;
}
}
0160デフォルトの名無しさん
2007/07/17(火) 20:02:55int main()
{
char a;
double b;
cout<<"meter or yard -->";
cin>>a;
while(a!='E')
{
cout<<"input data -->";
cin>>b;
{
if(a='y')
{
cout<<b<<" yard --> "<<trans(a,b)<<" meter";
}
else if(a='m')
{
cout<<b<<" meter --> "<<trans(a,b)<<" yard";
}
cout<<"meter or yard -->";
cin>>a;
}
}
return 0;
0161デフォルトの名無しさん
2007/07/17(火) 20:04:350162デフォルトの名無しさん
2007/07/17(火) 20:05:45結果の出力は要らないのか?
0163デフォルトの名無しさん
2007/07/17(火) 20:05:48#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0))
int main(void)
{
int i, j,spot, f[7];
srand(0);
for (j = 1;j <= 6;j++){
f[j] = 0;
}
for( i = 1;i <= 10000; i++){
spot = (int)(6 * uniformrand()) + 1;
f[spot]++;
}
for(i=1; i<=6; i++) {
printf("%d %d \n",i,f[i]);
}
return 0;
}
0164デフォルトの名無しさん
2007/07/17(火) 20:06:15(1)7
(2)f[spot]++;
0165c言語初心者
2007/07/17(火) 20:07:34よろしくおねがいします。。
0166デフォルトの名無しさん
2007/07/17(火) 20:10:40改善されませんでした・・・
0167デフォルトの名無しさん
2007/07/17(火) 20:14:50>>161 に加えて
trans(a,b)で余計に a, b を入力させようとしてるから.
引数で渡してんだから,そこで入力させてどうする.
0168c言語初心者
2007/07/17(火) 20:27:54講義名:プログラミング1
プリントを渡されてやってこいとのことでした。よろしくおねがいします
1,2,・・・13の中から5個の数をランダムに選び出すプログラムを作成せよ
#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0))
int a[13];
void RandomPermutation(int n)
{
例題2と同じ
}
int main(void)
{
int i;
RandomPermutation(13);
for (i = 0;i < (1)? ; i++){
printf("%4d \n", (2)? );
}
return 0;
}
です。(1)(2)の部分をお願いします。『例題2と同じ』という場所は
問題の横に横に例題2というのが乗っていました。だけど、自分はどこからどこまでが例題2
と同じ部分なのかがわからないです。例題2の部分がいるならそれも打ちます。よろしくお願いします。
0169デフォルトの名無しさん
2007/07/17(火) 20:37:44(2)a[i]
0170デフォルトの名無しさん
2007/07/17(火) 20:41:31[2] 問題文:
テキストファイルを読み込みたとえばテキストファイルに
3+4=
5*6=
...etc(これは他のその他の数式、etcと直接出力しない)
と書かれていたら画面に
3+4=7
5*6=30
...etc
と出力せよ。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C言語)
[4] 期限: 7月19日
0171c言語初心者
2007/07/17(火) 20:46:29よく切られたトランプから、5枚のカードを選び出すプログラムを作成せよ、
ただし、トランプにはジョーカーは含まれないものとする。
#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0))
int a[ (1)? ];
void RandomPermutation(int n)
{
例題2と同じ
}
int main(void)
{
int i;
RandomPermutation( (1)? );
for(i = 0; i < 5; i++){
if( (2)? ){
printf("ハート% 4d \n", n (3)? );
}else if ( (4)? ){
printf("ダイア% 4d \n", n (5)? );
}else if ( (6)? ){
printf("クラブ% 4d \n", n (7)? );
}else{
printf("ハート% 4d \n", n (8)? );
}
return 0;
}
問2もありがとうございました。(1)から(8)までをよろしくお願いします
0172デフォルトの名無しさん
2007/07/17(火) 20:47:34演算の種類は?
0173デフォルトの名無しさん
2007/07/17(火) 21:06:43足し算、引き算、割り算、掛け算です。説明不足ですいません。
0174スモーク
2007/07/17(火) 21:23:34「1」課題:C言語でコードを記述して実行する。
「2」内容:多分岐型のコードを使って整数型の変数a・b と、文字型の変数e を用意し、
キーボードから2つの数値と1つの演算子を入力して、その計算結果cを出力するプログラムを作る。
というもの。さらに、実行される計算は和・差・積・商・剰余の5種類とし、
演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で、
表現されるものとする。 演算子にそれ以外の記号が入力された場合は、
エラーメッセージを表示する。
また0による除算の回避も含めるものです。
「3」OS:WINDOWS XP SP2。
「4」バージョン:Visual Studio 2005。
「5」期限:今週の金曜まで。
「6」 コンパイラのバージョン: gcc。
これでおねがいします。
0175デフォルトの名無しさん
2007/07/17(火) 21:23:47[2] 問題文
縦横400ピクセルのスクリーン上に3次元空間の3角形が複数個、投影される。
この3角形についてそれぞれ
�@スクリーン上の頂点:(x1,y1)(x2,y2)(x3,y3)
�A頂点のZ値(視点から3次元空間までの距離):Z1,Z2,Z3
�B三角形の色:(r,g,b)-均一色
が標準入力から与えられるとき、Z−バッファ法に基づいてスクリーン上に三角形を描き
最終結果をppm画像として出力するプログラムを作成せよ。
*必要なデータは標準入力から入力するものとし、かつ複数の�B角形に対応させる事
(�B角形個数は予め与えてもよい)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual studio.
[3.3] 言語: C
[4] 期限: 2007年7月19日 11:00まで
この手のプログラムはスレ違いかもしれないと思いつつも、C言語で書いて来いとのことなので
書き込ませて頂きました。何卒、よろしくお願いします。
0176デフォルトの名無しさん
2007/07/17(火) 21:25:47できた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4657.txt
0177デフォルトの名無しさん
2007/07/17(火) 21:28:47[2] 問題文(含コード&リンク): 線形探索
次の表は、平成19年のお年玉付き年賀葉書の当選番号である。
1等 157788、457190
2等 5161、7093、7485、9614
3等 64、79
手元に届いた年賀状の抽選番号をキーボードから入力し、
当選したかどうかチェックして結果を表示するプログラムを作成する。
当選番号(の下2桁)は、キーの配列に初期値として格納する
キーボードから2桁の数字を入力してターゲットに格納し、線形探索を行う。
探索結果を画面に出力する。当選した場合は何等が当たったか、も出力すること。
【発展】
余力のある人は、下2桁に限らず、全桁を初期値として格納し、当選のチェックを実行するプログラムを作成してみること。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VB
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: 習ったのは 配列 if-else文 繰り返し ポインタ 線形探索と基礎知識
です。[発展]の方でお願いします。
0178デフォルトの名無しさん
2007/07/17(火) 21:37:38>>170と同じ人か?
%演算子の分追加、変数名微修正と
コマンドライン引数を指定するとそのファイルから、
指定しないと標準入力から読み取るようにした。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4658.txt
[2] 問題文(含コード&リンク):
自分の名前をローマ字でキーボードで入力し、文字数を表示させる関数、名前を逆順にする関数を
各自それぞれ定義しプログラムを組みなさい。結果の表示はmainで行い、姓と名の間は1文字
空白を入れること。ただし、変数が文字型、ポインタ型のみの場合の2つに分けてプログラムを組みなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語:C++
[4] 期限: 2007年07月18日10:00まで]
[5] その他の制限:できれば、do-while文及びfor文を使用してお願いします。
0180デフォルトの名無しさん
2007/07/17(火) 21:41:12けどまた説明不足でした…。小数の場合も含みます…。
>>170追加例
ファイル内
1.5+1.5=
3*5=
1.5+2=
出力
1.5+1.5=3
3*5=15
1.5+2=3
何度も説明不足ですいません…。この小数と整数を区別して出力するのが
むずかしいです。よかったらお願いします。
0181デフォルトの名無しさん
2007/07/17(火) 21:45:15説明し忘れが無いか一度確認したほうがいいと思うよ
小数点以下は切り捨てるとかそういう細かい部分も説明すべきだと思う
0182デフォルトの名無しさん
2007/07/17(火) 21:45:22aとbの型をdoubleにして、
fscanfの%dを%lfに、
printfの%dを%gにすればおk
0183デフォルトの名無しさん
2007/07/17(火) 21:50:56>>182さんありがとうございます!!これで完成しました!!
みなさんありがとうございました。%gとは便利な…。
0184デフォルトの名無しさん
2007/07/17(火) 21:52:100185デフォルトの名無しさん
2007/07/17(火) 21:53:27遅くなりましたがありがとうございました。
0186デフォルトの名無しさん
2007/07/17(火) 22:01:04[2] 問題文(含コード&リンク):
以下の円周率を2000桁もとめるプログラムを
できるだけ高速に計算できるように改良せよ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4659.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:分かりません
[3.3] 言語: C
[4] 期限: 2007年7月18日12:00まで
[5] その他の制限:
マイコン。配布プロラムはマチンの公式を使っている。
若干スレ違いかもしれないですが、よろしくお願いします。
0187デフォルトの名無しさん
2007/07/17(火) 22:05:38マイコンかWindowsかどっちなんだ。つかマイコンだろうな。
どんな石だか知らんが、これコンパイルして動かせる環境持ってる奴
いないんじゃないか。
0188デフォルトの名無しさん
2007/07/17(火) 22:07:21よくわからんが、おもむろにCreateWindow()で窓を開く
コンソールアプリをつくれということだろうか。
0189デフォルトの名無しさん
2007/07/17(火) 22:09:28Windows上で開発してるってことだろ、多分
せめてどんなマイコンを使ってるかわからないと難しいな・・・
0190デフォルトの名無しさん
2007/07/17(火) 22:17:30Linuxのプロンプト上でplay
com/man対戦、先攻/後攻を選べる
0191デフォルトの名無しさん
2007/07/17(火) 22:20:530192175
2007/07/17(火) 22:37:33アプリと言いますか、コマンドプロンプトで必要な入力を入れていくと
それを適当なソフトで忠実に再現したppm画像に出してくれるものです。
同じ事言ってたらすいませんorz
できれば骨組みだけでも(流れ的な)考えていただけると幸いですm(__)m
0193デフォルトの名無しさん
2007/07/17(火) 22:40:26>>187
>>189
説明不足ですいません。
答えになってないかいもしれないですが、この付属のV850基板を使っています。
ttp://www.cqpub.co.jp/interface/contents/2007/200705.htm
0194デフォルトの名無しさん
2007/07/17(火) 22:42:40でもまだソフトインスコしてない・・・
0195デフォルトの名無しさん
2007/07/17(火) 22:43:16いや、スクリーンに描画しろとか書いてあるからさ。
それを見なかったことにして、PPM画像ファイルを出力するだけなら、
標準Cの範囲のプログラムで出来る話だが、400*400の画面に
描画しろってんなら、窓開いてGUIスレッド起動してって話になるだろう。
0196190 ◆Oa0JSQvro2
2007/07/17(火) 23:14:27期限は木曜夜でお願いします。
よろしくおねがいしますm(__)m
0197175
2007/07/17(火) 23:14:34なるほどそういう事でしたか…
特に制限などは言われていないので(Cのみとは言われてません)
このスレの趣旨に沿っていないかもと思ったのです。
できれば400X400は後に考えますので、ファイル出力の部分をお願いします。
0198デフォルトの名無しさん
2007/07/17(火) 23:36:49[2] 問題文(含コード&リンク):
練習13-2(気象情報)
インターネットを利用して出身地の観測開始から現在までの
気象情報を入手し,各年の月別平均気温データを作成する.
作成したファイルから気象データを読み込んで,
(1)平均気温が最も低い年月と最も高い年月を探索して
両者の年月と気温をディスプレイに出力する
(2)年間平均気温を計算し,高い年から順に
年と年間平均気温をファイルに出力する
プログラムを作成しなさい.
気象庁HP(http://www.jma.go.jp/jma/index.html)参照
[3] 環境
[3.1] OS: Windows
[3.2]
[3.3] 言語:C言語
[4] 期限: 2007年 7月18日の朝
[5] その他の制限: 出身地は神戸でお願いします
0199デフォルトの名無しさん
2007/07/17(火) 23:38:00>>1のテンプレを漏れなく書け。
0200デフォルトの名無しさん
2007/07/17(火) 23:45:39は、どうあつかうんだ?
0201デフォルトの名無しさん
2007/07/18(水) 02:31:07[2] 問題文(含コード&リンク):
longが定義されている数の最大値LONGMAXをもとめろ。
例えば、i=1 を2倍していき、LONGMAXの最大値を求める。
別にこの方法でなくてもいい。各自にまかせる。
ちなみに LONGMAXはおよそ2147483647である。
余裕があるものはdouble などもやることが望ましい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc2.95-3)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: (2007年07月25日23:59まで)
[5] その他の制限:無制限
さぐりで下のようなところまでは書きました。
#include <stdio.h>
#define LONGMAX 2147483647
int main(void)
{
long int i,i2;
/*これは0 ... の無限ループ
for(i=1;i<LONGMAX;i*=2)
printf("%d ",i);
*/
for(i=1;;i2=i,i*=2){
printf("%d ",i);
if(i<i2){
printf("%d is LONGMAX\n",i);
break;
}}}
までできましたが、値が少し違い微妙です。
それと、コメントカットしたらなぜ無限ループになるのでしょうか?
これにかなり悩みました。
0202デフォルトの名無しさん
2007/07/18(水) 03:17:08無限ループの最初の方で止めれば分かるけど 1,2,4,8…1073741828 の次から0になってるはず。
で、その理由は出力される数を2進表現してみれば分かるはず。キーは32ビット。
後半での出力は…少しの違いなのか?
---
#include <stdio.h>
int main(void)
{
unsigned long max = -1;
printf("Unsigned MAX:%ud\n", max);
printf("Signed MAX:%d\n", max >> 1);
return 0;
}
----
0203デフォルトの名無しさん
2007/07/18(水) 03:37:532倍していき・・・verで書いてみた
#include <stdio.h>
#include <math.h>
int main(void)
{
int i=0;
long n, tmp;
while( (tmp = pow(2, i)-1) >= 0 ){
n = tmp;
i++;
}
printf("LONG MAX : %d\n", n);
return(0);
}
0204デフォルトの名無しさん
2007/07/18(水) 03:54:03[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4660.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語:C
[4] 期限:7/19まで
[5] その他の制限:課題�@はwhile文、�Aは両方とも構造体、�Bは全てポインタと構造体の単元です
�@と�Aは自分が考えたソースを添えてみたので、どこが悪いのかだけでも教えていただけると幸いです
どうかご教授の程お願いします
0205デフォルトの名無しさん
2007/07/18(水) 07:36:23問題文(含コード&リンク):
環境
OS:Windows xp
コンパイラ名とバージョン:ボーランド
言語:C
期限:
その他の制限:
テーマ:標準関数の利用
問題1:文字列を入力、英文字とそれ以外を収納する配列に振り分けしなさい
使用する標準関数:isalpha()など
実行画面
文字列入力==>A12H&jfTy8uZ3#
英字:AHjfTyuZ
その他:12&83#
問題2:文字列と削除文字列を入力し、文字列中から削除文字列を排除しなさい
使用する標準関数:strncmp(),strcpy(),strlen()など
実行画面
文字列入力(m1)==>ABCDEFAADABC
削除文字列(m2)==>ABC
結果文字列(m1):DEFAD
注意:配列の使用はm1,m2のみとする
0206デフォルトの名無しさん
2007/07/18(水) 07:56:14よく見てないけど
�@
=< じゃなくて <=
isdigit() -> isdigit(moji)
printf("hogehoge %d"); -> printf("hogehoge %d",); (カンマ)
�A
× while(buff = getchar()!="0 0 0"){
whileのなかのsscanfのbufferなんてない
× printf("%4s%4f%4s,stu[j].name,stu[j]height,stu.[j]blood");}
0207206
2007/07/18(水) 07:57:21printf("hogehoge %d"fuga); -> printf("hogehoge %d",fuga); (カンマ)
に訂正です
0208デフォルトの名無しさん
2007/07/18(水) 08:10:29ttp://www.sra.co.jp/people/miyata/algorithm/multprec.txt
たぶんこれと同じなんやろうけど、どうやったら速くできるんだろう。
0209デフォルトの名無しさん
2007/07/18(水) 08:34:24奮闘中ですが、できませんorz
お願いします!
0210190 ◆Oa0JSQvro2
2007/07/18(水) 09:12:44[2] 問題文(含コード&リンク):○×ゲーム(3目並べ) をプロンプト上で動かす。com/man対戦、先攻後攻は選択可能
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限: 今週金曜夜
[5] その他の制限: 特になし
0211デフォルトの名無しさん
2007/07/18(水) 10:09:46[2] 検討及び考察」の指示に従って求めた, S/N=3.0 [dB]のときの a. 誤差[%],b. 誤り検出率[%] の数値(有効数字3桁以上)
および実験 2. のために作成したシミュレーションプログラムを使って報告せよ。
詳しいことは次のアドレスに書いてあります。
http://itohws03.ee.noda.tus.ac.jp/~matsuda/programming/final/programming.pdf
[3.1] Unix
[3.2] gcc
[3.3] c
[4] 7月27日(金)
[5] 私の学籍番号の下三桁は080です。
0212デフォルトの名無しさん
2007/07/18(水) 10:14:230213デフォルトの名無しさん
2007/07/18(水) 10:41:19VBではなくVSです
0214c言語初心者
2007/07/18(水) 10:56:39問3、よく切られたトランプから、5枚のカードを選び出すプログラムを作成せよ、ただし、トランプにはジョーカーは含まれないものとする。
#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0))
int a[ (1)? ];
void RandomPermutation(int n)
0215c言語初心者
2007/07/18(水) 10:57:29{
例題2と同じ
}
int main(void)
{
int i;
RandomPermutation( (1)? );
for(i = 0; i < 5; i++){
if( (2)? ){
printf("ハート% 4d \n", n (3)? );
}else if ( (4)? ){
printf("ダイア% 4d \n", n (5)? );
}else if ( (6)? ){
printf("クラブ% 4d \n", n (7)? );
}else{
printf("ハート% 4d \n", n (8)? );
}
return 0;
}
例題2と同じというところは、プリントの横に例題2というのがあったんですが、どこかどこまでが例題2と同じなのかがわかりませんでした。そこが必要であれば例題2を打つんでよろしくお願いします。(1)から(8)までを回答としてよろしくねがいします。
0216デフォルトの名無しさん
2007/07/18(水) 11:07:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4661.c
0217デフォルトの名無しさん
2007/07/18(水) 11:19:47四の五の言わないで全部書き出しな
0218デフォルトの名無しさん
2007/07/18(水) 11:21:57ですがどうにもうまく三角形が描けませんorz
ファイル出力までで結構ですので、どなたかなにとぞお願いしますm(__)m
0219c言語初心者
2007/07/18(水) 11:39:590,1,2, … 、99をランダムに並べる
#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1))
int a[100]
0220c言語初心者
2007/07/18(水) 11:40:29void RandomPermutaion(int n)
{
int i, j, z;
for (i = 0; i < n; i++) {
a[i] = i;
}
for(j = n - 1; j > 0; j--) {
i = (int)(j * uniformrend());
z = a[i]; a[i] = a[j]; a[j] =z;
}
}
int main()
{
int n, i;
n = 100;
RandmPermutation(n);
for (i = 0; i < n; i++){
printf("%4d", a[i]);
}
printf("/n");
return 0;
}
が例題2です。よろしくお願いします
0221デフォルトの名無しさん
2007/07/18(水) 11:56:24できたぞ
つか
printf("ハート% 4d \n", n (3)? );
とか
printf("ダイア% 4d \n", n (5)? );
って、問題間違ってないか?
0222c言語初心者
2007/07/18(水) 12:00:14printf("ハート% 4d \n", (3)? );
printf("ダイア% 4d \n", (5)? );
です。
よろしくお願いします。
0223デフォルトの名無しさん
2007/07/18(水) 12:07:51[2] 問題文(含コード&リンク):単純選択法
大きさ20の配列keyを用意し、キーボードから値を入力する。
この配列keyの要素を、単純選択法でソートするプログラムを作成せよ。
ただし、ソートの途中経過を画面に出力すること。
また、最後に比較回数を画面に出力すること。
【ヒント】
配列の大きさの指定
#define SIZE 20
単純選択法‥最小の要素を選び、未ソートの部分の先頭の要素と交換する
途中経過‥未ソートの部分が1つ減るたびに(外ループ)出力。
比較回数‥初期値0の変数を用意し、比較のたびに(内ループ)インクリメント。
発展
以下の機能を持つ関数を作成し、利用する形にコードを修正しなさい。
配列要素の入力を行う input_array
配列要素の出力を行う output_array
単純選択法によるソート select_sort
[3] 環境
[3.1] OS: WindowXP
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C
[4] 期限: いつでも
[5] その他の制限:なし
0224デフォルトの名無しさん
2007/07/18(水) 12:09:04発展までは書いてみました
#include<stdio.h>
#define SIZE 20
void kadai28()
{ int key[SIZE];
int i, j, p, cnt = 0, w;
for(i = 0; i < SIZE; i++)
scanf("%d", &key[i]);
for(j = 0; j < SIZE; j++)
printf("%3d", key[j]);
printf("\n");
for(i = 0; i < SIZE; i++){
p = i;
for(j = i+1;j < SIZE;j++){
if(key[j] < key[p])
p = j;
cnt++;
}
w = key[p];
key[p] = key[i];
key[i] = w;
for(j = 0; j < SIZE; j++)
printf("%3d", key[j]);
printf("\n");
}
printf("cnt = %d\n", cnt);
return;
}
発展の方お願いしますー
0225デフォルトの名無しさん
2007/07/18(水) 12:10:49[2] charのみを使用し小数点以下100桁まで計算できる計算機を作る(中学程度)
[3] 環境
[3.1] Windows2000プロ
[3.2] gcc
[3.3] C
[4]7/20
[5]main以外の関数を作ってはいけない
お願いします。さっぱりなので・・・
0226デフォルトの名無しさん
2007/07/18(水) 12:13:08「+」「-」「*」「/」「√」位かな?
0227デフォルトの名無しさん
2007/07/18(水) 12:15:15じゃ、パーツだけ教えるよ
n
a[i]/13==0
a[i]/13==1
a[i]/13==2
a[i]%13
a[i]%13
a[i]%13
a[i]%13
または
n
a[i]&3==0
a[i]&3==1
a[i]&3==2
a[i]/4
a[i]/4
a[i]/4
a[i]/4
好きなほうを使ってくれ
0228デフォルトの名無しさん
2007/07/18(水) 12:15:26お願いできますか?
charだと256までしか出来ないので積や商がさっぱりで・・・
0230デフォルトの名無しさん
2007/07/18(水) 12:20:25小数点以下でcharってprintf出力で表示される答えが100桁でいいんだよね?
0231デフォルトの名無しさん
2007/07/18(水) 12:24:54>>227にヒントを書いたんだけど、不服?
0233デフォルトの名無しさん
2007/07/18(水) 12:29:21小数点以上は無限大?
0235c言語初心者
2007/07/18(水) 12:33:46不服なんてとんでもないです。ただ、ヒントもらっても自分が解けないだけです。申し訳ないです。
>>232さん
たぶんジョーカー2枚を抜いた52枚でのことだとおもいます。よろしくお願いします。
0236225です
2007/07/18(水) 12:33:590237デフォルトの名無しさん
2007/07/18(水) 12:34:33>[5]main以外の関数を作ってはいけない
か
冗談きつすぎ
0238デフォルトの名無しさん
2007/07/18(水) 12:37:24100^256 までしかできなくね? 無限じゃネージャン
0239デフォルトの名無しさん
2007/07/18(水) 12:38:150240デフォルトの名無しさん
2007/07/18(水) 12:39:19勿論char[]で多倍長を実装するんでしょ
そうじゃなきゃそもそも実数すら扱えん
0241256です
2007/07/18(水) 12:39:400242デフォルトの名無しさん
2007/07/18(水) 12:40:080243149
2007/07/18(水) 12:58:59/tmp/ccY67IGB.o(.text+0x163): In function `angle':
: undefined reference to `sqrt'
/tmp/ccY67IGB.o(.text+0x177): In function `angle':
: undefined reference to `sqrt'
/tmp/ccY67IGB.o(.text+0x197): In function `angle':
: undefined reference to `acos'
collect2: ld はステータス 1 で終了しました
と表示されて、./a/out のファイルが作成されなかったのですが
これは何でしょうか・・
0244デフォルトの名無しさん
2007/07/18(水) 13:00:170245デフォルトの名無しさん
2007/07/18(水) 13:01:490246デフォルトの名無しさん
2007/07/18(水) 13:05:23[2] 問題文(含コード&リンク):
特定の単語にgoogle 検索のリンクをはるプログラムをつくれ。
例えば、下は「テスト」という単語をgoogle検索したリンク である。
q= 以降は「テスト」という単語がURLエンコード(unicode)された文字列となっている。
http://www.google.co.jp/search?hl=ja&q=%E3%83%86%E3%82%B9%E3%83%88
1. htmlファイルを受け取る
2. 検索リンクにしたいいくつかの指定した単語を受け取る
3. すでにリンク済みの単語に注意しながら、指定した単語をgoogle 検索のリンクにする。
(例)「宿題」をgoogle 検索されたリンクにする。
この宿題ができなかったら単位はあげません。
->
この<a href="http://www.google.co.jp/search?hl=ja&q=%E5%AE%BF%E9%A1%8C">
宿題</a>ができなかったら単位はあげません。
なお、目的を果たせるプログラムだったらこの形式でなくてもかまわない。
余裕がないものは
・検索ワードはURLエンコードの必要のない半角英数等だけでいい。
・受け取った検索ワードはすでにリンクされていないと仮定してもいい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc2.95-3
[3.3] 言語: C
[4] 期限: (2007年07月31日17:00まで)
[5] その他の制限: 何を使っても構わない
0247デフォルトの名無しさん
2007/07/18(水) 13:07:40-lmつけると幸せになれる
0248デフォルトの名無しさん
2007/07/18(水) 13:08:14>>225
組むのめんどいからヒントだけあげるよ
現在のCPU能力では「+」と「-」しか演算が出来ない。
「*」「/」はただの演算方法でしかない
例 a*bの場合 int i; for(i=0;i=b;i){a++}
0249デフォルトの名無しさん
2007/07/18(水) 13:09:34ちょw
0250デフォルトの名無しさん
2007/07/18(水) 13:12:39何が分からないか分からないんだが・・・・・・・
まんまじゃん
0251デフォルトの名無しさん
2007/07/18(水) 13:15:31それを言うなwそれ言っちゃこのスレの存在価値がw
0252149
2007/07/18(水) 13:37:55幸せになれましたが、どういう原理なのでしょう?
質問ばっかですいません
書き忘れましたが、153さん・247さんありがとうです
0253デフォルトの名無しさん
2007/07/18(水) 13:41:52mという数学ライブラリをリンクしたのです。
0254デフォルトの名無しさん
2007/07/18(水) 13:42:09兄さんそれ掛け算になってません。
forの条件式もアレです。意図は伝わるけど。
0255デフォルトの名無しさん
2007/07/18(水) 13:46:27暇ですね。
0256デフォルトの名無しさん
2007/07/18(水) 13:47:110257デフォルトの名無しさん
2007/07/18(水) 13:48:03243のエラーメッセージはソースの中に存在しない関数(sqrtとacos)があって
プログラムを作れないというリンカのエラー。
>>253の言うとおり数学ライブラリをリンク指定すれば
その中に関数sqrtとacosという関数があるからリンクが通る。
0258デフォルトの名無しさん
2007/07/18(水) 13:52:060259デフォルトの名無しさん
2007/07/18(水) 14:02:410260デフォルトの名無しさん
2007/07/18(水) 14:04:450261デフォルトの名無しさん
2007/07/18(水) 14:16:34ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4662.c
入力は各行に(別に各行でなくてもいいけど)
x1 y1 Z1 x2 y2 Z2 x3 y3 Z3 r g b
の順で数値を並べたファイル.
(例)
0 10 10 100 30 10 50 50 100 255 0 0
0 100 20 100 100 20 50 0 20 0 255 0
0 200 30 100 200 30 80 20 15 0 0 255
出力先もコンソールにしてるが,変更したければmain冒頭の
FILE *out = stdout;
を書き換えればいい.
画像はLinuxのxvで確認した.ppm形式はいくつか種類があるようなので問題あるかも.
(注:CGは昔かじった程度なのでzバッファについて根本的な勘違いをしてるかもしれない)
0262デフォルトの名無しさん
2007/07/18(水) 14:30:47http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4663.txt
問題2でstrcpy()(文字列のコピー)の替わりにstrcat(文字列の連結)を使った。
strcpy()を使えと言われても俺の能力じゃムリポ
0263デフォルトの名無しさん
2007/07/18(水) 14:33:09strccat(a, b) ≡ strcpy(a + strlen(a), b) ≡ strcpy(strchr(a, '\0'), b)
0264262
2007/07/18(水) 14:37:06問題2の修正版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4664.c
0265デフォルトの名無しさん
2007/07/18(水) 15:08:56色々穴だらけだが
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4666.txt
0266デフォルトの名無しさん
2007/07/18(水) 15:18:43最後のナル文字にさえ気をつければ便利だし安全だよ。
0267デフォルトの名無しさん
2007/07/18(水) 15:19:450268265
2007/07/18(水) 15:24:25まあいいや
どうせもともと穴だらけだ
0269ヒープ
2007/07/18(水) 15:36:58[2] 問題文(含コード&リンク):
ヒープソートを用いて、配列に格納された10個の数値データを
大きい順に並び替える。変化がわかるようにソート前と後を出力させる。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 早いとありがたいです
[5] その他の制限: 特にありません
よろしくおねがいします。
0270デフォルトの名無しさん
2007/07/18(水) 17:26:12#include <stdio.h>
int main(void) {
int i,j,k,sn,flg[3]={0},suka;
int n[3][5]={
{157788,457190,-1},
{5161,7093,7485,9614,-1},
{64,79,-1}
};
printf("Input number > ");
scanf("%d",&sn);
for(i=0,k=1000000; i<3; i++,k/=100) {
for(j=0; n[i][j]>0; j++) {
if(n[i][j]==sn%k) {
flg[i]++;
break;
}
}
}
for(i=0,suka=1; i<3; i++) {
if(flg[i]) {
printf("%d等 \n",i+1);
suka=0;
}
}
if(suka) printf("はずれ\n");
return 0;
}
0271デフォルトの名無しさん
2007/07/18(水) 18:07:53[2] 問題文(含コード&リンク):
2次元配列の中にデータの入ったファイルを読み込んで代入する方法を
main関数ともう1つ関数をつくって作成せよ。
例. box[5][5];の2次元配列にファイルのデータ(ここではdata.txt)を代入
data.txt
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今日中です
[5] その他の制限: 特にありません
よろしくおねがいします。
0272175
2007/07/18(水) 19:53:23ありがとうございました!m(__)m
自分でも色々いじってみましたが、思っていた通りの完璧な出来でした。
本当に助かりました!
0273デフォルトの名無しさん
2007/07/18(水) 20:09:44[2] 問題文:キーボードから順次入力された正の整数を0が入力されるまで、
配列に順番に格納し、入力された(0を除く)値の平均値(実数として扱うこと)
にもっとも近い値(平均との差が最小となる値)が何番目に入力された
どういう値であるかを表示するプログラムを作成せよ。
例)
数字(1)を入力してください。 2
数字(2)を入力してください。 5
数字(3)を入力してください。 3
数字(4)を入力してください。 1
数字(5)を入力してください。 0
入力された数字の平均は2.75です。
これは、3番目に入力された3に最も近いです。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: [7月19日20:00]
[5] その他の制限:特になし
ギリギリまで頑張ったのですができませんでした。わかる方お願いします
0274デフォルトの名無しさん
2007/07/18(水) 20:12:21[2] 問題文(含コード&リンク):○×ゲーム(3目並べ) をプロンプト上で動かす。com/man対戦、先攻後攻は選択可能
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限: 今週金曜
[5] その他の制限: 特になし
0275デフォルトの名無しさん
2007/07/18(水) 20:13:01なんか前々スレくらいで全く同じ問題に回答した気がする。
0276スモーク
2007/07/18(水) 20:17:27[2] 問題文(含コード&リンク): 問題009
多分岐型
整数型の変数a・b と、文字型の変数e を用意し、
キーボードから2つの数値と1つの演算子を入力し
、その計算結果cを出力するプログラムを作成しなさい。
実行される計算は和・差・積・商・剰余の5種類とし、
演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で
表現されるものとする。
演算子にそれ以外の記号が入力された場合は
エラーメッセージを表示する。
また0による除算の回避も含めること。
[3] 環境
3.1] OS: (Windows XP)
[3.2] コンパイラ名とバージョン: (VS 2005)
[3.3] 言語:C
[4] 期限: ([2007年07月20日hh:金曜まで]
[5] その他の制限:
課題の数は残り20くらいありますが、半分は片付けました。
しかし、追加されてくるものを回答する時間がもうありません。
どうかよろしくおねがいします。
あなたの能力が便りです。
0277デフォルトの名無しさん
2007/07/18(水) 20:20:530278デフォルトの名無しさん
2007/07/18(水) 20:21:210279デフォルトの名無しさん
2007/07/18(水) 20:25:19ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4667.c
0280デフォルトの名無しさん
2007/07/18(水) 20:27:06[2] 問題文:2次方程式a*x*x + b*x + c = 0の解を求めるプログラムを作成せよ。
係数a,b,cはdouble型で、キーボードから入力するものとする。
虚数解の出力も行うこと。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: あしたまで
[5] その他の制限:ありません
よろしくおねがいします
028122
2007/07/18(水) 20:37:28[1] 授業単元: C言語 基礎&応用
[2] 問題文(含コード&リンク): 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4668.txt
ソース:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4669.txt
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:Visual studio.2005
[3.3] 言語:C言語
[4] 期限:2007/07/19の12:00まで。
[5] その他の制限:特になし
どうにか講師が作らせたかった内容になったらしく問題1と2はOKでました。
最後の問題3です。よろしくお願いいたします。
0282スモーク
2007/07/18(水) 20:41:23[2] 問題文(含コード&リンク): 問題009
多分岐型
整数型の変数a・b と、文字型の変数e を用意し、
キーボードから2つの数値と1つの演算子を入力し
、その計算結果cを出力するプログラムを作成しなさい。
実行される計算は和・差・積・商・剰余の5種類とし、
演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で
表現されるものとする。
演算子にそれ以外の記号が入力された場合は
エラーメッセージを表示する。
また0による除算の回避も含めること。
[3] 環境
3.1] OS: (Windows XP)
[3.2] コンパイラ名とバージョン: (VS 2005)
[3.3] 言語:C
[4] 期限: ([2007年07月20日hh:金曜まで]
[5] その他の制限:
課題の数は残り20くらいありますが、半分は片付けました。
しかし、追加されてくるものを回答する時間がもうありません。
どうかよろしくおねがいします。
あなたの能力が便りです。
小数点以下は切り捨てでいいですよ。
とにかく0による除算の回避とあるだけなのでそのとおりで済むはずです。
多少のミスはかまいません。それ以外がうまく機能すればよいです。
また、ほかの問題も載せますのでよろしくお願いします。
0283デフォルトの名無しさん
2007/07/18(水) 20:42:520284デフォルトの名無しさん
2007/07/18(水) 20:43:300285デフォルトの名無しさん
2007/07/18(水) 21:07:30汚くて&間違ってたらスマソ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4670.c
0286285
2007/07/18(水) 21:11:36適当に追加してね
0287デフォルトの名無しさん
2007/07/18(水) 21:26:20俺も。>>285はキリストかあるいはMだと思う。
0288デフォルトの名無しさん
2007/07/18(水) 21:39:00#include <stdio.h>
#include <stdlib.h>
int main(void){int a,b,c;char e;if(scanf("%d %d %c",&a,&b,&e)!= 3){
fprintf(stderr, "input error\n");return EXIT_FAILURE;}switch (e) {
case '+': c = a + b; break;case '-': c = a - b; break;
case '*': c = a * b; break;case '/':
case '%':if (b == 0) {fprintf(stderr, "zero divide\n");
return EXIT_FAILURE;}if (e == '/') {c = a / b;} else {c = a % b;}
break;default:fprintf(stderr, "illegal operator\n");return EXIT_FAILURE;}
printf("result = %d", c);
return EXIT_SUCCESS;}
0289alsk
2007/07/18(水) 21:56:33可能でしょうか?
タバコとか、肥満についてならなんでもいいんで!
0290デフォルトの名無しさん
2007/07/18(水) 21:57:11スレ違いすぎ。
0291デフォルトの名無しさん
2007/07/18(水) 22:00:170292デフォルトの名無しさん
2007/07/18(水) 22:03:320293デフォルトの名無しさん
2007/07/18(水) 22:04:010294デフォルトの名無しさん
2007/07/18(水) 22:40:52[2] 問題文(含コード&リンク):
次のようにプログラムを作成せよ。前回のプログラムのmainとnumber大域変数は変更しない。
intのスタックを2つ作る(大域変数)。1つのスタックは数値をいれる。もう1つには演算子を表す数をいれる
例
+→0 弱低
-→1 ↓
*→2 ↓
/→3 強高
#include<stdio.h>
#include<ctype.h>
char *p;char c[100];
int expression(void);
int term(void);
int number(void);
main(){
int ans;
while(1){
printf("Enter expression : ");
fgets(c,90,stdin);
p=&c;
if(*p == '\n')
{break;}
ans=expression();
printf("Answer:%d\n" , ans);
}
}
0295デフォルトの名無しさん
2007/07/18(水) 22:42:19int ans;
ans = term();
while(1){
if(*p == '+'){
*p++;
ans = ans + term();
}
else if(*p == '-'){
*p++;
ans = ans - term();
}
else
break;
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007年07月19日
[5] その他の制限:特になし
0296デフォルトの名無しさん
2007/07/18(水) 23:13:01お願いします
0297デフォルトの名無しさん
2007/07/18(水) 23:16:30回答ありがとうございます。
とてもみやすかったです^^
0298デフォルトの名無しさん
2007/07/18(水) 23:24:06readfile関数内の int j はいらないから消しといて><
0299デフォルトの名無しさん
2007/07/19(木) 00:12:58#include <stdio.h>
#include <math.h>
#define N 128
int main(void)
{
int i=0, j, n=0, x[N];
float avg=0.0, tmp;
while(1){
printf("数字(%d)を入力してください。: ", i+1);
scanf("%d", &x[i]);
if(x[i] == 0) break;
avg += x[i];
i++;
if(i == N) break;
}
avg = avg / i;
printf("\n入力された数字の平均は%fです。\n", avg);
tmp = fabs(avg - x[0]);
for(j=1 ; j<i ; j++){
if(tmp > fabs(avg - x[j])){
tmp = fabs(avg - x[j]);
n = j;
}
}
printf("これは、%d番目に入力された%dに最も近いです。\n", n+1, x[n]);
return(0);
}
0300デフォルトの名無しさん
2007/07/19(木) 00:33:57[2] 問題文(含コード&リンク):
スタックを利用し、入力された文字を逆順に出力するプログラム。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4671.txt
ここまで作ったのですが、ポップアップがうまく出来ません
[3] 環境
[3.1] OS: (Windows/Linux/等々) windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) bcc32
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限:7/26
どなたかご教授お願いしますorz
0301273
2007/07/19(木) 00:47:41ありがとうございますmm
明日やってみます。
本当にありがとうございます。
0302デフォルトの名無しさん
2007/07/19(木) 00:51:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4672.txt
0303デフォルトの名無しさん
2007/07/19(木) 00:58:09よく分からないのだが、
対話的に1文字ずつ文字入力を行い、1文字ずつ取り出したいのか?
それとも、
文字列を入力し、結果の反転文字列を一気に出力したいのか?
0304デフォルトの名無しさん
2007/07/19(木) 00:58:15char x;
scanf("%s", &x);
ってなんだ?
0305デフォルトの名無しさん
2007/07/19(木) 01:02:05入力は1文字ずつで、出力は1文字ずつ出したり全部出したり出きる様にしたいんです。
0306デフォルトの名無しさん
2007/07/19(木) 01:11:28[2] 問題文:複素数a+bi(iは複素数)のn乗を求めて出力するプログラムを作れ。
a,bはdouble型とし、nはint型で、キーボードから入力するものとする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: はやめでおねがいします
[5] その他の制限:特にないです
0307デフォルトの名無しさん
2007/07/19(木) 01:16:07明日の朝とかもうちょっと具体的に書け
0308デフォルトの名無しさん
2007/07/19(木) 01:19:00[2] 問題文(含コード&リンク):http://sakuratan.ddo.jp/uploader/source/date44998.txt
return ????部分が分かりません。
[3] 環境
[3.1] OS: (Windows/Linux/等々)WinXP
[3.2] コンパイラ名とバージョン:VC6
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 今日
[5] その他の制限:なし
よろしくおねがいしますorz
0309デフォルトの名無しさん
2007/07/19(木) 01:24:120310デフォルトの名無しさん
2007/07/19(木) 01:24:47問題文じゃねええええええええええええええええええええええええええええええええええええええええええ
0311デフォルトの名無しさん
2007/07/19(木) 01:27:19double 型の値を返すんだから、
FXかFX1じゃねえの?
問題文がないしわけがわからんよ
0312308
2007/07/19(木) 01:28:11問題文がついてないんです・・・
一次正弦関数の補完値を求めたいみたいなんですけど
グーグル先生に聞いてもよく分かりませんでした。
0313デフォルトの名無しさん
2007/07/19(木) 01:29:36問題文がないなら宿題じゃねえじゃん
0314デフォルトの名無しさん
2007/07/19(木) 01:30:00int main(){
double a,b,t; int n;
scanf("%lf,%lf,%d",&a,&b,&n);
while(--n>0)
t=b,b=2*a*b,a=a*a-t*t;
printf("%g+%gi\n",a,b);
}
0315デフォルトの名無しさん
2007/07/19(木) 01:31:47[2] 問題文(含コード&リンク):
整数nを入力し、1〜nまでの整数を使い、n桁の組み合わせを出力する。
同じ整数は2回以上使ってはいけない。
例えば3を入力した場合
012 021 102 120 201 210
を出力したい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 7/23
[5] その他の制限: 特に無し
もうさっぱりです。お願いします。
0317デフォルトの名無しさん
2007/07/19(木) 01:33:24俺たちはその「ここ埋めてきて」とか一時正弦関数の補完とか言われてな・・・
もしかして文章で伝えられずに口頭だったから何も書かなかったのか・・・
もうだめぽ
0318デフォルトの名無しさん
2007/07/19(木) 01:46:04> 整数nを入力し、1〜nまでの整数を使い、n桁の組み合わせを出力する。
...
>例えば3を入力した場合
>012 021 102 120 201 210
この例だったら、1 〜 n じゃなくて 0 〜 n-1 じゃないのか?
0319300
2007/07/19(木) 01:46:55どうしても最後の文字(1番最初に入力した物)が出力されません。。
配列には入ってるみたいなんだが・・・
0320デフォルトの名無しさん
2007/07/19(木) 01:47:47n桁ってのは上限はないのか?
0321デフォルトの名無しさん
2007/07/19(木) 01:48:52[2] 問題文(含コード&リンク):
線形リストを用いて過去に素数とわかった数を保存し、指定された数(N)以下の素数を求めるプログラムを作成する。
Nはプログラム実行中に外部から入力できるようにする。
・素数かどうかを判定する際には線形リストに保存されている素数のみ利用する。
・引数として与えた数が、引数として与えられた素数を保存する線形リスト中の素数で割り切れるかどうかを判定する関数を作る。
・順番に小さい数から線形リストに保存してある素数で割り切れるかどうかを判断し、割り切れない場合(素数)は線形リストに加えていく。 [3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C/C++の違いがわからない
[4] 期限: はやめ
[5] その他の制限: 特になし
わ か り ま せ ん
0323デフォルトの名無しさん
2007/07/19(木) 01:53:41うっかりしてました。
123 132 213 231 312 321
の間違いです。
>>320
基本的に上限はありませんが、あんまり数が大きいと
馬鹿になりませんので…。
大体5か6くらいまでを想定してます。
0324デフォルトの名無しさん
2007/07/19(木) 01:58:48変な所は色々あるんだが、とりあえず、
case 3:
while(sp>0){
sp--;
printf("%c", Stack[sp]);
}
printf("\n");
break;
0325デフォルトの名無しさん
2007/07/19(木) 02:01:00最初は線形リストになにも保存されていないと思われるが、どうする?
よくわからないです。
↓授業で使った線形プログラム
http://sakuratan.ddo.jp/uploader/source/date45003.txt
0327デフォルトの名無しさん
2007/07/19(木) 02:07:59さくらアップローダーが流行ってるの?
0328300
2007/07/19(木) 02:10:22あとは修正頑張ってみます。
ありがとうございました。
0329デフォルトの名無しさん
2007/07/19(木) 02:12:17#include <stdio.h>
#define N 6
int nextperm(int p[], int n){
int i, j, t;
i = n - 1;
p[0] = 0;
while (p[i] >= p[i + 1]) i--;
if (i == 0) return 0;
j = n;
while (p[i] >= p[j]) j--;
t = p[i]; p[i] = p[j]; p[j] = t;
i++; j = n;
while (i < j){ t = p[i]; p[i] = p[j]; p[j] = t; i++; j--; }
return 1;
}
int main(){
int i, n, p[N + 1];
do{ scanf("%d", &n); }while(n < 1 || N < n);
for (i = 1; i <= n; i++) p[i] = i;
do{ for (i = 1; i <= n; i++) printf("%d", p[i]); putchar(' '); }while(nextperm(p,n));
return 0;
}
ぐぐって出てきたのほぼそのまんまだから動作原理はシラネ
0330デフォルトの名無しさん
2007/07/19(木) 02:23:00がんばれ
0331デフォルトの名無しさん
2007/07/19(木) 03:01:10宿題丸投げして、回答があっても放置される事が多いけど。
http://sakuratan.ddo.jp/uploader/source/date45007.txt
でした。さっきのは自分でぐちゃぐちゃにしたやつでした。
0333306
2007/07/19(木) 07:44:560334デフォルトの名無しさん
2007/07/19(木) 08:53:07まさにそのまんまがあったんですね…。
ありがとうがざいます。
0335デフォルトの名無しさん
2007/07/19(木) 08:57:12もうで照るだろ
0336デフォルトの名無しさん
2007/07/19(木) 09:57:38[2] 問題文(含コード&リンク):
a,b,c,d,eに1〜5の整数を一つずつ入れて
a + b - c * d / e
の結果の最大になる値、最小となる値、そのときのa,b,c,d,eを求めよ。
(算数的に計算するのではなく全パターンをためすこと。)
また、結果は何通りあるかも求めよ。
[3] 環境
[3.1] OS: (/Linux/)
[3.2] コンパイラ名とバージョン: (gcc 2.95-2)
[3.3] 言語: C
[4] 期限: 2007年07月20日17:40
[5] その他の制限: 無し
0337デフォルトの名無しさん
2007/07/19(木) 11:08:25[2] 問題 配列 int a[12]を用意し、a[i] = I ( i=0,1,2,…,10),a[11] = a[0]+a[1]+a[2]+…[10]とせよ
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C ++
[4]本日まで
問題の意味がよく分からないかもしれませんがよろしくお願いします。
0338デフォルトの名無しさん
2007/07/19(木) 11:56:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4673.txt
0339デフォルトの名無しさん
2007/07/19(木) 12:12:46ありがとうございます。
ところで、count が120になったのですが、
a + b - c * d / e
のaとbまたはcとdを入れ替えると同じになると思うので
値は5*4*3*2*1通り未満になりませんか?
よくわからないので、もうすこしがんばってみます。
0340デフォルトの名無しさん
2007/07/19(木) 12:17:01同値になる入れ換えは考慮してない。
必要かな?
0341デフォルトの名無しさん
2007/07/19(木) 12:23:35どちらかといえばあったほうがいいです。
0342デフォルトの名無しさん
2007/07/19(木) 12:25:21問題文(含コード&リンク):
環境
OS:Windows xp
コンパイラ名とバージョン:ボーランド
言語:C
期限:
その他の制限:
テーマ:ポインタの利用
英文字の単語の出題をカウントしなさい
英文字に含まれる単語数は10以下とする
ポインタ配列を使用する
char english[] = "My name is Taro.Your name is Hanako.";
実行画面
My:1
name:2
is:2
Taro:1
Your:1
Hanako:1
0343デフォルトの名無しさん
2007/07/19(木) 12:28:13問題文(含コード&リンク):
環境
OS:Windows xp
コンパイラ名とバージョン:ボーランド
言語:C
期限:
その他の制限:
テーマ:ユーザ関数の作成
問題1:2値の最大を求めるユーザ関数を作成しなさい
プロトタイプ宣言:int Max(int dt1,int dt2);
実行画面
数値1を入力==>10
数値2を入力==>15
大きい値:15
0344デフォルトの名無しさん
2007/07/19(木) 12:50:24#include <stdio.h>
int Max(int dt1,int dt2);
int main(void) {
int a,b,c;
printf("数値1を入力==>");
scanf("%d",&a);
printf("数値2を入力==>");
scanf("%d",&b);
printf("大きい値:%d",Max(a,b));
return 0;
}
int Max(int dt1,int dt2) {
return dt1>dt2 ? dt1 : dt2;
}
0345デフォルトの名無しさん
2007/07/19(木) 13:04:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4674.txt
これでどうかな
0346デフォルトの名無しさん
2007/07/19(木) 13:25:20たとえば
1 +2 -3 *4/ 5
1と2の入れ換えで結果が重複して120の半分の60通りになり
3と4の入れ換えで結果が重複して60の半分の30通りになりそうなので
あっていると思います。
ありがとうございました。
ちなみにこれは算数オリンピックの第一問です。
0347デフォルトの名無しさん
2007/07/19(木) 13:31:01aとb、cとdの値に順序性を持たせた。
宿題ではないのか?
0348デフォルトの名無しさん
2007/07/19(木) 13:42:23それをC言語でとかせる宿題です。
0349デフォルトの名無しさん
2007/07/19(木) 13:42:49聞いてみたところどうもfor文を使うらしいのですがどこに使えばいいのか分かりません
よろしくお願いします。
0350デフォルトの名無しさん
2007/07/19(木) 13:47:18int a[12];
int i;
for(i = 0; i < 11; i++) a[i] = i;
a[11] = 0;
for(i = 0; i < 11; i++) a[11] += a[i];
0351デフォルトの名無しさん
2007/07/19(木) 13:48:00たびたびすみません。
先ほどの問題でデバックの結果がa[11] = a[0]+a[1]+a[2]+…+a[10]と表示できればいいそうです。
よろしくお願いします
0352デフォルトの名無しさん
2007/07/19(木) 13:51:540353デフォルトの名無しさん
2007/07/19(木) 13:54:060354デフォルトの名無しさん
2007/07/19(木) 13:55:43[2]問題:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4675.c
[3]環境
OS:リナックス
コンパイラ:cc
言語:C
[4]期限:来週の水曜日までに
よろしくお願いします.
0355デフォルトの名無しさん
2007/07/19(木) 14:06:47[2]問題:複数人の、名前と不定個の得点を入力し、平均点が50点を超える場合のみ、
名前と平均点を出力するプログラムをつくれ。得点の最大個数は10個である。
平均点は、小数点以下2桁までとせよ。入力は3人のデータとし、得点の入力終了は負数(-1)とする
一応ココまでやりました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4676.c
[3]環境
OS:windows
コンパイラ:bcc32
言語:C
[4]期限:7/20
0356デフォルトの名無しさん
2007/07/19(木) 14:06:55[2] 問題文(含コード&リンク)
演算子のオーバーロードにより、複素数a,bの絶対値の大小を与える
演算子 < を作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: CC
[3.3] 言語:C++
[4] 期限: 7月20日
どなたかよろしくお願いします。
0357デフォルトの名無しさん
2007/07/19(木) 14:21:04#include <complex>
template <typename T>
bool operator<(const std::complex<T>& left, const std::complex<T>& right) {
return std::abs(left) < std::abs(right);
}
0358デフォルトの名無しさん
2007/07/19(木) 14:32:440359デフォルトの名無しさん
2007/07/19(木) 14:53:49複素数をn乗するってことでおk?
0360デフォルトの名無しさん
2007/07/19(木) 14:58:110361デフォルトの名無しさん
2007/07/19(木) 15:24:32書いた自分でワロタ
0362デフォルトの名無しさん
2007/07/19(木) 15:39:450363デフォルトの名無しさん
2007/07/19(木) 15:43:07問題文(含コード&リンク):
環境
OS:Windows xp
コンパイラ名とバージョン:ボーランド
言語:C
期限:
その他の制限:
テーマ:標準関数の利用
問題1:文字列を入力、英文字とそれ以外を収納する配列に振り分けしなさい
使用する標準関数:isalpha()など
実行画面
文字列入力==>A12H&jfTy8uZ3#
英字:AHjfTyuZ
その他:12&83#
問題2:文字列と削除文字列を入力し、文字列中から削除文字列を排除しなさい
使用する標準関数:strncmp(),strcpy(),strlen()など
実行画面
文字列入力(m1)==>ABCDEFAADABC
0364デフォルトの名無しさん
2007/07/19(木) 15:55:56cygwin上でemacsを使ってCのソースの入力してコンパイルしたのですが、
syntax errorとでまして、コンパイルできません^^;
↓
syntax error before '{' token
とでます^^;
基本中の基本かもしれませんが^^;
誰かわかりますか?
0365364
2007/07/19(木) 15:59:120366デフォルトの名無しさん
2007/07/19(木) 16:01:42#include <stdio.h>
int main(void){
double a, b, prev_a, prev_b, const_a, const_b;
int i, n;
printf("a b n : "); scanf("%lf%lf%d", &a, &b, &n);
const_a = a, const_b = b;
for(i = 1, prev_a = a, prev_b = b; i < n; i++, prev_a = a, prev_b = b){
a = prev_a*const_a - prev_b*const_b;
b = prev_a*const_b + const_a*prev_b;
}
printf("%g + %gi\n", a, b);
return 0;
}
0367デフォルトの名無しさん
2007/07/19(木) 16:27:16>>205と同じやね。>>262>>264
0368デフォルトの名無しさん
2007/07/19(木) 17:12:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4678.txt
バグっているかも試練
0369368
2007/07/19(木) 17:23:400370デフォルトの名無しさん
2007/07/19(木) 17:58:40[2] 問題文
構造体
struct coord{
float x;
float y;
}
を用い、また、coord.data(内容は以下のようなもの)を作成して、
1.2 3.4
2.1 4.5
3.2 2.1
2.0 4.9
5.3 2.8
1.5 3.2
これらの値をメンバx,yに読み込み、(例えばa.x,a.y,b.x,b.y
又はa[0].x,a[0].yなど好きな変数名を作成すればよい。
構造体はa[0],a[1]のように配列でもよい。
この場合、メンバとはa[0].xなどとして結びつく)
xとyの平均をoutput2.dataに出力するプログラムを作れ。
[3] 環境
Windows ,CC ,C++
[4] 期限: 7/19 21:00
よろしくお願いします。
0371デフォルトの名無しさん
2007/07/19(木) 18:36:25ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4679.c
0372デフォルトの名無しさん
2007/07/19(木) 18:46:150373デフォルトの名無しさん
2007/07/19(木) 19:08:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4680.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: BCC 5.5.1
[3.3] 言語: C
[4] 期限: できればお早めに
お手数ですが宜しくお願いいたします
0374デフォルトの名無しさん
2007/07/19(木) 19:25:43http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4681.c
0375デフォルトの名無しさん
2007/07/19(木) 19:30:20ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4682.c
0376デフォルトの名無しさん
2007/07/19(木) 19:32:59下の二つの関数を追加して
int gcd(int a, int b){ // 最大公約数を求める関数
int c;
while((c=a%b)!=0){a=b;b=c;}
return b;
}
int gcd3(int a, int b, int c){
return gcd(gcd(a, b), c);
}
if(gcd3(a, b, c)!=1) // これが成り立つ時はなにかの倍数
0377デフォルトの名無しさん
2007/07/19(木) 20:28:26問1は、ループをxyz共に1000回ずつ回すのは無駄だから
for(x=1; x<=MAX-2; x++) {
for (y=x+1; y<=MAX-1; y++) {
for (z=y+1; z<=MAX; z++) {
みたいにすれば速くなるよ
問2はできてるんじゃないの?
0378デフォルトの名無しさん
2007/07/19(木) 20:48:32[2] 問題文(含コード&リンク):実行結果と同じ内容を表示するプログラムの作成
実行結果
+
++
+++
++++
+++++
[3] 環境
[3.1] OS:Windows Vista Business
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語:C言語
[4] 期限:2007年9月3日
[5] その他の制限:�@文字の出力にはprintfを使用し、プログラム中に2回のみ使用できるものとする
�Aアルゴリズムはwhile文の2重ループで行うこと
0379デフォルトの名無しさん
2007/07/19(木) 20:49:04[2] 問題文(含コード&リンク):月(1〜12)と日(1〜31)をキーボードから入力し、入力された日付を表示する
プログラムの作成
実行結果 (「」内の部分はキーボードからの入力)
月を入力:「15」
月の入力は1以上12以下にしてください
月を入力:「8」
日を入力:「46」
日の入力は1以上31以下にしてください
日を入力:「25」
入力された日付は8月25日です
[3] 環境
[3.1] OS:Windows Vista Business
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語:C言語
[4] 期限:2007年9月3日
[5] その他の制限:�@月の入力については1〜12で範囲チェックを行い、範囲外の入力だった
場合は、エラーメッセージを表示して再入力させること
�A日の入力については1〜31で範囲チェックを行い、範囲外の入力だった
場合は、エラーメッセージを表示して再入力させること
0380デフォルトの名無しさん
2007/07/19(木) 20:54:54#include <stdio.h>
int main(void)
{
int i=0, j;
while(i < 5){
j = 0;
while(j <= i){
printf("+");
j++;
}
printf("\n");
i++;
}
return(0);
}
0381デフォルトの名無しさん
2007/07/19(木) 20:57:13終了の条件は?
0382デフォルトの名無しさん
2007/07/19(木) 21:04:44問2はいきなり7309から始まるんですよ…
0383デフォルトの名無しさん
2007/07/19(木) 21:06:37いや、それはそれ以前に処理されたものが画面に表示しきれていないだけでは・・・
実際には処理されているよ。
0384デフォルトの名無しさん
2007/07/19(木) 21:07:54っ a.exe > result.txt
プロンプトのバッファを超えただけと思う
0385デフォルトの名無しさん
2007/07/19(木) 21:21:190386デフォルトの名無しさん
2007/07/19(木) 21:23:49何の終了条件ですか?
0387デフォルトの名無しさん
2007/07/19(木) 21:32:440388デフォルトの名無しさん
2007/07/19(木) 21:38:22#include <stdio.h>
int main(void){
int m, d, tmp;
while(1){
printf("月を入力:");
scanf("%d", &m);
if(m<1 || m>12) fprintf(stderr, "月の入力は1以上12以下にしてください\n");
else break;
}
switch(m){
case 2:
tmp = 2;
break;
case 4:
case 6:
case 9:
case 11:
tmp = 1;
default:
tmp = 0;
}
while(1){
printf("日を入力:");
scanf("%d", &d);
if(d < 1 || d > 31-tmp) fprintf(stderr, "日の入力は1以上%d以下にしてください\n", 31-tmp);
else break;
}
printf("入力された日付は%d月%d日です\n\n", m, d);
return(0);
}
0389デフォルトの名無しさん
2007/07/19(木) 21:44:170390デフォルトの名無しさん
2007/07/19(木) 22:00:18サンクスです☆
0391デフォルトの名無しさん
2007/07/19(木) 22:09:26#include <stdio.h>
int main(void) {
int month = 0, day = 0;
while (month<1 || 12<month) {
printf("月を入力:");
scanf("%d", &month);
if (month<1 || 12<month) printf("月の入力は1以上12以下にしてください\n");
}
while (day<1 || 31<day) {
printf("日を入力:");
scanf("%d", &day);
if (day<1 || 31<day) printf("日の入力は1以上31以下にしてください\n");
}
printf("入力された日付は%d月%d日です", month, day);
return 0;
}
0392デフォルトの名無しさん
2007/07/19(木) 22:22:33お願いします
0393デフォルトの名無しさん
2007/07/19(木) 23:01:43ありがとうございました〜!
0394体験版ありw
2007/07/19(木) 23:15:53http://www.realcreate.net/
WILLTY(ウィルティ)はネットワーク上や
外部媒体からウィルスやハッカーが侵入する際の
異常な電子の動きをキャッチし、コンピュータの入り口で
確実にブロックしてしまうという世界初の画期的な方法が
とられています。
たとえ、ウィルス感染したCD,FD,USBなどをインストールしても、
コンピューターがウィルス感染することはありません。
正常なデーターのみがコンピューター内に取り込まれます。
■ 電源コンセントからの情報漏洩をブロック
WILLTYは電源LANシステムを応用したデーター漏洩やハッキングをブロックします。
コンピュータ電源をコンセントに差し込んだ瞬間から機密情報は丸裸になっています。
LAN上のセキュリティーをどれだけ強固にしても、電源コンセントから
あなたの情報は筒抜けになっています
0395デフォルトの名無しさん
2007/07/19(木) 23:16:32if ( dvsr >= trg ){
このtrgって、sqrtを取得して比較すれば
素数判定が早くできないかな。
dvsr++;
これも奇数を見るだけで良いのじゃないかな。
チェック対象件数が半減すると覆うよ。
0396デフォルトの名無しさん
2007/07/19(木) 23:17:160397デフォルトの名無しさん
2007/07/19(木) 23:22:240398デフォルトの名無しさん
2007/07/19(木) 23:24:02で>>261を参考にしながらPPMファイルを出力したいのですが、できません。
環境はWindows xp + cygwinです。
0 10 10 100 30 10 50 50 100 255 0 0
0 100 20 100 100 20 50 0 20 0 255 0
0 200 30 100 200 30 80 20 15 0 0 255
をCygwin上で入力しています。
何がいけないのでしょうか・・
0399デフォルトの名無しさん
2007/07/19(木) 23:24:10違わないだろw
壮大な釣りソフトw
0400デフォルトの名無しさん
2007/07/19(木) 23:53:450401デフォルトの名無しさん
2007/07/20(金) 00:04:20あぶねえ。
俺、“そういう試みをチャレンジしている会社がある”と信じるところだった。
0402デフォルトの名無しさん
2007/07/20(金) 00:14:35量子コンピュータどころじゃない、
21世紀最大の発明となる鴨。
遺伝情報の媒体って超ひもあたりでやるのか?
エンコードやデコードどうするのかなw
0403デフォルトの名無しさん
2007/07/20(金) 00:45:57とりあえずは問題の意味が分からないんだけど、それは置いておいて
>>294>>295に出ているソースをベースにして作らないといけないの?
コンパイルさえできないんだけど。
0404デフォルトの名無しさん
2007/07/20(金) 01:58:29書いてあるプログラムのmainとnumber大域変数は変更しないで
intのスタックを2つ作る(大域変数)。
1つのスタックは数値をいれる。もう1つには演算子を表す数をいれます。
0405デフォルトの名無しさん
2007/07/20(金) 02:01:270406デフォルトの名無しさん
2007/07/20(金) 06:45:10[2] 問題文(含コード&リンク): 問題010
多分岐型(2)
次の説明は冬季オリンピックの開催年についての説明である。
キーボードから変数year に入力された年号について、
開催された年に第何回大会が開催されたか
画面に表示するプログラムを作成しなさい。
また開催年でない場合は、画面にその旨メッセージを出力すること。
【説明】
1924 年の第1 回大会以来、4 年に1 度開催されている。
1992 年の第16 回大会までは夏季大会と同じ年に開催されたが、
1994 年の第17 回大会からは、夏季大会の2 年後に開催されるようになった。
1940 年、1944 年は第二次世界大戦の影響で中止。
次回は2010 年、第21 回大会、カナダのバンクーバーで開催予定。
[3] 環境
[3.1] OS: Windows;
[3.2] コンパイラ名とバージョン: (VS)
[3.3] 言語: C
[4] 期限: ([2007年07月21日まで]
[5] その他の制限:
よろしく。
0407デフォルトの名無しさん
2007/07/20(金) 07:02:51やだ
0408デフォルトの名無しさん
2007/07/20(金) 07:26:01ほらよ、とっときな
#include <stdio.h>
int main(void){
int year;
while(1){
printf("年号は?");scanf("%d",&year);
switch(year){
case 1924:puts("第�@回");break;
case 1928:puts("第�A回");break;
case 1932:puts("第�B回");break;
case 1936:puts("第�C回");break;
case 1948:puts("第�D回");break;
case 1952:puts("第�E回");break;
case 1956:puts("第�F回");break;
case 1960:puts("第�G回");break;
case 1964:puts("第�H回");break;
case 1968:puts("第�I回");break;
case 1972:puts("第�J回");break;
case 1976:puts("第�K回");break;
case 1980:puts("第�L回");break;
case 1984:puts("第�M回");break;
case 1988:puts("第�N回");break;
case 1992:puts("第�O回");break;
case 1994:puts("第�P回");break;
case 1998:puts("第�Q回");break;
case 2002:puts("第�R回");break;
case 2006:puts("第�S回");break;
default:puts("開催されなかった、あるいはどうなるか分かりません。");break;
}}return 0;
}
0409デフォルトの名無しさん
2007/07/20(金) 07:27:22コンパイル出来ないのは、
「大域変数を変更する」以前の
「書いてあるプログラム」の問題。
0410デフォルトの名無しさん
2007/07/20(金) 11:06:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4683.txt
0411タウリン2000mg配合
2007/07/20(金) 11:13:28[2] 問題文:input7.txtから4×4の行列の要素を読み込み、その逆行列を出力するプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:よくわかりません。
[3.3] 言語: C言語
[4] 期限: 2007/8/3 まで
http://www.fluid.cse.nagoya-u.ac.jp/~ishihara/c/Sec9prac2.html
を改造して作ればいいという課題です。
抜けてる部分だけ作ればいいんですが、それでもいまいちわかりません。
どなたか親切な方がいたら教えてもらえないでしょうか。
0412デフォルトの名無しさん
2007/07/20(金) 11:42:11http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4684.txt
0413デフォルトの名無しさん
2007/07/20(金) 11:48:58どんなソースかと思いきやww
0414デフォルトの名無しさん
2007/07/20(金) 13:02:200415デフォルトの名無しさん
2007/07/20(金) 13:05:47nagoya-u.ac.jpって書いてあるけど、ブラクラ?
0416デフォルトの名無しさん
2007/07/20(金) 13:15:02#include <stdio.h> #include <string.h> #include <ctype.h>
#define SIZE 500
int main()
{ char English[SIZE] = {'\0'}; char Other[SIZE] = {'\0'};
char buff[SIZE]= {'\0'}; char *temp; int i,j=0,k=0; int len;
fgets(buff,sizeof(buff),stdin); if(temp = strchr(buff, '\n'))
*temp = '\0';
for(i = 0; buff[i] != '\0'; i++){
if(isalpha(buff[i]))
English[j++] = buff[i];
else
Other[k++] = buff[i];
}
printf("English %s Other %s \n",English,Other);
printf("英文字入力\n");
fgets(buff,sizeof(buff),stdin);
if(temp = strchr(buff, '\n'))
*temp = '\0';
printf("削除文字入力\n");
fgets(Other,sizeof(Other),stdin);
if(temp = strchr(Other, '\n'))
*temp = '\0';
len = strlen(Other);
while(temp = strstr(buff,Other)){
memcpy(temp,temp+len,sizeof(buff));
}
printf("削除後 %s \n", buff);
return 0;
}
0417デフォルトの名無しさん
2007/07/20(金) 13:17:10サンプルソースだ。問題ないと思うが。
0418デフォルトの名無しさん
2007/07/20(金) 13:36:14[2] 問題文:自然数nを入力すると、任意のディレクトリに任意の名前でn個のフォルダを作成するプログラムを作りなさい。
なお、危険防止のためnの上限は5とする事。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (vs)
[3.3] 言語: (C言語)
[4] 期限:今日中
0419デフォルトの名無しさん
2007/07/20(金) 13:38:380420デフォルトの名無しさん
2007/07/20(金) 13:52:41[2] 問題文(含コード&リンク):
探索パターンと置換パターン、入力ファイル名を引数にとり、
入力ファイルの探索パターンに合致する部分をすべて置換パターンに置き換えるプログラムを作成せよ
パターンにはsedで扱える正規表現のうち、下の部分が使えるように実装せよ
. 改行をのぞく任意の1文字にマッチ
[abc…] aまたはbまたはc…のうちいずれか1文字にマッチ
d* 0個以上のd(dは文字または正規表現)にマッチ
\(str\) 文字列str(strは正規表現を含んでよい)二マッチ
\n n番目に表れた\(...\)の中の文字列にマッチ (nは1から9の整数)
\c cに^,$,.,*,[,\をおくことによりそれ自身にマッチ
.* 0個以上の改行を除く任意の文字にマッチ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 07年7月22日
[5] その他の制限: system()等使わずに正規表現を実装すること
0421お願いします!
2007/07/20(金) 13:54:03この問題です!よろしくぅお願いします!
0422デフォルトの名無しさん
2007/07/20(金) 13:55:20#include <stdlib.h>
#include <stdio.h>
int main() {
int a,b;
a = rand() % 6 + 1;
b = rand() % 6 + 1;
printf("%d", a + b);
return 0;
}
0423デフォルトの名無しさん
2007/07/20(金) 14:02:04ありがとうございますぅ!ただ、何と何が出たか分からないから個別に表示もおながいもうしあげます
0424デフォルトの名無しさん
2007/07/20(金) 14:03:220425デフォルトの名無しさん
2007/07/20(金) 14:04:14ほれ
#include <stdlib.h>
#include <stdio.h>
int main() {
int a,b;
a = rand() % 6 + 1
printf("a = %d\n", a);
b = rand() % 6 + 1;
printf("b = %d\n", b);
printf("%d", a + b);
return 0;
}
0426デフォルトの名無しさん
2007/07/20(金) 14:05:190427デフォルトの名無しさん
2007/07/20(金) 14:10:53if(b % 2 == 0) printf("bは丁"); else printf("bは半");
0428デフォルトの名無しさん
2007/07/20(金) 14:11:470429デフォルトの名無しさん
2007/07/20(金) 14:12:12そろそろ自分でやったらどうだい?
0430デフォルトの名無しさん
2007/07/20(金) 14:13:100431デフォルトの名無しさん
2007/07/20(金) 14:15:04その辺はきでんのセンスで
0432デフォルトの名無しさん
2007/07/20(金) 14:20:09なんでいっぺにいわないんだい?
自分でやりなさい。
0433デフォルトの名無しさん
2007/07/20(金) 14:22:53指定の口座に3本ほど振り込んでくれないか
0434デフォルトの名無しさん
2007/07/20(金) 14:23:550435デフォルトの名無しさん
2007/07/20(金) 14:25:160436デフォルトの名無しさん
2007/07/20(金) 14:25:25使用料金=基本料金+(1㎥当たりの単価×使用量)
使用量 基本料金 1㎥当たりの単価
25㎥以下 690円 127円
25㎥から500㎥以下 1170円 108円
500㎥より多い 6980円 96円
月の使用量を順番にキーボードから入力する。
使用料金は基本料金+(1㎥当たりの単価×使用量)で計算する。
各月の使用料金を算出して以下のように表示させる。
例)
1gatu 2gatu 3gatu 4gatu 5gatu 6gatu Goukei heikin
Charge 12500 25600 35410 19860 13250 2980s0 1278540 21906
0437デフォルトの名無しさん
2007/07/20(金) 14:26:15体?でどう?
0438デフォルトの名無しさん
2007/07/20(金) 14:27:040439デフォルトの名無しさん
2007/07/20(金) 14:31:26{
int kihon, tanka;
if(siyou <= 25) { kihon = 690; tanka = 127; }
else if(siyou <= 500) { kihon = 1170; tanka = 108; }
else { kihon = 6980; tanka = 96; }
return kihon + siyou * tanka;
}
0440デフォルトの名無しさん
2007/07/20(金) 14:36:550441デフォルトの名無しさん
2007/07/20(金) 14:38:41女でよければ。。
0442デフォルトの名無しさん
2007/07/20(金) 14:39:41int gokei,heikin;
gokei = 0;
for(i = 0; i < 6; i++) {
printf("%d月の使用量:", i);
scanf("%d", &siyou[i]);
charge[i] = ryokin(siyou[i]);
gokei += charge[i];
}
heikin = gokei / 6;
printf("1gatu 2gatu 3gatu 4gatu 5gatu 6gatu Goukei heikin \n");
printf("Charge");
for(i = 0; i < 6; i++) printf("%6d", charge[i]);
printf("%6d", gokei);
printf("%6d\n", heikin);
0443デフォルトの名無しさん
2007/07/20(金) 14:41:160444デフォルトの名無しさん
2007/07/20(金) 14:47:10えええええええええええええええええええええええええええええええ
ええええええええええええええええええええええええええええええ
えええええええええええええええええええええええええええええ
ええええええええええええええええええええええええええええ
えええええええええええええええええええええええええええ
ええええええええええええええええええええええええええ
えええええええええええええええええええええええええ
ええええええええええええええええええええええええ
えええええええええええええええええええええええ
ええええええええええええええええええええええ
えええええええええええええええええええええ
ええええええええええええええええええええ
えええええええええええええええええええ
ええええええええええええええええええ
えええええええええええええええええ
ええええええええええええええええ
えええええええええええええええ
ええええええええええええええ
えええええええええええええ
ええええええええええええ
えええええええええええ
ええええええええええ
えええええええええ
ええええええええ
えええええええ
ええええええ
えええええ
ええええ
えええ
ええ
え
0445デフォルトの名無しさん
2007/07/20(金) 14:50:05for(int i = 0; i < 31; i++) {
for(int j = 0; j < 31 - i; j++) printf("え");
puts("");
}
0446デフォルトの名無しさん
2007/07/20(金) 14:50:29実はもう書いてあったw
0447デフォルトの名無しさん
2007/07/20(金) 14:57:140448デフォルトの名無しさん
2007/07/20(金) 15:13:49お礼はできませんが、ほんとお願いします
0449デフォルトの名無しさん
2007/07/20(金) 15:16:180450デフォルトの名無しさん
2007/07/20(金) 15:16:570451 ◆DpMW3bRjps
2007/07/20(金) 15:26:22[2] 問題文(含コード&リンク):任意の文字列を入力し、その文字列の中に任意の文字が何個入っているかを出力する
プログラムのソースコードを提出しなさい。
実行例)
文字列を入力してください
yamamotoyama
さがす文字を入力してください
y
入力された文字列の中に指定された文字は2個あります
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2007年07月23日17時まで
[5] その他の制限:今回初めて文字配列というものを習いました!春から初めた初心者です
よろしくお願いします!!
0452デフォルトの名無しさん
2007/07/20(金) 15:41:33#include <stdio.h>
#define N 128
int main(void)
{
char target, str[N];
int i, count=0;
printf("文字列を入力してください\n> ");
gets(str);
printf("さがす文字を入力してください\n> ");
gets(&target);
for(i=0 ; i<N ; i++){
if( str[i] == target ) count++;
}
printf("\n入力された文字列の中に指定された文字は%d個あります\n", count);
return(0);
}
0453デフォルトの名無しさん
2007/07/20(金) 16:02:07[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4686.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々) 自宅はWindows、学内はLinux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) 自宅:Microsoft Framework SDK 学内:gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7月21日まで(おそらく日付変わるまでなら大丈夫)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
基本的に情報系の高校生でも組めるようなプログラムにしていただけると助かります。
多少複雑になってもいいので、できるだけ基本的な命令(ifとかfor)でお願いします
0454 ◆DpMW3bRjps
2007/07/20(金) 16:25:21ありがとうございます!!
0455 ◆UoNQqijD4I
2007/07/20(金) 17:08:04/tmp/cc2eSWqP.o(.text+0x38): In function `main':
: warning: the `gets' function is dangerous and should not be used.
0456デフォルトの名無しさん
2007/07/20(金) 17:13:46[1] 授業単元:C++
[2] 問題文 文字列の長さを計算する関数を作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C++
[4] 期限: (20日18:00まで]
[5] その他の制限: 以下の内容に手を加えて欲しいのですが・・・
#include <stdio.h>
#define MAX 100
string_length(char str[MAX]);
int main(void){
int i,string_len;
char string[MAX];
printf("入力:");
scanf("%s",string);
printf("文字列の大きさは%dです。",string_length(string));
return(0);
}
int string_legth(char str[MAX]){
int i;
int str_len;
for(i=0;str[i]!='\0';i++);{
}
str_len=i;
return(str_len);
}
Error: 外部シンボル '_string_length' が未解決
と、出て四苦八苦してるのでよろしくお願いします
0457デフォルトの名無しさん
2007/07/20(金) 17:15:06ワーニングだ
fgetsに帰ればおk
0458デフォルトの名無しさん
2007/07/20(金) 17:16:07> gets(&target);
コレは幾らなんでもマズい
0459デフォルトの名無しさん
2007/07/20(金) 17:19:11- string_length(char str[MAX]);
+ int string_length(char str[MAX]);
- int string_legth(char str[MAX]){
+ int string_length(char str[MAX]){
0461デフォルトの名無しさん
2007/07/20(金) 18:32:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4687.txt
チェックは甘いが。
0462電通女 ◆v1Uy5WkQ7k
2007/07/20(金) 19:41:06[1] 授業単元:関数を自作する
[2] 問題文:n!を計算するプログラムを作る
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:???
[3.3] 言語:C++ …なんですけど、先生はいつもC言語と混ざっている気がする。
#include <stdio.h>
int kaijo(int n)
{
int ans,i;
ans=i;
for(i=1;i<=n;i++) ans*=i;
return ans;
}
int main(void)
{
int n,k;
printf("n="); scanf("&d",&n);
k=kaijo(n);
printf("%d!=%d\n",n,k);
return 1;
}
とやってみたら、
n=5
10494432!=0
となってしまって…。
0463デフォルトの名無しさん
2007/07/20(金) 19:44:440464デフォルトの名無しさん
2007/07/20(金) 19:47:590465デフォルトの名無しさん
2007/07/20(金) 19:52:57int ans, i;
このときのansの値とiの値は特に決められていない
だからans = i;
としたところで何も意味がない
ans = 定数にしてやれ
0467デフォルトの名無しさん
2007/07/20(金) 19:55:12大阪電気通信大学の間違いじゃないのか・・・
0468デフォルトの名無しさん
2007/07/20(金) 19:58:03一緒に幸せになろう
0469電通女 ◆v1Uy5WkQ7k
2007/07/20(金) 19:59:05電気通信大学意以外でも電通って訳すところ、以外とたくさんあるようで。
0470デフォルトの名無しさん
2007/07/20(金) 20:03:29[2] 問題文(含コード&リンク):
・ 区間[ a, b ]において連続なる関数f ( x) について,定積分の計算を行う。
・適用する式は,シンプソンの公式f ( x)=1/(1+x2)とする。
・a=0, b=100, e=0.0000001の場合の積分値とnの値を表示する
・各変数(nを除く)の型はdoubleとする
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: visualstudio2005
[3.3] 言語:C++
[4] 期限: 2007 7/22
[5] その他の制限:標準ライブラリは禁止
よろしくおねがいします。
0471デフォルトの名無しさん
2007/07/20(金) 20:05:12printfも使っちゃだめなのか?w
0472電通女 ◆v1Uy5WkQ7k
2007/07/20(金) 20:08:25int add(int a,int b)
{
int c=a+b;
a=100;b=200;
return c;
}
int main(void)
{
int a,b,c;
a=1;b=2;c=add(a,b);
printf("%d+%d=%d\n",a,b,c);
return 1;
}
これの実行結果が1+2=3になるんですけど、最初の方の100も200も消えちゃってるってことですか?
0473デフォルトの名無しさん
2007/07/20(金) 20:12:04関数の中で宣言した変数は関数を抜けると消えてなくなるよ?
0474デフォルトの名無しさん
2007/07/20(金) 20:17:42質問をしたいなら質問スレに行け。
0475電通女 ◆v1Uy5WkQ7k
2007/07/20(金) 20:23:41初心者歓迎スレに移行しまする。
0476デフォルトの名無しさん
2007/07/20(金) 20:23:42http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4690.txt
0477 ◆UoNQqijD4I
2007/07/20(金) 20:27:130478 ◆UoNQqijD4I
2007/07/20(金) 20:30:25tin.c: 関数 `main' 内:
tin.c:12: error: too few arguments to function `fgets'
tin.c:14: error: too few arguments to function `fgets'
tin.c:16: error: `gcc' undeclared (first use in this function)
tin.c:16: error: (Each undeclared identifier is reported only once
tin.c:16: error: for each function it appears in.)
tin.c:16: error: 文法エラー before "for"
tin.c:16: error: 文法エラー before ')' token
tin.c: トップレベル:
tin.c:20: error: 文法エラー before string constant
tin.c:20: 警告: conflicting types for built-in function `printf'
tin.c:20: 警告: data definition has no type or storage class
0479デフォルトの名無しさん
2007/07/20(金) 20:33:22ttp://www.geocities.jp/ky_webid/cpp/library/000.html
こういうやつのつもりで言ったんですが、違うんですか?
課題が出るときに標準ライブラリ禁止といわれただけなので、よくわからないです
0480デフォルトの名無しさん
2007/07/20(金) 20:35:13いやゴメン、使い方はオンラインマニュアルなりで確認しようね
とりあえず
fgets(buf, sizeof(buf), stdin);
にすればおk
あと>>458
0481480
2007/07/20(金) 20:35:500482デフォルトの名無しさん
2007/07/20(金) 20:49:020483電通女 ◆v1Uy5WkQ7k
2007/07/20(金) 20:57:351+2+3+…+nをつくるんですが、
#include <stdio.h>
int sum(int n)
{
int ans,i;
ans=i;
for(i=0;i<=n;i++) ans+=i;
return ans;
}
int main(void)
{
int n,s;
printf("n="); scanf("%d",&n);
s=sum(n);
printf("1から%dまでの和は%dです。\n",n,s);
return 1;
}
こうしたら実行結果が
n=5
1から5までの和は16です。
となってしまったんですが、どこで1増えてしまってるんでしょうか?
0484デフォルトの名無しさん
2007/07/20(金) 20:59:16よく見てないけど、sum()の中の
ans=i;
0485デフォルトの名無しさん
2007/07/20(金) 20:59:420486デフォルトの名無しさん
2007/07/20(金) 20:59:44>ans=i;
何を代入してるんだ。
0487電通女 ◆v1Uy5WkQ7k
2007/07/20(金) 21:00:39ans=0;
ですね!ありがとうございました!
0488デフォルトの名無しさん
2007/07/20(金) 21:11:040489デフォルトの名無しさん
2007/07/20(金) 21:19:480490デフォルトの名無しさん
2007/07/20(金) 21:20:350491電通女 ◆v1Uy5WkQ7k
2007/07/20(金) 21:38:530492デフォルトの名無しさん
2007/07/20(金) 21:44:310493デフォルトの名無しさん
2007/07/20(金) 22:48:16C言語にprintf関数やputs関数など、多数の関数群(標準ライブラリ関数)があるように
よく読んだか?
0494デフォルトの名無しさん
2007/07/20(金) 22:49:58[2] 問題文(含コード&リンク):
次のようにプログラムを作成せよ。以下のプログラムのmainとnumber大域変数は変更しないで、
intのスタックを2つ作る(大域変数)。1つのスタックは数値をいれる。もう1つには演算子を表す数をいれる
#include<stdio.h>
#include<ctype.h>
char *p;char c[100];
int expression(void);
int term(void);
int number(void);
main(){
int ans;
while(1){
printf("Enter expression : ");
fgets(c,90,stdin);
p=&c;
if(*p == '\n')
{break;}
ans=expression();
printf("Answer:%d\n" , ans);
}
}
0495デフォルトの名無しさん
2007/07/20(金) 22:50:48int ans;
ans = term();
while(1){
if(*p == '+'){
*p++;
ans = ans + term();
}
else if(*p == '-'){
*p++;
ans = ans - term();
}
else
break;
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007年07月21日
[5] その他の制限:特になし
0496デフォルトの名無しさん
2007/07/20(金) 22:55:05翻訳ソフトにかけた日本語みたいだな。さっぱりわからん。
0497デフォルトの名無しさん
2007/07/20(金) 22:56:27こんな問題出す糞教官は死んだ方がいいな
0498デフォルトの名無しさん
2007/07/20(金) 22:58:10読み飛ばして勘違いしていました
すみません
>>470は標準ライブラリではなく
C++標準ライブラリです
0499デフォルトの名無しさん
2007/07/20(金) 23:01:05問題文は?
0500デフォルトの名無しさん
2007/07/20(金) 23:02:02std::coutとかも標準ライブラリじゃねぇの?
0501デフォルトの名無しさん
2007/07/20(金) 23:23:130502デフォルトの名無しさん
2007/07/20(金) 23:24:09書いたプログラムのmainとnumber大域変数は変更しないで、
intが2つのに変えます。1つにはスタックは数値をいれて、もう1つには演算子を表す数をいれます。
それで、+−*/を出来るようにします。
例えば
+の時は0
-の時は1
*の時は2
/の時は3 を入れるそうです。
0503デフォルトの名無しさん
2007/07/20(金) 23:24:540504デフォルトの名無しさん
2007/07/20(金) 23:29:52[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ってあるから標準ライブラリ使うなって言うトチ狂った事が多発するんじゃね?
ここで
[5] その他の制限: (どこまで習っているか、ある特定の標準ライブラリ関数は使ってはいけない等々)
って書いとけばちょっとはマシになるのでは?
0505デフォルトの名無しさん
2007/07/20(金) 23:30:58スルーするなり、非標準の関数を用いるなり、好きにすれば良いじゃん。
0506デフォルトの名無しさん
2007/07/20(金) 23:31:08[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4691.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 7/23
[5] その他の制限: 特になし
よろしくお願いします
0507デフォルトの名無しさん
2007/07/20(金) 23:34:06[6] どこまで習っているか (for文を習いました等々)
もっと具体的に、そして分けたほうがいいんじゃないか?
0508デフォルトの名無しさん
2007/07/20(金) 23:39:25括弧は使うの?
0509デフォルトの名無しさん
2007/07/20(金) 23:41:46んなコマいこと言ってたらキリが無い
0510デフォルトの名無しさん
2007/07/20(金) 23:44:49括弧はどこの括弧ですか?大域変数なら、その大域変数を用いて
プログラムを作成するみたいです
0511デフォルトの名無しさん
2007/07/20(金) 23:45:05再帰
int fib(int n) {
if (n == 0) return 0;
else if (n == 1) return 1;
else return fib(n-1) + fib(n-2);
}
非再帰
int fib(int n) {
int a = 0;
int b = 1;
while (n > 0) {
int t = a+b;
a = b;
b = t;
n = n-1;
}
return a;
}
0513デフォルトの名無しさん
2007/07/20(金) 23:52:35そのフィボナッチ数列あってる?
初項と第2項は共に1じゃなかったっけ?
0514デフォルトの名無しさん
2007/07/20(金) 23:55:37fib(1)とfib(2)を1にしたいんじゃないかな
そうすっと、fib(0)を0にしてfib(1)を1にするとちょうどよくなる
0515デフォルトの名無しさん
2007/07/21(土) 00:03:37括弧は使っても使わなくても大丈夫です。
とにかく、問題文の内容を使い動けばいいみたいです
0516デフォルトの名無しさん
2007/07/21(土) 00:04:58#include <stdio.h>
int fib1(int n) { //再帰
if (n == 0) return 0;
else if (n == 1) return 1;
else return fib1(n-1) + fib1(n-2);
}
int fib2(int n) { //非再帰
int a = 0;
int b = 1;
while (n > 0) {
int t = a+b;
a = b;
b = t;
n = n-1;
}
return a;
}
int main(void) {
int n[] = {10, 20, 30, 40, 45};
int i;
for (i=0;i<5;i++) printf("%d ", fib1(n[i]));
putchar('\n');
for (i=0;i<5;i++) printf("%d ", fib2(n[i]));
putchar('\n');
return 0;
}
0517デフォルトの名無しさん
2007/07/21(土) 00:20:07>以下のプログラムのmainとnumber大域変数
mainとnumberは大域変数なのか?
>とにかく、問題文の内容を使い動けばいいみたいです
前スレで回答があったんだがな。気がつかなかった?
0518デフォルトの名無しさん
2007/07/21(土) 00:51:20ありがとうございました
参考にさせてもらいます
0519デフォルトの名無しさん
2007/07/21(土) 02:36:413目並べのプログラムです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4692.c
何度も対戦できるようにするために列の判定の配列を初期化するようにしたらコンパイルエラーが出るようになってしまいました。
頭の中がぐちゃぐちゃになってきたので、アドバイス等いただければと思います。
正常にプログラムを実行したとき、先攻or後攻を決めることになりますが
また実装はしていませんのでお飾り状態です。
0520デフォルトの名無しさん
2007/07/21(土) 02:39:33以下のプログラムのmainとnumber大域変数は変更しないで、
1つのスタックは数値ともう1つには演算子を表す数を大域変数にすればいいと
思います
0521デフォルトの名無しさん
2007/07/21(土) 02:50:35mainは大域変数なのか?
0522デフォルトの名無しさん
2007/07/21(土) 02:58:09酔っぱらっているので、ロジックはチェックできないがw
まず、変数と関数に同じcheckを割り当てることを止めろ。
配列={0}とできるのは、配列変数の宣言をする時。
それ以外の箇所で初期化したいなら、
ループで各要素に0を代入するか、
>memset(area,sizeof(area),0);
とかするといいぞ。
0523デフォルトの名無しさん
2007/07/21(土) 03:18:49宿題の回答を依頼したいなら、
使う用語は理解してからにしてくれ。
大域をpublicと言う意味で使うにしても、
mainやnumberは変数ではないよ。
スタックと言う言葉の意味は分かっているのか?
依頼したい内容が、そもそも通じてないから、
回答が無いのじゃないかな?
0524デフォルトの名無しさん
2007/07/21(土) 03:27:57あやふやな言い方ですいません。mainとnumber大域変数は変更しないで、
intのスタックを2つ作りたいです。
1つのスタックは数値をいれる。
もう1つには演算子を表す数をいれる。です。
よろしくお願いします
0525デフォルトの名無しさん
2007/07/21(土) 03:36:44battle→put→battleって流れがあるからずっと対戦続けてるとばぐるよ。
int check[8]がグローバルである必要が無い。check関数内のみでOK。
もちろん名前は>522の言うように別でw
あと、do-whileですっきりしそうなところがいっぱいある。
別に直さなくても動くから無視してくれていいけど。
0526デフォルトの名無しさん
2007/07/21(土) 03:36:51変数じゃない物を、変更できる訳はないよ。
あなたが言う「スタック」とは何なのか
説明してくれないと、意味が分からない。
0528デフォルトの名無しさん
2007/07/21(土) 03:41:46あやふやな言い方を直したつもりなのか同じことを繰り返しているぞw
元のプログラムに「number大域変数」というものが存在しない。
よって変更するしないとかいう意味がわからない。
提示したプログラムだが途中までしかコピペしていないんじゃないか?
break;なんかで終わってるしterm関数が見当たらない。
0529デフォルトの名無しさん
2007/07/21(土) 03:44:40スタックはおそらくそのままスタックでいいかと。
2つってのが引っかかるが演算子と数値で2つ作るんだろう。
「1+2-3」って入力ならスタックA「1 2 3」スタックB「+ -」になって
popA popB popAの演算をスタックがなくなるまで行う。
って感じでエスパーしてみた。
乗除に対応しようとした時点で破綻する設計だなw
0530526
2007/07/21(土) 03:54:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4615.c
依頼者はこれが気に入らないのかな。
もちろん、この時の依頼者は別人かも試練。
だが、「スタックで実装しろ」の言う意味は
理解してからにして欲しい。
0531519
2007/07/21(土) 03:55:30checkをローカルに戻してareaの再初期化をforに変更しました。
プログラムを実行すると、途中でうまく配置できていない感じになってしまいます。
先攻後攻は先ほどと同じく未実装です。
0532デフォルトの名無しさん
2007/07/21(土) 03:57:18プログラムが途中でした。
}
return(ans);
}
int number(void){ //数値データ
int i=0;
while (isdigit(*p)){
i = i*10+(*p++)-48;
}
return(i);
}
0533デフォルトの名無しさん
2007/07/21(土) 03:58:33intのスタックを2つ作る。
1つのスタックは数値をいれる。
もう1つには演算子を表す数をいれる。です。
0534デフォルトの名無しさん
2007/07/21(土) 04:00:58書き込みが食い違いになってしまいすいません。
0535526
2007/07/21(土) 04:02:180536デフォルトの名無しさん
2007/07/21(土) 04:05:170538デフォルトの名無しさん
2007/07/21(土) 04:07:33演算子を表す数のを作ればいいのか?
0539526
2007/07/21(土) 04:13:19どういう物を作って欲しいのか、理解可能な表現にして下さい。
少なくとも宿題をそのまんま書いてくれないと、espの領域になる。
0540デフォルトの名無しさん
2007/07/21(土) 04:17:12一応黒板に書いてあったのを書き込みました
0541デフォルトの名無しさん
2007/07/21(土) 04:19:480542デフォルトの名無しさん
2007/07/21(土) 04:20:14print関数がおかしい。
ループ部分を以下みたいにしてみ。
for(i=0;i<9;i++){
if(area[i] == 0)
printf(" ");
else if(area[i] == 1)
printf("○");
else if(area[i] == 4)
printf("×");
else
printf("as");
printf("|");
if ( i % 3 == 2 )
printf("\n");
}
とりあえずは動くよ。
0543526
2007/07/21(土) 04:21:36せめてそれだけども答えてくれ。
>演算子を表す数ですか?
>一応黒板に書いてあったのを書き込みました
見落としたかも知れないから、
演算子と定数の対応表を再掲してくれ。
0544526
2007/07/21(土) 04:23:510545519
2007/07/21(土) 04:31:10>>542
挙動は正常になったようなのですが
2度目以降の対戦がうまく動作しません・・・(´・ω・`)
area[]の初期化は出来ていると思うのですが・・・
>>543
レスアン間違ってないですか?
0546519
2007/07/21(土) 04:33:00すいません、みすってました
0547526
2007/07/21(土) 04:35:27宿題の意味が分からないなら、>>531で宿題の回答にしたらいい。
この回答に不満があるなら、
この回答のどこが設問と違うか、提示すればいいだけだと思うが。
0548519
2007/07/21(土) 04:41:21私ともう一人質問をされてる方がいるんだとおもんですが・・・?
私は3目並べの話をしてるんですが?
0549526
2007/07/21(土) 04:46:50済まん、酔っぱらいだ
>>547で書いた>>541は>>540の間違いだ。訂正する。
0550519
2007/07/21(土) 05:08:59先攻or後攻も考慮してみました。
課題の指示としては
1,二人対戦・com対戦可能
2,毎回com/man対戦・終了を選ぶ
というものです。
このプログラムでみたせてるでしょうか?
私の中ではOKだとは思うのですが
できてねーぞごるぁ! とかあればおねがいします
0551デフォルトの名無しさん
2007/07/21(土) 05:14:31私自身が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。
↓↓↓
【ブログ 〜即出会えるサイト】http://deaigets.blog97.fc2.com/
0552519
2007/07/21(土) 05:18:33もう一つ指示があったのを忘れていました。
・戦歴の表示
というのがあったので、追加しました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4695.c
評価お願いします。
0553519
2007/07/21(土) 05:22:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4696.c
0554デフォルトの名無しさん
2007/07/21(土) 07:22:22ソース流し読みしただけだけど敢えて問題があるとするなら
ループでscanfを使ってるくらい?
0555デフォルトの名無しさん
2007/07/21(土) 09:35:31良くできてると思いますよ。
0556519
2007/07/21(土) 10:06:420557 ◆yb5ufjhaCo
2007/07/21(土) 11:21:02ほんとに初歩の質問ですいません
1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
<次のプログラムの断片は誤りを含んでいるところがある。
その誤りの理由を述べ、正しい動作をするようにその箇所を修正した
プログラム断片全てを書け。ただし無関係のところまで変えないこと。
[3] 環境
[3.1] OS: Linuxです
[3.2] コンパイラ名とバージョン: gcc です
[3.3] 言語: Cでお願いします。
[4] 期限: 25日いっぱいまでです。
0558 ◆yb5ufjhaCo
2007/07/21(土) 11:22:35(1)
if(c = '\0')
n++;
(2)
while(c = getchar() !=EOF)
putchar(c);
(3)
for(i = 0; i < 10; j++){
total += i;
}
(4)
switch(c){
case 'y':
state = 1;
case 'n':
state = 0;
default:
state = -1;
}
お願いします…
0559 ◆yb5ufjhaCo
2007/07/21(土) 11:23:13if(k = 0)
1++;
else
1--;
(6)
for (i = 0; i < 8; j++){
b[i] -= a[i+j];
}
(7)
switch(c){
case 'y':
count--;
case 'n':
count++;
default:
break;
}
0560デフォルトの名無しさん
2007/07/21(土) 11:28:312:(c=getchar())
3:無限るーっぷって怖くね?
4:break;
5:=, 1++, 1--
6:3に同じ
7:break;
違うかも
0561519
2007/07/21(土) 13:07:12どういうコードを書けばいいでしょうか?
0562 ◆M2clACoxQA
2007/07/21(土) 13:28:04[2] 問題文(含コード&リンク):
#include <stdio.h>
int main(void)
{
int i = 1;
int j = 0;
do{
j = j + i;
i += 2;
}while(i<=99);
printf("1から99までの奇数の総数は%dです。\n", j);
return 0;
}
以上の「奇数の総和」を求めるプログラムを関数化して作成しなさい。
開始値と終了値を引数として使用し、main関数で確認する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual studio2005
[3.3] 言語: C言語
[4] 期限: 2007年7月21日15:00まで
[5] その他の制限:
習ったのは、if-else文 do-while文 for文。
sum関数を使うと言っていました。
まだ習いたてなので、あまり難しいのはわかりません。
よろしくお願いします・・・
0563デフォルトの名無しさん
2007/07/21(土) 13:32:20お前さんのところで作ったsum関数とやらは知らんがそれ見ながらdo{}whileの処理を
sum関数の要領でmain文の外に追い出せばいいだけ。
なるほど・・・そういうことだったんですね。
変に難しいことを考えてしまいました^^;
親切に教えてくださり、ありがとう御座いました!!
0565デフォルトの名無しさん
2007/07/21(土) 14:13:55エラーで書けなくなった為遅くなりました。
checkはまだ習っていません。何通りかやり方があると
言っていたので他にも実行するプログラムはありますか?
何度もあやふやな言い方だと迷惑だと思うので、友達に確認してから
もう一度書き込みします。
よろしくお願いします
0566デフォルトの名無しさん
2007/07/21(土) 14:31:37授業中に提示された関数をただ使ってるだけだならちゃんと話聞いとけ馬鹿で終了だし。
他に実行できるプログラムはあると言えるけど、
>>519の要件満たせばいいだけならプログラマの数だけやり方はあると言えるから、
質問自体の意味がない。
何がしたいのかはっきりすればどうすればいいのか言えるけど、
何がしたいのかを言わないようじゃエスパーに頼るしかないし。
0567519
2007/07/21(土) 14:37:48私は565じゃないですよ!!!!!
0568デフォルトの名無しさん
2007/07/21(土) 14:42:14お前さんが>>494なら、>>547は>>594にあるとおり、ただの勘違いのようだから
スルー汁
>>530のレスは読んだのか?
0570デフォルトの名無しさん
2007/07/21(土) 14:48:50だったらgdgdレスしてないで答えなきゃ良いじょのいこっ(えなり君風に)
0571デフォルトの名無しさん
2007/07/21(土) 15:04:37>>530は読みました。>>530自体が問題のプログラムで。
問題は、/*-+の順に計算できるようにする。そのためにint2つ作る。
1つは数字、1つは記号(/*-+)
0572デフォルトの名無しさん
2007/07/21(土) 15:11:110573519
2007/07/21(土) 15:17:54>>561をおねがいします!
0574デフォルトの名無しさん
2007/07/21(土) 15:48:08check関数内で、check変数の値が2になっているラインに置けばいい。
ってか、checkの名前がかぶってるのをやめたほうがいいって言われてなかった?
0575デフォルトの名無しさん
2007/07/21(土) 16:01:30[2] 問題文(含コード&リンク):
整数n、rを入力し全組み合わせを配列に配置するプログラムを作成しなさい。
例えばn=4,r=2の場合
{{1,2},{1,3},{1,4},{2,3},{2,4},{3,4}}
となる。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 7/25
[5] その他の制限: 特に無し
画面に出力するだけなら何とかなりそうなんですが配列に入れるとなると
もう何がなんだか…
0576デフォルトの名無しさん
2007/07/21(土) 16:06:56配列なんて出てくるか?
2重ループで一発だと思うんだが?違う?
0577デフォルトの名無しさん
2007/07/21(土) 16:08:300578デフォルトの名無しさん
2007/07/21(土) 16:16:34動的確保するなりして入れればいいだけじゃないか。
表示できるなら配置もできるだろ。
0579デフォルトの名無しさん
2007/07/21(土) 16:20:31私自身が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。
フリメ登録OKなサイトを拡充しました!
↓↓↓
【ブログ 〜即出会えるサイト】http://deaigets.blog97.fc2.com/
0580デフォルトの名無しさん
2007/07/21(土) 16:34:05最小限の実装.変な式を入れたときにどうなるかは知らない.
<変更点>
・以下のグローバル変数を追加
int ops[100], vals[100], optop, valtop;
・term()は使わないので消していい
・expression() の内容を以下に変更
int expression() {
valtop = optop = -1;
vals[++valtop] = number();
while (1) {
int opcode;
if (*p == '+') opcode = 1;
else if (*p == '-') opcode = 2;
else if (*p == '*') opcode = 3;
else if (*p == '/') opcode = 4;
else opcode = 0;
while (optop >= 0 && ops[optop] >= opcode) {
if (ops[optop] == 1) vals[valtop-1] += vals[valtop];
if (ops[optop] == 2) vals[valtop-1] -= vals[valtop];
if (ops[optop] == 3) vals[valtop-1] *= vals[valtop];
if (ops[optop] == 4) vals[valtop-1] /= vals[valtop];
valtop--; optop--;}
if (opcode == 0) break;
ops[++optop] = opcode;
*p++;
vals[++valtop] = number();}
if (valtop != 0) printf("some error\n");
return vals[0];}
0581デフォルトの名無しさん
2007/07/21(土) 16:40:46なんで2次配列なのか小一時間問い詰めたい
0582デフォルトの名無しさん
2007/07/21(土) 16:44:54なんで2重ループなのか小一時間問い詰めたい
0583デフォルトの名無しさん
2007/07/21(土) 16:55:27表示できるといっても再帰で表示させてるんで
うまいこと添字があわなくて…
配列に配置させるのに利用できないんです
0584デフォルトの名無しさん
2007/07/21(土) 17:16:20http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4698.c
0585519
2007/07/21(土) 17:31:19名前が被ってるというと?
0586デフォルトの名無しさん
2007/07/21(土) 17:43:21http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4699.txt
2次元配列ではなくポインタ配列だが。
0587デフォルトの名無しさん
2007/07/21(土) 17:44:29関数と変数が同じ名前ってこと。
問題ないけどソース読みづらい。
0588デフォルトの名無しさん
2007/07/21(土) 18:28:35[2] 問題文(含コード&リンク):
ゼータ関数は次式で定義される。
ζ(s) = (1/n^s)
s=6のとき、π^6/945に収束する。これを確認するプログラムを作製せよ。
ただし、級数の和を無限個とるのではなく、有限の範囲内で(n=100)で計算せよ。
条件1:倍精度型で計算し、6パターン以上は比較できるようにすること。
条件2:二重ループを使うこと。そのため、外側ループでは初期値をmとして,
nまでm刻みで値を変更し、内側ループでは該当する値に応じたゼータ関数値を算定できるようにコーティングせよ。(例えば、n=1000と、m=100に設定した場合、nの値を10パターン変化させることができる。)
[3] 環境
[3.1] OS:MAC OS X
[3.2] コンパイラ名 gcc
[3.3] 言語:C
[4] 期限:来週の月曜日まで
[5] その他の制限: とくに無し
条件が多いですが、よろしくお願いします。
0589デフォルトの名無しさん
2007/07/21(土) 18:43:310590デフォルトの名無しさん
2007/07/21(土) 19:03:58同じ名前で変数と関数があったら、
普通、再定義エラーにならないか?
0591デフォルトの名無しさん
2007/07/21(土) 19:14:430592デフォルトの名無しさん
2007/07/21(土) 19:20:330593デフォルトの名無しさん
2007/07/21(土) 19:22:030594デフォルトの名無しさん
2007/07/21(土) 19:23:010596デフォルトの名無しさん
2007/07/21(土) 19:29:31で、comに考える力を与えてみた。
int com_put(){
int input;
do{
input = rand()%9;
}while(area[input] != 0);
if (area[0] + area[1] + area[2] == 8) input = (area[0] == 0)*0 + (area[1] == 0)*1 + (area[2] == 0)*2;
else if(area[3] + area[4] + area[5] == 8) input = (area[3] == 0)*3 + (area[4] == 0)*4 + (area[5] == 0)*5;
else if(area[6] + area[7] + area[8] == 8) input = (area[6] == 0)*6 + (area[7] == 0)*7 + (area[8] == 0)*8;
else if(area[0] + area[3] + area[6] == 8) input = (area[0] == 0)*0 + (area[3] == 0)*3 + (area[6] == 0)*6;
else if(area[1] + area[4] + area[7] == 8) input = (area[1] == 0)*1 + (area[4] == 0)*4 + (area[7] == 0)*7;
else if(area[2] + area[5] + area[8] == 8) input = (area[2] == 0)*2 + (area[5] == 0)*5 + (area[8] == 0)*8;
else if(area[0] + area[4] + area[8] == 8) input = (area[0] == 0)*0 + (area[4] == 0)*4 + (area[8] == 0)*8;
else if(area[2] + area[4] + area[6] == 8) input = (area[2] == 0)*2 + (area[4] == 0)*4 + (area[6] == 0)*6;
else if(area[0] + area[1] + area[2] == 2) input = (area[0] == 0)*0 + (area[1] == 0)*1 + (area[2] == 0)*2;
else if(area[3] + area[4] + area[5] == 2) input = (area[3] == 0)*3 + (area[4] == 0)*4 + (area[5] == 0)*5;
else if(area[6] + area[7] + area[8] == 2) input = (area[6] == 0)*6 + (area[7] == 0)*7 + (area[8] == 0)*8;
else if(area[0] + area[3] + area[6] == 2) input = (area[0] == 0)*0 + (area[3] == 0)*3 + (area[6] == 0)*6;
else if(area[1] + area[4] + area[7] == 2) input = (area[1] == 0)*1 + (area[4] == 0)*4 + (area[7] == 0)*7;
else if(area[2] + area[5] + area[8] == 2) input = (area[2] == 0)*2 + (area[5] == 0)*5 + (area[8] == 0)*8;
else if(area[0] + area[4] + area[8] == 2) input = (area[0] == 0)*0 + (area[4] == 0)*4 + (area[8] == 0)*8;
else if(area[2] + area[4] + area[6] == 2) input = (area[2] == 0)*2 + (area[4] == 0)*4 + (area[6] == 0)*6;
area[input] = 4;
}
0597デフォルトの名無しさん
2007/07/21(土) 21:56:05どうもありがとうございます。
なんか今更情報科にきたことを後悔…
複雑になると頭がこんがらがる
0598デフォルトの名無しさん
2007/07/21(土) 22:32:47[2]問題:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4700.txt
[3]環境
OS:リナックス
コンパイラ:gcc
言語:C
[4]7月23日
よろしくお願いします。
0599デフォルトの名無しさん
2007/07/21(土) 22:41:33#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
int i, j, s = 6, n = 100, m = 10;
double d = 0;
for(i = m; i <= n; i += m) {
for(j = i-m+1; j < i; j++) d += 1/pow(j,s);
printf("n = %i\t:\t%.15f\n", i, d);
}
printf("π^6/945:\t%.15f\n", pow(M_PI,s)/945);
return 0;
}
0600デフォルトの名無しさん
2007/07/21(土) 22:55:00[2] 問題文(含コード&リンク):以下のプログラムのmainとnumberは変更しないで、
intのスタックを2つ作る。1つは数値をいれる。もう1つには演算子を表す数をいれる
#include <stdio.h> #include <stdlib.h> #include <ctype.h>
char *p; char c[100]; int expression(void);int term(void);
int number(void);main(){ int ans;while(1){
printf("Enter expression : ");fgets(c,90,stdin);
p=c;if(*p == '\n') break;ans = expression();
printf("Answer:%d\n", ans);}}int expression(){
int ans;ans = term();while(1){if(*p == '+'){
p++;ans = ans + term();}else if(*p == '-'){
p++;ans = ans - term();}else break;}
return(ans);}int term(){int ans,x;ans = number();
while(1){if(*p == '*'){p++;ans = ans * number();}
else if(*p == '/'){p++;x = number();
if(x == 0){printf("Division by 0\n");
exit(1);}ans = ans / x;}
else break;}return(ans);}
int number(){int i=0;while (isdigit(*p)){i=i*10+(*p++)-48;}
return(i);}
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 年07月23日
[5] その他の制限: 特になし
0601デフォルトの名無しさん
2007/07/21(土) 23:04:370602デフォルトの名無しさん
2007/07/21(土) 23:09:04インクルードくらいは改行しなよ、ナス!
0603デフォルトの名無しさん
2007/07/21(土) 23:26:13600です。すいません。改行が多いと言われてしまったので。
確かに読みずらいですよね。でも、お願いします。
0604デフォルトの名無しさん
2007/07/21(土) 23:27:08上のほう見ろ、答えあるから
0605デフォルトの名無しさん
2007/07/21(土) 23:33:42【アップローダー==ラウンジ】(質問が長い時はココ使うと便利
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0607デフォルトの名無しさん
2007/07/21(土) 23:38:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4701.c
0608デフォルトの名無しさん
2007/07/21(土) 23:42:11エラーはカンマとピリオドを打ち間違ってるところ、
警告は戻り地が無い関数なのにintで宣言してるところ。
0609デフォルトの名無しさん
2007/07/21(土) 23:47:36同じ書き込みがあったんですね。
ありがとうございます
0610デフォルトの名無しさん
2007/07/21(土) 23:54:29あれで動くってどんな環境だよwww
0611デフォルトの名無しさん
2007/07/22(日) 00:02:17助かりました☆
0612デフォルトの名無しさん
2007/07/22(日) 00:02:55ここ> animal=(animal+direction+road_size)%road_size;
と、ここ> fp=fileopen("data");
仕様と違うと思う
0613デフォルトの名無しさん
2007/07/22(日) 00:06:51道の右端と左端はつながってないの?
>>612
ファイル名の data1.txt data2.txt data3.txt ... になるんだけどどの辺が違う?
0614デフォルトの名無しさん
2007/07/22(日) 00:19:46同じだけど一応オレも。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4702.c
0615デフォルトの名無しさん
2007/07/22(日) 00:28:05thx
見落としてた
>>598
>>607 はキーボードからの入力になってないので >>614 をどうぞ
0616デフォルトの名無しさん
2007/07/22(日) 00:33:28関数 fileopen 中の
fclose(fp);
↓
else fclose(fp);
0617デフォルトの名無しさん
2007/07/22(日) 00:49:50C言語の筆記問題はスレ違いになるのでしょうか?
0618デフォルトの名無しさん
2007/07/22(日) 00:50:340619デフォルトの名無しさん
2007/07/22(日) 00:51:12すれ違いなら優しいおじさんが誘導してくれるかもしれない。
0620617
2007/07/22(日) 00:58:38食指は動かないかもしれませんが、後でUPしてみます
0621デフォルトの名無しさん
2007/07/22(日) 01:10:02みんな寝ちゃうぞ
0622デフォルトの名無しさん
2007/07/22(日) 01:23:50この数列の、20項以降を表示させる関数を作れといわれたのですが
分かりませんでした
0623デフォルトの名無しさん
2007/07/22(日) 01:28:070は入らないのか?10台、20台は入らないのか?
数列の並びがよくわからん。
0624617
2007/07/22(日) 01:30:15[1] 授業単元: C言語 基礎&応用
[2] 問題文(含コード&リンク):
http://www-2ch.net:8080/up/download/1185034647068718.NcCDgq
※jpegファイルが6つ入ってます(No1〜No6)
No3〜No6までが、今回やってもらいたいファイルです
No1とNo2は自分でも問題無かったので入れる必要は無かったのですが
テスト形式なので(100点満点)、中途半端に抜かすのもどうかと思い入れました
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:Visual studio.2005
[3.3] 言語:C言語
[4] 期限:23日のAM1時くらいまでが好ましいですが、25日くらいまで大丈夫です
[5] その他の制限:
0625デフォルトの名無しさん
2007/07/22(日) 01:56:58それ英語のなぞなぞ (答えTwo thousands)
0626デフォルトの名無しさん
2007/07/22(日) 02:06:35・・・ボケは私です。
4-1 for(i=0;i<N;i++)b[i]=a[i]; 4-2 1
5-1 t1.a+t1.b; 5-2 5
6-1 4 6-2 7
7-1 return y; 7-2 (a)5 (b)20
8-1 (a) i=0; (b) (i<10) (c) += 8-2 84 8-3 6.800000 + 11.200000 i
8-4 (a) NULL (b)cellp->next 8-5 (a) b==0 (b) gcd( b, a%b )
9-1 変数 9-2 型 9-3 typedef 9-4 定義 9-5 桁オチ 9-6 情報欠落
かなりテキトー。特に用語のあたりとか。
0627デフォルトの名無しさん
2007/07/22(日) 02:10:56答えは >>625 の言葉でググったら出てきたけど
プログラムで書こうとすると難しいよ
0628デフォルトの名無しさん
2007/07/22(日) 02:16:26No.3
[4]
(1) : (a) 0 (b) N (c) b[i] = a[i]
(2) : (a) 1
[5]
(a) t1.a + t1.b (b) 5
[6]
(a) 4 (b) 7
[7]
・・・・・・・もうめんどくせ
0629デフォルトの名無しさん
2007/07/22(日) 03:17:14#include <stdio.h>
int main(){int *a,*b,*c,*d,i=0,val;
int n[]={0,2,4,6,-1};int m[]={0,3,4,5,6,-1};
for(a=m;*a>=0;a++)for(b=n;*b>=0;b++)
for(c=m;*c>=0;c++)for(d=n;*d>=0;d++){
val=((*a*10+*b)*100+*c)*10+*d;i++;
if((i>20)&&(i<=320)) printf("%d\n", val);}return 0;}
0630デフォルトの名無しさん
2007/07/22(日) 04:37:34それで単位を取れるかどうかとなると、学生がちょと河合祖。
0631519
2007/07/22(日) 11:12:250632デフォルトの名無しさん
2007/07/22(日) 11:16:21でもmainだけは戻り値がいらなくてもintにするのが習慣みたいね
0633デフォルトの名無しさん
2007/07/22(日) 11:19:41また1つ賢くなった、ありがとう
0634デフォルトの名無しさん
2007/07/22(日) 11:23:57お前は要らないかもしれないけど、システムにとって必要だよ。
0635519
2007/07/22(日) 11:35:300636デフォルトの名無しさん
2007/07/22(日) 11:37:10#include <stdio.h>
int main(void)
{
int i;
for(i = 1; i < 100; i++)
printf("%ld\t", i%4*2 + i/4*10 + (i < 4 ? 0 : 20));
return 0;
}
英語のなぞなぞって何?
0637617
2007/07/22(日) 13:34:20参考にさせていただきます!
0638デフォルトの名無しさん
2007/07/22(日) 15:14:48習慣じゃなく規格で決まっている。
0639デフォルトの名無しさん
2007/07/22(日) 15:50:54[2] 問題文(含コード&リンク):
行列のサイズ n, m, l と,それに応じた n×m, m×l の行列が記録されたファイルを食べて,結果を別のファイルに書き出そう.
%cat testfile
3
2
3
3.2 4.8
8.2 6.5
4.3 -2.2
-5.0 6.2 8.9
3.5 -0.2 -5.8
であるとする.3×2, 2×3の行列の積をとり,3×3の行列を得る事になる.そこでプログラムを開発して、
% ./prog0 testfile ANSWER
とすれば,積が ANSWER というファイルに書き込まれるようにせよ.argv[], argc, fscanf(), fprintf() を総動員する.
[3] 環境
[3.1] OS: (Windows/Linux/等々) Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7/25まで
よろしくおねがいしますm(_ _)m
0640デフォルトの名無しさん
2007/07/22(日) 15:51:45ワロタ
0641デフォルトの名無しさん
2007/07/22(日) 16:07:42もうマジで日本語でおk
0642デフォルトの名無しさん
2007/07/22(日) 16:11:50n
m
l
行列1
行列2
って形式なんだろう
0643デフォルトの名無しさん
2007/07/22(日) 16:31:25>そこでプログラムを開発して、
出題者はどういうノリなんだ。
0644デフォルトの名無しさん
2007/07/22(日) 16:35:10#include <stdio.h>
#define N 128
int main(int argc, char *argv[])
{
FILE *fpin, *fpout;
int n, m, l, i, j, k;
double mat1[N][N], mat2[N][N], mat3[N][N];
if(argc < 3 || (fpin = fopen(argv[1], "r")) == NULL || (fpout = fopen(argv[2], "w")) == NULL) return 1;
fscanf(fpin, "%d%d%d", &n, &m, &l);
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
fscanf(fpin, "%lf", &mat1[i][j]);
for(i = 0; i < m; i++)
for(j = 0; j < l; j++)
fscanf(fpin, "%lf", &mat2[i][j]);
for(i = 0; i < n; i++){
for(j = 0; j < l; j++){
mat3[i][j] = 0;
for(k = 0, mat3[i][j] = 0; k < m; k++)
mat3[i][j] += mat1[i][k]*mat2[k][j];
fprintf(fpout, "%f ", mat3[i][j]);
}
fprintf(fpout, "\n");
}
fclose(fpin), fclose(fpout);
return 0;
}
0645デフォルトの名無しさん
2007/07/22(日) 16:36:270646デフォルトの名無しさん
2007/07/22(日) 16:45:220647デフォルトの名無しさん
2007/07/22(日) 16:53:38出来ました。ありがとうございますm(_ _)m
0648デフォルトの名無しさん
2007/07/22(日) 17:39:100649デフォルトの名無しさん
2007/07/22(日) 17:46:050650デフォルトの名無しさん
2007/07/22(日) 18:52:14| 1 6 11 16 21 |
| 2 7 12 17 22 |
| 3 8 13 18 23 |
| 4 9 14 19 24 |
| 5 10 15 20 25 |
0651デフォルトの名無しさん
2007/07/22(日) 18:52:45#define MSIZE 5
void swap(int *a, int *b) {
int c;
(a) = *a;
*a = *b;
*b = (a) ;
}
void main(void) {
int i, j, mat[MSIZE][MSIZE] = { { 1, 2, 3, 4, 5},
{ 6, 7, 8, 9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25} };
for(i = 0; i < MSIZE - 1; i++) {
for(j = (b) ; j < (c) ; j ++) {
swap( (d) , (e) );
}
}
for(i = 0; i < MSIZE; i ++) {
printf("|");/25小計
for(j = 0; j < MSIZE; j ++) {
printf("%3d ", mat[i][j]);
}
printf(" |\n");
}
}
さっぱりわかりません
よろしくお願いします
0652デフォルトの名無しさん
2007/07/22(日) 18:53:43入れて,下の出力のように10円刻みに分布をとることを考える.
そのためのプログラムを下に示す.空白を補え.
80- 89円: 2
90- 99円: 2
100-109円: 1
110-119円: 2
120-129円: 1
130-139円: 2
0653デフォルトの名無しさん
2007/07/22(日) 18:55:33#define C_NUM 6
void makedist(int a[10], int b[C_NUM]) {
int i;
for(i = 0; i < 10; i ++) {
b[ (a) ] += 1;
}
}
void main(void) {
int price[10] = {80, 120, 111, 130, 139, 95, 98, 89, 105, 119};
int dist[C_NUM], i;
for(i = 0; i < C_NUM; i++) {
dist[i] = (b) ;
}
makedist( (c) , dist);
for(i = 0; i < C_NUM; i++) {
printf("%3d-%3d円: %3d\n", (d) ,
(e) , dist[i]);
}
}
これもさっぱりです・・・
教えてください
0654デフォルトの名無しさん
2007/07/22(日) 18:58:12(a)a[i]/10-8
(b)0
(c)price
(d)80 + i * 10
(e)89 + i * 10
0655デフォルトの名無しさん
2007/07/22(日) 19:08:49a:c
b:0
c:i
d:mat[i][j]
e:mat[j][i]
0656655
2007/07/22(日) 19:10:03d:mat[i][j]→&mat[i][j]
e:mat[j][i]→&mat[j][i]
0658デフォルトの名無しさん
2007/07/22(日) 19:23:540659デフォルトの名無しさん
2007/07/22(日) 19:29:39ニュートン法によって作りたい.
ただし,初期値x0は十分に解に近いところから出発するものとする.
次の[1]から[4]の空欄(a)から(f)を埋めよ.
[1]
ニュートン法でaの逆数1/aを求めるためには
f(x)=(a)のゼロ点を求めればよい.
[2]
[1]の式に対して,ニュートン法による第n+1回目の反復による値Xn+1は,
第n回目の反復による値Xnを用いて
Xn+1=(b)と表される.
0660デフォルトの名無しさん
2007/07/22(日) 19:30:11[2]で示した反復によるアルゴリズムを実現すると次のようになる.
#include <stdio.h>
void main(void) {
double u, v;
int i;
printf("正数を入力して下さい.\n");
scanf( (c) );
printf("逆数に十分近い初期値を入力して下さい.\n");
scanf( (d) );
for(i = 0; i < 3; i ++) {
u = (e) ;
printf("%5.3f\n", u);
}
}
[4]
[3]で作ったプログラムを実行し,「3」,「0.5」の順に入力した際に
for文の中のprintf関数による出力結果をすべて示すと次のようになる.
(f)
0661デフォルトの名無しさん
2007/07/22(日) 20:37:35(a) 1/x - a {x = 1/a → 0 = 1/x - a だから}
(b) Xn*(2-a*Xn) {Xn-f(Xn)/f'(Xn) →Xn-(1/Xn-a)/(1/(-Xn*Xn))だから}
(c) "%lf",&v (d) "%lf",&u (e) u*(2-v*u)
(f)
0.5
0.250
0.332
0662デフォルトの名無しさん
2007/07/22(日) 20:37:52出力結果(1)は「tuat」となった.
空欄(a)〜(f)を埋めて次のプログラムを完成させ,
出力結果(2)を空欄(g)に記入せよ.
0663デフォルトの名無しさん
2007/07/22(日) 20:39:44(a) ;
void main(void) {
char code[16] = "GHIGFACDFDBA";
char ret[16] = "";
myreplace(" (b) ", ret);
printf("%s\n", ret); ・・・出力結果(1)
myreplace(code, ret);
printf("%s\n", &ret[5]); ・・・出力結果(2)
}
void myreplace(char org[ ], char ret[ ]) {
char string1[16] = (c) ;
char string2[16] = "v)(^e_tua";
int i, j;
for(i = 0; org[i] != (d) ; i ++) {
for(j = 0; string1[j] != (d) ; j ++) {
if(org[i] == string1[j]) {
(e)
}
}
}
(f) /* 終端記号 */
}
出力結果
(g)
0664デフォルトの名無しさん
2007/07/22(日) 20:42:23(f)
0.250
0.313
0.332
0665デフォルトの名無しさん
2007/07/22(日) 21:04:07[2] 問題文(含コード&リンク):
2 つのchar 型配列x[],y[] に格納された文字列を入れ替えるプログラムを作成せよ.
ただし入替え処理には,関数swap array(char *,char *) を作成して用いること.
% ./test
入替前のx: "abcdefgh"
入替前のy: "ABC"
関数swap_array() を呼び出しました
入替前のx: "ABC"
入替前のy: "abcdefgh"
%
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C)
[4] 期限: (07月23日00:00まで)
[5] その他の制限:ポインタまで習ってます
よろしくおねがします
0666デフォルトの名無しさん
2007/07/22(日) 21:05:330667デフォルトの名無しさん
2007/07/22(日) 21:39:34(a) void myreplace(char org[], char ret[]); (b) GHIG (c) "ABCDEFGHI"
(d) '\0' (e) ret[i] = string2[j]; (f) ret[i] = '\0'; (g) v(^_^)v
0668デフォルトの名無しさん
2007/07/22(日) 22:05:25[2] 問題文(含コード&リンク):
1start で示されるアドレスからlength バイト分だけの領域に関して,
値val で埋める関数cmemset(char*start, int value, int length) を作成せよ.
さらに,malloc() 関数を用いてchar 型配列のメモリ領域を確保し,
cmemset() が正確に動作することを確認
(メモリ領域の内容を整数値として表示)するプログラムを作成せよ.
%./kadai
4 -89 0 1 5 43 ... 112 ← cmemset 使用前
0 0 0 0 0 0... 0 ← 0 で埋めたとき
88 88 88 88 88 88 ... 88 ← 88 で埋めたとき
%
2src で示されるアドレスからlength バイト分だけの領域を,dest で示される領域へコピーする関数
cmemmove(char *dest, char *src, size t length) を作れ.なお,送り元の領域と送り先の領
域がオーバーラップしていても,正しくコピーできる仕様にせよ.さらに,malloc() 関数を用いて
char 型配列のメモリ領域を確保し,cmemmove() が正確に動作することを確認(メモリ領域の内容を
整数値として表示)するプログラムを作成せよ.
% ./kadai
1 2 3 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 ← cmemmove 実行前
1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 0 0 0 ← 0 番目から5 個を10 番目へ
1 2 3 1 2 3 4 5 0 0 1 2 3 4 5 0 0 0 ← 0 番目から5 個を3 番目へ
%
[3] 環境
[3.1] OS: (Linux3.2)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C)
[4] 期限: (07月23日まで)
[5] その他の制限:おねがいします
0669デフォルトの名無しさん
2007/07/22(日) 22:24:590670デフォルトの名無しさん
2007/07/22(日) 22:27:260671デフォルトの名無しさん
2007/07/22(日) 22:41:460672デフォルトの名無しさん
2007/07/22(日) 22:43:250673デフォルトの名無しさん
2007/07/22(日) 22:43:590674671
2007/07/22(日) 22:45:03村上ファンド事件についてインサイダー取引という単語を用いて100字以内にまとめよ
です
0675デフォルトの名無しさん
2007/07/22(日) 22:47:020676デフォルトの名無しさん
2007/07/22(日) 22:51:210677671
2007/07/22(日) 23:03:480678デフォルトの名無しさん
2007/07/22(日) 23:11:30ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4711.c
ココの人、みんな"わかる方"だからさ。そういう言い方なんか違うと思うよ。
0679デフォルトの名無しさん
2007/07/22(日) 23:16:220680デフォルトの名無しさん
2007/07/22(日) 23:31:17{
const unsigned char ch = value;
while(num--)
*ptr++ = ch;
return start;
}
char *cmemmove(char *dest, char *src, size t length)
{
while(length--)
*(dest+length) = *src;
return dest;
}
0681デフォルトの名無しさん
2007/07/22(日) 23:34:45[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4712.zip
[3] 環境
[3.1] OS: (Mac)
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: (C)
[4] 期限: ([2007年7月23日9:00まで] )
[5] その他の制限:問題文、プログラム内で使うデータファイル、自分で作ったソースをzipにしました
何故動かないのかわからないのでご教授下さいませ
0682デフォルトの名無しさん
2007/07/22(日) 23:35:25昇順、降順を切り替えないとおかしなことになるよ
0683デフォルトの名無しさん
2007/07/22(日) 23:45:59その汚いソースをなんとか動くようにしてくださいっていうなら絶望的だな
どっかしらでsegmentation faultが起きてるから頑張って探しな
0684デフォルトの名無しさん
2007/07/22(日) 23:52:08大分未来からお越しのようですね
0685デフォルトの名無しさん
2007/07/23(月) 00:14:45[2] 問題文(含コード&リンク):整数集合 { 1, 2, 3, 4, 5 } と { 2, 4, 6 } の 共通集合を求め、表示するプログラム
集合をリストを用いて実現し、emptySet, inSet, addElem, intersection, printSet, freeSet を リストを用いた集合操作に変更しなさい。
コード:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4713.c
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2007/7/25 15:00
プログラムのコード自体はやってる最中なのでめちゃくちゃですが気にしないでください。
コンパイルは特にエラーもなく通ります。
実行したあと
%./a.out
と出るだけでそこから何も起きません。
無限ループに陥ってる可能性を考えてmain関数内にprintfを設置しました。
コードを見てもらえばわかるのですが、main関数内の2行目に配置したprintfすら実行されません(1行目はint型の変数宣言)。
これはmain関数が実行されていないということでしょうか?
原因解明お願いします。
0686デフォルトの名無しさん
2007/07/23(月) 00:16:28enter と enter2 で xtopx->child1 や xtopx->child2 が使われているけど
xtopx 自体が初期化されていない気がする
0687デフォルトの名無しさん
2007/07/23(月) 00:17:310688685
2007/07/23(月) 00:19:53このプログラムは、元は配列を用いて集合を実現してました。これをリスト構造に改編しろ。
という問題です。
0689686
2007/07/23(月) 00:27:52あとグローバルでstruct member **result; が宣言されているのに
search および search2 で ローカルで struct member **result; が宣言されている
ローカル側のresult;に代入しているから
result=(struct member **)malloc(sizeof(struct member *)*(MEMBER_MAX+1));
で確保した領域が保存されていない.returnで戻しているけどmain でその戻り値保存していないし
というかこのresultのポインタリストはどこで使われているのだろうか?
0690デフォルトの名無しさん
2007/07/23(月) 00:32:120691デフォルトの名無しさん
2007/07/23(月) 00:34:02×型定義に
○型定義前に
普通は構造体定義してから変数宣言だよね?
0692686
2007/07/23(月) 00:35:39>>681
Top1 と Top2 は 0 か NULL で初期化されていないので
enter と enter2 の if(!Top1){ } が実行されずに
top=Top1; while(top){ } で失敗する可能性がある
(HDDから怪しい音が・・・こわい)
0693デフォルトの名無しさん
2007/07/23(月) 00:42:08int inSet(ElementP s,int v){/*変更可*/
while(s->next!=NULL){
if(s->data==v){
return 1;
}
}
return 0;
}
ここで無限ループしてる
0694デフォルトの名無しさん
2007/07/23(月) 00:46:510695685
2007/07/23(月) 00:46:57指摘ありがとうございます。
しかし、修正してみたものの症状変わらず・・・。
0697デフォルトの名無しさん
2007/07/23(月) 00:48:48{
if(p->data < val->data)
val=p;
p=p->next;
}
ここでも無限ループしてる
0698デフォルトの名無しさん
2007/07/23(月) 01:04:24流し読みだけど、ElementP emptySet(){ return NULL; }で。
やり方は他にもあるけど、少なくとも次がない=空じゃないです。そうすると
mallocは、s==NULLのとき、addElemでして、return sってことになるかと。
void addElem(ElementP s,int v) → ElementP addElem(ElementP s,int v)
ですね。あと、freeSetが最初しか開放してないから再帰でnextたどってく感じで。
0699デフォルトの名無しさん
2007/07/23(月) 01:17:33助けてください><
0700685
2007/07/23(月) 01:31:09すいません、どこで無限ループなのかわからないです。
>698
その方法もやってみます。
freeSetの件も修正してみます。
0701685
2007/07/23(月) 02:00:10いろいろとありがとうございました。
0702681
2007/07/23(月) 02:01:28アップしたソースの不都合な所はばっさり変更しても良いので、
なんとか動くように訂正お願いします
0703デフォルトの名無しさん
2007/07/23(月) 02:04:140704デフォルトの名無しさん
2007/07/23(月) 02:18:42[2] 問題文(含コード&リンク):
[プログラム説明]
2桁の16進数('41'〜'49'、 '50'〜'59')を入力すると対応する文字を表示する。
ただし、%xは使用しないこと。なお、入力に間違いはないものとする。(ヒン
ト:入力は一つの数値か、二つの文字か?)
実行結果
2桁の16進数('41'〜'49'、 '50'〜'59')を入力してください:53
文字コード「53」文字は「S」です。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C++
[4] 期限: ([明日の朝まで] または [無期限] のいずれか)
[5] その他の制限: printf() scanf()を最近習いました
0705デフォルトの名無しさん
2007/07/23(月) 02:27:40#include <stdio.h>
int scan_ascii(){
int c1,c2;
printf("2桁の16進数('41'〜'49'、 '50'〜'59')を入力してください:");
scanf("%c%c", &c1, &c2);
return (c1<<4 + c2);
}
int print_ascii(int c){
printf("文字コード「%d」文字は「%c」です。\n", c, c);
}
int main(){
print_ascii(scan_ascii());
return 0;
}
0706デフォルトの名無しさん
2007/07/23(月) 02:34:50でもありがとうございます!1原型ができました
0707デフォルトの名無しさん
2007/07/23(月) 02:40:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4715.c
0709デフォルトの名無しさん
2007/07/23(月) 03:09:46まだ全然わからないんでお願いします
0710デフォルトの名無しさん
2007/07/23(月) 03:28:43が意味わからね
方針として入力文字列を"トークン"列に変換してから置換処理がクレバーじゃね?
struct toknの設計がつぼおおおぉおおおおぉおぉおぉおおおおおおおおおおおあおあさだおssd
0711デフォルトの名無しさん
2007/07/23(月) 03:44:20http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE
\([asdf]\)\(fty\)\([frty]\)\(t\)\3
で
aftytterをチェックした場合
\3はtと同じです
system()からsed呼び出して同じ動作するものは作れたんですけど、それだと題意にあわないんで・・・
0712デフォルトの名無しさん
2007/07/23(月) 10:36:35返事が遅くなってすいません。>>530に書いてあるものを使ってpop,pushを使い
たいです。+-*/は数字の大きさで表したいです
0713デフォルトの名無しさん
2007/07/23(月) 11:05:05[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4718.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ: gcc
[3.3] 言語: C
[4] 期限:7/24まで
[5]その他の制限:特になし
よろしくお願いします
0714デフォルトの名無しさん
2007/07/23(月) 11:12:260715デフォルトの名無しさん
2007/07/23(月) 11:51:28\([ab]\)\1の場合
aa と bb にはマッチするが ab にはマッチしないと理解して良いのか?
(否なら単に[ab][ab]と記述すればいいしなクソ)
それとこれ本当に宿題か?
\nさえなけりゃ理論的な意味の正規表現についての良問だと思うが
\nの性で劇的に難しくなってね?
お前何科の何年生?
あるいは問題間違ってねえ?
0716デフォルトの名無しさん
2007/07/23(月) 12:02:40[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4719.txt
プログラム問題文に沿って作ったものと、それに2つの要素を追加修正した
2つのプログラムの作成をお願いします。
[3] 環境
[3.1] OS: windows XP
[3.2] visual studio 2005
[3.3] 言語: C++
[4] 期限: 2007/07/26 13:00まで
[5] その他の制限: 特に無し
よろしくお願いします
0717デフォルトの名無しさん
2007/07/23(月) 12:18:510718デフォルトの名無しさん
2007/07/23(月) 12:25:06[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4721.txt
[3] 環境
[3.1] OS: windows XP
[3.2] bcc32
[3.3] 言語: C
[4] 期限: 2007/07/23 13:00まで
[5] その他の制限: 特に無し
0719デフォルトの名無しさん
2007/07/23(月) 13:06:20問題文には正規表現の各表現の説明があった後に
. * [abc…]、\が使えるようなプログラムを実装せよとかかれてました
ちなみに2回のC初心者向けの演習です
期末レポートなんですが、人によって問題が違って明らかにはずれくじをひいたっぽいですorz
0720デフォルトの名無しさん
2007/07/23(月) 13:08:520721デフォルトの名無しさん
2007/07/23(月) 13:54:35Perlとかでならまだしも・・・
0722デフォルトの名無しさん
2007/07/23(月) 14:02:300723デフォルトの名無しさん
2007/07/23(月) 14:06:51単純なパターンチェックと置換を実装すればいいんじゃないの?
0724デフォルトの名無しさん
2007/07/23(月) 14:09:17[2] 問題文(含コード&リンク):
クラスcomplexのメンバ関数で、複素数の絶対値を与える関数を新たに作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: CC
[3.3] 言語: C++
[4] 期限: [無期限]
[5] その他の制限: 特になし
よろしくおねがいします。
0725デフォルトの名無しさん
2007/07/23(月) 14:15:43http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4722.cpp
0726デフォルトの名無しさん
2007/07/23(月) 14:16:34のくせになんにも貼られてないってどうよ
0727デフォルトの名無しさん
2007/07/23(月) 14:26:47[2] 問題文(含コード&リンク):正の整数を入力し1からその数までの間に素数がいくつあるのか数えるプログラムを作れ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C++
[4] 期限:7月中
[5] その他の制限:特にないです。
よろしくお願いします。
0728デフォルトの名無しさん
2007/07/23(月) 14:30:37[2] 問題文(含コード&リンク): nを入力してs=1/1-1/3 + 1/5-1/7 + 1/9....+(-1)^n-1/(2n-1)
の和を求めるプログラムを作れ。nが大きくなるにつれてs*4がどうなるか
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C++
[4] 期限:7月中
[5] その他の制限:特にないです。
問題が難しくて困っています。
お願いいたします。
0729デフォルトの名無しさん
2007/07/23(月) 14:35:16int i,n,j;
printf("n: ");
scanf("%d", &n);
j = 1;
for(i = 0; i < n; i++) {
s += j/(2n-1);
j = -j;
}
printf("s = %lg\n", s);
0730デフォルトの名無しさん
2007/07/23(月) 14:57:030731デフォルトの名無しさん
2007/07/23(月) 14:58:48int main(){
double s=0;
int i,n,j=1;
printf("n: ");
scanf("%d", &n);
for(i = 1; i <= n; i++) {
s += (double)j/(2*i-1);
j = -j;
}
printf("s = %lg\n", s*4);
return 0;
}
0732デフォルトの名無しさん
2007/07/23(月) 15:33:330733デフォルトの名無しさん
2007/07/23(月) 15:41:51おまいのレベルに合わせてコーディングした
#include<stdio.h>
int main(){
while(1){
int i,j,n,c=0;
printf("正数 = ");
scanf("%d",&n);
for(i=2;i<=n;c++,i++)
for(j=2;j<=i/2;j++)
if(i%j==0){
c--;
break;
}
printf("素数 = %d 個\n",c);
}
return 0;
}
0734デフォルトの名無しさん
2007/07/23(月) 15:52:57一度単純な実装見てみたい
0735デフォルトの名無しさん
2007/07/23(月) 16:27:02#include <iostream>
#include <iomanip>
#include <cmath>
int main()
{
double s = 0;
int i, n;
std::cin >> n;
for(i = 1; i <= n; i++){
s += pow(-1, i - 1)*1/(2*i - 1);
std::cout << std::setw(10) << i << " : " << s*4 << std::endl;
}
return 0;
}
0736デフォルトの名無しさん
2007/07/23(月) 17:23:18出来ます。+-*/の順に1234とつけて行き大きい数字から(/から)優先
で計算するようにしたいんです。
0737デフォルトの名無しさん
2007/07/23(月) 17:53:38スタックを2つ作り、数字と演算子を別々に積み上げておいて、演算子はどの数字を計算対象にしたら良いか、分かるのか?
0738デフォルトの名無しさん
2007/07/23(月) 18:05:53もうちょいで自分でできるぞ
なんかね、道間違えている気がする
0739デフォルトの名無しさん
2007/07/23(月) 18:22:04ttp://www2.starcat.ne.jp/~fussy/algo/index.htm
に単純な実装があるよ。
0740デフォルトの名無しさん
2007/07/23(月) 19:12:04Test operator = (const Test& t) とかを
Test& operator = (const Test& t) にしないと
return *this が Test(const Test& t) を呼んじまうぜよ
0741ゆみ
2007/07/23(月) 19:24:32どうか御教授お願いします。
・char 型の配列aに"HellowWorld"の文字列を格納すること。
・配列aからchar 型の配列bにデータをコピーすること。
※標準関数(memcpy,strcpy等)を使用しないこと。
・配列bからchar 型の配列cにデータをコピーすること。
※但し、"w"、"W"は"*"にデータをすりかえてデータをコピーすること。
→配列cには文字列"Hello**orld"を格納すること。
・printf()で表示する際は、配列cのデータを一文字づつ表示すること。
※"o"を表示する際は、"o"を表示する代わりに"O"を5つ表示すること。
・VCのプロジェクト名は"ckadai3"とすること。
0742デフォルトの名無しさん
2007/07/23(月) 19:27:52ESPの俺が応える
お前男なのにキモイ
0743デフォルトの名無しさん
2007/07/23(月) 19:30:51ESPってなに?
0744デフォルトの名無しさん
2007/07/23(月) 19:31:32知り合いみたいだからよろしく
0745デフォルトの名無しさん
2007/07/23(月) 19:31:360746デフォルトの名無しさん
2007/07/23(月) 19:49:57マジ?
0747デフォルトの名無しさん
2007/07/23(月) 20:06:13[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4727.txt
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:2007/07/24
[5] その他の制限:なるべく問題文の指定以外の変更はしないで頂きたいです。どうか宜しくお願いします。
0748デフォルトの名無しさん
2007/07/23(月) 20:29:41>>294
>>494
>>600
0749741
2007/07/23(月) 20:57:040750デフォルトの名無しさん
2007/07/23(月) 20:58:460751デフォルトの名無しさん
2007/07/23(月) 21:06:140752デフォルトの名無しさん
2007/07/23(月) 21:08:290753デフォルトの名無しさん
2007/07/23(月) 21:15:49ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4728.c
どう考えても2回の宿題のレベルじゃなくね?
一日かかっちまったわ
完全じゃねえけどな
\(\)は無理,ってか>>719の言い方じゃイラネエじゃんクソ
つーかなに?ほんとはライブラリとか使えんじゃねーのか???
>>420が問題の趣旨を理解していない気が激しくするぞコラ
まあ俺は勉強になったがなクソ
0754デフォルトの名無しさん
2007/07/23(月) 21:17:13int main(void)
{
char a[11]="HellowWorld", b[11], c[11];
int i;
for(i=0 ; i<11 ; i++){
b[i] = a[i];
if(b[i]=='W' || b[i]=='w') c[i] = '*';
else c[i] = b[i];
if(c[i] == 'o') printf("OOOOO");
else printf("%c", c[i]);
}
printf("\n");
return(0);
}
0755ゆみ
2007/07/23(月) 21:30:16ありがとうございます。
助かりました。
0756デフォルトの名無しさん
2007/07/23(月) 21:35:04ウホッこれはいい再提出
0757デフォルトの名無しさん
2007/07/23(月) 21:44:36出題者の意図とは違うと思うけど
0758デフォルトの名無しさん
2007/07/23(月) 21:46:38return(0);
これはないだろ
0759デフォルトの名無しさん
2007/07/23(月) 21:52:07よく見れば大丈夫そうだな
0760デフォルトの名無しさん
2007/07/23(月) 22:33:47●仕様
・"Hello"、"World"、"kadai"を指定された順番で表示すること。
※初期の順番は、"Hello"、"World"、"kadai"とする。
※順番はテーブル固定とし、変更毎にビルドを行うこととする。
●条件
・char 型index(1Byte)とchar型の配列hako[6](6Byte)をメンバとする構造体STRINDEX_TBLを作成すること。
・STRINDEX_TBL型の配列tableに、"Hello"、"World"、"kadai"の3つの文字列と表示順番indexを格納すること。
・文字列を表示の際は、printf()を使用し1文字("%c")づつではなく、文字列指定("%s")で指定すること。
・VCのプロジェクト名は"ckadai6"とすること。
●制限時間
・30分
0761デフォルトの名無しさん
2007/07/23(月) 22:40:250762デフォルトの名無しさん
2007/07/23(月) 22:42:31gdgd質問者に注文つけたりうるせーよ、答える気がないなら黙ってスルーしろ。
っつかお前みたいな奴はこのスレには必要ないから、とっとと就職して
安月給プログラマーでもやってろ。
0763デフォルトの名無しさん
2007/07/23(月) 22:45:32まあ俺もだが
0764デフォルトの名無しさん
2007/07/23(月) 22:47:22お前みたいな奴に回答なんて求めてねーんだよ、他の回答者も。
0765デフォルトの名無しさん
2007/07/23(月) 22:47:51typedef struct {
char index;
char hako[6];
} STRINDEX_TBL;
int main(void)
{
STRINDEX_TBL st[] = {{0, "Hello"}, {1, "World"}, {2, "kadai"}};
int i, j;
const int num = sizeof(st)/sizeof(st[0]);
for(i=0; i<num; i++)
for(j=0; j<num; j++)
if(st[j].index == (char)i){printf("%s\n", st[j].hako);break;}
return 0;
}
やっつけ
0766デフォルトの名無しさん
2007/07/23(月) 22:53:43何方もどっちだな
0767デフォルトの名無しさん
2007/07/23(月) 22:54:36スタックを2つ作り、数字と演算子を別々に積み上げておいて、演算子はどの数字を計算対象にしたら良いか、分かるのか? は、
数字が1234で演算子は+-*/です。これを1は激弱、2は弱、3は強、4は激強
にして指定した数が大きいほど優先順位が高い。
/→*→-→+の順で計算する。
0768デフォルトの名無しさん
2007/07/23(月) 22:56:35> これを1は激弱、2は弱、3は強、4は激強
4は激強
4は激強
4は激強
4は激強
4は激強
げきつよ?
げききょう
0770デフォルトの名無しさん
2007/07/23(月) 23:07:29逆によくそんな前からレス探してくるなと感心。
まぁ質問者も丸投げするのは構わないんだけど
催促レスしまくってくるのと問題に最低限の必要事項が
無いのは止めて欲しいかなぁ。
0771デフォルトの名無しさん
2007/07/23(月) 23:11:27答えてもらえなかった腹いせにこのスレで今年の質問者をねちねち詰り弄ることが
今の趣味になってしまった可愛そうな就職浪人。
0772デフォルトの名無しさん
2007/07/23(月) 23:11:58問題に最低限の事と言われても言われたのはこれくらいです。
使うプログラムも乗せてありますし。
0773デフォルトの名無しさん
2007/07/23(月) 23:14:04まぁ落ち着け、そう噛み付くな。
自分は基本的にこのスレに住みついてなくて
暇な時に見て解いてるだけで普段はレスもしてないから。
0774デフォルトの名無しさん
2007/07/23(月) 23:15:35誰もyouにレスしてないyo!
0775デフォルトの名無しさん
2007/07/23(月) 23:16:51これだから釣りは面白くて止められないぜ。
0776デフォルトの名無しさん
2007/07/23(月) 23:16:52勝手に勘違いしてすいません
0777デフォルトの名無しさん
2007/07/23(月) 23:18:120778デフォルトの名無しさん
2007/07/23(月) 23:19:330779デフォルトの名無しさん
2007/07/23(月) 23:19:570780デフォルトの名無しさん
2007/07/23(月) 23:21:33釣り師 ↓
. /| ←竿
○ / |
. (Vヽ/ |
<> |
゙'゙":"''"''':'';;':,':;.:.,.,__|_________
|
餌(疑似餌)→.§ >゚++< 〜
の組み合わせだと思ってたんだけど、
最近自称釣り師がダイレクトで自分の本音を攻撃されて「釣れた!」とか
言ってるの多いよね。
これは、どっちかというと、
,〜〜〜〜〜〜 、
|\ ( 釣れたよ〜・・・)
| \ `〜〜〜v〜〜〜´
し \
゙'゙":"''"''':'';;':,':;.:.,., ヽ○ノ
~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ト>゚++<
ノ)
かと思うんだけど、どうよ?
0781デフォルトの名無しさん
2007/07/23(月) 23:21:38あのなぁ、こっちは質問者を弄っている奴をピンポイントで指して指摘しているんじゃなくて
そういう奴がうぜぇと言っているだけで、それに 反応 しちゃっている奴がわざわざ
エサに食いついちゃっていることに気づかないから笑えるんだよw
0782デフォルトの名無しさん
2007/07/23(月) 23:22:47かわいそう
0783デフォルトの名無しさん
2007/07/23(月) 23:23:01楽しいwwwwwwwww
0784デフォルトの名無しさん
2007/07/23(月) 23:24:33素直に釣られましたが教えてください
0785デフォルトの名無しさん
2007/07/23(月) 23:26:52優先順位の高さが、何を指しているのか分かっているのか?
何でも良いから加減乗除を使っている計算式を書いて、
それぞれのスタックとやらに計算対象の数字と演算子に割り当てた数字が
どのように積まれていくのか書いてみろ。
0787デフォルトの名無しさん
2007/07/23(月) 23:30:47わかりません。わからないから来ています
0788デフォルトの名無しさん
2007/07/23(月) 23:34:25式を書いてみろ。
小学生でも理解できる事だ。
0789デフォルトの名無しさん
2007/07/23(月) 23:34:41おまいのソース見て、俺も書きたくなってきた。
でも、正規表現アルゴリズムって何? というレベル。
0790デフォルトの名無しさん
2007/07/23(月) 23:34:530791デフォルトの名無しさん
2007/07/23(月) 23:38:150792デフォルトの名無しさん
2007/07/23(月) 23:41:31授業2回でこんな問題解けるような生徒がいるなら職業プログラマいらないよなw
みんなバイトでいいやってなっちまうわ。
俺もやってみたいけど1時間やそこらじゃ絶対終わらないな・・・
ってか、講師はちゃんとテスト、レビューするのかな?
0793デフォルトの名無しさん
2007/07/23(月) 23:41:50式ですか?
0794デフォルトの名無しさん
2007/07/23(月) 23:49:220795デフォルトの名無しさん
2007/07/23(月) 23:55:05俺も同じ問題がわからない。
教えてくれないか?
0796デフォルトの名無しさん
2007/07/23(月) 23:58:10p=&c;
間違いだって誰か言ってる?
0797デフォルトの名無しさん
2007/07/23(月) 23:59:36間違えなんですか?
0798デフォルトの名無しさん
2007/07/24(火) 00:04:53だって洗剤はP&Gだろ?
配列なんだから&はいらんよ。
p=cでpにアドレスがコピーされる。
0799デフォルトの名無しさん
2007/07/24(火) 00:04:570800デフォルトの名無しさん
2007/07/24(火) 00:07:060801デフォルトの名無しさん
2007/07/24(火) 00:10:290802デフォルトの名無しさん
2007/07/24(火) 00:22:130803デフォルトの名無しさん
2007/07/24(火) 00:22:26http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4729.c
一応580でも答えたんだけどスルーされてしまったらしい.
完成したソースでないと受理されないのか.
いずれにしても出題の仕方がひどい.p=cでもp=&cでもいいとかどこの講師だよ.
0804デフォルトの名無しさん
2007/07/24(火) 00:26:09ありがとうございます
0805デフォルトの名無しさん
2007/07/24(火) 00:33:56悪いが、作業は中止する。
提示された回答をチェックしてみて下さい。要求通りだと思うよ。
気になったのがあるんだが。
number()で数値と演算子に空白がある時と無い時で動きは違わないか?
0806デフォルトの名無しさん
2007/07/24(火) 00:35:47○数値と演算子の間に空白
0807803
2007/07/24(火) 00:41:03とりあえずの応急処置ってことで,expression()内の最後のreturn ans;の直前に
op_stack = val_stack = NULL;
の一行を追加しといて.
0808デフォルトの名無しさん
2007/07/24(火) 01:02:260809デフォルトの名無しさん
2007/07/24(火) 01:05:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4730.c
しかし作っちまったので俺は投稿する
因みに
struct stack *op_stack, *val_stack;
が
struct stack *op_stack=NULL, *val_stack=NULL;
なんだとおもふ
0810デフォルトの名無しさん
2007/07/24(火) 01:41:49[2] 問題文(含コード&リンク): 二分探索木の拡張
詳細はうpしました。元になるプログラムも入っています。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4731.zip
[3] 環境
[3.1] OS: (Windows/Linux/等々) windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) VC6.0
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7/27まで
[5] その他の制限:
どなたかご教授よろしくお願いします。
0811 ◆DpMW3bRjps
2007/07/24(火) 07:34:56[2] 問題文(含コード&リンク):任意の文字列を入力し、その文字列の中に任意の文字が何個入っているかを出力する
プログラムのソースコードを提出しなさい。
実行例)
文字列を入力してください
yamamotoyama
さがす文字を入力してください
y
入力された文字列の中に指定された文字は2個あります
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2007年07月25日まで
[5] その他の制限:>>452で教えてもらい、その後少し訂正したんですがダメでした。
しつこいですがもう1回お願いします。。
0812デフォルトの名無しさん
2007/07/24(火) 07:55:110813デフォルトの名無しさん
2007/07/24(火) 07:58:32#include<stdio.h>
int main( void ){
char c, string[100], *pstr;
int count;
printf( "文字列を入力してください\n" );
scanf( "%s%*c", string );
printf( "さがす文字を入力してください\n" );
scanf( "%c%*c", &c );
pstr = string;
count = 0;
while ( *pstr != '\0' ) {
if ( *pstr == c ) {
count++;
}
pstr++;
}
printf( "入力された文字列の中に指定された文字は%d個あります\n", count );
return 0;
}
0814813
2007/07/24(火) 08:01:47朝っぱらかやろうとするとすぐこれだ・・・
0815デフォルトの名無しさん
2007/07/24(火) 11:16:18[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):括弧が使用可能な四則演算の電卓プログラムを作成せよ。文字入力で、入力時の関数はgetsを使用する事。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc3.4
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:自作関数は不可、スキルは初心者用の参考書一冊を一通り読んだくらいです。
よろしくお願いします。
0816デフォルトの名無しさん
2007/07/24(火) 11:37:510817デフォルトの名無しさん
2007/07/24(火) 11:45:170818 ◆MmITqPYxy6
2007/07/24(火) 13:42:22[2] 問題文(含コード&リンク): 1辺10の立方体内部に含まれる四面体をN個発生し、
体積の分布(区間数は20程度)を表示するプログラムを
以下の要求に従って作成し、実行しなさい。
1,四面体を表す構造体(4つの3次元位置ベクトルをメンバーとする) を Tetra という名前で定義する.
typedef struct {. . .} Tetra;
2,構造体 Tetra を返却する,すなわち四面体を生成する以下の名前の関数を作成する.
Tetra mk_tetra(void)
3,四面体の体積を返す次の名前の関数を定義する.
double vol_tetra(Tetra t)
4,Nの値は実行時にキー入力するように設計しなさい.
[3] 環境
[3.1] OS: (Windows/Linux/等々) Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7月25日迄
[5] その他の制限:
ヒントとして 1、講義で用いた"vector.h" を必ずincludeして使いなさい。
2、四面体の1つの頂点を原点にして、他の3つの位置を表すベクトルを r1,r2,r3とすると、四面体の体積Vは以下のように与えられる
V=1/6|(r1×r2)・r3|
がありました。
vector.h はこれです http://www-it.sci.waseda.ac.jp/teachers/w405201/ITB1/Sources/vector.h
0819 ◆MmITqPYxy6
2007/07/24(火) 13:46:230820デフォルトの名無しさん
2007/07/24(火) 14:20:45>[5] その他の制限:>>452で教えてもらい、その後少し訂正したんですがダメでした。
もしかして、gets()をfgets()に修正したと言うことですか?
それ以外にも変更していますか?
fgets()だけなら、引数を変更するだけで良いんじゃないでしょうか。
0821デフォルトの名無しさん
2007/07/24(火) 14:50:12それはさておき、>811はなんで自分がどう修正してダメだったかも書かないんだ?
0822デフォルトの名無しさん
2007/07/24(火) 14:59:12gets()の使い方なんか可愛いもんだ。突っ込みどころ満載で目も当てられない。
0823デフォルトの名無しさん
2007/07/24(火) 15:09:24#include <stdio.h>
int main()
{
puts("文字列を入力してください");
char buf[200];
if (fgets(buf, sizeof(buf), stdin) == NULL) return 1;
puts("さがす文字を入力してください");
char key;
if (scanf("%c", & key) != 1) return 1;
unsigned count = 0;
for (unsigned ic = 0; buf[ic] != '\0'; ++ic) if (buf[ic] == key) ++count;
printf("入力された文字列の中に指定された文字は%d個あります\n", count);
return 0;
}
0824デフォルトの名無しさん
2007/07/24(火) 16:33:28[2] 問題文(含コード&リンク):”rand1000.dat”というデータの個数nとその個数分の整数データが保存されているファイルがある
(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4151.txt)
このデータをファイルから読み込み
挿入ソート
基数ソート
ヒープソート
クイックソート
マージソート
によってソートできるよう各プログラムを作成せよ
データ数が100,000個のときでも対応できるようメモリを確保しておいてください。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 7月28日
[5] その他の制限:出来る限り単純なアルゴリズムで作ってください。合計5つのプログラムを作成してください。
大変な問題で申し訳ありませんがどなたか詳しい方よろしくお願いいたします
0825デフォルトの名無しさん
2007/07/24(火) 16:43:08なんで露骨にマルチするわけ?
専用ブラウザ使ってる連中の多くが両方とも見ているから、逆効果にしかならないのだが。
#それともネタか? ネタにマジレスしちゃったか?w
0826デフォルトの名無しさん
2007/07/24(火) 17:58:03行頭 # 野郎w
0827デフォルトの名無しさん
2007/07/24(火) 18:03:33お前も、なぁ…?
0828デフォルトの名無しさん
2007/07/24(火) 18:07:01こいつ、他のスレにも潜んでるよな
IDが出ないのをいいことに好き勝手やってやがる
0829デフォルトの名無しさん
2007/07/24(火) 18:08:26あ〜はいはい、去年質問したけど質問の仕方が悪くて
今年は自分が質問者を弄るようになった基地外えせ回答者さん乙でありますw
うぜぇから他の回答者の迷惑になるから、文句を言うだけのレスはするなや、答える気も
答える能力もないくせに、うざすぎ
0830デフォルトの名無しさん
2007/07/24(火) 18:10:00[2] 問題文(含コード&リンク):
二つの任意の正の整数の乗算(*)を、シフト演算の組合わせと除算(/)と
加算(+)のみで解くプログラムを作成しなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 7月25日まで
[5] その他の制限: ビット演算まで習っています。
お願いします。
0831デフォルトの名無しさん
2007/07/24(火) 18:11:10まぁ、アレだからスルーしてあげてくれ。
0832デフォルトの名無しさん
2007/07/24(火) 18:11:430833デフォルトの名無しさん
2007/07/24(火) 18:17:21相手にするだけ無駄だ、お前ら俺がいる限り、もうこのスレには来なくて良いから。
邪魔だから失せろ。
0834デフォルトの名無しさん
2007/07/24(火) 18:19:16質問者に対して、回答ではなく叩きでレスしているって意味だと思うんだが。
頭大丈夫か?
0835デフォルトの名無しさん
2007/07/24(火) 18:20:300836デフォルトの名無しさん
2007/07/24(火) 18:21:31お前こそ頭大丈夫か?文盲?
0837デフォルトの名無しさん
2007/07/24(火) 18:21:38勝手にすればwww
0838デフォルトの名無しさん
2007/07/24(火) 18:22:39>いちいちうぜーレスするなよ、邪魔。お前みたいな奴いらねーって
これに対してオマエモナーだろ。
0839デフォルトの名無しさん
2007/07/24(火) 18:24:38いや、オマエモナーは>>827=>>838さんの専売特許ですから
0840デフォルトの名無しさん
2007/07/24(火) 18:27:210841にゃ〜
2007/07/24(火) 18:31:53∞
f(x)=(-1)^(k-1)*{x^(2k-1)/(2k-1)!}
k=1
となる.これを利用してsin(x)の値を多項式近似する関数double mysin(double x)を定義し,この関数を利用して,読み込んだ実数xのsin(x)を計算して出力するプログラム(sin.c)を書け.
また,数学関数sin(x)と自分で作ったsin(x)を比較せよ.
という問題なのですがどうしてもわからないんです。
今日中にできる方いらっしゃいますか??
理解したいので、コメント付きでどうかお願いします。
0842デフォルトの名無しさん
2007/07/24(火) 18:36:480843デフォルトの名無しさん
2007/07/24(火) 18:39:32どの辺が分からない?式の意味は分かるよね?
0844デフォルトの名無しさん
2007/07/24(火) 18:58:17#include <stdio.h>
#include <math.h>
double mysin(double x) {
double sub = 1.0;
int last = 1001; /* 奇数 */
while (last > 1) {
sub = 1 - (x*x / ((last-1)*last)) * sub;
last -= 2;
}
return x * sub;
}
int main(int argc, char *argv[]) {
while (1) {
double x;
scanf("%lf", &x);
printf("mysin(x) = %lf\t(sin(x) = %lf)\n", mysin(x), sin(x));
}
}
/* コメント:原点から遠ざかると近似が効かなくなるのはマクローリンの宿命だな */
0845デフォルトの名無しさん
2007/07/24(火) 20:27:211001もマジックでエロい人だなぁ
0846デフォルトの名無しさん
2007/07/24(火) 21:42:25クソわかりやすいつもり。わからないなら数学やりなおせ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4737.c
0847デフォルトの名無しさん
2007/07/24(火) 21:55:07ありがとうございますー
最長一致するようにして使わせてもらいます
>\(\)は無理,ってか>>719の言い方じゃイラネエじゃんクソ
勘違いしてたみたいですね
すいません
>つーかなに?ほんとはライブラリとか使えんじゃねーのか???
>>>420が問題の趣旨を理解していない気が激しくするぞコラ
授業ではプリプロセッサにまったく触れてないんでそれはないです
0848デフォルトの名無しさん
2007/07/24(火) 22:22:39よろしくお願いします。
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
2つの複素数z=a+bi、w=c+di(ただしiは虚数単位)を読み込み、足し算とかけ算を計算して表示するプログラムを作成せよ。
但し、以下の仕様を満足するように作成すること。
・複素数の実部と虚部を示す実数型変数をメンバとする構造体COMPLEXを構造体で定義する。
・足し算の関数:COMP_ADD(z、w)とかけ算の関数:COMP_MULT(z、w)を作成し、main関数ではこれらの関数を呼び出す。
(実行例)
1つ目の複素数(実部):2
1つ目の複素数(虚部):3
2つ目の複素数(実部):4
2つ目の複素数(虚部):-2
足し算:(6)+(1)i
かけ算:(14)+(8)i
(ヒント)
複素数を扱う構造体(メンバで実数部、虚数部を2つの数値で格納)を宣言し、各変数を格納、演算を行う。
複素数同士の足し算、かけ算は普通に行う。
(a+bi)+(c+di) (a+bi)×(c+di)
を展開して虚数の2乗は-1という知識があれば解ける。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C言語
[4] 期限:7/26(木)12:00まで
0849にゃ〜
2007/07/24(火) 22:46:34載せてくれた人もいるみたいですが
いちおう礼をいっておきます
0850デフォルトの名無しさん
2007/07/24(火) 23:00:02構造体を構造体以外でどうやって定義するんだよw
0851デフォルトの名無しさん
2007/07/25(水) 00:00:30#include <stdio.h>
typedef struct{
double r;
double i;
} comp;
comp add_comp(comp c1,comp c2){
comp tmp;
tmp.r=c1.r+c2.r;
tmp.i=c1.i+c2.i;
return tmp;
}
comp mul_comp(comp c1,comp c2){
comp tmp;
tmp.r=c1.r*c2.r-c1.i*c2.i;
tmp.i=c1.r*c2.i+c1.i*c2.r;
return tmp;
}
0852デフォルトの名無しさん
2007/07/25(水) 00:01:35int main(){
comp c1={2.0,3.0};
comp c2={4.0,-2.0};
comp result;
printf("1つ目の複素数(実部):%lf\n",c1.r);
printf("1つ目の複素数(虚部):%lf\n",c1.i);
printf("2つ目の複素数(実部):%lf\n",c2.r);
printf("2つ目の複素数(虚部):%lf\n",c2.i);
result=add_comp(c1,c2);
printf("足し算:(%lf)+(%lf)i\n",result.r,result.i);
result=mul_comp(c1,c2);
printf("かけ算:(%lf)+(%lf)i\n",result.r,result.i);
return 0;
}
0853デフォルトの名無しさん
2007/07/25(水) 00:24:02[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4739.txt
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語: C
[4] 期限: 7月26日まで
[5] その他の制限:ファイルを読込んだり、書込んだりするところを習いました。
0854デフォルトの名無しさん
2007/07/25(水) 00:29:39例をみると、改行も区切りと見なしてるが、それでいいのか?
0855デフォルトの名無しさん
2007/07/25(水) 00:32:04はい
0856にゃ〜
2007/07/25(水) 00:37:12わかりやすいっす!!
ありがとうございます。勉強しなおします
0857デフォルトの名無しさん
2007/07/25(水) 00:39:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4740.c
0858デフォルトの名無しさん
2007/07/25(水) 00:52:03http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4741.c
0859デフォルトの名無しさん
2007/07/25(水) 00:54:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4742.c
0860853
2007/07/25(水) 00:57:53補足で
入力ファイルを読込モードでオープン
出力ファイルを書出モードでオープン
while ( 1 ) {
入力ファイルから書式付で字句を読込
ファイル終端なら脱出
出力ファイルに書式付で番号を付けて書込
}
入力ファイルをクローズ
出力ファイルをクローズ
と言う形で作れと書いていました。
0861デフォルトの名無しさん
2007/07/25(水) 01:02:14後だしイクナイ
0862デフォルトの名無しさん
2007/07/25(水) 01:03:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4743.c
0863デフォルトの名無しさん
2007/07/25(水) 01:04:320864853
2007/07/25(水) 01:15:020866デフォルトの名無しさん
2007/07/25(水) 10:02:240867デフォルトの名無しさん
2007/07/25(水) 10:48:350868デフォルトの名無しさん
2007/07/25(水) 11:20:58攻略本が必要だ。
でも宿題の内容熱いな。
0869デフォルトの名無しさん
2007/07/25(水) 11:44:080870 ◆6MtsdamhF6
2007/07/25(水) 11:45:35締切が近いのでどうかお願いします
【質問テンプレ】
[1] 授業単元:プログラミングC言語
[2] 問題文(含コード&リンク):
次の違いに注意しながら、forの変わりにwhileを使うものにそれぞれ
書き換えなさい。ただし書き換えは最低限にすること
(1)
#include<stdio.h>
main(){
int nc, c;
for(nc = 0; (c= getchar()) != EOF; nc++)
printf("%c", c);
printf("\nTatal=%d\n", nc);
}
�A#include<stdio.h>
main(){
int nc, c;
for(nc = 0; (c= getchar()) != EOF; nc++)
putchar(c);
printf("\n%d\n", nc);
}
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:今日の14時までなんです。
どうかおねがいします。
0871デフォルトの名無しさん
2007/07/25(水) 14:19:36main(){
int nc=0, c;
while((c= getchar()) != EOF) {
printf("%c", c);
nc++;
}
printf("\nTatal=%d\n", nc);
}
#include<stdio.h>
main(){
int nc=0, c;
while((c= getchar()) != EOF) {
putchar(c);
n++;
}
printf("\n%d\n", nc);
}
期限切れだが
0872デフォルトの名無しさん
2007/07/25(水) 14:22:210873デフォルトの名無しさん
2007/07/25(水) 15:46:14そのまま階乗つかうとオーバーフローするから面倒なのね。
>>844ほど華麗ではないけど、x/n * ...x/3 * x/2 * x/1の和で計算した。
0874デフォルトの名無しさん
2007/07/25(水) 15:55:45[2] 問題文(含コード&リンク):
以下のように、2桁以下の正整数が1行に3つずつ書かれたファイルを input.txt とする。
ただし、ファイルの末尾には、終了を表す番兵0がある。
1 45 90
2 7 41
13 67 60
0
入力リダイレクトで input.txt を読み込み、出力リダイレクトで、以下のような形式で output.txt に保存するプログラムを作れ。
番号 数学 英語 合計
01 45 90 135
02 7 41 48
13 67 60 127
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語: C
[4] 期限:7/27
反復構文を使うっぽいです。
0875デフォルトの名無しさん
2007/07/25(水) 16:42:24[2] 問題文:次の仕様を満たすプログラムを作成せよ
(1)入力は2以上の整数n
出力はnのすべての正の約数
(2)入力は2以上の整数n
出力はnの正の約数の個数
(3)入力は2以上の整数n
出力はnが素数ならば"n is prime",
合成数ならば"n is not prime"
(nの部分には、入力した整数が表示されるようにすること)
3つのプログラムは1つにまとめてもよい。その場合には、ど
れが約数でどれが約数の個数を表しているかが分かるようにす
ること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c
[4] 期限:7月27日(金)提出は20:45までです
0876デフォルトの名無しさん
2007/07/25(水) 16:43:30#include <stdio.h>
void main(){
int buf = 0;
int count = 0;
int total = 0;
printf("番号 数学 英語 合計\n");
while(scanf("%d",&buf)) {
if(buf == 0)
break;
count++;
printf("%d ", buf);
total += buf;
if(!(count%3)){
printf("%d\n", total);
total = 0;
}
}
}
なんにもエラー処理してないけどこんなんでいいかな・・・
0877デフォルトの名無しさん
2007/07/25(水) 16:58:51#include<stdio.h>
int main(){
int n,c=0,i;
printf("n=");
scanf("%d",&n);
for(i=2;i<=n;i++)
if(n%i==0)
c++,printf("%d ",i);
printf("\n%d\nn is ",c);
if(c!=1)
printf("not ");
printf("prime.\n");
return 0;
}
0878デフォルトの名無しさん
2007/07/25(水) 17:01:34#include<stdio.h>
int main(){
int n,c=0,i;
printf("n=");
scanf("%d",&n);
for(i=2;i<=n;i++)
if(n%i==0)
c++,printf("%d ",i);
printf("\n%d\n%d is ",c,n); //修正
if(c!=1)
printf("not ");
printf("prime.\n");
return 0;
}
0879デフォルトの名無しさん
2007/07/25(水) 17:03:43宿題をだしている生徒がいたら、減点すればいいわけだなwwww
0880デフォルトの名無しさん
2007/07/25(水) 17:17:550881デフォルトの名無しさん
2007/07/25(水) 17:31:470882デフォルトの名無しさん
2007/07/25(水) 17:55:14[2] 問題文(含コード&リンク): 1辺10の立方体内部に含まれる四面体をN個発生し、
体積の分布(区間数は20程度)を表示するプログラムを
以下の要求に従って作成し、実行しなさい。
1,四面体を表す構造体(4つの3次元位置ベクトルをメンバーとする) を Tetra という名前で定義する.
typedef struct {. . .} Tetra;
2,構造体 Tetra を返却する,すなわち四面体を生成する以下の名前の関数を作成する.
Tetra mk_tetra(void)
3,四面体の体積を返す次の名前の関数を定義する.
double vol_tetra(Tetra t)
4,Nの値は実行時にキー入力するように設計しなさい.
[3] 環境
[3.1] OS: (Windows/Linux/等々) Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7月25日20時迄
[5] その他の制限:
ヒントとして 1、講義で用いた"vector.h" を必ずincludeして使いなさい。
2、四面体の1つの頂点を原点にして、他の3つの位置を表すベクトルを r1,r2,r3とすると、四面体の体積Vは以下のように与えられる
V=1/6|(r1×r2)・r3|
vector.h はこれです http://www-it.sci.waseda.ac.jp/teachers/w405201/ITB1/Sources/vector.h
今日が期限なんですが、全然わからないんです。
よろしくお願い致します
0883デフォルトの名無しさん
2007/07/25(水) 18:01:02結果表示のイメージが分からない。グラフにするのかな?合計数値?
0884 ◆TDJK/P.926
2007/07/25(水) 18:16:42[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク)
講義中の題材として扱っていた電卓を、以下の点について改良せよ。
(1)変数に文字列を代入できるようにする。たとえば
s1="Programing"
word="apple"
のような代入が可能になる。
(2)文字を扱う関数を取り扱えるようにする。たとえば
s1="Programing"
s2="Language"
s3=concatenate(s1,s2) 上で代入されたs1とs2を連結したものをs3に代入する。
s3
=ProgramingLanguage
(5)次のようなif文を使えるようにする。→if(条件式) 実行文
例: if(a+b>10) a=a-1
条件式には、>または<が使用できるものとする。条件式が成立していたときには、実行文(複文も可)を実行する。
(6)その他、この電卓に追加するとよいと思う昨日を考え、実現してみよ。
[3] 環境
[3.1] OS:WindowsXP 上でのUNIX
[3.2] コンパイラ名とバージョン: gcc (※yaccとlexのプログラミングです。
[3.3] 言語:C言語
[4] 期限: (2007年07月27日20:00まで]
[5] その他の制限:講義中の題材のソースはすぐアップします。
0885 ◆TDJK/P.926
2007/07/25(水) 18:19:36※ヘッダファイル:ch3-05.h
#define NSYMS 20 /* maximum number of symbols */
struct symtab {
char *name;
double (*funcptr)();
double value;
} symtab[NSYMS];
struct symtab *symlook();
0886 ◆TDJK/P.926
2007/07/25(水) 18:20:42※lexファイル:ch3-05.l
%{
#include "y.tab.h"
#include "ch3-05.h"
#include <math.h>
%}
%%
([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) {
yylval.dval = atof(yytext);
return NUMBER; }
[ \t] ; /* ignore white space */
[A-Za-z][A-Za-z0-9]* { /* return symbol pointer */
struct symtab *sp = symlook(yytext);
yylval.symp = sp;
return NAME;
}
"$" { return 0; /* end of input */ }
\n |
. return yytext[0];
%%
yyerror(char *errmsg)
{
fprintf(stderr,"ERROR: %s at %s\n", errmsg, yytext);
}
yywrap(){}
0887デフォルトの名無しさん
2007/07/25(水) 18:20:50N = 10000000
0.0 - 16.7: 0.699031
16.7 - 33.3: 0.206966
33.3 - 50.0: 0.065772
50.0 - 66.7: 0.020377
66.7 - 83.3: 0.005860
83.3 - 100.0: 0.001542
100.0 - 116.7: 0.000351
…中略…
316.7 - 333.3: 0.000000
が実行例としてありました。それぞれ体積の範囲ごとに
どれくらい分布しているかを箇条書きみたいに出すみたいです。
0888 ◆TDJK/P.926
2007/07/25(水) 18:23:05※yaccファイル:ch3-05.y
%{
#include "ch3-05.h"
#include <string.h>
#include <math.h>
%}
%union {
double dval;
struct symtab *symp;
}
%token <symp> NAME
%token <dval> NUMBER
%left '+' '-'
%left '*' '/'
%nonassoc UMINUS
%type <dval> expression
%%
statement_list: statement '\n'
| statement_list statement '\n'
;
statement: NAME '=' expression { $1->value = $3; }
| expression { printf("= %g\n", $1); }
;
0889 ◆TDJK/P.926
2007/07/25(水) 18:25:09expression: expression '+' expression { $$ = $1 + $3; }
| expression '-' expression { $$ = $1 - $3; }
| expression '*' expression { $$ = $1 * $3; }
| expression '/' expression { if($3==0.0) yyerror("Divide by Zero");
else $$ = $1 / $3; }
| '-' expression %prec UMINUS { $$ = -$2; }
| '(' expression ')' { $$ = $2; }
| NUMBER { $$ = $1; }
| NAME { $$ = $1->value; }
| NAME '(' expression ')' { if( $1->funcptr ) $$ = ($1->funcptr)($3);
else {printf("%s not a function.\n", $1->name);
}
}
;
%%
/* look up a symbol table entry, add if not present */
struct symtab *symlook(char *s)
{
char *p;
struct symtab *sp;
for(sp=symtab; sp<&symtab[NSYMS]; sp++) {
/* is it already here? */
if( sp->name && !strcmp(sp->name, s) ) return sp;
/* is it free */
if( !sp->name ) { sp->name = strdup(s);
return sp;}
/* otherwise continue to next */
}
yyerror("Too many symbols");
exit(1); /* cannot continue */
} /* end of symlook */
0890 ◆TDJK/P.926
2007/07/25(水) 18:35:56void addfunc(char *name, double (*func)())
{
struct symtab *sp = symlook(name);
sp->funcptr = func;
}
int main()
{
extern double sqrt(), exp(), log(), sin(), cos();
addfunc("sqrt", sqrt);
addfunc("exp", exp);
addfunc("log", log);
addfunc("sin", sin);
addfunc("cos", cos);
yyparse();
return 0;
}
0891デフォルトの名無しさん
2007/07/25(水) 18:44:24その方が回答者にとってはやりやすい
って書くといつもの基地外に噛み付かれるのかなぁ?
0892デフォルトの名無しさん
2007/07/25(水) 18:47:190893デフォルトの名無しさん
2007/07/25(水) 18:47:47ガブ
0894 ◆TDJK/P.926
2007/07/25(水) 18:47:51うpロダには学校からアクセスしてるので規制されててアクセスできないんですよ(汗)申し訳ないです。
0895デフォルトの名無しさん
2007/07/25(水) 18:50:202ch自体にはアクセスできますがPink板など18禁系には規制かかります。
うpロダもそれで規制かかったので。
0897デフォルトの名無しさん
2007/07/25(水) 19:05:05宿題まるなげするやつのいいそうなことだ。(´,_ゝ`)プッ
0898デフォルトの名無しさん
2007/07/25(水) 19:10:14>>762
0899デフォルトの名無しさん
2007/07/25(水) 19:11:16N = 10000000
0.0 - 16.7: 0.699031
16.7 - 33.3: 0.206966
33.3 - 50.0: 0.065772
50.0 - 66.7: 0.020377
66.7 - 83.3: 0.005860
83.3 - 100.0: 0.001542
100.0 - 116.7: 0.000351
…中略…
316.7 - 333.3: 0.000000
が実行例としてありました。それぞれ体積の範囲ごとに
どれくらい分布しているかを箇条書きみたいに出すようです。
よろしくお願いします。
0900デフォルトの名無しさん
2007/07/25(水) 19:12:190901デフォルトの名無しさん
2007/07/25(水) 19:54:06>>762
0902デフォルトの名無しさん
2007/07/25(水) 19:58:05ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4746.c
0903デフォルトの名無しさん
2007/07/25(水) 19:58:540904デフォルトの名無しさん
2007/07/25(水) 20:01:530905デフォルトの名無しさん
2007/07/25(水) 20:04:49[2]
キーボードから入力された1行を読み込み,そのアルファベットを全て大文字に
変換して表示するプログラムを作成しなさい。なお,以下に与えられるメイン関数を必ず使用し,
文字列を大文字の文字列に変換する関数str_capを作成することで完成させなさい。
ヒント:小文字とは「'a'以上 かつ 'z'以下」の文字であるので,条件式が成立した場合に
小文字→大文字変換を行う。それ以外の文字はそのままにする。 Program: pt3-3.c の一部
#include <stdio.h>
#define MAXLINE 1024
void str_cap(char src[], char dst[]);
int main(void) {
char line[MAXLINE], conv[MAXLINE];
printf("Input a line ->");
gets(line);
str_cap(line, conv);
printf("Original : %s\n", line);
printf("Converted: %s\n", conv);
return 0;
}
実行結果
$ ./pt3-3
Input a line -> hiroshima city
Original : hiroshima city
Converted: HIROSHIMA CITY
$
0906デフォルトの名無しさん
2007/07/25(水) 20:05:46[3] 環境
[3.1] Linux
[3.2] gcc 3.4
[3.3] C
[4] [無期限]
[5] 関数部分をifを使って組む、toupperは使ってはいけない
お願いします
0907デフォルトの名無しさん
2007/07/25(水) 20:26:03分かりませんか?
offspringを使って左右に潜っていくんだろうけど
最終的にどうなれば求める値なのかさっぱりわからん・・・・
0908デフォルトの名無しさん
2007/07/25(水) 20:29:28void str_cap(char str1[], char str2[]) {
int i;
for(i = 0; str1[i] != '\0'; i++) {
if(('a'<=str1[i]) && (str1[i]<='z')) str2[i]=str1[i]-'a'+'A';
else str2[i]=str1[i];
}
str2[i]='\0';
}
0909デフォルトの名無しさん
2007/07/25(水) 20:34:480910デフォルトの名無しさん
2007/07/25(水) 20:38:18ヒントは無視してるがやってみた
#include<stdio.h>
int main(void){
char lower[]="abcdefghijklmnopqrstuvwxyz";
char upper[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int i;
printf("void str_cap(const char *src, char *dest){\n");
printf("\tdo{\n");
printf("\t\t*dest=*src;\n");
for(i=0;i<26;i++) printf("\t\tif(*src=='%c') *dest='%c';\n", lower[i], upper[i]);
printf("\t\tsrc++;\n");
printf("\t\tdest++;\n");
printf("\t}while(*src);\n");
printf("}\n");
return 0;
}
0911デフォルトの名無しさん
2007/07/25(水) 20:38:39それvipでみたな
ヒントもらえたのに解決しなかったのか?
0912デフォルトの名無しさん
2007/07/25(水) 20:38:40それ以外なら入力しなおす。
ERFEやEERFもOK。この4文字で構成(F,RとEが2回で
0913デフォルトの名無しさん
2007/07/25(水) 20:40:28BAD FACE
0914デフォルトの名無しさん
2007/07/25(水) 20:42:48printf("}\n");
↓
printf("\t*dest='\0';\n}\n");
0915デフォルトの名無しさん
2007/07/25(水) 20:56:53ありがとうございます。ギリギリ間に合いました。
お手数かけてすみませんでした。
0916デフォルトの名無しさん
2007/07/25(水) 21:04:05宿題なら >>1 を読んで書きなおし
0917デフォルトの名無しさん
2007/07/25(水) 21:10:39>>910
ありがとうございました。
0918デフォルトの名無しさん
2007/07/25(水) 21:22:18printf("Converted: %s\n", conv);のconvの部分が出力されません
http://newjizou.s6.xrea.com/cgi-bin/source/up0098.c
0919デフォルトの名無しさん
2007/07/25(水) 21:27:47これじゃコンパイルできんだろ?
0920デフォルトの名無しさん
2007/07/25(水) 21:29:33コンパイルはできたのですが、その部分が出力されないのです。
0921デフォルトの名無しさん
2007/07/25(水) 21:30:11置換すらまともにできないのかYO
0922デフォルトの名無しさん
2007/07/25(水) 21:36:52度々すみません。コンパイルがうまくできてないようなんですが
どこが間違っているのかわからないのですが。
お教え願いないでしょうか?
0923デフォルトの名無しさん
2007/07/25(水) 21:43:05にするといいかもNE!
0924デフォルトの名無しさん
2007/07/25(水) 21:43:11コンパイルはできたのはこっちでした
http://newjizou.s6.xrea.com/cgi-bin/source/up0099.c
0925デフォルトの名無しさん
2007/07/25(水) 21:49:44置換された文字が間違ってるからダメなんだ
0926デフォルトの名無しさん
2007/07/25(水) 21:53:32落ち着いて見てみると修正した部分以外にも違っていた
すみません、本当に自分が馬鹿でした・・・
0927デフォルトの名無しさん
2007/07/25(水) 21:57:13折角変換処理を通した後で '\0' で上書きするということは
memset(dest, '\0', strlen(str));
と等しい。
0928デフォルトの名無しさん
2007/07/25(水) 22:04:12>>908のstc[i]='\0';の部分を修正したところ、正常に動作しました
ありがとうございました、お世話かけました。
0929デフォルトの名無しさん
2007/07/25(水) 22:08:37[2] 問題文(含コード&リンク):
Linuxでは、mmap()システムコールを使うと、
複数のプロセス間で仮想アドレス空間の一部を共有することができる。
このようなプログラムを作成し、
実際に仮想アドレス空間の一部が共有されていることを確認しなさい。
[3] 環境
[3.1] OS: LINUX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年7月26日まで
さっぱり見えてきません。
何卒宜しくお願い致します。
0930デフォルトの名無しさん
2007/07/25(水) 22:20:51[2] 問題文(含コード&リンク):
正の整数nを入力して、1からnまでの積(階乗)を求めるプログラムを
作成さいなさい
[3] 環境
[3.1] OS: Windows
[3.2] 言語: C言語
[4] 期限: 2時間以内
よろしくお願いします
0931デフォルトの名無しさん
2007/07/25(水) 22:34:26int main(void)
{
unsigned int n, val = 1;
scanf("%d", &n);
while (n > 0) {
val *= n--;
}
printf("%d\n", val);
return 0;
}
こんなんでいいの?
unsigned intを超える値を表示させろというなら面倒だな。
0932デフォルトの名無しさん
2007/07/25(水) 22:39:03#include <stdio.h>
int main(void) {
int n,i,r;
printf("n = ");
scanf("%d",&n);
for(i=1,r=1; i<=n; i++)
printf("%d! = %d\n",i,r*=i);
return 0;
}
0933デフォルトの名無しさん
2007/07/25(水) 23:10:40>>931の言うように、任意のnには無理だけど。
#include <stdio.h>
int fact(int n){
return n>1?n*fact(n-1):1;
}
int main(){
int n;
printf("n = ");
scanf("%d",&n);
printf("%d\n",fact(n));
return 0;
}
0934プログラミング初心者
2007/07/25(水) 23:23:39[2]問題文(含コード&リンク): 2つの符号なし整数a,b(ただし、a>bとする)を
キーボードから読み込み
�@a,bを2進表示し、配列の中にビットを格納しなさい
�Aa,bの四則演算
c=a+b
d=a-b
e=a*b
f=a/b(商f1と余りf2)を計算しその結果を出力しなさい
[3]環境
[3.1] OS: Windows
[3.2] 言語: C言語
[4]期限:2007年7月28日まで
全然見えてきません。
よろしくお願いします。
0935デフォルトの名無しさん
2007/07/25(水) 23:34:59[2] 問題文:
自分で作成したデータファイルを読み込みんで以下のような出力が出るようにする。
abc efg abc hijkl efg xxxxxxxxx これを
abc, 3 efg, 3 hijkl, 5 xxxxxxxxx, 9 のようにする。
同じ文字は二度も表示させない。それぞれの文字数をカウントする。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C++
[4] 期限:7月30日まで
よろしくお願いします。
0936デフォルトの名無しさん
2007/07/25(水) 23:54:44こんなんでいいかい?
#include <stdio.h>
void dtob(unsigned int n, char *s) {
unsigned int i = 32;
s[i] = '\0';
for (i = 31; i >= 0; i--) {
s[i] = (((n >> (31 - i)) & 1) + '0');
}
}
int main(void) {
unsigned int a, b;
char buf[33]; /* for 32bit */
scanf("%d %d", &a, &b);
dtob(a, buf);
printf("%s\n", buf);
dtob(b, buf);
printf("%s\n", buf);
printf("%d + %d = %d\n", a, b, a+b);
printf("%d - %d = %d\n", a, b, a-b);
printf("%d * %d = %d\n", a, b, a*b);
b && printf("%d / %d = %d(%d)\n", a, b, a/b, a%b);
return 0;
}
0937デフォルトの名無しさん
2007/07/26(木) 00:17:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4748.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4749.c
使い方
1:4748と4749を同じディレクトリ内でコンパイルする。
さらに、同じディレクトリ内に、hogeという名前のファイルを作る。
2:端末を二つ立ち上げ、片方で4748を、もう片方で4749を実行する。
3:4748で2,3文字入力してエンターしたあと、4749で'x'以外で何か一文字入力してエンター
4:すると、4748で入力した文字列が4749のプログラムに出力される。
0938デフォルトの名無しさん
2007/07/26(木) 00:18:310940686
2007/07/26(木) 00:26:12http://sa-wiki.com/upload/src/up0151.txt
>期限: ([2007年7月23日9:00まで] )
もうとっくに切れているし、必要ないかもしれませんが、一応作ったので
極力ソースの変更はしないようにしたつもりです
コメントは入れてませんし、メモリの開放が失敗しているかもしれません
問題の「その後、木のノードからつながる住所データを表示する。」の意味が分からなかったので手を付けていません
素人(自分)がやったのできれいではありません
0941デフォルトの名無しさん
2007/07/26(木) 00:26:38「同じ文字は二度も表示させない」ってのは何のこと?
「同じ単語は…」のことか?
0942デフォルトの名無しさん
2007/07/26(木) 00:41:47dataType* f(nodeType *p,int k) {
int n=k;
if(k<1)return NULL;
if(p->left!=sentry)n-=(p->left->offspring+1);
if(n==1)return &(p->data);
if(n<1)return f(p->left,k);
if(p->right!=sentry)return f(p->right,n-1);
return NULL;
}
dataType* RBSTfindKth(int k){
return f(head,k);
} 該当箇所にコピー,ヘッダにf()の宣言追加,
メニュー文字列に5:find追加でおk
0943デフォルトの名無しさん
2007/07/26(木) 01:39:43[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4751.txt
[3] 環境
[3.1] Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7/31まで
[5] その他の制限:特になし
締め切り間近です。
どうか皆さんの力を貸してください。
0944デフォルトの名無しさん
2007/07/26(木) 01:45:29[2] 問題文:
読み込んだ分数を連分数として出力せよ。全ての分子が1になったときに連分数にする計算はとめればよい。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C++
[4] 期限:明日(正確には今日)まで・・・
お願いします。
0945デフォルトの名無しさん
2007/07/26(木) 02:18:38まず
> 読み込んだ分数
っていう前提条件をよこせ
0946944
2007/07/26(木) 02:21:10float a, b, c;
std::cin >> a;
std::cin >> b;
c = a/b;
上記でいうcが読み込んだ分数です。
よろしくお願いします。
0947デフォルトの名無しさん
2007/07/26(木) 02:26:58なんとなく lexico だけ
#define lwstr(x) (isupper(x)?tolower(x):(x))
int lexico(char *a,char *b){
int i=0;
while(*a && *b)
i=lwstr(*a)-lwstr(*b),a++,b++;
return i;
}
0948デフォルトの名無しさん
2007/07/26(木) 02:33:59ヒント・参考のとおりに書いたつもり
くそーすだが
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4752.c
0949デフォルトの名無しさん
2007/07/26(木) 02:35:07よりによってfloatか.微妙な誤差が出るかも
記法はwikiにならった
#include <iostream>
using namespace std;
int main() {
float A, B;
cout << "input numerator (A in A/B)" << endl;
cin >> A;
cout << "input denominator (B in A/B)" << endl;
cin >> B;
if (A == 0) {
cout << 0 << endl;
} else if (B == 0) {
cout << "error" << endl;
} else {
cout << "[" << (int)(A/B) << "; ";
A = A-(int)(A/B)*B;
while (A != 1) {
if (B-(int)(B/A)*A == 0) { B /= A; break; }
cout << (int)(B/A) << ", ";
float w = A; A = B-(int)(B/A)*A; B = w; }
cout << (int)B << "]" << endl; } }
0950944
2007/07/26(木) 02:46:42ありがとうございます!このアルゴリズムを理解して寝ますwww
本当に助かりました☆
0951948
2007/07/26(木) 02:53:490952デフォルトの名無しさん
2007/07/26(木) 05:58:290953デフォルトの名無しさん
2007/07/26(木) 06:38:340954デフォルトの名無しさん
2007/07/26(木) 09:04:590955デフォルトの名無しさん
2007/07/26(木) 09:10:02俺の頭じゃわかりません><
0956デフォルトの名無しさん
2007/07/26(木) 09:10:390957デフォルトの名無しさん
2007/07/26(木) 09:11:48http://www.google.co.jp/search?q=%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%83%88&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox
0958デフォルトの名無しさん
2007/07/26(木) 09:21:140959デフォルトの名無しさん
2007/07/26(木) 09:23:06一応学校の規定で単位はもらえるが、適切に行動が起こせないから困る。
今はなんだかんだ言ってもバカでも金で学歴が買える時代だしな。
0960デフォルトの名無しさん
2007/07/26(木) 13:40:50要は再帰呼び出しが理解できないでハマってるんだろうけど
フローチャートで書いてもそこんところは分かりやすくならんのよ
0961デフォルトの名無しさん
2007/07/26(木) 13:44:200962デフォルトの名無しさん
2007/07/26(木) 13:56:200963デフォルトの名無しさん
2007/07/26(木) 13:57:03[2] 問題文(含コード&リンク): ttp://s-io.mydns.jp/up/1/_/jump/1185417223.c/attatch PASS:c
四則演算のプログラムとして提出したのですがgets関数を使って書き換えろといわれ返されてしまいました
上のプログラムを元にして文字入力(取得)にgets関数を使った物を作ってください。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C言語
[4] 期限: 7月27日
[5] その他の制限: gets関数をつかっていればそれ以外には特に指定なし
よろしくお願いします。
0964デフォルトの名無しさん
2007/07/26(木) 14:02:170965デフォルトの名無しさん
2007/07/26(木) 14:36:12void readch(void) /* 1文字を読む、空白は読み飛ばす */
{
#if 0
do {
if ((ch = getchar()) == EOF) return;
} while (ch == ' ' || ch == '\t');
#else
static char buf[1000];
static int index;
if (index == 0) gets(buf);
do {
if ((ch = buf[index++]) == '\0') {
ch = '\n';
return;
}
} while (ch == ' ' || ch == '\t');
#endif
}
0966デフォルトの名無しさん
2007/07/26(木) 14:41:22改悪にしかなってないのがwarosu
教官どんだけアホなのかと
0967デフォルトの名無しさん
2007/07/26(木) 14:45:15ありがとうございます。
やっぱり無理に書き換えても無駄が増えるだけですよね・・・
最初から新しく書き直したほうがいいんでしょうか?
0968デフォルトの名無しさん
2007/07/26(木) 14:47:150969デフォルトの名無しさん
2007/07/26(木) 14:52:53どう書き直そうがgets()を使う限り改悪にしかならんから諦めろ
(というかこのコードなら、例えfgets()であろうと同じことが言える)
0970デフォルトの名無しさん
2007/07/26(木) 15:26:16[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4720.txt
プログラム問題文に沿って作ったものと、それに2つの要素を追加修正した
2つのプログラムの作成をお願いします。
[3] 環境
[3.1] OS: windows XP
[3.2] visual studio 2005
[3.3] 言語: C++
[4] 期限: 2007/07/26 13:00まで
[5] その他の制限: 特に無し
よろしくお願いします
0971デフォルトの名無しさん
2007/07/26(木) 16:12:590972デフォルトの名無しさん
2007/07/26(木) 16:15:210973デフォルトの名無しさん
2007/07/26(木) 16:27:04>>970 の期限は
[4] 期限: 2007/07/30 13:00まで です。
先生方、お願いしまつ。
0974デフォルトの名無しさん
2007/07/26(木) 17:32:00[2] 問題文
文字列が回文かどうか判定をするプログラムを作成せよ
実行例
文字列を入力してください。
abcdcba(Return)
abcdcbaは回文です。
文字列を入力してください。
unko6yy6oknu(Return)
unko6yy6oknuは回文です。
文字列を入力してください。
abcdefg(Return)
abcdefgは回文ではありません。
[3] 環境
[3.1] Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7/30まで
[5] その他の制限:特になし
ポインタを使わなければいけないみたいですがさっぱり分かりません。
先生方、もしよろしければお助けください。お願いします。
0975デフォルトの名無しさん
2007/07/26(木) 17:58:32http://pc11.2ch.net/test/read.cgi/tech/1184003625/598
0976デフォルトの名無しさん
2007/07/26(木) 18:12:28釣りはとっとけこのクソッタレ野郎
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4758.c
0977デフォルトの名無しさん
2007/07/26(木) 18:15:230978デフォルトの名無しさん
2007/07/26(木) 18:17:28#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool isPalindrome(const char * word)
{
unsigned len = strlen(word);
if (len == 0) return false;
for (unsigned ic = 0; ic < len / 2; ++ic) {
if (word[ic] != word[len - 1 - ic]) return false;
}
return true;
}
int main()
{
char buf[200];
scanf("%199[^\n]", buf);
printf("%s is%s palindrome.\n", buf, isPalindrome(buf) ? "" : " not");
return 0;
}
0981デフォルトの名無しさん
2007/07/26(木) 20:21:04ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4759.zip
問題文に沿って作ったものと、2つの各要素を個別に追加したもの計3ファイル
2つの要素を両方追加したファイルが必要なら自分で作ってくろ。
C/C++の宿題を片付けます 94代目
http://pc11.2ch.net/test/read.cgi/tech/1185452895/
0983プログラミング初心者
2007/07/26(木) 22:18:40ありがとうございます。
一度やってみましたがデバッグ後に何すればいいのかわかりません
0984デフォルトの名無しさん
2007/07/26(木) 22:27:320985デフォルトの名無しさん
2007/07/26(木) 23:11:17http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4760.c
0986デフォルトの名無しさん
2007/07/27(金) 00:04:02[2] 問題文(含コード&リンク):
以下の円周率を求めるプログラムに、
ニュートン法を適用し、加減乗算のみに書き換えなさい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4761.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: 特になし
[3.3] 言語: C
[4] 期限: 2007年7月27日23:00まで
[5] その他の制限: よろしくお願いします。
0987デフォルトの名無しさん
2007/07/27(金) 00:33:50[2] 問題文:
再帰関数を用いて以下のような三角形を印字せよ。
入力:3
*
**
***
*の個数も印字せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2007年7月23日22:00まで
[5] その他の制限:
forで以下のように作ったのですが、再帰の場合の書き方がわかりません。以下を再帰に書き換えるような形で作っていただけると、大変有り難いです。
よろしくお願い致します。
#include<stdio.h>
int kazu(int n);
main()
{ int a,b;
scanf("%d",&a);
b=kazu(a); }
int kazu(int n)
{ int i,j;
for(i=1;i<=n;i=i+1)
{ for(j=0;j<i;j=j+1)
{ printf("*"); }
printf("\n"); }
}
0988デフォルトの名無しさん
2007/07/27(金) 00:42:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4762.c
凝りに凝りまくったぜぇ
誰かに丸投げしたのが一目瞭然なほどにな
本当に丸投げスレは地獄だぜフウハァハー
0989デフォルトの名無しさん
2007/07/27(金) 00:47:56#include<stdio.h>
int kazu(int n);
main()
{ int a,b;
scanf("%d",&a);
b=kazu(a);
printf("%d\n",b);}
int kazu(int n)
{ int i,j;
if(n<1)return 0;
j=kazu(n-1);
for(i=0;i<n;i=i+1)
{ printf("*"); }
printf("\n");
return j+n;}
0990デフォルトの名無しさん
2007/07/27(金) 00:58:54どうもありがとうございます。
本当に助かりました。
0991デフォルトの名無しさん
2007/07/27(金) 01:07:29[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
空白または改行で区切られている単語だけからなる文章があるとする。
これを列は15文字以内(全角を1文字、半角は0.5文字とする)
にして、最小の行に納めるようにせよ。
注意:単語の途中で改行をはさむことはできない。
(例)
123456789012345<-15文字分はここまで
--------ここから-----------------
日本 中国 アメリカ インド
フランス イタリア スペイン
メキシコ ドイツ カナダ イギリス スイス
サウジアラビア 南アフリカ共和国 ブラジル
--------ここまで----------------
(実行結果)
日本 中国 アメリカ インド
フランス イタリア スペイン
メキシコ ドイツ カナダ イギリス
スイス サウジアラビア
南アフリカ共和国 ブラジル
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc2.95-3
[3.3] 言語: C
[4] 期限: 8月1日
[5] その他の制限:
無制限(授業でならっていないものでも、自分で勉強して理解したのなら何をつかってもいい)
0992デフォルトの名無しさん
2007/07/27(金) 01:10:500993デフォルトの名無しさん
2007/07/27(金) 01:24:04面白そうな問題だ。ちょっと時間がないんで解けないが・・・
これってナップサック問題っていうんだっけ?
あれみたいな感じで、入力内容によっては全パターン検索
しようとしたら膨大な時間になりそうな風に感じるんだが。
そういうの詳しい人いない?
0994デフォルトの名無しさん
2007/07/27(金) 01:33:03グリーディ法でいけそうな問題だね。めんどくさそうだけど
0995デフォルトの名無しさん
2007/07/27(金) 03:03:10#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(void){
vector<string> v;
string word;
int i;
while(1){
cin >> word;
if(cin.eof() || cin.fail()) break;
for(i=0;i<v.size();i++){
if(v[i]==word) break;
}
if(i>=v.size()) v.push_back(word);
}
for(i=0;i<v.size();i++){
cout << v[i] << "," << v[i].size() << " ";
}
cout << endl;
return 0;
}
0996デフォルトの名無しさん
2007/07/27(金) 04:18:53#include <set>
#include <string>
int main( int argc, char ** argv ) {
typedef std::set< std::string > dict_t;
dict_t wc;
while ( 1 ) {
std::string word;
std::cin >> word;
if ( std::cin.eof() || std::cin.fail() ) break;
wc.insert( word );
}
for ( dict_t::iterator it = wc.begin(); it != wc.end(); it++ ) std::cout << *it << ", " << it->length() << " ";
std::cout << std::endl;
return 0;
}
set<> なり,map<> なりじゃなきゃ遅くてどうしようもないだろうに
0997デフォルトの名無しさん
2007/07/27(金) 08:13:33指定にgets使わないといけないとか言ってクレームした出題者がいるから
それもgets使わないといけないと思われ。
0998デフォルトの名無しさん
2007/07/27(金) 08:51:42http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4773.c
全角半角の判定のために非標準の関数wcwidthを使った。
0999998
2007/07/27(金) 08:54:04> break;
これは消し忘れ。
1000 ◆mM9WALL8Ws
2007/07/27(金) 08:54:1310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。