C/C++の宿題片付けます 147代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/03/31(木) 15:35:33.04【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
【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++の宿題片付けます 146代目
http://hibari.2ch.net/test/read.cgi/tech/1296387672/
0002デフォルトの名無しさん
2011/03/31(木) 15:43:29.310003デフォルトの名無しさん
2011/03/31(木) 16:10:07.660004デフォルトの名無しさん
2011/04/01(金) 14:24:00.11どうして?
0005デフォルトの名無しさん
2011/04/01(金) 14:39:31.00立て直す必要なし
0006デフォルトの名無しさん
2011/04/01(金) 15:05:03.83もうすぐ春休みあけで商売がまわりだすんだろうな
ちょっと興味あるぜ
どれぐらい儲かってんだろ
0007デフォルトの名無しさん
2011/04/01(金) 17:59:52.95[2] 問題文(含コード&リンク):
下記のような2chへの書き込み時刻のログを標準入力より受け取り、
EOF がきたら現在の !ninja レベルがいくつであるか出力せよ
!ninja レベルについて
最初の書き込み時にはレベル1である
最後にレベルアップした書き込み時刻から24時間以上経過して書き込むと1レベルアップする
条件1 一番最初の書き込み時刻以前にはクッキーは存在しないものとする
条件2 ●無しとする
条件3 書き込み時刻のログは古いものから順に並んでいるものとする
2011/02/11 22:33:44
2011/02/12 01:23:45
2011/02/14 18:19:20
[3] 環境
[3.1] OS: Windows & Linux 両方
[3.2] コンパイラ名とバージョン: なんでも
[3.3] 言語: どちらでも可
[4] 期限: [無期限]
[5] その他の制限: 特になし
>どれぐらい儲かってんだろ
0 円です。
0009デフォルトの名無しさん
2011/04/01(金) 21:17:06.40※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
0010デフォルトの名無しさん
2011/04/01(金) 23:11:41.690011デフォルトの名無しさん
2011/04/01(金) 23:21:21.86※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
間違えました。
>どれぐらい儲かってんだろ
0 モリタポです。
0013デフォルトの名無しさん
2011/04/01(金) 23:59:21.43※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
0014デフォルトの名無しさん
2011/04/02(土) 00:07:49.75◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
0015デフォルトの名無しさん
2011/04/02(土) 00:08:34.78◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
◆QZaw55cn4c
0016デフォルトの名無しさん
2011/04/02(土) 21:09:55.15リストは繋げるだけだから早い
この解釈でおk?
0017デフォルトの名無しさん
2011/04/03(日) 00:55:58.270019デフォルトの名無しさん
2011/04/03(日) 09:53:56.26言語としては規定されていません。
各々の環境でスレッドを管理する関数を呼び出すことになります。(win32 や posix-thread など。)
0021デフォルトの名無しさん
2011/04/03(日) 10:54:07.86※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
0022デフォルトの名無しさん
2011/04/03(日) 11:31:07.87http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/71.txt
0023デフォルトの名無しさん
2011/04/03(日) 11:50:36.59#include <stdio.h>
#include <string.h>
#include <time.h>
int main(void){
time_t cur, last_levelup=0;
struct tm hoge={0};
char buf[256], *p;
int year, month, day, hour, min, sec, level=0;
while(fgets(buf, sizeof(buf), stdin)){
p=strchr(buf, '\n');
if(p) *p='\0';
sscanf(buf, "%d/%d/%d %d:%d:%d", &year, &month, &day, &hour, &min, &sec);
hoge.tm_year=year-1900;
hoge.tm_mon=month-1;
hoge.tm_mday=day;
hoge.tm_hour=hour;
hoge.tm_min=min;
hoge.tm_sec=sec;
cur=mktime(&hoge);
if(difftime(cur, last_levelup)>=60*60*24){
printf("Level %d : %s\n", ++level, buf);
last_levelup=cur;
}
}
printf("\n現在のレベルは %d です\n", level);
return 0;
}
0024デフォルトの名無しさん
2011/04/03(日) 18:05:28.72とは限らない
0025デフォルトの名無しさん
2011/04/03(日) 23:15:54.87http://hibari.2ch.net/test/read.cgi/tech/1301773320/
http://hibari.2ch.net/test/read.cgi/tech/1246115922/
ってネタが真っ先に思いついた…orz
少し2chから離れよう
0026デフォルトの名無しさん
2011/04/04(月) 19:27:32.72なにこれ。素人さん?
「API」「システムコール」といえばよかったですかね。
0028デフォルトの名無しさん
2011/04/04(月) 20:38:21.31「API」「システムコール」ってどういうものなの?
http://ja.wikipedia.org/wiki/Windows_API
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%B3%E3%83%BC%E3%83%AB
0030デフォルトの名無しさん
2011/04/04(月) 20:47:07.72人の記述を盗まず、自分の口で語って
0031�@問題
2011/04/04(月) 21:29:54.24[2] 次のコードにコメントを付けよ。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>/*処理系によりconio.h→console.h*/
char*h="・○●◇\n";
int p,t,a,d,c,v,i,e=10,s,o,z[255]={0},m[90]={0},r[]={-10,- 9,-8,-1,1,8,9,10};
void k()
{
if(m[p]==0)
for( i = 0 ; i < 8 ; i++ )
{
for ( c = 0 , v = p + r[i] ; m[v] == 3-t ; v+=r[i]) c++ ; if(c&&m[v] == t )
{
a+=c;
v=p;
if( d )
do m[v]=t,v+=r[i];
while(m[v]!=t);
}
}
}
0032�@問題part2
2011/04/04(月) 21:30:56.95{
system("cls"); /* コマンドプロセッサを呼び出し、cmnd で指定したコマンドを実行する。 */
for( p = 9 ; p < 82 ; ++p )
a?a:k(),printf("%.2s",&h[m[p]*2]);
}
0033�@問題part3
2011/04/04(月) 21:31:44.54int main()
{
for( 50[z] = 80[z] = 9,54[z] = 77[z] = m[40] = m[50] = t = s = i = 1
, 52[z] = 75[z] = -1
, 56[z] = 72[z] = -9
, m[41] = m[49] = 2
; i < e
; m[i++*9] = 4 );
0034�@問題part4
2011/04/04(月) 21:32:38.05for( ; ; a = d = 0 )
{
b();
if( a )
for( d = a = s = p = 8 ; a == 8 ; k() )
if ( t - 2 )
{
o = e [m];
for( i = 0, e[m] = 3 ; i != 13 ; c = ( i = _getch() )[z])
{
if( c && e + c > 9 && e + c < 81 )
e[m] = o, o = ( e += ( (e+c)%9 ? c : c*2))[m], e[m] = 3;
b();
}
e[m] = o, i = e/9, p = e%9 + i*9;
}
else
++p;
else if
(s)s=0, printf("pass");
else break;
t=3-t;
}
return 0;
}
0035�@問題part5
2011/04/04(月) 21:33:10.66[3] 環境
[3.1] OS: Windows Vista
[3.2] VC++2005
[3.3] 言語: (C言語)
[4] 期限: ([2011年4月8日まで]
0036デフォルトの名無しさん
2011/04/04(月) 21:43:45.38実際の仕事じゃこんなコードじゃないよな?
0037�@問題(補足)
2011/04/04(月) 21:50:17.35そういえば先輩は「作り変えても良いよ」と言っていました。
オセロのソースです。
>>19 に対する返答としては、
「スレッドに関する諸機能は OS が提供するものであり、C 言語には内包されていない。
C からスレッドを使用するには、OS により規定されている方法で OS の機能を使用しなければならない。
Windows ならば win32api (DLL の形で提供されている、最終的には不正命令による内部割込みだったはず。)、
unix ならばシステムコール(i386 上で実装されているLinux を含む種々の unix 系OS は、最終的にソフトウェア割込み(int 命令)だったはず。)を呼び出すことにより、OS 提供の機能を使用する。」
※i386コールゲートによるシステムコールの実装は寡聞にして知りません。教科書的にはこれが正だと思うのですが。
0039デフォルトの名無しさん
2011/04/04(月) 23:40:18.66荒れたスレを演出したいの?
0040デフォルトの名無しさん
2011/04/04(月) 23:48:44.10私のコメントを読みたくない、という希望が少なからずあるので、そんな人のために専用ブラウザで弾けるようにしています。
あと、http://hibari.2ch.net/test/read.cgi/tech/1295273862/ の情報宣伝活動も兼ねています。
0041デフォルトの名無しさん
2011/04/04(月) 23:58:41.34>>19に対する返答としては、
Cの言語仕様にはスレッドはないけれど、各環境にはCから使うことのできるスレッド関連ライブラリが
提供されているので、たいていの場合はそれをつかってマルチスレッドアプリを作成する。
ぐらいでいいんでないの。
簡単なレスだと適切な用語を使えない。
小難しそうなレスの時はつぎはぎ感が出ているし内容もずれている。
細かく聞かれると、すぐに別サイトへのアンカーを貼る。
これじゃあ素人だといわれてもしょうがないよね。
どこがずれているか聞きそうだから書いておくよ。
>>38だとlinuxならシステムコールを自前で呼び出さないとスレッドを用いたアプリが実装できないように読める。
> C からスレッドを使用するには、OS により規定されている方法で OS の機能を使用しなければならない。
> unix ならばシステムコールを呼び出すことにより、OS 提供の機能を使用する。
と。pthreadどこいったの。Windowsはwin32apiを使えばいいって書いてるのにね。
そういうわけで、たたかれてるんだと思うよ。
0042デフォルトの名無しさん
2011/04/05(火) 00:00:47.59めんどくせ。
>ライブラリ
たしかにこの場合には極めて適切な言葉ですね。
>簡単なレスだと適切な用語を使えない。
>つぎはぎ感
>内容がずれている。
>pthreadどこいったの
ご指摘感謝。次の機会には適切な言葉で対処できるように検討します。
特に、pthread はシステムコールそのものではない点が致命的に違っていました。
>細かく聞かれると、すぐに別サイトへのアンカーを貼る。
これは確かに余計でした。失礼。
0044デフォルトの名無しさん
2011/04/05(火) 00:16:39.600045デフォルトの名無しさん
2011/04/05(火) 00:42:08.43なんで外したの?
単に付け忘れです。私の専ブラは自動でつけてくれないのです、それだけです。
0047デフォルトの名無しさん
2011/04/05(火) 01:03:51.670048デフォルトの名無しさん
2011/04/05(火) 01:46:12.19必死でぐぐってる姿は相手から見えないんだから。
0049デフォルトの名無しさん
2011/04/05(火) 06:43:25.93それ七行プログラミングのオセロに似てないか?
まぁ、else使ってる所とか、カスタマイズが甘いから、
七行ぎりぎりの初期のバージョンを改造してるのかな?
そのバージョンならググれば、変数を分かりやすくして
コメントが入ってるバージョンが見つかるはず。
あとは、ぱっと見、入力方法が違うくらいかな?
0051デフォルトの名無しさん
2011/04/05(火) 12:40:03.98全部走査して最初に置けるところに置く仕様なのに
負けるって、ある意味器用だなw
0052デフォルトの名無しさん
2011/04/05(火) 19:32:51.59[2] 問題文(含コード&リンク):
以下のような入力が与えられたときに
3
11010
01111
10101
01110
01100
01011
01010
00100
00110
10100
11110
01110
01101
01110
00001
以下のように出力されるプログラムを作成してください。よろしくお願いします。
4
3
8
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2011/4/9
0053デフォルトの名無しさん
2011/04/05(火) 19:49:00.904/7 予測 http://up3.viploader.net/ippan/src/vlippan198234.jpg
発表はドイツ気象庁 http://www.dwd.de/
0054デフォルトの名無しさん
2011/04/05(火) 21:23:45.75規則性が分からないんだがヒントはないの?
0055デフォルトの名無しさん
2011/04/05(火) 21:25:13.1616で割る。
0056デフォルトの名無しさん
2011/04/05(火) 21:35:14.71もっとヒントが欲しい
最初の数値は 5x5 の塊がいくつ続くかを示していて
11010
01111
10101
01110
01100
に 4 が対応
01011
01010
00100
00110
10100
に 3 が対応
11110
01110
01101
01110
00001
に 8 が対応しており、
3つの塊は互いに独立しているってとこまでは合ってる?
0057デフォルトの名無しさん
2011/04/05(火) 21:42:15.81常に438が出力されるコードを書けば題意を満たすことができる
0058デフォルトの名無しさん
2011/04/05(火) 21:43:21.61この問題おもしろいんだよね。前スレの最後の頃に
荒れて荒れてしょうがなかったから、話題を転じる
ためにルールを探すプログラムを書く問題をだした。
この問題も、あなたが、いくつかの問題の解法の
パターンを持っているとして、それを、これではどうかな?
これではだめかな?というふうに確かめていって、
全部解が当てはまったときに、これが多分解法の
プログラムでしょ、とソースを示す。というような問題と
して捉えるならば、面白いんだよね。
0059デフォルトの名無しさん
2011/04/05(火) 22:13:58.25#include <stdio.h>
int main(void){
printf("4\n3\n8\n");
return 0;
}
0060デフォルトの名無しさん
2011/04/05(火) 22:28:01.51ブラックボックスでやるにしてはサンプルが少ないし
独立性の確認もできないのではどうにもならんよ
0061デフォルトの名無しさん
2011/04/05(火) 22:35:20.56たぶん、あってるはず。
余裕あったらコメントつけて再うpする。
http://codepad.org/MV69Cf8m
006257
2011/04/05(火) 22:40:52.58焦りすぎた・・・
006361
2011/04/05(火) 22:54:14.26http://codepad.org/GrIXAZD1
なぜだかレス番間違えた。
0064デフォルトの名無しさん
2011/04/05(火) 23:59:04.48見ただけで分かったわ
0065デフォルトの名無しさん
2011/04/06(水) 00:06:31.77006661
2011/04/06(水) 01:22:21.57http://codepad.org/B93gQFkN
・注意
これは俺が勝手に問題を解釈しただけで、題意と全然違う可能性もある。ライフゲームが正解なのかもしれんw
また、あえて簡単な解き方ではやってなくわかりづらいため、他の人のを待ったほうがいいかもかも
0067デフォルトの名無しさん
2011/04/06(水) 01:43:45.99適当言うなやww
006861
2011/04/06(水) 11:56:29.47もう1つのやり方を加えてみた
手打ちが面倒だったから、ランダム化してみた
春休みもそろそろ終わって宿題増えるかなぁ
0069デフォルトの名無しさん
2011/04/06(水) 22:54:49.17例「hello」→「holel」
#include<stdio.h>
#include<string.h>
int main(void){
char str[80];char str2[80];
int i,j,k=0;
printf("文字列を入力してください");
gets(str);
j=strlen(str);
for(i=0;i<strlen(str);i++){
if(!i%2)
str2[i]=str[k++];
else
str2[i]=str[j--];
}
printf(str2);
return 0;
}
0070デフォルトの名無しさん
2011/04/06(水) 23:15:34.65int main(void){
char str[80];char str2[80];
int i,j,k=0;
printf("文字列を入力してください");
gets(str);
j=strlen(str)-1; //strlen(str)は'\0'の部分を指し、strlen(str)-1とすることで'o'を指す
for(i=0;i<strlen(str);i++){
if(!i%2)
str2[i]=str[k++];
else
str2[i]=str[j--];
}
str2[i]='\0'; //文字列の最後に'\0'
printf(str2);
return 0;
}
0071デフォルトの名無しさん
2011/04/06(水) 23:20:37.74\0が入ってたからそこで文字列が終了してたのか・・・orz
0072デフォルトの名無しさん
2011/04/06(水) 23:21:15.11if(!(i%2))
0074デフォルトの名無しさん
2011/04/06(水) 23:21:36.5712345→15243
hello→hoellじゃないの?
0075デフォルトの名無しさん
2011/04/06(水) 23:24:54.360076デフォルトの名無しさん
2011/04/06(水) 23:28:26.85>for(i=0;i<strlen(str);i++){
>printf(str2);
0077デフォルトの名無しさん
2011/04/07(木) 01:16:41.55前スレで質問したものを参考にしてステータスを入力するゲームを作っています。
正常に動くんですが、ステータスを表示する時に0がはいってしまうのですが、なかなか直りません・
以下ソースです。ビルドして以下のステータス〜の所で0がはいってしまいます。
お力添えよろしくお願いします。
http://codepad.org/JgDVRSjp
[3]環境
OS:Windows
言語:C
[4] 期限:4月7日
よろしくお願いします。
0078デフォルトの名無しさん
2011/04/07(木) 01:25:12.61conio.hとかどこのPC-98だよ
0079デフォルトの名無しさん
2011/04/07(木) 01:39:36.61void state()の中で
player[i].hpをplayer[i].hpCurrentに代入してない
0080デフォルトの名無しさん
2011/04/07(木) 01:42:05.87俺の持ってるソースと照らし合わせてみたら、いくつか違う部分があったのだけれど改良した?
もしくは俺が改良してアップしてないだけなのかも。
いま問題なのは、HPが0でないのに0って表示されてしまうってことでおk?
008180
2011/04/07(木) 01:46:26.33一応、俺の持ってるの上げておくよー
0082デフォルトの名無しさん
2011/04/07(木) 07:53:44.52>>80 改良前のソース使ってたかもしれません。
原因がわかったので解決できました! ありがとうございました。
0083デフォルトの名無しさん
2011/04/08(金) 16:29:14.44[2] 問題文(含コード&リンク):1個以上32個以下の正整数の最大・最小・最小公倍数・最大公約数を求めよ
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2011/04/09 24:00
[5] その他の制限:特になし
よろしくお願いします
0084デフォルトの名無しさん
2011/04/08(金) 18:04:06.51整数の桁制限とか何かないの?
0085デフォルトの名無しさん
2011/04/08(金) 18:44:32.83#include <stdio.h>
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
int lcm(int a, int b) { return a / gcd(a, b) * b; }
int main(void)
{
int i, n, max, min, l, g, temp;
scanf("%d", &n);
if(n < 1 || 32 < n) return 0;
scanf("%d", &g);
max = min = l = g;
for(i = 1; i < n; i++) {
scanf("%d", &temp);
if(max < temp) max = temp;
else if(min > temp) min = temp;
l = lcm(l, temp);
g = gcd(g, temp);
}
printf("最大:%d 最小:%d 最小公倍数:%d 最大公約数:%d\n", max, min, l, g);
return 0;
}
0086デフォルトの名無しさん
2011/04/09(土) 05:08:43.63↑個数を最初に入力する。
0087デフォルトの名無しさん
2011/04/11(月) 01:31:09.50int main(int argc, int argv)
{
int n, i, *elements;
char ss[80];
gets(ss);
n = atoi(ss);
elements = (int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++){
gets(ss);
elements[i] = atoi(ss);
}
for(i=0;i<n;i++){
printf("%d, ", elements[i]);
}
return 0;
}
0089デフォルトの名無しさん
2011/04/11(月) 23:15:04.440090デフォルトの名無しさん
2011/04/11(月) 23:48:39.01FIFOを配列を使って実現したいのですが、以下をもっと簡単にできないのでしょうか?
unsigned char box[10];
box[0] =1, box[1] =2,box[2] =3, box[3] =4,box[4] =5,
box[5] =6, box[6] =7, box[7] =8, box[8] = 9, box[10] =10;
この状態で次のキューがたまると
FIFOを配列を使って実現したいのですが、以下をもっと簡単にできないのでしょうか?
unsigned char box[10];
box[0] =2,box[1] =3, box[2] =4,box[3] =5,
box[4] =6, box[5] =7, box[6] =8, box[7] = 9, box[8] =10;
このようなFIFOを実現したいのですが、どうしたらよいのでしょうか?
0091デフォルトの名無しさん
2011/04/12(火) 00:02:38.660092デフォルトの名無しさん
2011/04/12(火) 00:08:52.350093デフォルトの名無しさん
2011/04/12(火) 00:57:08.48>この状態で次のキューがたまると
たまったキューはどこにあるの?
0094デフォルトの名無しさん
2011/04/12(火) 01:21:19.68ループでまわせば?
for (i=0; i < queue_size - 1; ++i) box[i] = box[i+1];
0095デフォルトの名無しさん
2011/04/12(火) 19:31:45.52[2] 問題文(含コード&リンク):char 型配列 str[256]を宣言し、キーボードから入力された文字をこの配列に格納するプログラム
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2011/04/09 24:00
[5] その他の制限:特になし
よろしくお願いします
0096デフォルトの名無しさん
2011/04/12(火) 20:00:04.68#include <string>
int main()
{
char str[256];
std::string buff;
std::cin >> buff;
buff.copy(str, sizeof(str));
}
問題文の条件はクリアしてるが
本当はもっと条件あるだろ?
0097デフォルトの名無しさん
2011/04/12(火) 20:02:00.96http://ideone.com/jfDzU
// C++超久々に書いた
// 一番悩んだのは格納する「だけ」でいいのかということ
// どういう意図の課題なのかなあ以上チラ裏
0098デフォルトの名無しさん
2011/04/12(火) 20:24:23.25ありがとうございます
格納する「だけ」でいいです。
そうとしか書いてなかったので...
0099デフォルトの名無しさん
2011/04/12(火) 20:27:23.37[2] 問題文(含コード&リンク):以下の問題に答えなさい
50
Σ((3*i)/2) = A の計算式を計算できるプログラムを完成させなさい。
i=0
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2011/04/09 24:00
[5] その他の制限:特になし
参考書の問題ですが難しくて分かりません。
お願いします。
0100デフォルトの名無しさん
2011/04/12(火) 21:00:54.73ごめん、コードも書かずにつっこみしちゃうけど
「計算できる」とはどういう意味?
単に与えられた計算式をコードに落とせばいいの?
それだけではなく結果を出力する必要がある?
逆に正しい結果だけ出力すればいいなら std::cout << (答えをベタ打ち); というのもあり?
「分からない」んじゃなくて本当は「問題設定ができてない」んじゃないかなあ...
0101デフォルトの名無しさん
2011/04/12(火) 21:23:52.73計算式通りに計算して出力するプログラムです。
ループを使えとヒントに書いてありました。
0102デフォルトの名無しさん
2011/04/12(火) 21:41:44.72http://ideone.com/VxcOi
0103デフォルトの名無しさん
2011/04/12(火) 22:03:00.41ありがとうございました
おかげで何とかなりそうです
0104デフォルトの名無しさん
2011/04/12(火) 22:34:30.66[2] 問題文(含コード&リンク):演習問題です。
1.for 文の2重ループを使って、九九の計算と出力を以下のようにするプログラムを作りなさい。
__________________________________________
| 1 2 3 4 …
|1 1
|2
|3
|
2.float 型の変数a、およびb を引数とし、a がb よりも大きければ整数1 を、小さければ整数‐1 を、同じであれ
ば整数0 を返す関数を作りなさい。
3.ポインタ変数p にint 型変数x のアドレスを格納した後、ポインタ変数p の指す変数にint
型変数y の値を足し、ポインタ変数p の指す変数に格納するプログラムを完成させなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2011/04/
[5] その他の制限:特になし
これら問題の解答がなくて困っています。模範解答をどなたか親切な方お願いします!
0105デフォルトの名無しさん
2011/04/12(火) 22:44:53.071.
printf(" ");
for(j=1;j<=9;j++)
printf("%2d",j);
for(i=1;i<=9;i++){
printf("%d",i);
for(j=1;j<=9;j++)
printf("%2d",i*j);
printf("\n");
}
2.
int func(float a,float b)
{
if(a>b)return 1;
else if(b>a)return -1;
else return 0;
}
3.
int x,y;
int *p;
x=1;y=2;
p=&x;
*p=(*p)+y;
0106デフォルトの名無しさん
2011/04/12(火) 22:49:55.18頭悪そうだなぁ
0107デフォルトの名無しさん
2011/04/12(火) 23:21:06.14宿題ではないのですけど。
[microsoft visual c++ 2010 express]
をダウンロードしたのですが、
このソフトでc言語は動かせますか?
c++じゃなくて、cを習っていますので。
どこからも文句のつけようがない完璧な仕様書がなければコーディングしない、というある意味すれた人達のひとりなのでしょう。
こういう風には死んでもなりたくない、と痛切に感じております。
0109デフォルトの名無しさん
2011/04/12(火) 23:25:13.70※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
0110デフォルトの名無しさん
2011/04/12(火) 23:29:59.45できるよ
0111デフォルトの名無しさん
2011/04/12(火) 23:36:08.76ありがとうございます。
単に使い方を知らなかっただけみたいです。
0112デフォルトの名無しさん
2011/04/13(水) 02:13:39.55そのまま出すと減点されるぞw
どこがおかしいのですか?
0114デフォルトの名無しさん
2011/04/13(水) 10:10:58.500115デフォルトの名無しさん
2011/04/13(水) 10:30:54.940116デフォルトの名無しさん
2011/04/13(水) 11:53:33.03黙ってあぼん
0117デフォルトの名無しさん
2011/04/13(水) 12:44:53.35sum += i * 3. / 2;
0118102
2011/04/13(水) 13:24:41.97勉強になりました ありがとう
ttp://ideone.com/HDDO7
0119デフォルトの名無しさん
2011/04/13(水) 14:39:19.28ありがとうございます
ただ、1の問題が
11 1 2 3 4 5 6 7 8 9
2 2 4 6 81012141618
3 3 6 9121518212427
4 4 812162024283236
5 51015202530354045
6 61218243036424854
7 71421283542495663
8 81624324048566472
9 91827364554637281
続行するには何かキーを押してください . . .
と出力されてしまいます。
0120デフォルトの名無しさん
2011/04/13(水) 19:38:46.94[2] 問題文(含コード&リンク):
little endianおよびbig endianの両方に対応するように以下のローテーション関数を作れ。
b, w, dはローテートする値、nはローテートするbit数を表す。
BYTE rotateByteRight(BYTE b, BYTE n);
BYTE rotateByteLeft(BYTE b, BYTE n);
WORD rotateWordRight(WORD w, WORD n);
WORD rotateWordLeft(WORD w, WORD n);
DWORD rotateDwordRight(DWORD d, DWORD n);
DWORD rotateDwordLeft(DWORD d, DWORD n);
ただしlittle endianとbig endianのコードを切り替えは、以下のように行うものとする
#ifdef __LITTLE_ENDIAN__
// little endianのコード
#else
// big endianのコード
#endif
[3] 環境
[3.1] OS:PPCおよびIA32のLinux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:今日中
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
標準ライブラリは使わない
0121デフォルトの名無しさん
2011/04/13(水) 20:19:59.10これ出題が間違ってない?
エンディアンによってローテイトの方法が変わるとは知らなんだ
普通、変数に格納された時点でエンディアンの問題は解決してるだろ
0122デフォルトの名無しさん
2011/04/13(水) 20:31:35.56失敬。確かに間違ってたわ。
ただ、間違って入るものの、119の出力にはならないな
2行目コピーし間違ってたりしない?
0123デフォルトの名無しさん
2011/04/13(水) 20:53:57.46固定小数点は整数部なしとする
0124デフォルトの名無しさん
2011/04/13(水) 21:19:01.61すいません
コピペしたらできなかったので、勝手にいじりました
コピペした状態のままだと
1 2 3 4 5 6 7 8 91 1 2 3 4 5 6 7 8 9
2 2 4 6 81012141618
3 3 6 9121518212427
4 4 812162024283236
5 51015202530354045
6 61218243036424854
7 71421283542495663
8 81624324048566472
9 91827364554637281
と出力されます
0125デフォルトの名無しさん
2011/04/13(水) 21:23:20.31この程度の対処をできない奴がプログラムで単位を取るのは納得できない
でもそういうスレなんだよなあ・・・
0126デフォルトの名無しさん
2011/04/13(水) 21:49:11.17そこをなんとかお願いします
0127デフォルトの名無しさん
2011/04/13(水) 22:09:57.53この今の状況を下のようになるよう治したいよね。
124と下とはどこが違うか探してみようっ!
見つけたら、どう変更すればいいか考えてみようっ!
1 2 3 4 5 6 7 8 9 ←この行の最初が全角になってるけど、実際は半角スペース2つでもおk
1 1 2 3 4 5 6 7 8 9
2 2 4 6 81012141618
3 3 6 9121518212427
4 4 812162024283236
5 51015202530354045
6 61218243036424854
7 71421283542495663
8 81624324048566472
9 91827364554637281
0128デフォルトの名無しさん
2011/04/13(水) 22:32:17.57ネットワークプログラミングすると割とよく。
>>127
その表示にしてもだめなんじゃない?罫線が。たぶん。
0129デフォルトの名無しさん
2011/04/13(水) 22:56:35.14#include<stdio.h>
int main(void)
{
int i,j;
printf(" |");
for(j=1;j<=9;j++){
printf("%5d",j);
}
printf("\n");
printf("---+---------------------------------------------------\n") ;
for(i=1;i<=9;i++){
printf("%2d|",i);
for(j=1;j<=9;j++){
printf("%5d",i*j);
}
printf("\n");
}
return 0;
}
これで良いのでしょうか?自身はありません
0130デフォルトの名無しさん
2011/04/13(水) 23:06:38.750131デフォルトの名無しさん
2011/04/13(水) 23:09:17.53出力してみたところ>>127のようになりました
アドバイスありがとうございました
0132デフォルトの名無しさん
2011/04/13(水) 23:56:59.24一般的にFIFOを実装する場合、要素の入れ替えは行わない
プッシュ位置とポップ位置を変数として持っていれば良い
厳密にはポップ位置がプッシュ位置を追い越さない工夫が必要だが、十分な配列サイズが有れば気にする必要は無いと思う
0133デフォルトの名無しさん
2011/04/14(木) 00:27:58.69自分のふがいなさを痛感し、また次回に。
0135デフォルトの名無しさん
2011/04/14(木) 06:24:24.75http://codepad.org/esQqoiSN
0136デフォルトの名無しさん
2011/04/14(木) 16:11:25.74[2] 問題文(含コード&リンク):http://ideone.com/vVzAK
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2011年4月16日24:00まで
[5] その他の制限: 特になし
お願いします
0137デフォルトの名無しさん
2011/04/14(木) 17:09:59.180138デフォルトの名無しさん
2011/04/14(木) 17:15:43.780139デフォルトの名無しさん
2011/04/14(木) 17:17:29.140140デフォルトの名無しさん
2011/04/14(木) 17:22:42.86#define N 10000
char M[N];
void func(int n)
{
if(n >= N || M[n]) return;
M[n] = 1;
func(2 * n + 1);
func(3 * n + 1);
func(5 * n + 1);
}
int main(void)
{
int i;
func(1);
for(i = 0; i < N; i++) if(M[i]) printf("%d ", i);
return 0;
}
0141デフォルトの名無しさん
2011/04/14(木) 17:27:34.890142デフォルトの名無しさん
2011/04/14(木) 17:43:05.98・1∈M
・n∈Mならば2n+1∈M
・n∈Mならば3n+1∈M
・n∈Mならば5n+1∈M
Mの要素を小さい順に出力せよ。
1: 3 4 6
3: 7 10 16
4: 9 13 21
6: 13 19 31
7: 15 22 36
9: 19 28 46
10: 21 31 51
13: 27 40 46
15: 31 46 76
0144デフォルトの名無しさん
2011/04/14(木) 19:43:05.22※スレが荒れるので、◆QZaw55cn4cは書き込み禁止です
0145デフォルトの名無しさん
2011/04/14(木) 21:35:47.550146デフォルトの名無しさん
2011/04/14(木) 21:40:35.91顔が脳裏に浮かぶようだなよ
気持ち悪いなナルシストってさ
0147デフォルトの名無しさん
2011/04/14(木) 21:56:29.910149デフォルトの名無しさん
2011/04/14(木) 22:01:49.34放置放置
0150デフォルトの名無しさん
2011/04/14(木) 22:03:11.200151デフォルトの名無しさん
2011/04/14(木) 22:03:53.13持っているから下手にこいつのペースに乗せられる奴は馬鹿
0152デフォルトの名無しさん
2011/04/15(金) 02:46:18.52void push(struct node **root, int n) {
struct node *p = *root;
if (p == NULL) {
p = malloc(sizeof(struct node));
p->n = n;
p->left = p->right = NULL;
*root = p;
return;
}
if (n != p->n) {
if (n < p->n) {
push(&p->left, n);
} else {
push(&p->right, n);
}
}
}
int pop(struct node **root) {
struct node *p = *root;
int n;
if (p == NULL)
return -1;
if (p->left)
return pop(&p->left);
assert(p->left == NULL);
n = p->n;
*root = p->right;
free(p);
return n;
}
ささいなことですが、
>struct node *p = *root;
これはありえません。
私なら、p は malloc() の返り値をうけるため *だけ* に使い、すでにpush() に入ったときからわかっている値は *root とかきます。
>>152 は p がすでにある *root の場合と *root == NULL のときに malloc() から得た値の場合との両方があり、読みにくくなってしまっています。
あとから読むときのことを考えたほうがいいと思います。
0154デフォルトの名無しさん
2011/04/15(金) 07:56:54.79人には人の流儀がある
お前を中心に世の中が回ってるわけじゃない
小学生でも分かる事がわからないのか?
いいから巣に帰れ
0155デフォルトの名無しさん
2011/04/15(金) 08:06:59.08ささいなことですが、
> if (!*root)
> if (*root == NULL)
これはありえません。
どっちかの書き方に統一しろバカ
0156152
2011/04/15(金) 10:01:42.55assert(!p->left);
だった▼よく見てなかった。
0157デフォルトの名無しさん
2011/04/15(金) 12:08:57.63双方向ではなく二分木です。
そしてニ分木を非再帰で書くんですか?やってできないことはないでしょうけれども、それでどんな利益があるのでしょうか?
0159デフォルトの名無しさん
2011/04/15(金) 12:32:19.61>>158はまるで自分自身に吐いた言葉のようですね
統一するメリットは?
生成された新しいデータを加えて全体を逐一ソートにかけるくらいなら、 Ο(logn) の二分木に放り込む方が効率がいいと考えています。
>必要もないのにニ分木で書いている
ではニ分木を使わないやり方を書けるのなら書いてみていただけませんか。その上で客観的に比較してみましょうか。
0162デフォルトの名無しさん
2011/04/15(金) 12:44:16.980163デフォルトの名無しさん
2011/04/15(金) 12:46:35.05>>153
>あとから読むときのことを考えたほうがいいと思います。
0165デフォルトの名無しさん
2011/04/15(金) 13:55:06.27上限は適当な数で構わないと思います。
今更ですが>>138>>141は私ではないので答えさせて頂きました。
>>140
皆様
ありがとうございました。
0166デフォルトの名無しさん
2011/04/15(金) 16:47:26.06アホ
氏ね
誰もお前と競争したくないわけ
何が「客観的に比較してみましょうか」だよ
相手が「したい」か「面倒臭い」のかも聞かないで自分の意見に従わせる気か
0167デフォルトの名無しさん
2011/04/15(金) 17:33:33.99#include <stdio.h>
int main(void)
{
enum {n=100};
char M[500]={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
};
int i=1;M[1]=1;
while(i<n){if(M[i]==1)M[i*2+1]=1;M[i*3+1]=1;M[i*5+1]=1;i++;}
for(i=1;i<n;i++)if(M[i]==1)printf("%3.3d ",i);
return 0;
}
0168デフォルトの名無しさん
2011/04/15(金) 17:54:23.760169デフォルトの名無しさん
2011/04/15(金) 18:18:35.79#include <stdio.h>
int main(void)
{
enum {n=100};char M[n]={0};int i=1;M[1]=1;
while(i<n){if(M[i]==1){
(i*2+1)<n?M[i*2+1]=1:0;
(i*3+1)<n?M[i*3+1]=1:0;
(i*5+1)<n?M[i*5+1]=1:0;
}i++;}
for(i=1;i<n;i++)if(M[i]==1)printf("%3.3d ",i);
return 0;
}
0170デフォルトの名無しさん
2011/04/15(金) 18:23:10.630172デフォルトの名無しさん
2011/04/15(金) 19:25:35.93客観的に比較するんじゃなくて、撤回するんだ?
0173デフォルトの名無しさん
2011/04/15(金) 20:07:46.95そんなんでよく書き込みできるな
あ、恥の概念がないんでしたっけww
0174デフォルトの名無しさん
2011/04/15(金) 23:04:08.53[2] 問題文(含コード&リンク):アスキーコード(0x21~0x7eまで)表を出力をするプログラムを作りなさい
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual C++ 2008
[3.3] 言語: C++
[4] 期限:2011年4月18日
[5] その他の制限:なし
0175デフォルトの名無しさん
2011/04/16(土) 00:07:06.74出力する表はどんな形でもいいのか?
>char M[500]={
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
>};
static char M[500];
でOK。
0177デフォルトの名無しさん
2011/04/16(土) 07:06:13.060178デフォルトの名無しさん
2011/04/16(土) 10:26:31.22#include<stdio.h>
int main(void)
{
int i,j;
printf("+---------------------------------------------\n") ;
printf("|Oct");
for(j=1;j<=8;j++){
printf("%5o",j);
}
printf("\n");
for(i=0x20;i<0x80;i+=8){
printf("|%3o",i);
for(j=0;j<8;j++){
if(i+j+1>=0x7f) break;
printf("%5c",i+j+1);
}
printf("\n");
}
return 0;
}
0180デフォルトの名無しさん
2011/04/16(土) 11:56:39.40[3.3] 言語: C++
0181デフォルトの名無しさん
2011/04/16(土) 13:05:55.920182デフォルトの名無しさん
2011/04/16(土) 13:13:38.02依頼者が求めていることに答えるのがこのスレの趣旨
0183デフォルトの名無しさん
2011/04/16(土) 13:16:42.27ttp://codepad.org/OuDr0ZDC
なんかめんどくさくなったからこれでいいや
0184デフォルトの名無しさん
2011/04/16(土) 13:17:15.30http://codepad.org/SSUDKHuw
0185174
2011/04/16(土) 15:38:22.55表の形は↓のような形でお願いします
0x20 0x30 0x40 0x50 0x60 0x70
0 0 @ P ` p
1 ! 1 A Q a q
2 " 2 B R b r
3 # 3 C S c s
4 $ 4 D T d t
5 % 5 E U e u
6 & 6 F V f v
7 ' 7 G W g w
8 ( 8 H X h x
9 ) 9 I Y i y
a * : J Z j z
b + ; K [ k {
c , < L \ l |
d - = M ] m }
e . > N ^ n 〜
f / ? O _ o
あと書き忘れてましたが、問題文に「for文の連続ループを用いる」ようにと書いてありました。
忘れていて申し訳ありません
そしてありがとうございます
0186デフォルトの名無しさん
2011/04/16(土) 16:46:24.60最初にいえよ・・・・
0187デフォルトの名無しさん
2011/04/16(土) 17:06:52.83本当に申し訳ありません
それと、このプログラムを<stdio.h>のみで作ることはできますか?
0188デフォルトの名無しさん
2011/04/16(土) 17:11:06.69ほら>>187のように結局はなるんだよ
わかったか
C++と書いてあっても大抵はC
classや継承を使う場合のみC++だと思って置けば大抵は間違いない
0189デフォルトの名無しさん
2011/04/16(土) 17:16:41.40依頼者の指示内容の誤りは、依頼者自身に言えよ。
間違ってても、指示通りに作れば良いんだよ。
面倒なら回答する必要無いんじゃない?
0190デフォルトの名無しさん
2011/04/16(土) 17:27:06.73>間違ってても、指示通りに作れば良いんだよ。
その通りだな。
疑問持ったなら依頼者に確認
勝手に仕様を俺俺変更するものじゃないよな
0191デフォルトの名無しさん
2011/04/16(土) 17:27:29.210192デフォルトの名無しさん
2011/04/16(土) 17:33:06.56>このプログラムを<stdio.h>のみで作ることはできますか?
それマジで言ってる?
言語はC++なのに?
CはC++の「ほぼ」サブセットだから可能ではある。
しかしそれをC++のコードと言われると、モヤモヤする。
それにしても後出しで条件付けられると、手戻りが
ひどいことになるのだから、回答付けてくれた人に申し分ないと思わなきゃ。
>189さんの言うことも最もですが、>182さんの気持ちわかります。
0193デフォルトの名無しさん
2011/04/16(土) 17:36:30.050194デフォルトの名無しさん
2011/04/16(土) 18:24:49.95[2] 問題文(含コード&リンク):
[3] 環境
[3.1] 7
[3.2] gcc
[3.3] C
[4] 期限: 今日の20:00
[5] その他の制限:a[]など配列は使わない。
リスト構造で名簿を作っているんですが、標準入力から名前を常に先頭に
入れるという処理を10回繰り返しても10個とも全部最後に入力した名前に
なってしまいます・・・どうしてでしょうか?
山田 田中 佐藤 鈴木 村上
山本 裏山 田山 小島 島々
これだけの名前を先頭から順番に入れて,
printf("%s",P.first->name);
printf("%s",P.first->->next->name);
printf("%s",P.first->->next->next->name);
・
・
10個とも島々になってしまいます・・・何故でしょうか?
一番簡単なリスト構造で先頭に入れるプログラム作っていただきませんか?
ちなみにPはfirstを含む構造体です。firstは構造体NAMEへのポインタで、
最初first=NULLです。 name,nextはNAMEのメンバーです。
0195Nursery school toddler
2011/04/16(土) 18:44:43.88>>186のパクリ
http://codepad.org/E4C7nTTx
using namespace System;
const int first = 0x21;
const int last = 0x7e;
const int height = 16;
const int begin = (first / height * height);
const int end = (last / height * height + height);
const int width = (end - begin) / height;
int main()
{
int i, j;
wchar_t c;
Console::Write("{0}{0}{0}", L' ');
for(i = begin; i < end; i += height)
Console::Write(" 0x{0,2:x}", i);
Console::WriteLine();
for(i = 0; i < height; ++i){
Console::Write("{0,2:x}", i);
for(j = 0; j < width; ++j){
c = begin + i + j * height;
Console::Write("{0,5}", ((first<=c && c<=last) ? c : L' '));
}
Console::WriteLine();
}
}
0198デフォルトの名無しさん
2011/04/16(土) 18:57:15.98http://hibari.2ch.net/test/read.cgi/tech/1295273862/387
0199デフォルトの名無しさん
2011/04/16(土) 19:25:14.77標準入力から名前を入力する形に直しました。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/388
0200デフォルトの名無しさん
2011/04/16(土) 19:33:49.20/tech/1295273862/ もNGしなきゃならんじゃないか
0201デフォルトの名無しさん
2011/04/16(土) 19:35:56.86どこのやくざだよ
0202デフォルトの名無しさん
2011/04/16(土) 19:39:19.04その心配はありません。情報宣伝活動の一環ですので、私が勝手に書く分については「ポリタポ」を請求することはありません。
>>200
じゃあトリップつけます。
>>202
ゴミすら書けないあなたよりましです。
0204デフォルトの名無しさん
2011/04/16(土) 20:22:29.51そのつもりはなく、いただいたコメントには真摯に対応しているつもりです。
そのような思い込みが感じられるとすれば、私の文面に問題があるのかもしれません。
もしよろしければ、どこがまずいのかポインタでもいただければありがたいです。
0206デフォルトの名無しさん
2011/04/16(土) 20:50:06.090207194
2011/04/16(土) 20:51:05.160208デフォルトの名無しさん
2011/04/16(土) 21:04:01.04そういうなら
ゴミじゃないコード晒さないとな
[3.3] 言語: C
0210 ◆QZaw55cn4c
2011/04/17(日) 02:13:20.89目先の端だか恥だかは気にしない性分なんです。それに、>>140 に比べて、>>143 には利点もあります。
常々使っている mygetline() もそうですが、C でちゃんとかくのなら、>>143 位は考慮しておきたいもの、と考えています。
0211デフォルトの名無しさん
2011/04/17(日) 03:49:52.01こりゃ人に嫌われるわ
特に女に嫌われる
女は屁理屈大嫌いだからな
お前いい年して童貞だろ?
0212デフォルトの名無しさん
2011/04/17(日) 06:08:35.29[2]問題文
次の形式のタブ区切りファイルがある。(行数は最大で1000万行とする)
生徒ID クラス名 国語得点 数学得点 英語得点
生徒IDは8桁の0から9で構成される文字列
クラス名は4桁の0から9で構成される文字列
国語得点、数学得点、英語得点は3桁の0から9で構成される文字列とする。
(1)各教科の得点の和が同じ生徒達のグループについて、そのグループが何人で何クラスの
生徒から構成されているかを、得点和毎に表出力せよ
ただし0人で構成されるグループについては出力する必要がない。
形式例
得点:123 人数:5人 グループ数:4
得点:128 人数:3人 グループ数:3
得点:214 人数:11人 グループ数:9
............
(2)それぞれの教科の得点が所属しているクラスの各教科の平均点の大小関係と
同じ生徒をリストアップせよ
ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の
大小関係は不問として出力する。(3つが一致している場合はそのクラスの生徒全員
がリストアップされることになる
[3] OSはLinux,言語はCです。(C++は不可)
[4] 4/30まで
[5] stdlib.h stdio.h string.hをincludeしても良いがそれ以外は不可だそうです
よろしくお願いします。
0213デフォルトの名無しさん
2011/04/17(日) 06:22:37.60[2] 問題文(含コード&リンク):
A,A+,B,B+,C,C+,D,D+,E,E+,F,F+と文字が並んでて、1つ文字を入力したときに
その文字が例えばAならA→B+→D→E+→A、D+ならD+→F→A+→C→D+というように
入力された文字から2つ飛ばしで最初の文字まで表示する
[3] 環境
[3.1] OS: MAC OSX
[3.2] コンパイラ名とバージョン: gcc 4.0.1
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 特になし
0214デフォルトの名無しさん
2011/04/17(日) 06:28:36.580215デフォルトの名無しさん
2011/04/17(日) 06:43:08.68グループ数:xx ではなく クラス数:xx ではないかな。
0217デフォルトの名無しさん
2011/04/17(日) 07:44:13.28文字じゃなくて文字列ですね
1つというのも、A〜F+までのなかから1つ選んで、ということです
0218デフォルトの名無しさん
2011/04/17(日) 07:52:45.63http://codepad.org/PivS0ly3
http://codepad.org/q0l9wGid
その上で客観的に比較してみましょうか。
0220デフォルトの名無しさん
2011/04/17(日) 08:30:34.73cygwin gcc にて確認。使用方法はusageにてわかるとおもう。
ttp://codepad.org/s07YB57F
成績だなんて、問題には書いてないよ。
0222デフォルトの名無しさん
2011/04/17(日) 08:40:55.10それはそうですね。
じゃkeyに読み替えてください。
変数に具体的な名前を与えたかっただけです。
0223デフォルトの名無しさん
2011/04/17(日) 08:57:06.24>220
はじめの文字まで連続表示する、という部分が抜けていたので書き直しました。
ttp://codepad.org/IOSPQ8NQ
0224 ◆QZaw55cn4c
2011/04/17(日) 09:41:21.65グループ数というのは、問題文をみるかぎり「同一得点だった人数」だと思われますから、グループ要素数、くらいになるのでしょうかね。
それよりも(2)の日本語が全然わかりません。(2) の出力結果例を教えてください。
0225 ◆QZaw55cn4c
2011/04/17(日) 09:55:22.44ちがいました。クラス数ですね。やはり。
char *mondai[]={"A","A+","B","B+","C","C+","D","D+","E","E+","F","F+",""};
(2) 形式例
クラス:1212
クラスの平均点の高い順:国語90.5>英語60.0>数学40.5
国語 英語 数学
A子 87 66 59
B男 90 87 80
クラス:1213
クラスの平均点の高い順:英語30.4>数学29.8>国語20.0
英語 数学 国語
C子 86 67 55
D男 91 88 82
D子 90 88 87
0228デフォルトの名無しさん
2011/04/17(日) 13:14:01.59それをせずにすむ環境(または言語)はどちら?
0229デフォルトの名無しさん
2011/04/17(日) 13:20:18.330230デフォルトの名無しさん
2011/04/17(日) 18:06:29.08目端がきく、というイデオムを軽くバクったつもりですが、ご理解いただけなかったでしょうか?
0231デフォルトの名無しさん
2011/04/17(日) 18:26:06.82>人の嫌がることをすすんでやります
この評価が一番適切
0232デフォルトの名無しさん
2011/04/17(日) 19:09:45.68理解したくないね
独りよがりのパクリとかどこのナルシストだよ
分かりやすく言えないのかアホ
>>231
人の嫌がる事を進んでやります(・ω・)
人の嫌がる事を進んでやりまず<ヽ`∀´>←意味が違う
◆QZaw55 cn4c は在日チョンではないかと最近思い始めた
0233デフォルトの名無しさん
2011/04/17(日) 22:20:08.26入社後の配置決定試験の時に出された課題みたいな感じ
確か3時間で仕様通りのコードが書けなければ
3年以内退職を前提とした誓約書書かされたっけ
俺?見事失敗。その代わり3年間はオフィスに10時に
着いて、あとは喫煙室との往復だけで給料貰ったし
ボーナスも出たし結婚もしたし...
今は嫁のツテでIT関連学校の教師
この業界はよほどの素質かよほどのコネが無いと生きていくのは
無理なんじゃね?
とりあえず (1) だけ。
http://hibari.2ch.net/test/read.cgi/tech/1301553333/397
>>233
3時間ですか?ちょっと無理ですねえ。
>>212
とりあえず (1) だけ。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/397
>>233
3時間ですか?ちょっと無理ですねえ。
0236デフォルトの名無しさん
2011/04/17(日) 23:49:58.89お前仕事してんの?ニートだろ?
>ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の大小関係は不問として出力する。
もし国語と数学のクラスの平均点が 50 、英語が 70 のとき、
生徒A 国語 100 数学 0 英語 69
生徒B 国語 0 数学 100 英語 71
生徒C 国語 100 数学 0 英語 49
生徒D 国語 0 数学 100 英語 51
この四人のうちどれが出力対象になるのでしょうか?
問題文だけでは、二つの教科の平均点が一致したとき、残りの教科をどう扱うかがはっきりしません。
0239デフォルトの名無しさん
2011/04/18(月) 00:47:15.14日曜日がな一日潰して片付けてあげる人は偉大なのかそれとも...
ちなみに(1)と(2)はmainを共通にすべきじゃないかと...
0240212
2011/04/18(月) 04:45:54.88取り敢えずはお礼を申し上げます。どうもお手数をおかけしました。
実はこの問題研修終了試験の過去問の5重コピーくらいの劣悪な
コピーから写したものです。もういちど調べてみるとやっぱり
グループ数じゃなくてクラス数でした。
ただCodePadは無償じゃないそうなので開くのには躊躇しております。
0242デフォルトの名無しさん
2011/04/18(月) 07:33:57.76自分の力を誇示したいだけだと思われます。そして>>235の
>3時間ですか?ちょっと無理ですねえ。
からも分かるように本当はプログラマ適性がないにも関わらず脅迫的にプログラムに
取り憑かれています。変ですね。
例のスレッドに誘導をはかるべく自分の力を誇示したいだけです。意図したとおりにはなっていませんが。
そして、>>235の
>3時間ですか?ちょっと無理ですねえ。
からも分かるように職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。
やっぱり変ですね。
0244デフォルトの名無しさん
2011/04/18(月) 08:20:49.62これってどのくらいのレベルが想定ですか?
最大1000万レコードというあたりが、初学者向けとは思え無いので確認したいのです。
ちょろっと1000万レコード生成と読み込み処理だけコーディングしてみたけど、
IOの時間だけでも結構かかります。前データをオンメモリに展開すると250メガくらい
になります。
最近のPCではこのくらいは屁でもないですが、そこは富豪的アプローチでOK?
これが最大1000レコードで各教科100点満点なら初学者向けだと思います。
1000万レコード、999点満点となると、オーバーフローを気にしなきゃならなくなるので、
かなり注意が必要です。
と思って面倒そうだから見てたけど、どうでしょ>212さん。
0245デフォルトの名無しさん
2011/04/18(月) 08:57:38.371000万レコードのデータ食わせてみたら、とりあえずちゃんと動いているっぽいです。
コードをちゃんと追ってませんが、レコードをノードに展開しながら、
2分木にソートしながら突っ込んでいる感じでしょうか?
でも使用メモリ量は1.5M位だったようなので違うかな。
各関数に何をする関数かを示すヘッダコメントを書くと、だいぶコードが読みやすく
なるので、心がけていただけないでしょうか。
0246デフォルトの名無しさん
2011/04/18(月) 09:05:28.090247デフォルトの名無しさん
2011/04/18(月) 09:58:04.200248デフォルトの名無しさん
2011/04/18(月) 10:52:00.93例のスレッドに誘導をはかるな。スレの邪魔だ。宣伝はあのスレでだけやれ。
他の人の迷惑だ。
>職業的適性はないアマチュアにも関わらずプログラミングに取り憑かれています。
だから変だと思いませんか?なぜそんな趣味レベルの力しかないのにそれで強引に
金儲けをしようとするのですか?自分の力を過大評価しているとは思いませんか?
金儲けとはそんな甘い物じゃありませんよ。
どちらにしろ職業にする力量が明らかに不足しているのにそれで金儲けしようなどとは
いかにも図々しい話です。ナルシスティックで自分に酔っているとしか思えませんね。
0249212
2011/04/18(月) 11:07:29.36なんか凄い空気ですね...
>>212の問題はうちの会社が多分主記憶がMバイトオーダーの
中型UNIX機で業務アプリ開発をやっていた時代の問題じゃ
ないかと...1000万行ってのは当時でもそれほど大きな
データじゃなかったようです。他の過去問にもそのような
数字が出ていますし。ちなみに現在うちの会社が扱っている
のは一案件10億とか100億とかのレコード数当たり前だそうで
す。
0250デフォルトの名無しさん
2011/04/18(月) 11:09:15.47#include<stdio.h>
#include<stdlib.h>
typedef struct tag_hoge_t{
long num;
unsigned long class_bits[(10000+32-1)/32];
}hoge_t;
int bit_count(const hoge_t *hoge){
int i, j, ret=0;
for(i=0;i<sizeof(hoge->class_bits)/sizeof(hoge->class_bits[0]);i++)
for(j=0;j<32;j++) if((hoge->class_bits[i]>>j)&1) ret++;
return ret;
}
int main(int argc, char *argv[]){
hoge_t *hoge=calloc(sizeof(hoge_t), 1000*3);
long i, student_id, class_id, japanese, math, english, score;
FILE *fp=NULL;
if(argc>1) fp=fopen(argv[1], "r");
if(hoge==NULL || fp==NULL) exit(1);
while(fscanf(fp, "%ld %ld %ld %ld %ld", &student_id, &class_id, &japanese, &math, &english)==5){
if(student_id<0 || 99999999<student_id) break;
if(class_id<0 || 9999<class_id) break;
if((japanese<0 || 999<japanese) || (math<0 || 999<math) || (english<0 || 999<english)) break;
score=japanese+math+english;
hoge[score].num++;
hoge[score].class_bits[class_id/32]|=1<<(class_id%32);
}
fclose(fp);
for(i=0;i<1000*3;i++)
if(hoge[i].num) printf("得点:%ld 人数:%ld人 クラス数:%d\n", i, hoge[i].num, bit_count(&hoge[i]));
return 0;
}
0251デフォルトの名無しさん
2011/04/18(月) 11:36:03.44富豪を仮定しないと面倒でない?
>>212 (1)だけ適当に。まともに動いてるのかよく分からん
http://codepad.org/hzssz9EV
0252デフォルトの名無しさん
2011/04/18(月) 11:37:51.410253デフォルトの名無しさん
2011/04/18(月) 12:38:04.43http://codepad.org/Y5lMdhWZ
・(1)、(2)の両方。
・ただし、Windowsでの作成のためLinuxで動かすにはちょっと改変が必要(キャリッジリターンの部分)。
・科目の数が3つとなっているが、遊び心で勝手に3つ以外(5個とか100個とか)可能にした。
そのため、入力するファイルが若干変わり、次のように入力してもらうようにした。
例.
国語\t数学\t英語\t・・・\t理科
12345678\t9012\t345\t567\t・・・\t890
以下略
まぁ、科目増えた分の点数と、1行目に科目名入れるようにしたってだけ。
・テスト行うため、ファイル作成する関数導入(rand()使用、srand()は付けてない)。上記にしたがった書き込みを行う。
・malloc使い過ぎたときのエラー対策が不十分(freeがてけとー)。
・データは、例えばid(8桁)の場合、00011111のように0を省略せずに入力しないとプログラム終了させている。
・わかりやすくを心がけて作ったつもり(遊び心スイッチ入れた後はそんなこと気にしなかった。)。
・ということもあり、計算速度はすげぇ遅い。1000万行はやるな。
テストありがとうござます。
二分木に突っ込んでいるのは、レコードそのものではなく、0+0+0〜999+999+999 の点数を単位としたデータ構造で、
点数ごとに同点数の人数とクラス名の線形リストを持っています。同一点ごとのクラス数は、線形リストに追加された要素の数を最後に勘定することで調べています。
レコードそのものをメモリに全部乗せるのは無理と踏みました。
>>246
プログラムのつくりとしては問題ありません。二分木に一つの要素が追加されるだけになります。
>>247
それは問題ですが、題意に沿うかぎり、0〜999+999+999 の計 3000通り弱ですので、メモリは足りるだろうと踏みました。
>>248
>なぜそんな趣味レベルの力しかないのにそれで強引に金儲けをしようとするのですか?
金儲けじゃありません。モリタポ儲けです。
0255デフォルトの名無しさん
2011/04/18(月) 12:55:41.240-999が3組ある場合の組み合わせが3000通り弱なの?
国語が0点、算数が0-999の1000人と
国語が1点、算数が0-999の1000人と
国語が2点、算数が0-999の1000人で3000通りになってしまったよ。
0256デフォルトの名無しさん
2011/04/18(月) 12:59:10.20>金儲けじゃありません。モリタポ儲けです。
また屁理屈かよ
聞き飽きた
http://auction.moritapo.jp/
これがある以上、金儲けと言われても文句は言えない
0257デフォルトの名無しさん
2011/04/18(月) 14:10:25.18よくわからない
仕事とか勉強とかに必要だからいうのは兎も角
0258デフォルトの名無しさん
2011/04/18(月) 14:21:08.56関係ない人が、目的もなく宿題をやるのは不思議。けどなんかやろうとしてたんだっけか。
日曜大工的なもんだと思えばいいんでないかな。
0259デフォルトの名無しさん
2011/04/18(月) 14:27:56.19少しでも、C言語の周りを活性にしようとしているだけだろ。
肝心のソースコードを晒す場所があまりないからここでということ。
0260デフォルトの名無しさん
2011/04/18(月) 14:38:03.120261デフォルトの名無しさん
2011/04/18(月) 14:39:43.21日曜大工が趣味の人が、日曜大工の輪を広げたいがために
ホームセンターで展覧会を開いていると思えばよい?
それも、何度も拒絶されているにもかかわらず、懲りずに展覧会を開く。
0262デフォルトの名無しさん
2011/04/18(月) 14:42:27.49ヌードになる心境でしょう。
0263デフォルトの名無しさん
2011/04/18(月) 15:06:47.24続々コードが上がってきましたね。
ちょっと読んでみます。
私もまずは1だけです。
ttp://codepad.org/DDlp8Quq
>249
>>212の問題はうちの会社が多分主記憶がMバイトオーダーの
>>中型UNIX機で業務アプリ開発をやっていた時代の問題じゃ
であれば、今上がっているようなコードではダメでしょうね。
すべてのデータをオンメモリに展開するわけにはいかないでしょうから。
点数別に読み込みながら集計して、出力の繰り返しかな?
>ちなみに現在うちの会社が扱っている
>のは一案件10億とか100億とかのレコード数当たり前だそうです。
そういう場合はDB使っているでしょうね。
0264デフォルトの名無しさん
2011/04/18(月) 15:20:00.37読んでねーのにけなすとか馬鹿じゃね
0265デフォルトの名無しさん
2011/04/18(月) 15:33:53.86てか最近はソフト頒布はオプソで原則が浸透しつつあ
るんで、読まざるを得ないことも少なくないけど
0266デフォルトの名無しさん
2011/04/18(月) 16:36:43.100267デフォルトの名無しさん
2011/04/18(月) 16:40:08.27他人のレスを読むのが面白いかどうかというとなんともいえないのと同じで、
反応するためには普通に読むでしょう
0268デフォルトの名無しさん
2011/04/18(月) 17:31:04.34載らないものかと思ってる人にサービスするためのスレ。
宿題であるかなんて関係もない。
>>212
>各教科の得点の和が同じ生徒達のグループについて
国語・数学・英語の総和だけ考えればいいので、個別で0〜999 までなら、総和は 0〜2997 です。この2998通りについて、おのおの出現回数と出現したクラス名を記録しておけばいいわけです。
そういう換金可能性は、どのような「もの」に対しても当てはまることです。
どんな「もの」に対しても当てはまる性質を理由にあげても(それはオークションにかければ理論上どんなものでも換金できます。)それによr営利目的か営利目的でないかを判断することはできないのではないでしょうか。
0271デフォルトの名無しさん
2011/04/18(月) 19:15:44.31対価とることがおかしいんだよ
2ch で対価をとることを規制する規定はありますか?あるのなら URL を示してください。
以上、http://hibari.2ch.net/test/read.cgi/tech/1295273862/ での議論の要約でした。
0273デフォルトの名無しさん
2011/04/18(月) 19:46:24.17対価を取らずに宿題に答えるスレで、
対価を取るスレの宣伝行為はやめろ。
スレの進行の妨害だ
0274デフォルトの名無しさん
2011/04/18(月) 19:49:56.37出題者側もそれに気づいてるから専用スレに出題者が現れないんだろ
0275デフォルトの名無しさん
2011/04/18(月) 19:55:09.77有償スレへのリンクを貼り付ける行為がきわめて悪質。
出題者の望む最大限の行動(すなわち動く C プログラムソースを作成し公開すること)を「妨害」と判断した根拠を示してください。
そういえば、あなたは私を糾弾するばかりで、ひとつもソースを公開していませんね。それこそこのスレの進行を妨害しているのではないでしょうか。
一度くらい、ソースを公開したその同じレスの中で私を批判してみてください。
0277デフォルトの名無しさん
2011/04/18(月) 20:19:17.310278デフォルトの名無しさん
2011/04/18(月) 20:20:26.55http://hibari.2ch.net/test/read.cgi/tech/1295273862/
0279デフォルトの名無しさん
2011/04/18(月) 20:21:55.80巣に帰れカス
0280デフォルトの名無しさん
2011/04/18(月) 22:25:51.70>250
コード読みました。
比較した中では一番シンプルでいいと思います。
読み込んだデータよりも、集計データの方をオンメモリで持ったほうが
小さくていいですね。しかも読みながらビンソートになっているから
パフォーマンスも一番です。
自分のコードも始めに読み込みデータと集計データを、オンメモリに
もつようにしていたのですが、ソートは必要だと思い込んでいました。
そうか、集計時にビンソートになっているから、読み込んだデータのソートは
不要ですね。ソートが必要だと思ったので、メモリ上に読み込んでいたので、
そのことに気づけなかったのは、自分が残念です。
クラス数の集計でビットカウントが使われているのが、私と全く同じだったので
少し親近感があります。
それだけに自分のコードが残念だ。
0281デフォルトの名無しさん
2011/04/18(月) 23:09:20.45ttp://codepad.org/9Jdz1qC2
本質的には>250と同じです。
投稿に収めるために、かなりコンパクトに書かれていたと思われるので、
あえて投稿しました。
やはり処理時間がダントツに違います。
0283253
2011/04/19(火) 10:51:11.25>>253の改善をあっぷ。
http://codepad.org/bqK0m1aY
・キャリッジリターンなんて関係なかった。たぶんlinuxでも動く。
・つーか、便利な関数もっと使えばよかったと今更思う。
・メモリの開放をも少ししっかりやった。
・他いろいろ細かい部分の修正。
・遊び部分はそのまま。
0284デフォルトの名無しさん
2011/04/19(火) 13:23:09.15クラス名を"0000"〜"0009"に決め打ちしてない?
出力結果が何かおかしいんだけど
0285デフォルトの名無しさん
2011/04/19(火) 13:23:55.57>>284は>>283に対してです
0286�@
2011/04/19(火) 17:47:07.29[2] 問題文(含コード&リンク):
エラトステネスの篩
第一引数にint型の変数m, 第二引数にint型の配列Pが与えられたとき、
配列Pにm以下のすべての素数を格納し、格納した素数の個数を返す関数
int eratosthenes(int m, intP[])
を作成せよ。
なお、格納した素数の個数がhの場合、素数の配列PのP[0]からP[h-1]に昇順に
格納されているものとする。
[[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2011/4
[5] その他の制限:なし
よろしくお願いします。
0287�A
2011/04/19(火) 17:48:05.50#include<stdio.h>
#define max_n 10000/
int eratosthenes(int m, int P[]);
int eratosthenes(int m, int P[]){
/* この部分を作成 */
}
main(void){
int i,n,h;
int P[max_n];
printf("Input n: ");
scanf("%d",&n);
h=eratosthenes(n,P);
printf("Primes not exceeding %d are :\n",n);
for(i=0; i<h; i++) printf("%d ",P[i]);
printf("\n");
}
0288283
2011/04/19(火) 18:38:54.67クラス数少なくするか、生徒数多くするかしないと、課題(2)の結果が1クラスあたり1人となってしまうため、クラス数を減らしてます。
#defineで10000に戻せば課題のどおりです。
0289デフォルトの名無しさん
2011/04/19(火) 18:59:57.54int eratosthenes(int m, int P[])
{
int i, j;
for(i = 0; i <= m; i++) P[i] = 0;
for(i = 3; i <= m; i += 2) P[i] = 1;
P[2] = 1;
for(i = 3; i * i <= m; i += 2) if(P[i]) for(j = i * i; j <= m; j += 2 * i) P[j] = 0;
for(i = j = 0; i <= m; i++) if(P[i]) P[j++] = i;
return j;
}
0290デフォルトの名無しさん
2011/04/19(火) 20:09:44.480291デフォルトの名無しさん
2011/04/19(火) 20:14:44.74ソートして結果を返すっていう関数もあるからね
http://hibari.2ch.net/test/read.cgi/tech/1295273862/419
>>253, >>283
不等号情報の仕様は等号の場合も含んでユニークにできておりすばらしいと思います。
今度、機会があればぜひ採用しようかと。
ただし今回は、
>>212
>ただしあるクラスの2つの教科の平均点が一致している場合はその2つの教科の得点の
>大小関係は不問として出力する。
という仕様があるのですが、これには対応しているのでしょうか?
0293デフォルトの名無しさん
2011/04/20(水) 01:24:25.59つづり間違いを訂正しました。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/420
0295デフォルトの名無しさん
2011/04/20(水) 01:36:35.200297デフォルトの名無しさん
2011/04/20(水) 02:17:38.43ソースファイル
#include <stdio.h>
int main(void){
int ch;
FILE *sfp, *dfp;
char sname[64], dname[64]; /* ファイル名 */
printf("コピー元ファイル名:"); scanf("%s", sname);
printf("コピー先ファイル名:"); scanf("%s", dname);
if ((sfp = fopen(sname, "r")) == NULL) { /* コピー元をオープン */
printf("コピー元ファイルをオープンできません。\n");
} else {
if ((dfp = fopen(dname, "w")) == NULL) { /* コピー先をオープン */
printf("コピー先ファイルをオープンできません。\n");
} else {
while ((ch = fgetc(sfp)) != EOF) {
fputc(ch, dfp);
}
fclose(dfp); /* コピー先をクローズ */
}
fclose(sfp); /* コピー元をクローズ */
}
return 0;
}
0298デフォルトの名無しさん
2011/04/20(水) 02:18:24.57次の処理を行うプログラムを作成します。
コマンド引数として,0個以上のファイル名を指定します。
コマンド引数で与えられた名前のファイルの内容を順次連結して、標準出力に出力します。
コマンド引数が与えられなかった場合、標準入力からのデータを標準出力に出力します。
エラーメッセージは、標準エラーへ出力します。
よろしくおねがいします
その昔、void 氏が fj.sources に投稿していた記憶がありますが、今となってはどこを探せばいいのでしょうかね。
0300デフォルトの名無しさん
2011/04/20(水) 02:36:54.190301デフォルトの名無しさん
2011/04/20(水) 02:39:28.79無脳は黙ってて下さい
0302デフォルトの名無しさん
2011/04/20(水) 03:26:36.040303デフォルトの名無しさん
2011/04/20(水) 07:37:10.76>>297を拡張して作れということ?
0304デフォルトの名無しさん
2011/04/20(水) 12:46:54.33>>1
0305デフォルトの名無しさん
2011/04/20(水) 18:44:30.76[2] 問題文(含コード&リンク):http://deaimail.from.tv/up/src/up3988.jpg
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:本日中
[5] その他の制限:
if・for・2次配列くらいしか習っていないので
可能ならそれらの文で書いていただけると助かります
0306デフォルトの名無しさん
2011/04/20(水) 19:02:19.15#include<stdio.h>
#include<math.h>
int main()
{
int i;
double x[12];
double u,s;
printf("データを12個入力してってね\n");
for(i=0;i<12;i++)scanf("%lf",&x[i]);
u=0;
for(i=0;i<12;i++)u+=x[i];
u/=12;
s=0;
for(i=0;i<12;i++)s+=(x[i]-u)*(x[i]-u);
s=sqrt(s/11);
printf("平均=%lf 標準偏差=%lf\n",u,s);
return 0;
}
0307デフォルトの名無しさん
2011/04/20(水) 20:53:51.32ありがとうございます
0308デフォルトの名無しさん
2011/04/20(水) 21:03:34.32[2] 問題文(含コード&リンク): 2重ポインタを使って、
014c7fcがポインタアドレスで
+0x4f4したところに01を代入して
+0x4f8したところに02を代入するソースを書いてもらえませんか?
お願いします
[3] 環境
[3.1] OS: windows
[3.2] VC++で
[3.3] 言語: できればC++で
[4] 期限: 2011年4月28日まで
[5] その他の制限: 病院(肘の手術をうけました)にいて自分自身あまり習ってません・・・
0309308
2011/04/20(水) 21:28:44.350310デフォルトの名無しさん
2011/04/20(水) 21:53:22.810311308
2011/04/20(水) 21:58:17.030312デフォルトの名無しさん
2011/04/20(水) 21:59:28.08相当危険な行為なんだが
0313デフォルトの名無しさん
2011/04/20(水) 22:02:13.35アドレスを指定する事は出来るがそこが物理アドレスと一致してるとは限らない
0314308
2011/04/20(水) 22:08:03.400315デフォルトの名無しさん
2011/04/20(水) 22:11:32.95**ppi+0x4f4=01
**ppi+0x4f8=02
みたいな感じか
絶対動かしたくないな
0316デフォルトの名無しさん
2011/04/20(水) 22:12:58.24そういう事じゃなくて、
直値でアドレスを指定して読み書きする行為が
危険だと言う事なんだが
指定したアドレスが、読み書き可能かどうかが保障されてない。
0317デフォルトの名無しさん
2011/04/20(水) 22:14:28.530318デフォルトの名無しさん
2011/04/20(水) 22:15:49.93もしくはデバイスドライバのようにカーネルモードで動かすか
0319308
2011/04/20(水) 22:17:10.190320デフォルトの名無しさん
2011/04/20(水) 23:06:54.16{
int **ppi=reinterpret_cast<int**>(0x014c7fc);
**(ppi+0x4f4)=01;
**(ppi+0x4f8)=02;
return 0;
}
動くかどうかは知らん
0321デフォルトの名無しさん
2011/04/20(水) 23:09:59.00危険?segmentation fault吐いて落ちるだけじゃね?
0322デフォルトの名無しさん
2011/04/20(水) 23:12:58.31メモリ保護機能があるOSなら、落とされるけどね
0323デフォルトの名無しさん
2011/04/21(木) 00:34:44.14コンピューター監視法が閣議決定されたからな
0324デフォルトの名無しさん
2011/04/21(木) 00:36:37.66バグってたらタイーホって法律だっけ
int main(void)
{
int bb[0x500/4];
int *b = bb; // = (int *)0x14c7fc;
int **a = &b;
*(*a + 0x4f4/4) = 1;
*(*a + 0x4f8/4) = 2;
printf("%x %x\n", bb[0x4f4/4], bb[0x4f8/4]);
}
0326デフォルトの名無しさん
2011/04/21(木) 00:55:31.29system("format.exe c: /q);
}
↑こういうのでもウィルス認定か
0327デフォルトの名無しさん
2011/04/21(木) 01:00:15.76本当にそんなんだったら最高裁まで争われて判例が出来るぞ
まあ政権交代したら骨抜きにされそうだけど
0328デフォルトの名無しさん
2011/04/21(木) 01:02:06.96図書館の件あたりで。
0329デフォルトの名無しさん
2011/04/21(木) 01:09:13.70あれは詐欺レベルのシステム作った奴が裁かれるべきだと思った
0330デフォルトの名無しさん
2011/04/21(木) 01:24:42.72あの件は法律ではなくて普通に民事裁判を起こして決着を付けるべき問題
0331デフォルトの名無しさん
2011/04/21(木) 10:06:18.580332デフォルトの名無しさん
2011/04/21(木) 11:32:38.830333デフォルトの名無しさん
2011/04/21(木) 12:52:54.250334デフォルトの名無しさん
2011/04/21(木) 14:14:09.14[2] 問題文(含コード&リンク):コマンドライン引数が十進整数として解釈できれば八進に変換、さもなくば、*を標準出力に出力するプログラムを書け。
出力は一行に一つずつで、出力順は、もとのコマンドライン引数の並びの順とする。 ただし、十進整数として解釈できる文字列とは、正規表現 ^[-+]?[0-9]+$ にマッチするものとする。 文字列の長さは制限しない。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2011年04月22日00:00まで
[5] その他の制限:解答例はhttp://codepad.org/lloLZ1FWです。多倍長整数を利用すればいいと言われました。
0335デフォルトの名無しさん
2011/04/21(木) 14:15:59.30一言入れ忘れました。
よろしくお願いします。
0336デフォルトの名無しさん
2011/04/22(金) 04:05:37.13bcだとスタックは0x12ff88 から下に向かって取られるみたいだから 0x14c7fc より上に書き込むのは無理だと思うよ
0337デフォルトの名無しさん
2011/04/22(金) 11:46:52.04以下のを参考に三元連立一次方程式の解を表示するプログラムを作成したい.
http://codepad.org/REbUAPs8
[3] 環境 [3.1] OS: Windows [3.2] gcc [3.3] 言語: C
[4] 期限: [2011年4月26日12:00まで]
お願いします.
0338デフォルトの名無しさん
2011/04/22(金) 13:01:56.09http://codepad.org/QZLOFsY1
0339デフォルトの名無しさん
2011/04/22(金) 15:13:14.470340デフォルトの名無しさん
2011/04/22(金) 15:25:45.370341デフォルトの名無しさん
2011/04/22(金) 15:28:03.900342デフォルトの名無しさん
2011/04/22(金) 15:38:36.78ありがとうございます.
とても助かります.
0343308
2011/04/22(金) 18:53:49.83いいんですかね・・・・
0344デフォルトの名無しさん
2011/04/22(金) 21:36:52.97終わりだ
0345デフォルトの名無しさん
2011/04/22(金) 22:57:02.22[3] 回答希望期限[4] その他の制限:大学1年
[1]問題
C言語で少数点20以下〜20桁までの計算(結果もこの範疇)したいのですがどうしたらいいですか?
例えば8323234×32342とか0.2323×23242311とか。
すいません、似たような別スレで同じ質問しましたがあっちで取り消してきます・・
0346デフォルトの名無しさん
2011/04/22(金) 23:04:05.90マルチすると誰も回答しないよ
0347デフォルトの名無しさん
2011/04/22(金) 23:10:45.76C++と検索すると宿題片付けますスレがあって、あっちのほうがたまたま先に
見つかったし質問の形式は保存してるから、すぐに間違って書き込んでしまっただけです。
後でただの類似スレだと分かりました。
0348デフォルトの名無しさん
2011/04/22(金) 23:17:06.17でしょ
すっごい迷惑ですよねあのスレ
紛らわしいわ有料だわ
本当に迷惑ですよね
0349デフォルトの名無しさん
2011/04/22(金) 23:17:30.22かけ算だけでいいの?
筆算でやる手順をそのままプログラムにしてみたらどうかな?
効率は悪いけど、一桁ずつかけ算し、
繰り上がりが出たら、上位桁の計算時に足し込む。
0350デフォルトの名無しさん
2011/04/22(金) 23:17:38.83君にはあっちのスレが向いてるから、あっちに行きなよ
0351デフォルトの名無しさん
2011/04/22(金) 23:18:38.080352デフォルトの名無しさん
2011/04/22(金) 23:28:13.99double の有効精度知ってる?
0353デフォルトの名無しさん
2011/04/22(金) 23:28:34.29例ですw
本当はもっと大きい計算もしたいです。
20桁範囲内ならどんな計算もできるプログラムです。僕の欲しいのは。
0354デフォルトの名無しさん
2011/04/22(金) 23:29:47.54>どんな計算もできる
こういう要求だと、宿題スレには向かないんじゃない?
たしかに、例として挙げられた計算は double 仮数部 52 bit = 10進15桁におさまるけれども‥‥‥。
>>345
紛らわしくてごめんなさい。お詫びに10進 40 桁の固定小数点演算を実装してみます。希望の期限を教えてください。
0356デフォルトの名無しさん
2011/04/22(金) 23:32:48.86では
x×yという形に限定します。範囲は20桁〜小数点20桁です。
0357デフォルトの名無しさん
2011/04/22(金) 23:33:10.46とんだクソ野郎だ
0358デフォルトの名無しさん
2011/04/22(金) 23:59:14.250359デフォルトの名無しさん
2011/04/23(土) 00:02:49.560360デフォルトの名無しさん
2011/04/23(土) 00:45:01.36宿題じゃないなら gmp 使うだけでいいんじゃね
速いし精度に制限なしでデバッグ済み
LGPL だからライブラリとして変更無しで使えば面倒もない
0361デフォルトの名無しさん
2011/04/23(土) 01:51:22.68宿題じゃなくても、アルゴリズムで実現したい。
そんなのプログラム習いたてなんだから当たり前。
プログラムを凝れないのにそんな便利なもの使いたくもない。
そんなの当たり前の事。
そもそもプログラム初心者がプログラム自体の仕組みを知りたがってる何て
当たり前の事。
0362デフォルトの名無しさん
2011/04/23(土) 01:53:24.020363デフォルトの名無しさん
2011/04/23(土) 01:56:39.850364361
2011/04/23(土) 02:00:49.47むしろ一生どうでもいいかもしれません・・ごめんなさい・・
0365デフォルトの名無しさん
2011/04/23(土) 02:05:47.01興味がないなら、なおのことライブラリを使ったほうがいいよ
信用できるライブラリを使ってればデバッグも楽
0366361
2011/04/23(土) 02:11:43.46便利なものを使うなら、壮大なスケールで独創的なものを作り上げる時に
必要となるが、今は"計算"を実装する事を目的としてる。よって今欲しい
のは"アルゴリズム"
以上。
0367デフォルトの名無しさん
2011/04/23(土) 02:16:39.57欲しいものは検索ワードということだな
多倍長演算 アルゴリズム
0368デフォルトの名無しさん
2011/04/23(土) 02:17:58.00簡単なものは
class xx{
uint dp;
vector<uint> arr;
];
でarrに万進数値をいれdpで小数点の位置を記憶する
あとは+,-,*,-,&,!..やtostringを実装するぐらい
http://ja.wikipedia.org/wiki/%E4%BB%BB%E6%84%8F%E7%B2%BE%E5%BA%A6%E6%BC%94%E7%AE%97
小学校の算数レベルのアルゴリズムを使ったものである
といわれるように面白みのあるものではないよ
パフォーマンスを求めるならここで聞くより
gnumpなどのソースを参考にした方がいい
0369366
2011/04/23(土) 02:32:34.05ありがとう。何かややこしそうだな。
ゲーム作る人は、計算とかどうしてんのかな。
doubleの範囲内ですむ計算が多いのかな。
0370デフォルトの名無しさん
2011/04/23(土) 03:07:25.40コンピュータで実数を扱う意味を考えたらいい。
ちなみに、XNAという、箱○上で動くゲームを作るためのXNA Frameworkでは、
Vector3が、xyzの値をそれぞれfloatで持ってたりする。
三次元の点を山ほど扱う場合、floatをdoubleにするだけで、
それにかかるメモリ容量は単に倍になる。
0371デフォルトの名無しさん
2011/04/23(土) 18:53:49.19引数が12を超えた場合はNULLを返す関数
http://codepad.org/yKd6MXH6
エラーが出てしまいます。アドバイスをお願いします。
0372デフォルトの名無しさん
2011/04/23(土) 19:03:46.49char c;
↓
char *c;
http://hibari.2ch.net/test/read.cgi/tech/1295273862/497
mon() を二通り作ってみました。納得のいく方法でどうぞ。
0374デフォルトの名無しさん
2011/04/23(土) 20:24:55.20これこそテーブルを利用すべき関数と思う。
ttp://ideone.com/LLYwH
0375デフォルトの名無しさん
2011/04/23(土) 20:31:09.45ひょっとしてそれはギャグでやってるのか?マジでやってるならかなり恥ずかしいぞ
** 回答例 **
#include <stdio.h>
char *table[] = {"NULL", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
char *mon(int i){
return table[i];
}
int main(){
int i;
printf("数字を入力:");
scanf("%d",&i);
if(i < 1 || i > 12) i = 0;
printf("%s\n", mon(i));
return 0;
}
0376デフォルトの名無しさん
2011/04/23(土) 20:48:17.08関数にマイナスの値投げたらどうなるの?
0377374
2011/04/23(土) 20:57:25.50そのあたりは読み替えてください。
0378デフォルトの名無しさん
2011/04/23(土) 21:04:27.97if(i < 12) {
中略
if(i == 12)
}
に気づかないバカがコードいじることに恐怖を感じる
0379デフォルトの名無しさん
2011/04/23(土) 21:08:05.22>>371 で示されたコードに対して最小限の変更になるようにしました。そうすればとりあえずの問題点を理解してもらえると思ったからです。
テーブル引きや switch も意図的に使いませんでした。
>>373
確かに穴がありました。元のソースをそっくりパクってしまった弊害がでました。
いろいろ指摘がありましたので、元のソースコードには沿っていますが、幾分書き換えました。
ともあれ納得のいく方法でどうぞ。
http://codepad.org/952jR9RF
0381デフォルトの名無しさん
2011/04/23(土) 21:25:43.82書き換えなくていいから巣に引っ込め低脳
0382デフォルトの名無しさん
2011/04/23(土) 21:26:24.65ありがとうございます
0383デフォルトの名無しさん
2011/04/23(土) 21:30:36.89礼は言わない方が良い
モリタポ取られるぞ
0384デフォルトの名無しさん
2011/04/23(土) 21:32:29.25[2] 問題
整数xを0から100000までの整数として,xが3つの素数の和で表現できるなら
その三素数を出力するプログラムを作成せよ。複数組み合わせの場合最初に
見つけたものを出力せよ。
[3.1] 7
[3.2] gcc
[3.3] C
[4] 期限:25日9:00
[5] その他制限: 純粋Cライブラリ。
0385デフォルトの名無しさん
2011/04/23(土) 21:34:34.53x=31→(13,11,7)
0387デフォルトの名無しさん
2011/04/23(土) 21:35:16.03いいから書き込みすんな
0388デフォルトの名無しさん
2011/04/23(土) 21:35:29.22こいつは2chを個人的な金儲けの道具にしようとしていて、みんなに嫌われてる。
それでも止めようとしない。多分精神の病気なんだろう。
0389デフォルトの名無しさん
2011/04/23(土) 21:37:42.08それが原因で就職も出来ずニート生活を続けている
しかも2chですら嫌われ者
0390デフォルトの名無しさん
2011/04/23(土) 22:27:20.94#include <stdio.h>
#define N 100000
char sieve[N] = {0, 0, 1};
int main(void)
{
int i, j, x, y;
for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i; j < N; j += i) sieve[j] = 0;
scanf("%d", &x);
for(i = 2; i * 3 <= x; i++) {
if(sieve[i] == 0) continue;
y = x - i;
for(j = i; j * 2 <= y; j++) {
if(sieve[j] && sieve[y - j]) {
printf("%d %d %d\n", i, j, y - j);
return 0;
}}}
return 0;
}
0391デフォルトの名無しさん
2011/04/24(日) 01:03:13.14>>371みたいなコードを書く奴が
>>375みたいなコードを提出すると先生怪しむんじゃないのか
学校でよたよたしながらやっている初心者のコードじゃないよな
他の学生のコードに比べてスマートすぎて先生にマークされそうだよな
0392デフォルトの名無しさん
2011/04/24(日) 01:04:49.61375 はある意味 371 よりもダメだからいいんじゃね
0393デフォルトの名無しさん
2011/04/24(日) 01:08:38.00すまん
>>375は>>374の間違いだ、orz
0394デフォルトの名無しさん
2011/04/24(日) 01:19:26.05375 は const をどういう意図で使ってるのか微妙
0395デフォルトの名無しさん
2011/04/24(日) 01:19:49.130396デフォルトの名無しさん
2011/04/24(日) 01:28:21.96C++だからじゃね?Cだと代入出来るけどC++だとエラーになる
0397デフォルトの名無しさん
2011/04/24(日) 01:29:38.04const char *mon(int i)
static const char *monthTbl[] = {
じゃね?せめて。
0398デフォルトの名無しさん
2011/04/24(日) 01:30:27.57ありがとうございます・・・・
本当に分かりやすいコードですね・・
ただ、2とか3とかそういう簡単なのが2個くらい占めますね。
157 = 43 31 83
とかだったら少し感動するんですが・・・
0399デフォルトの名無しさん
2011/04/24(日) 01:30:34.230400デフォルトの名無しさん
2011/04/24(日) 01:37:37.45いいね
0401デフォルトの名無しさん
2011/04/24(日) 01:39:13.37どうでもいい
xを出力すればいいだけだろ
0402デフォルトの名無しさん
2011/04/24(日) 01:43:44.09static const char *monthTb
だとmonthTbがReadOnly
static char *const monthTb
だとmonthTbが指している先がReadOnly
0403デフォルトの名無しさん
2011/04/24(日) 01:46:44.990404デフォルトの名無しさん
2011/04/24(日) 01:47:05.33節子、それ逆やw
0405デフォルトの名無しさん
2011/04/24(日) 01:47:42.72逆だろ
0406デフォルトの名無しさん
2011/04/24(日) 01:49:34.32const char へのポインタ
char *const
char へのコンストポインタ
0407デフォルトの名無しさん
2011/04/24(日) 01:49:41.25--- a.c 2011-04-24 01:48:25.688130470 +0900
+++ b.c 2011-04-24 01:48:53.978128063 +0900
@@ -13,10 +13,10 @@ int main(void)
scanf("%d", &x);
- for(i = 2; i * 3 <= x; i++) {
+ for(i = x/3; i >= 3; i--) {
if(sieve[i] == 0) continue;
y = x - i;
- for(j = i; j * 2 <= y; j++) {
+ for(j = y/2; j >= i; j--) {
if(sieve[j] && sieve[y - j]) {
printf("%d %d %d\n", i, j, y - j);
return 0;
0408デフォルトの名無しさん
2011/04/24(日) 01:52:02.750409デフォルトの名無しさん
2011/04/24(日) 01:54:54.57>for(i = 2; i * 3 <= x; i++)
for(i = x / 3; i < x; i++)
>for(j = i; j * 2 <= y; j++)
for(j = i; j > 0; j--)
あんまり意味があるとも思えないけど
0410デフォルトの名無しさん
2011/04/24(日) 02:09:07.370411デフォルトの名無しさん
2011/04/24(日) 02:10:10.34関数の中でインデックスチェックしろよ。
http://hibari.2ch.net/test/read.cgi/tech/1301553333/499
可能な3個組を全部調べ上げ、できるだけ大きい数同士の組をとるようにしています。そのかわり、全検索するので遅いです。
>>388
金儲けじゃありません。モリタポ儲けかもしれませんが。
>>389
自己愛性人格障害ってなんですか?
>>402
であってると思います。
0413デフォルトの名無しさん
2011/04/24(日) 06:47:49.750414デフォルトの名無しさん
2011/04/24(日) 08:36:56.220415デフォルトの名無しさん
2011/04/24(日) 08:38:03.430416デフォルトの名無しさん
2011/04/24(日) 11:42:47.89>金儲けじゃありません。モリタポ儲けかもしれませんが。
http://auction.moritapo.jp/
これがある以上、モリタポ儲けではなく金儲けと言われても文句は言えない。
0417デフォルトの名無しさん
2011/04/24(日) 11:44:39.98>自己愛性人格障害ってなんですか?
★自己愛性人格障害の特徴 20人目★
http://toki.2ch.net/test/read.cgi/utu/1302215246/
ただし俺に文句を言うなよ
精神科医の診断が必要だ
だが素人目に見てもお前はひどすぎる
0418デフォルトの名無しさん
2011/04/24(日) 11:48:38.79・ 他人から叱られたり文句を言われる回数が他の人に比べて明らかに多い。
・ 他人のせいにする意図は全くないのに「他人のせいにするな」とよく言われる。
・ 先輩後輩の上下関係や縦社会が苦手、理解不能。
・ 他人の話が聞こえない。耳が悪いのではなく、脳で理解できていない。
・ 皆に合わせて行動しようとしても、気がつけば一人で暴走しているか取り残されているしかない。
・ 他の人と一緒に行動したくても、一緒にいるのが苦痛にしか感じられない。
・ 他の人に対して無関心。
・ どうでもいい雑学的なムダ知識は豊富だが、常識として必要な知識が欠けている。
・ ファッションに無頓着。
・ 仕草や行動、言動を周囲の人たちから笑われたりからかわれることがよくある。
・ どこへ行っても嫌われる。
・ どこへ行っても浮いてしまう、孤立してしまう。
・ 「言葉がきつい」「言葉に棘がある」「毒舌」などと指摘されたことがある。
・ 場の空気を読めない。
・ 先を読んで行動できない。
・ 同性の友達さえ少ない(1〜2人)、または1人もいない。
・ 「視野が狭い」とよく指摘される。
・ 一つの物事に夢中になると周囲が見えなくなる。
・ 発言を曲解、誤解されることが他の人に比べて圧倒的に多い。
・ 何でもすぐに本気にする、ムキになる。
・ 意外と多くの分野の知識を持っている。が、どれも中途半端でそれを仕事にするなどもってのほか。
・ 皺だらけの服や時代遅れの服でも平気で着る。
・ ファッションや身だしなみに無頓着。
・ 「自分勝手」「わがまま」と指摘されることが他の人に比べて明らかに多い。
・ 「幼稚」「精神年齢が低い」と指摘されることが他の人に比べて明らかに多い。
・ 「性格を直せ」「自分を変えろ」と言われる回数が他の人に比べて明らかに多い。
・ 他人と話していると、相手が怒ったり不愉快になることがよくある。
・ 「お前みたいな奴は初めて見た」と言われたことがある。
・ 「お前みたいな奴は社会では通用しない」と言われたことがある。
・ 学生時代からクラスでは孤立していた。
0419デフォルトの名無しさん
2011/04/24(日) 11:49:55.80・ 仕事をしている時や他の人と行動している時でも、自分の好きな分野関連のものが目に入ると注意力が全部そちらに行ってしまう。
・ 集中しようとしても、頭の中でいろいろな考えがぐるぐると回ったり、
集中する対象の関連の言葉から全く別のことを連想して考えがあちこちに飛んでしまうことが日常的にある。
・ 一つの物事に取り組んだり夢中になると周囲が見えなくなることが日常的にある。
・ 自傷行為(リストカット、頭を壁などに繰り返しぶつける、自分で自分を殴る等)をしたことがある。
・ 興味のない分野に対する抵抗感が激しい。
・ 新しい分野に取り組んだり、新しい仕事を覚えたりすることに対して抵抗感が激しい。
・ 他の人と一緒に食事するのが苦痛。
・ どうでもいい事にこだわる。
・ 「常識」「普通」「しきたり」といったことに反感を覚える。
・ 「非常識」「常識が無い」と指摘されることが他の人に比べて明らかに多い。
0420デフォルトの名無しさん
2011/04/24(日) 11:54:10.40おお!まさに ◆QZa w55cn4c そのものだ
これってアスペルガー症候群か?
0421デフォルトの名無しさん
2011/04/24(日) 13:10:03.38>>402
であってると思います。
0422デフォルトの名無しさん
2011/04/24(日) 14:57:49.13#define N 100000
char sieve[N] = {0, 0, 1};
int main(void)
{
int i, j, k, x, y;
for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i, k = i * 2; j < N; j += k) sieve[j] = 0;
scanf("%d", &x);
for(i = x / 3; i < x; i++) {
if(sieve[i] == 0) continue;
y = x - i;
for(j = i >= y ? y - 1 : j; j > 0; j--) {
if(sieve[j] && sieve[y - j]) {
printf("%d = %d + %d + %d\n", x, i, j, y - j);
return 0;
}}}
printf("not exist.");
return 0;
0423デフォルトの名無しさん
2011/04/24(日) 15:00:23.74for(j = i >= y ? y - 1 : i; j > 0; j--) { だった
確かめてみると逆でしたね。間違えて覚えておりました。
http://codepad.org/t2Cl9Bzf
すみません。
0425デフォルトの名無しさん
2011/04/24(日) 20:33:01.11バーカ低脳
0426デフォルトの名無しさん
2011/04/24(日) 20:37:06.580427デフォルトの名無しさん
2011/04/24(日) 20:37:11.890428デフォルトの名無しさん
2011/04/24(日) 20:49:15.84アホは来るな
ふむ、いろんな人がいるんですね。私なら私のコードにケチを付けていただける方はウェルカムなんですけれどもね。
私の考えを表明するのも、それを受けてそれ以上のものが得られればいいなと思ってのこと。(それをナルシストとかいわれてもねえ。)
あと、>>152 は、私の >>143 を書き直したもの(だと思われるの)ですが、その書き直し方はないだろう、というのが >>153 の趣旨になります。まあどうでもいいですが。
0430デフォルトの名無しさん
2011/04/24(日) 23:59:49.22他人の書いたプログラムソースを許諾無しにまるまるコピーは良いんですか?
前に私はそれをしてしまって、非難 GO! GO! でした。ライセンスがあればそれに従いますし、特にライセンスがないところでも、引用元を明記するのがマナーですね。
私のコードに限って言えば、コピーレフトですら明示していません。責任はそちらもちで好きにしてください。
0432デフォルトの名無しさん
2011/04/25(月) 00:36:54.89その割にはずいぶん生半可な知識でプログラムを書いておられますなあ>>424
すみません。
0434デフォルトの名無しさん
2011/04/25(月) 02:01:18.080436435
2011/04/25(月) 08:38:33.220437435
2011/04/25(月) 08:51:26.05>>398
http://hibari.2ch.net/test/read.cgi/tech/1295273862/499
可能な3個組を全部調べ上げ、できるだけ大きい数同士の組をとるようにしています。そのかわり、全検索するので遅いです。
0438デフォルトの名無しさん
2011/04/25(月) 12:01:34.050439デフォルトの名無しさん
2011/04/25(月) 13:10:49.940440デフォルトの名無しさん
2011/04/25(月) 13:41:39.080441デフォルトの名無しさん
2011/04/25(月) 15:14:25.20#define MAX_LINE 30
#define MAX_NUM 20
typedef struct {
int code;
char name[MAX_LINE];
char type[MAX_LINE];
char maker[MAX_LINE];
int price;
}PARTS;
int main(int argc, char *argv[]) {
FILE *fp;
PARTS parts[MAX_NUM];
int i, num, id;
if (argc != 2) {
fprintf(stderr, "使用方法: %s FILENAME\n", argv[0]);
return 1;
}
if ((fp = fopen(argv[1], "r")) == NULL) {
fprintf(stderr, "ファイル %s がオープンできません\n", argv[1]);
return 1;
}
0442デフォルトの名無しさん
2011/04/25(月) 15:15:13.07i = 0;
while(fscanf(fp, "%d %s %s %s %d",
&parts[i].code,
parts[i].name,
parts[i].type,
parts[i].maker,
&parts[i].price
) != EOF) {
i++;
}
fclose(fp);
num = i;
while(1){
printf("# ID: ");
if (scanf("%d", &id) == EOF) {
printf("\n");
break;
}
0443デフォルトの名無しさん
2011/04/25(月) 15:15:32.46if (parts[i].code == id) {
printf("%03d %-20s %-20s %-20s %5d\n",
parts[i].code,
parts[i].name,
parts[i].type,
parts[i].maker,
parts[i].price
);
break;
}
}
if (i == num) {
printf("ID %3d の商品はありません。\n", id);
}
}
return 0;
}
課題の回答にて少しわからないのでお願いします
最初のwhile文でscanfをつかって構造体を利用するところで
&がついてるところとそうでないところがあるのはなぜなのでしょうか?
0444デフォルトの名無しさん
2011/04/25(月) 15:27:55.010445デフォルトの名無しさん
2011/04/25(月) 15:35:13.21char型の配列名はそれが既にポインタに変換されるから、&は不要
int型はアドレスを渡さないと代入出来ないから&が必要
0446デフォルトの名無しさん
2011/04/25(月) 15:38:03.13さっぱりわからんけど
scanfする時[]あるのには&つけない、
[]ないのには付けるって決まりあるんじゃない
[],&って何か知らんけど
0447デフォルトの名無しさん
2011/04/25(月) 15:45:54.78char array[]をfoo(char *p)へ、foo(array)と渡すような時に。
関数の中じゃそれを char *として扱ってる。
同様に、printfにparts[i].nameを渡す時、char *として渡っているようなイメージ。
(実際にはconst char *としてると思うけど)
parts[i]ってカッコつきでアクセスしてるから余計な事を考えてしまうのかもしれないけど、
PARTS part;でpart.nameを渡してるのと、肝心の部分は同じ。
0448デフォルトの名無しさん
2011/04/25(月) 16:19:19.99型の違いで自分でポインタとして代入しないといけないんですね
よくわかりました
0449デフォルトの名無しさん
2011/04/25(月) 17:02:14.91int main(void)
{
char *p, buf[128];
p = &&&&&buf;
return 0;
}
もコンパイルエラーにならない
しかしこれはお勧めしない
配列とポインタの関係を理解するのがあやふやになるからである
0450デフォルトの名無しさん
2011/04/26(火) 00:03:07.76charだと&がなくてもポインタでいけるが正しいですね
>>449
もし配列でやる場合の&が重なってるのはそのとき使用する配列の数ってことなんですかね?
まぁおすすめされてないのでそこはちゃんと勉強しますが
0451デフォルトの名無しさん
2011/04/26(火) 00:09:31.570452デフォルトの名無しさん
2011/04/26(火) 00:58:11.20コンパイラはなに使ってるの?
0453デフォルトの名無しさん
2011/04/26(火) 01:24:33.95449.c:5:7: error: expected identifier before '&&' token
0454デフォルトの名無しさん
2011/04/26(火) 01:42:30.97VS2010でもエラーが出る
c:\documents and settings\******\my documents\visual studio 2010\projects\Learn1\array2\array2.cpp(10): error C2059: 構文エラー : '&&'
0455デフォルトの名無しさん
2011/04/26(火) 02:03:44.17hogeと&hoge[0]は等しい、それだけの話
0456デフォルトの名無しさん
2011/04/26(火) 05:38:15.10決めてしまわないと書けないってことみたい。でないと同じソースを与えても、コンパイルするたびに結果が異なるなんて
ことになりかねないし。
規格書など大まかな部分しか信頼できないというのはこういう理由なんだね。
0457デフォルトの名無しさん
2011/04/26(火) 08:29:04.11「3つの例外を除いては」という条項を付加しておきます。
0458デフォルトの名無しさん
2011/04/26(火) 14:03:13.79[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Windows
[3.2] gcc 5.5
[3.3] 言語:C言語
[4] 期限: 2011年 4月28日
x>0,y>0という条件でxとyを入力
xからy間の数字で2の倍数のみを出力
例
x=4
y=9
2の倍数
4 8
よろしくお願いします。
0459デフォルトの名無しさん
2011/04/26(火) 14:18:50.830460458
2011/04/26(火) 14:37:10.61すみません!4の倍数でした!
0461デフォルトの名無しさん
2011/04/26(火) 14:38:25.68!!!
0462デフォルトの名無しさん
2011/04/26(火) 14:56:03.370463デフォルトの名無しさん
2011/04/26(火) 14:56:38.51bcc5.5の間違いってすぐ解るのに
!!!!
0464デフォルトの名無しさん
2011/04/26(火) 15:27:05.260465デフォルトの名無しさん
2011/04/26(火) 15:31:24.63#include <stdio.h>
int main(void) {
int x, y;
printf("x=");
scanf("%d", &x);
printf("y=");
scanf("%d", &y);
for( x = (x + 3) / 4 * 4; x <= y; x += 4 ) printf("%d ", x);
return 0;
}
0466デフォルトの名無しさん
2011/04/26(火) 17:34:28.592の倍数なら偶数って事だろう
x=4, y=9なら6はどうして無いの?
2の倍数ではなくてxの倍数の間違い?
0467デフォルトの名無しさん
2011/04/26(火) 17:44:14.43>>459-460
0468デフォルトの名無しさん
2011/04/26(火) 19:55:57.28おまえらは&hoge[0]をhogeと書いている?
0469デフォルトの名無しさん
2011/04/26(火) 19:57:04.21意味によって変える
0470デフォルトの名無しさん
2011/04/27(水) 00:53:58.85入力ファイル(成績ファイル)の仕様
ファイル名は、ASCII文字で構成されるものとする。
ファイル名の最大長は FILENAME_MAX である(第2回の課題0を参照)。
1行は、「学生番号」、「氏名」、「成績」の順に記述したもので、
各項目の区切り文字は、「タブ('\t')」1個である。
学生番号は、英数字からなる6桁の文字列である。
氏名の文字列長の最大は20バイトとする。
成績は、0〜100までの整数である。
入力は、最大500行と仮定してよい。
出力形式
入力ファイルを読み込み、最初に、成績の最高点と最低点と平均点を出力する。
次に、成績の降順にソートして出力する。各項 目間は、「タブ('\t')」1個で区切る。
平均点は、小数点以下1桁まで出力する。
出力形式は、実行例を参照せよ。
エラー処理
呼出しでファイル名が指定されない場合はエラーとし、「ファイル名を指定してください」と表示し、プログラムを終了する。
指定されたファイルのオープンに失敗した場合に、「ファイルを開けませんでした」と表示し、プログラムを終了する。
今回のプログラムでは、a. b. 以外のエラー処理はしなくてよい。
0471デフォルトの名無しさん
2011/04/27(水) 00:56:39.8103888 八 90
03111 一 100
03222 二 30
03666 六 70
03555 五 60
03333 三 80
03777 七 40
03999 九 20
03444 四 50
% ./work31.exe sample.txt
最高点:100
最低点: 20
平均点: 60.0
100 03111 一
90 03888 八
80 03333 三
70 03666 六
60 03555 五
50 03444 四
40 03777 七
30 03222 二
20 03999 九
%
言語はCです
よろしくおねがいします
0472デフォルトの名無しさん
2011/04/27(水) 02:10:51.33てきとう
http://ideone.com/O1Ant
0473デフォルトの名無しさん
2011/04/27(水) 02:32:22.91常に hoge って書くし &hoge[1] も hoge + 1 って書くよ
0474デフォルトの名無しさん
2011/04/27(水) 03:00:42.36http://hibari.2ch.net/test/read.cgi/tech/1295273862/516-581
559 名前: ◆QZaw55cn4c [[email protected]] 投稿日:2011/04/26(火) 19:17:43.86
>>557
ご指摘ありがとうございます。たしかにまだまだ改良の余地はありました。とりあえず、>>518 の foundp() を取り入れました。
Knuth だったか、最初の思いつきはベストの思いつきではない、というわけでした。
>>516
http://codepad.org/aSa5w9AE
でも、ここまで来て、私以外にコードを晒す人はいないようですね。
564 名前:デフォルトの名無しさん[sage] 投稿日:2011/04/26(火) 19:51:12.60
>>559のアホなところもまだまだ指摘できるし、>>518に関しても10倍以上速いコード書けるけどなw
581 名前: ◆QZaw55cn4c [[email protected]] 投稿日:2011/04/27(水) 02:30:39.84
>>572
砂上の楼閣でしたかね。
>>564
codepad 上で実行してみてその通りであれば、このスレを店じまいしましょう。私は一介の名無しにもどります。
0475デフォルトの名無しさん
2011/04/27(水) 03:18:24.19何でこっちに引っ張り出すのうっとうしい。
0476デフォルトの名無しさん
2011/04/27(水) 03:19:56.50それは>>564に対してであって他のやつに対してじゃないだろう
0477デフォルトの名無しさん
2011/04/27(水) 03:23:31.60キチガイだから
>>474
こんなところにキチガイコピペしないで、お前が10倍以上速いコードを今すぐ晒して来い
0478デフォルトの名無しさん
2011/04/27(水) 15:10:26.69ありがとうございます
0479デフォルトの名無しさん
2011/04/27(水) 19:27:02.33[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Windows
[3.2] VC++
[3.3] 言語:C++
[4] 期限: 2011年 5月2日
HDDシリアル照合で、その番号以外使えなくするプログラムを組みなさいという
課題が出ました。ぜひお願いします
0480デフォルトの名無しさん
2011/04/27(水) 19:40:42.55>その番号以外使えなくするプログラム
それ以外のHDDをフォーマットしてしまうのか?
0481デフォルトの名無しさん
2011/04/27(水) 19:43:42.510482デフォルトの名無しさん
2011/04/27(水) 20:06:36.13CreateFile
DeviceIoControl
CloseHandle
でできるっぽいが
DeviceIoControl の引数調べるのが面倒
0483デフォルトの名無しさん
2011/04/27(水) 20:13:46.31[2] 問題文(含コード&リンク):
ttp://www.dotup.org/uploda/www.dotup.org1575096.jpg
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:本日中
[5] その他の制限:
習っている文はif,for,while,乱数程度なのでそのレベルに合わせてもらえると助かります
0484デフォルトの名無しさん
2011/04/27(水) 20:43:27.81[2] 問題文(含コード&リンク):
「Hit&Blow」のプログラムを作りなさい
ttp://www.dotup.org/uploda/www.dotup.org1575214.jpg
ttp://www.dotup.org/uploda/www.dotup.org1575216.jpg
ttp://www.dotup.org/uploda/www.dotup.org1575219.jpg
ttp://www.dotup.org/uploda/www.dotup.org1575225.jpg
「Hit&Blow」の答えを求めるプログラムを作りなさい
ttp://www.dotup.org/uploda/www.dotup.org1575227.jpg
ttp://www.dotup.org/uploda/www.dotup.org1575229.jpg
上記の2問です
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:本日中
[5] その他の制限:
習っている文はif,for,while,乱数程度なのでそのレベルに合わせてもらえると助かります
0485デフォルトの名無しさん
2011/04/27(水) 20:44:54.470486デフォルトの名無しさん
2011/04/27(水) 21:58:35.63はい
後switchも習いました
0487デフォルトの名無しさん
2011/04/27(水) 22:13:39.47switch無しでゴリゴリいっちゃったよ、もうしらね
http://ideone.com/jXV0g
0488デフォルトの名無しさん
2011/04/27(水) 22:36:54.65[2]次のコードはコマンドラインから与えられた数までの素数を列挙するプログラムの筈であるが
間違いがある。これをなるべく少ない工数で修正して正しく動作するようにしなさい
#define <stdlib.h>
char *main(char **argc,int argv){
void work(char*);
argc++;argv++;
while(argc++)work(argv);
return("0");
}
void work(char *p){
int i,m,*p,c=0;
sprintf(p,"%d",m);
for(i=0;i<m;i++)p[i]=0;
p[0]=++p[1];
for(i=0;i<m;i++)if(p[i])for(j=i*i;j<m;j-=i)p[j]=1;
for(i=0;i<m;i++,c++)if(!p[i])fputs("%8d%s",i,(c%5==0)?"\n":" ");
}
[3]C言語
[4]明日まで
[5]コンパイルが出来ないのでお手上げです。
0489デフォルトの名無しさん
2011/04/27(水) 22:42:39.55工数というなら全部書き直しが一番工数が少なそうだね
0490デフォルトの名無しさん
2011/04/27(水) 22:44:35.50こういう問題腹立つわぁw
0491デフォルトの名無しさん
2011/04/27(水) 22:48:16.63良門ですねw。言語教育は読解・修正作業が出発点で創造作業はその次の段階だし。
0492デフォルトの名無しさん
2011/04/27(水) 22:48:18.57お願いします
0493デフォルトの名無しさん
2011/04/27(水) 22:54:50.75出題者に従うだけが解答じゃないからね。
0494デフォルトの名無しさん
2011/04/27(水) 22:55:50.08ありがとうございます
どなたか>>484もお願いします
0495デフォルトの名無しさん
2011/04/27(水) 23:03:35.61でも、仕事では糞コードでも書き直ししないで最低限の修正ですますんでしょ
0496デフォルトの名無しさん
2011/04/27(水) 23:08:06.21糞コードは順次置き換えてるよ。
どうしても糞コードを生み出してしまう状況があるのは分かるから、
糞コードを書くなとは言わないけど、見つけたらなるべく直す様にしてる。
0497デフォルトの名無しさん
2011/04/27(水) 23:11:19.69業務現場のコードはカレー味のウンコなんじゃね?
0498デフォルトの名無しさん
2011/04/27(水) 23:12:28.460499デフォルトの名無しさん
2011/04/27(水) 23:16:18.860500488
2011/04/27(水) 23:18:37.220501デフォルトの名無しさん
2011/04/27(水) 23:19:20.95そえに対するreturn("0"); が素敵
で、
p[]って何をしようとしているんだ?
0502デフォルトの名無しさん
2011/04/27(水) 23:24:22.35いや、決して難しくはない
むしろ笑える
>>501
顔に見えるよなそれw
0503デフォルトの名無しさん
2011/04/27(水) 23:24:42.21char *main(char **argc,int argv){
つint main(int argc, char **argv){
return("0");
つreturn 0;
0504デフォルトの名無しさん
2011/04/27(水) 23:33:45.650505デフォルトの名無しさん
2011/04/27(水) 23:43:06.16#include <stdlib.h>
void work(char*);
int main(int argc, char **argv){
return 0;
}
0506デフォルトの名無しさん
2011/04/27(水) 23:55:10.08http://www23.atwiki.jp/homework/pages/11.html#id_257b264b
0507デフォルトの名無しさん
2011/04/28(木) 00:04:45.19習っていない文もありますし、もう少し簡単になりませんかね?
後答えを導くプログラムはどうすれば・・・
催促や文句ばかりで申し訳ないです
0508デフォルトの名無しさん
2011/04/28(木) 00:06:23.85計算量って何?
#include <stdbool.h>
#include <stdio.h>
bool is_prime();
int main(int argc, char *argv[]) {
int val;
sscanf(argv[1], "%d", &val);
for(int i = 1; i < val; i++) {
if(is_prime(i)) printf("%d¥n", i);
}
}
bool is_prime(int val) {
for(int i = 2; i < val - 1; i++) {
if( (val % i) == 0) return false;
}
return true;
}
0509デフォルトの名無しさん
2011/04/28(木) 00:09:31.27答えを導くのは0-9999総当りでいいんじゃない?
0510デフォルトの名無しさん
2011/04/28(木) 00:11:31.84//#define <stdlib.h>
#include <stdlib.h>
//char *main(char **argc,int argv){
int main(int argc,char **argv){
void work(char*);
//argc++;argv++;
//while(argc++)work(*argv);
while(--argc)work(*++argv);
//return("0");
return 0;
}
char pp[100];
void work(char *p){
//int i,m,*p,c=0;
int i,j,m,c;
//sprintf(p,"%d",m);
m = atoi(p);
//for(i=0;i<m;i++)p[i]=0;
for(i=0;i<m;i++)pp[i]=1;
//p[0]=++p[1];
//for(i=0;i<m;i++)if(p[i])for(j=i*i;j<m;j-=i)p[j]=1;
for(i=2;i<m;i++)if(pp[i])for(j=i+i;j<m;j+=i)pp[j]=0;
printf("\n");
//for(i=0;i<m;i++,c++)if(!p[i])fputs("%8d%s",i,(c%5==0)?"\n":" ");
for(i=2,c=0;i<m;i++)if(pp[i]){printf("%8d%s",i,(c%5==4)?"\n":" ");c++;}
printf("\n");
}
こんなんでいいかなあ?
0511デフォルトの名無しさん
2011/04/28(木) 00:12:00.84http://ideone.com/IFlJ7
答えを導くのって単純な総当りからMin-Maxとか色んな解法があるけど本当に課題なの?
最後の2枚はダブりが無い4桁の整数を作るフローチャートだと思うんだけど・・・
0512デフォルトの名無しさん
2011/04/28(木) 00:17:29.68http://codepad.org/Sp1WYfdV
malloc, freeを追加したのが悔やまれるけど、あとはなるべく最小限の変更を努めた。
0514デフォルトの名無しさん
2011/04/28(木) 00:22:32.90mallocは手抜きしたw
0515488
2011/04/28(木) 00:29:49.24>>512さん
ありがとうございます。
>>512さんのコードのほうが綺麗に修正されてますね。
これからコンパイルして正しく動作するか確かめてみます。
ところで、コンパイルはどうやってやればいいのか、実は
わかってません。
0516デフォルトの名無しさん
2011/04/28(木) 00:33:25.62古典的な方法としては命令に対応するマシン語を直接打ち込む方法もある
が普通はしない
0517デフォルトの名無しさん
2011/04/28(木) 00:49:43.56すみません、下のフローチャートは関係なさそうですね
フローチャート関係なしに答えを求めるものは出来そうですかね?
0518デフォルトの名無しさん
2011/04/28(木) 03:02:13.94いや、関係あるだろ。
そのフローチャートが提示されている意味は作成されるコードに影響を与えるよ。
0519デフォルトの名無しさん
2011/04/28(木) 11:57:18.49>>511のコードで、以下のようにansをテーブルとして持つのもあり?
http://ideone.com/aJ7TF
0520デフォルトの名無しさん
2011/04/28(木) 15:15:23.83このとき、このファイルの内容をソートとして画面上に標準出力するプログラムを作成せよ。
ファイルの行数は不定とし、また上限を定めないこと。
また、ソートは降順あるいは、昇順のどちらにも対応できること。」
ちなみにファイルの読み込みは1回、単語格納のための配列は使ってはいけない、qsortは使ってはいけない
という条件付きです。誰かわかる人お願いします
0521デフォルトの名無しさん
2011/04/28(木) 15:17:58.650522デフォルトの名無しさん
2011/04/28(木) 16:25:59.87世界最大の英語辞書をソートしろってことか
単語重複許すなら100万語超もありか
0523デフォルトの名無しさん
2011/04/28(木) 16:33:16.11#include<iostream>
#include<string>
#include<set>
int main(void)
{
std::string str;
std::set<std::string> dic;
while(std::getline(std::cin, str))
{
dic.insert(str);
}
for(std::set<std::string>::iterator it=dic.begin();it!=dic.end();++it)
{
std::cout << *it << std::endl;
}
return 0;
}
0524デフォルトの名無しさん
2011/04/28(木) 16:43:12.45int main() {
system("cat filename | sort");
return 0;
}
0525デフォルトの名無しさん
2011/04/28(木) 17:56:02.84おまえなぁ・・・
#include <stdlib.h>つけとけよ
0526デフォルトの名無しさん
2011/04/28(木) 18:11:27.55シェルソートでもいいし
0527デフォルトの名無しさん
2011/04/28(木) 20:32:23.090528デフォルトの名無しさん
2011/04/28(木) 20:47:39.83ボゴソートでぐぐってみたんだけど何これwww
乱数にメルセンヌツイスタでも使わないと混合合同法では停止しないかも
しれないじゃないかwww
0529デフォルトの名無しさん
2011/04/28(木) 20:53:35.66要素数が10なら数十秒で終わるから問題ない。
20超えると丸一日で終わらなかったりするが
0530デフォルトの名無しさん
2011/04/28(木) 23:55:08.130531デフォルトの名無しさん
2011/04/29(金) 02:01:20.32> 単語格納のための配列は使ってはいけない
これは何?ヒープにとろうが string を使おうが単語格納のための配列を利用する結果になると思うんだけど?
0532デフォルトの名無しさん
2011/04/29(金) 02:07:18.18配列がだめなら動的に確保すればいいじゃない
ってことでしょ
0533デフォルトの名無しさん
2011/04/29(金) 02:53:04.32テンプレ
0534デフォルトの名無しさん
2011/04/29(金) 02:55:09.400535デフォルトの名無しさん
2011/04/29(金) 03:00:00.30当然外部ファイル書き出しも出来ないし、子プロセス作成も不可
だろね、やっぱり
0536デフォルトの名無しさん
2011/04/29(金) 03:04:20.220537デフォルトの名無しさん
2011/04/29(金) 03:57:37.44そういう自縛的な発想が蔓延するから、プログラミング言語演習を
数学演習と同列にやることに反対する人が多くなるんじゃね?
この「問題(愚問)」の場合は、やはり◆QZaw55cn4cとか
が得意の二分木を使うのが良さげ
というわけで◆QZaw55cn4cが↓に登場します
http://codepad.org/BR9gbdWg
>>537
ごめん、二分木使わなかった。。。
0539デフォルトの名無しさん
2011/04/29(金) 09:11:42.78これは明らかに問題の不備だよな
無限のリソースを持っているコンピュータなど存在しない
しかもファイルポインタを外部ファイルにテンポラリとして書き出すのも駄目っぽいから
>>530程度でいいのではないかと思う
0540デフォルトの名無しさん
2011/04/29(金) 09:14:12.76言うだろうなあ
SSDを使えればそうではないだろうが早く痛みそう
問題がそのような事を要求しているようなので仕方ないが
0541デフォルトの名無しさん
2011/04/29(金) 11:53:08.54静的に決め打ちするなって意味でしょ
ファイルの行数は不定であってもあくまで有限
0542デフォルトの名無しさん
2011/04/29(金) 12:22:42.96そうでなきゃ実行を拒否するコードにするのがセキュリティ対策の基本だとか
Windows APIとかに余計なパラメータが多いのはそのせい?
0543デフォルトの名無しさん
2011/04/29(金) 12:23:25.99でも>>538のプログラムは一旦ファイルを行単位で全部メモリに読み込んでない?
で行の配列へのポインタをソートしている
もしメモリを超えるサイズのファイルがあったら動かないよ
0544デフォルトの名無しさん
2011/04/29(金) 12:33:17.150545デフォルトの名無しさん
2011/04/29(金) 12:47:55.270546デフォルトの名無しさん
2011/04/29(金) 15:27:21.60ソートは降順あるいは、昇順のどちらにも対応しているの?
0547デフォルトの名無しさん
2011/04/29(金) 16:35:19.14プって何でしょうか?(プ
0550デフォルトの名無しさん
2011/04/29(金) 17:20:04.25なんか題意の読解力が有名コテと同じようなレベルだな
0551デフォルトの名無しさん
2011/04/29(金) 17:21:52.30フラグで分岐すればいいだけじゃね?
その辺言い出すときりがないよ。caseをどうするかとか。
そうなると>>524=俺だけど、sortコマンド使いなよってなる。
コードの雑さでいろんなものを捨ててることぐらい読み取ってくれないか。
0553デフォルトの名無しさん
2011/04/29(金) 17:27:03.04コード改訂しようか?いらないよね…
0555デフォルトの名無しさん
2011/04/29(金) 17:31:56.91C限定っぽい気がするけどよく分からん
0556デフォルトの名無しさん
2011/04/29(金) 18:02:03.82#include<string>
#include<set>
struct less{
static bool flag;
bool operator()(const std::string &x, const std::string &y) const{
return flag ? x < y : y < x;
}
};
bool less::flag = false;
int main(int argc, char* argv[]){
less::flag = argc < 2;
std::multiset<std::string, less> dic;
for(std::string str; std::getline(std::cin, str);)
dic.insert(str);
for(std::multiset<std::string, less>::iterator it = dic.begin(); it != dic.end(); ++it)
std::cout << *it << std::endl;
}
std::sort禁止じゃないし
やっぱCなんだろうな
0557デフォルトの名無しさん
2011/04/29(金) 19:19:18.29>>520宿題で制限事項等から出題者の意向を読解して、
学生に自前で作って欲しい部分は何かって考えると
ある程度はどうすべき気なのかって講義に出ていない奴でもわかるんじゃないか
本来、宿題プログラムは単に制限事項をクリアしたプログラムを作れば良いじないよな
sortに関してはソート関数(部分)は自前で実装して欲しいんだと思う
qsort(関数)でソートやったらソート部分を自分で作らなくても良いから禁止って事だろうな
ファイルの行数は不定、上限を定めない、配列禁止は動的メモリ割り当て・使い方を学んで欲しい
からじゃないか
と俺は解釈
プログラムコーディング以前の話になってしまったな
0558デフォルトの名無しさん
2011/04/29(金) 19:44:41.24俺はテンプレ使ってても制限特になしとかだったらそうする
0559デフォルトの名無しさん
2011/04/29(金) 20:24:31.640560デフォルトの名無しさん
2011/04/29(金) 23:23:43.29テンプレ無し問題は的外れな回答が来ても文句は言えない
0561デフォルトの名無しさん
2011/04/30(土) 01:47:19.43書き忘れてしまって申し訳ありませんが言語はC言語で、
自分はリストを作ってそこに単語を格納してソートの手順でしようと思っています。
しかし、上手くリストに単語を格納してソートするためにどうプログラムをくめばいいのかがわかりません。
2回目でスイマセンができれば引き続き教えてもらえないでしょうか
0562デフォルトの名無しさん
2011/04/30(土) 01:56:19.760563デフォルトの名無しさん
2011/04/30(土) 01:57:10.70緑、許さない絶対にだ 君
ここより
C言語何でも質問掲示板
chiebukuro
の方が良いんじゃね
立派なレス付いてるんだし
0564デフォルトの名無しさん
2011/04/30(土) 03:57:03.56http://ideone.com/8tneo
0565デフォルトの名無しさん
2011/04/30(土) 06:39:06.80不定長さレコードを読み取って整列して出力するにはどうしたらいい?
ということなんだろうから、答えとしては多分恐らく、2分木か(それに類するもの)
が最適なんじゃないかと
0566デフォルトの名無しさん
2011/04/30(土) 06:53:04.77ポインタまだ習ってませんとか
は、この問題に限ってはあり得ないw
0567デフォルトの名無しさん
2011/04/30(土) 09:39:49.98ファイルのオフセット位置(単語の先頭)を2分木で大小比較しつつ記憶するってこと?
ストリーム的に処理するなら、システムで確保できる分のメモリ量で、ファイルの部分部分をソートしていって、
最後にファイルの部分部分同士をマージソートって気がするけど。
0568デフォルトの名無しさん
2011/04/30(土) 12:13:59.17のバイトストリームを受け取ってそこへ送り戻すような場合を考えればいいんでねの?
(再送要求は基本的に撥ね付けられる)
バッファリング無しはそりゃ無理だろw
(相手が途中で送信を要求するというのは、送ってもいない情報を予測して送り返せ
というのに等しいのでそりゃ考える必要は無いだろw?)
メモリしか使えない状況じゃ配列に格納するしかないだろうけど、配列は禁止らしいから
やっぱし◆QZaw55cn4cさんのpush/popとか使って二分木に格納して、
相手の送信が終わったことを確認したら再帰呼び出しで一気にソーメン流しで
送り返すしかないだろうね。こういった場合は好きなやり方じゃないが、仕方が無い。
ただし相手の送信終了確認が難しいんだろうけど
0569デフォルトの名無しさん
2011/04/30(土) 12:24:40.38糞な◆QZaw55cn4cの二分木ルーチンを見る度に「またこいつか」と思ってしまう
0570デフォルトの名無しさん
2011/04/30(土) 12:30:31.09召還されました。
>>520
問題文に不明瞭な点があるようなので、とりあえずこれを提出して反応を待つのはどうでしょうか。
http://codepad.org/liRVVqr9
0571デフォルトの名無しさん
2011/04/30(土) 12:34:41.890572デフォルトの名無しさん
2011/04/30(土) 12:34:53.63ん、すみません。では次回は AVL 木で組んでみます。
0573デフォルトの名無しさん
2011/04/30(土) 13:29:07.34コードよろしく
0574デフォルトの名無しさん
2011/04/30(土) 13:46:05.03糞とか言っている先生に見本コードお願いしろよ
0575デフォルトの名無しさん
2011/04/30(土) 14:08:21.91そもそも書けない人にお願いしても無駄でしょう?自分で書きます。
0576デフォルトの名無しさん
2011/04/30(土) 14:28:09.48レスが錯綜して登場人物が何人いるのかがわからない。
だれかユースケース図で説明して。
あとAVL木よりB木のコードがいいな。
0577デフォルトの名無しさん
2011/04/30(土) 14:55:31.80一度しか検索しない対象に対して木の高さを敢えて揃える意味があるのはどういう場合かとか..
俺にはわからないので教えてくれ.
0578デフォルトの名無しさん
2011/04/30(土) 18:12:50.29>>570いつも思うがおまいさんのコードは分かりにくいw
複数の行に同じ単語がある場合を想定してないが、問題にも書いてないしその場合はどうするんだろうな
0579デフォルトの名無しさん
2011/04/30(土) 18:27:17.89俺は分かりにくいとまでは思わないけど..
分かりにくいという声が出る一つの原因は、コードの本質的な
部分じゃなくて多分名前の取り方じゃないかと思ったりしてる。
push/popはスタックの為に予約されているわけでもなかろうが
でも、まぁ普通は先入後出の例のアレを指すわけ。
popで一気に入れた順番とは無関係に一気に出てくるってのは
まぁ確かにpopなんだろうけどw
FlushとかExplosionとかBlowUpとかそういった単語にすりゃ
いいのにと結構思ったりする
http://codepad.org/EcRfMZ1T
単純な2分木はQZが作ってるので、双方向リストで作ってみた。(正順逆順にも対応)
>>538とやってることは変わらないので、元データがすでに逆順ソートされている(またはそれに近い)場合は
速くなってるけど、根本的に遅いのは変わらないです。
0581デフォルトの名無しさん
2011/04/30(土) 20:35:16.02うーん、わかりにくいですか‥‥‥。
それは、malloc() で得たポインタを別んところで free() しているせいでしょうか?
それとも二重ポインタを使っているところでしょうか?
mygetline() の中身がわかりにくいのでしょうか。これは確かに改善したいものですが、アイディアが思いつきません。
>>570 では複数の行に同じ単語があれば、ソート後それらは連続して並びます。strcmp() の値が負か非負かでしかみてませんから。
>>579
名前ですか。確かにpush()/pop() はいまいちずれていますね。
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Trie_example.svg
この絵から想像したアルゴリズムにしてみた。
多分斜め上だけど速度速くなったので貼っとく
http://codepad.org/nC3d47EJ
0583デフォルトの名無しさん
2011/04/30(土) 21:39:54.62コテ付けろよ
名無しだとQコテだってすぐに解らん
0584デフォルトの名無しさん
2011/04/30(土) 21:43:02.30http://hibari.2ch.net/test/read.cgi/tech/1295273862/582
>私は一介の名無しに戻ります。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/592
0585デフォルトの名無しさん
2011/04/30(土) 21:44:21.45どこまで自分に甘いんだよw
0586デフォルトの名無しさん
2011/04/30(土) 21:44:59.57できればトリつけてくれないかな、NGにしてるから
0587デフォルトの名無しさん
2011/04/30(土) 21:48:51.220588デフォルトの名無しさん
2011/04/30(土) 21:58:51.320589デフォルトの名無しさん
2011/04/30(土) 22:15:10.59自分に甘く、他人に厳しいのが自己愛性人格障害の特徴
最悪の性格と言えよう
精神科医も自己愛とボーダーの治療を一番嫌がるそうだ
0590デフォルトの名無しさん
2011/04/30(土) 22:15:41.33巣を追われたら他に出てくるのは自然の摂理。
0591デフォルトの名無しさん
2011/04/30(土) 22:29:26.21「巣を壊したのはお前らだ。だから俺は宿題スレに出てくる権利がある」と
さすが義務を果たさず権利だけをやたらと主張する様はどこやら人とそっくり
ですね
強烈な他罰
自分を決して省みない厚かましさ
こんな奴を誰が好くというのか?
0592デフォルトの名無しさん
2011/04/30(土) 22:34:49.71そんなコード提出したらダメだよ!っていう正義感から?
0593デフォルトの名無しさん
2011/04/30(土) 22:38:21.090594デフォルトの名無しさん
2011/04/30(土) 22:40:31.28同一人物ならいいんだけど、そうじゃないならそっちの方がよほどうっとうしいよね。
まとめて巣に入ればよし。
0595デフォルトの名無しさん
2011/04/30(土) 22:54:01.030596デフォルトの名無しさん
2011/04/30(土) 22:59:21.250597デフォルトの名無しさん
2011/04/30(土) 23:01:11.21そうすれば出題者、回答者、それ以外と分けられる。
0598デフォルトの名無しさん
2011/04/30(土) 23:04:04.40QZが回答しながら勉強したいなら、全然問題ないし。
内容で十分でないところがあったにしても真面目に回答をしてるとは思うよ。
批判があるなら、書いてるコードの内容に対してすべき。
0599デフォルトの名無しさん
2011/04/30(土) 23:06:58.000600デフォルトの名無しさん
2011/04/30(土) 23:32:00.63のがマナーじゃね?
グローバル変数定義しておいて実際にはそれへのポインタを
関数に与えて処理するコード書く人居るけどそれと似ていて
酷く読みにくかったりする。
0601ぼるじょあ ◆yBEncckFOU
2011/04/30(土) 23:35:08.680602デフォルトの名無しさん
2011/04/30(土) 23:41:02.16まあ、あの頃もいろいろ荒れてたけど
指摘された感があったので修正ついでに測定結果を。
テストデータは7500行ぐらい(昇順ソート済み、降順ソート済み、ランダムの3種)
それぞれ昇順、降順ソートを10回
もっと速くできると思うんだけど、誰かお願い。
>>538
asc to asc 1.17
asc to desc 1.23
desc to asc 0.18
desc to desc 0.16
random to asc 0.72
random to desc 0.71
>>http://codepad.org/gtmuVD9m (グローバル変数いらなかったので改訂、ただしそもそもメモリをたくさん使う)
asc to asc 0.30
asc to desc 0.29
desc to asc 0.30
desc to desc 0.27
random to asc 0.36
random to desc 0.34
>>570
asc to asc 4.09
asc to desc 7.56
desc to asc 7.78
desc to desc 4.17
random to asc 0.09
random to desc 0.08
0604デフォルトの名無しさん
2011/05/01(日) 00:11:26.56>>570 についてだけコメント
>asc to asc 4.09
>asc to desc 7.56
>desc to asc 7.78
>desc to desc 4.17
ニ分木にとって入力データとしては最悪ですね。これは仕方がない。
>random to asc 0.09
>random to desc 0.08
ニ分木の左右にほぼ均一にデータが入るので、効率がよくなります。
まあデータ構造によって得意不得意がでるのは仕方がないでしょう。
うん、そう。qsortを使った場合でもソート済みのデータに対しては遅くなる。
同じく、自分が作ってる>>580のリストも、正順ソートされたデータに対して最悪のパフォーマンスになる。
データが増えた場合には>>603は仮想メモリを使用することになり、著しくパフォーマンスが落ちることが予想される。
>>577に、こういう偏ったデータの時に単純な2分木は不利になるってレスをしようと思ったまま忘れていた。
>>580
asc to asc 1.65
asc to desc 1.63
desc to asc 0.01
desc to desc 0.01
random to asc 1.17
random to desc 1.24
>>564
asc to asc 1.71
desc to asc 8.04
random to asc 6.51
C++のと、>>524は除外。もちろん両方とも、俺やQZのより速い。
0607デフォルトの名無しさん
2011/05/01(日) 01:02:22.29http://codepad.org/cQhaxuN4
・ファイルの読み込みは1回?
・単語格納のための配列は使ってはいけない?
・このensure_capacityはJavaのVector#ensureCapacityとは挙動が異なる。
・realloc失敗したらいきなりexit(EXIT_FAILURE)
・一番素朴なバブルソート
・未保障
0608ぼるじょあ ◆yBEncckFOU
2011/05/01(日) 02:38:35.82おまいらが作ったのよりずっと早いYO!
もっと頑張れYO!
0609デフォルトの名無しさん
2011/05/01(日) 02:55:36.70正直、割と適当な記述だという自覚がある
・トライでの実装。パトリシア・ツリーも考えたが、さくっと書くのは回答者の技術的に無理だったw
・単語小文字のみ、降順表示のみ対応
・規格Cでは保証されていない文字の性質(a〜zの文字コードが連続している)を用いている
・最大単語長が126文字を仮定。課題的に問題があるのかは分からなかった
・正しい実装である保証はない
http://codepad.org/tDyLMi1J
>>538の改良版
http://codepad.org/APIS2iA7
asc to asc 0.02
asc to desc 0.02
desc to asc 0.19
desc to desc 0.19
random to asc 0.11
random to desc 0.10
>>587を小文字限定にしたもの(単語長の制限はないまま)
http://codepad.org/2IuKE34U
asc to asc 0.04
asc to desc 0.03
desc to asc 0.03
desc to desc 0.03
random to asc 0.03
random to desc 0.03
>>609
asc to asc 0.06
asc to desc 0.07
desc to asc 0.06
desc to desc 0.06
random to asc 0.07
random to desc 0.07
>>608さんのコードもみてみたいです。
0611デフォルトの名無しさん
2011/05/01(日) 18:03:23.54いや、大いに参考になります。trie でソートする、という実装が表にでてくるのも、ひとえに >>610 の人徳でしょう。
>>>608さんのコードもみてみたいです。
さて、どうでしょうかね。
0612デフォルトの名無しさん
2011/05/01(日) 18:15:19.49>>570 は単純な二分木、というだけではなく、それを再帰呼び出しで実装しているので、この上もなく悲惨なことが判明しました。
手元の環境では、大きなデータを食わせると予告もなく stack overflow で落ちます。(ダンプも吐かないとは‥‥‥。)
いくら malloc() の返り値をチェックして最低限の予防線を張っていても、stack overflow だけは検知できない。(こんなことは DOS 時代以来‥‥。)
>>569 のいうとおり、
1) 最低限、平衡二分木にする(AVL 木, 2-3 木, 2色木(赤黒木))
2) 可能ならば再帰呼び出しは行わない。
といったところでしょうか。
0613デフォルトの名無しさん
2011/05/01(日) 18:15:47.770614デフォルトの名無しさん
2011/05/01(日) 18:17:10.55パズルとかをプログラミングで解こうとするとよくわかる。
0615ぼるじょあ ◆yBEncckFOU
2011/05/01(日) 18:24:10.81qsort にすればもっともっと早くなるYO!
0616デフォルトの名無しさん
2011/05/01(日) 18:51:08.28”Cに慣れると何でも「いきなりのC」ができると思う癖がつきやすい”と、とある先輩が...
マイプログラムにいちいち仕様書書けとかいうんじゃなくて、実はもっと高級言語(C直系のものも多い)
を使ってアルゴリズムとか洗練させてからCで書き直さしたほうが無難(急がば回れ)、さもなくば泥沼に
嵌ることも多い
という意味
0617デフォルトの名無しさん
2011/05/01(日) 19:41:32.80http://codepad.org/AjKZAS6o
・バブルソートを修正
・コムソートを実装(wikipediaからほぼ丸パクリ)
・コムソートって実装カンタンな割りに平均O(n log n)、最悪O(n log n)
・未保障
0618デフォルトの名無しさん
2011/05/02(月) 02:42:39.82[2] 問題文(含コード&リンク):ttp://www.uproda.net/down/uproda293522.jpg
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: 指定なし VC++でやってます
[3.3] 言語: C
[4] 期限: 明日中
[5] その他の制限: ポインタ一歩手前くらいです
0619デフォルトの名無しさん
2011/05/02(月) 02:45:01.15#include <stdio.h>
int main(){
int i,j=0,num,child[1000],song,song2;
scanf("%d %d",&num,&song);
//子供たちに通し番号を付ける。
for(i=1;i<=num;i++){
child[i]=i;
}
song2=song;
while(j!=1){
while(song2>num){
song2=song2-num;
}
for(i=1;i<=num;i++){
if(child[i]!=0){
printf("%d",child[i]);
}
}
return 0;
}
0620デフォルトの名無しさん
2011/05/02(月) 02:47:31.69#include <stdio.h>
int main(){
int i,j=0,num,child[1000],song,song2;
scanf("%d %d",&num,&song);
//子供たちに通し番号を付ける。
for(i=1;i<=num;i++){
child[i]=i;
}
song2=song;
while(j!=1){
while(song2>num){
song2=song2-num;
}
/*
printf("%d %d",song2,child[song2]);
getch();
*/
0621デフォルトの名無しさん
2011/05/02(月) 02:50:51.70child[song2]=0;
song2+=song;
//ループ脱出用。
j=0;
for(i=1;i<=num;i++){
if(child[i]!=0){//何人残ってるか数える
j++;
}
}
}
for(i=1;i<=num;i++){
if(child[i]!=0){
printf("%d",child[i]);
}
}
return 0;
}
0622デフォルトの名無しさん
2011/05/02(月) 03:15:43.32#include <stdio.h>
int main(void)
{
int i, j, n, l, start;
int child[1000];
scanf("%d%d", &n, &l);
for(i = 0; i < n; i++) child[i] = i + 1;
for(i = n, start = 0; i > 1; i--) {
start = (start + l - 1) % i;
printf("%d\n", child[start]);
for(j = start + 1; j < n; j++) child[j - 1] = child[j];
}
printf("%d\n", child[0]);
return 0;
}
0623デフォルトの名無しさん
2011/05/02(月) 03:47:56.46偶然、例の場合に答えが一致してるだけ
コメントはずしてsong2とchild[song2]を表示させれば順番おかしいことわかるだろ
0624デフォルトの名無しさん
2011/05/02(月) 03:56:39.71コード美しすぎわろた
0625デフォルトの名無しさん
2011/05/02(月) 04:05:57.42#include <stdio.h>
int main(void)
{
int i, j, num, length, idx, child[1000 + 1];
scanf("%d%d", &num, &length);
for(i = 1; i <= num; i++) child[i] = 1;
for(i = num, idx = 1; i > 1; i--) {
for(j = 0; ; idx++) {
if(idx > num) idx = 1;
if(child[idx]) j++;
if(j == length) break;
}
printf("%d\n", idx);
child[idx] = 0;
}
for(i = 1; i <= num; i++) if(child[i]) printf("%d\n", i);
return 0;
}
0626デフォルトの名無しさん
2011/05/02(月) 08:45:30.71>>570 の改良版です。AVL木(平衡二分木の一種)を一部取り入れました。
http://codepad.org/F4X9iMw9
0627626
2011/05/02(月) 09:11:00.34>>570
asc to asc: 6.00
asc to desc: 8.76
desc to asc: 7.57
desc to desc: 6.63
random to asc: 0.18
random to desc: 0.18
>>626
asc to asc: 0.16
asc to desc: 0.15
desc to asc: 0.21
desc to desc: 0.13
random to asc: 0.15
random to desc: 0.14
>>610の一つ目
asc to asc: 0.17
asc to desc: 0.14
desc to asc: 0.27
desc to desc: 0.27
random to asc: 0.20
random to desc: 0.21
0628デフォルトの名無しさん
2011/05/02(月) 09:12:28.630629626
2011/05/02(月) 10:17:25.66>>626 にはバグがありましたので、訂正します。
AVL木を一部採用しています。
http://ideone.com/ujGUY
0630629
2011/05/02(月) 10:29:37.11>>570
asc to asc: 5.84
asc to desc: 8.61
desc to asc: 7.52
desc to desc: 6.68
random to asc: 0.18
random to desc: 0.17
>>629
asc to asc: 0.20
asc to desc: 0.17
desc to asc: 0.16
desc to desc: 0.17
random to asc: 0.18
random to desc: 0.20
>>610 の一つ目
asc to asc: 0.13
asc to desc: 0.13
desc to asc: 0.25
desc to desc: 0.29
random to asc: 0.19
random to desc: 0.20
0631デフォルトの名無しさん
2011/05/02(月) 10:35:04.82とりあえず例のスレを使ってみようとしているけど……いいのか悪いのか
http://hibari.2ch.net/test/read.cgi/tech/1295273862/
0633デフォルトの名無しさん
2011/05/02(月) 11:03:13.81隔離場所にひっこんでいてもらいたい
俺はあほな誘導するのがうざかっただけだから
0634デフォルトの名無しさん
2011/05/02(月) 13:30:26.33糞は糞だよ
自己愛性人格障害は性格の病気だから一生治らん
>>630
いい加減に他のスレ行ってやれカス
空気が読めないのかアホ
0635デフォルトの名無しさん
2011/05/02(月) 23:08:09.94わざわざありがとう!
お世話様でした
0636デフォルトの名無しさん
2011/05/03(火) 18:11:39.70回答のついた過去の問題でも、解きたい人、解けた人ははどんどんコードをアップしていいとは思ってはいます。
今回、私が叩かれているのは別の理由だったと思いますし。
そのこころは、>>268。
現在、赤黒木を試行中です。これはなかなか手ごわい。でも赤黒木の応用範囲が極めて広いことを考えると是非征服したいものです。
今年のゴールデンウィークは「赤黒木」がテーマになりました。
0637デフォルトの名無しさん
2011/05/03(火) 18:24:45.390638デフォルトの名無しさん
2011/05/03(火) 22:27:16.93[2] 問題文(含コード&リンク):デフォルトの場合は Alt+K 1(DEFAULT)
カスタムの場合は Alt+K 2(CUSTOM)
Alt+Kが押されたらカスタムのようにしてください。
ウィンドウまたはダイアログボックスに表示お願いします。
[3] 環境
[3.1] OS:windows
[3.2] VC++
[3.3] 言語: C++
[4] 期限: 5月5日
[5] その他の制限: 制限なし
0639デフォルトの名無しさん
2011/05/03(火) 23:36:01.51カスタムの意味が不明だったのでAlt+Kだけだが
ttp://codepad.org/OSyJjum5
0640308
2011/05/04(水) 11:18:50.54Alt+Kを押すとデフォルトがカスタムに値を1から2に変更させたいです
0641デフォルトの名無しさん
2011/05/04(水) 11:23:59.420642308
2011/05/04(水) 11:26:46.15Alt+Kが押されたら・Alt+K 2(CUSTOM)
こういう風になるようにできればオkだと思います
0643デフォルトの名無しさん
2011/05/04(水) 11:35:26.76つまり
1回目にAlt+K -> Alt+K 1(DEFAULT)
2回目にAlt+K -> Alt+K 2(CUSTOM)
を表示させるってことか?
とりあえずその分かりにくい日本語をなんとかしろw
0644デフォルトの名無しさん
2011/05/04(水) 11:42:57.39という表記が分からない
2アクションとして受け取ると
DEFAULTを実行する術がない
意味が分からん。
0646308
2011/05/04(水) 11:43:55.140647デフォルトの名無しさん
2011/05/04(水) 11:50:21.00意味が分からん。
0648デフォルトの名無しさん
2011/05/04(水) 11:52:07.80俺のESPを駆使すると、ALT-Kで1と表示されたものが2に変わるくらいに思える
0649308
2011/05/04(水) 11:52:41.21>>642
つまり
1回目にAlt+K -> Alt+K 1(DEFAULT)
2回目にAlt+K -> Alt+K 2(CUSTOM)
を表示させるってことか?
こういうこと
0650308
2011/05/04(水) 11:54:13.110651デフォルトの名無しさん
2011/05/04(水) 12:53:32.42エスパーが質問に答えるスレ
http://hibari.2ch.net/test/read.cgi/tech/1187922645/
0652デフォルトの名無しさん
2011/05/04(水) 12:56:49.530653デフォルトの名無しさん
2011/05/04(水) 13:01:51.350654デフォルトの名無しさん
2011/05/04(水) 14:38:10.15http://loda.jp/_pluto_/?id=19
0655デフォルトの名無しさん
2011/05/04(水) 18:05:26.51それ本当なのか?
0656デフォルトの名無しさん
2011/05/04(水) 18:15:16.070657デフォルトの名無しさん
2011/05/04(水) 18:38:33.850658デフォルトの名無しさん
2011/05/04(水) 19:03:43.790659デフォルトの名無しさん
2011/05/04(水) 19:24:43.34[2] 問題文:n人でr個に分ける方法の数 nSrはStirling数という。関数Stirling 作成せよ。
ここで nSr = n-1Sr-1 + n-1Srr , nS0 = 0 , nS1 = 1, nSr = 0(r > n)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限:5/4
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ポインタは習っていません。よろしくお願いします。
0660デフォルトの名無しさん
2011/05/04(水) 19:27:17.610661デフォルトの名無しさん
2011/05/04(水) 21:16:35.14とりあえず問題分をそのまま当てはめてみた。
ちなみにWindows環境、一応MinGWで試した。
ttp://ideone.com/im132
0662デフォルトの名無しさん
2011/05/04(水) 21:51:24.890663デフォルトの名無しさん
2011/05/04(水) 23:23:01.74#include <stdio.h>
#define N 8192
#define table(i, j) t[r * (i) + (j)]
long long stirling(unsigned int n, unsigned int r)
{
static long long t[N];
long long i, j;
if ((n + 1) * (r + 1) >= sizeof(t)/sizeof(*t)) return -1;
for (i = 0; i <= n; i++) for (j = 0; j <= r; j++) table(i, j) = 0;
for (i = 0; i <= n; i++) table(i, 0) = 0; /** nS0 = 0 */
for (i = 0; i <= n; i++) table(i, 1) = 1; /** nS1 = 1 */
/** nSr = n-1Sr-1 + n-1Srr (n >= r) */
for (i = 2; i <= n; i++)
for (j = 2; j <= i && j <= r; j++)
table(i, j) = table(i - 1, j - 1) + table(i - 1, j) * j;
return table(n, r);
}
int main(void)
{
long long n, r;
if (scanf("%lld%lld%*c", &n, &r) != 2) {
fprintf(stderr, "invalid input\n");
return 1;
}
printf("%lld\n", stirling(n, r));
return 0;
}
0664デフォルトの名無しさん
2011/05/05(木) 03:54:56.18いや、おそらく (n-1Sr)r が正解だと思う。
0665デフォルトの名無しさん
2011/05/06(金) 05:10:25.33char型で計算結果を出力せよ。
これをお願いします。困っています。
0666デフォルトの名無しさん
2011/05/06(金) 05:36:40.970x1234 * 0xabcd =
0x12 * 0xab * 0x10000 + 0x12 * 0xcd * 0x100 + 0xab * 0x34 * 0x100 + 0x34 * 0xcd
0667デフォルトの名無しさん
2011/05/06(金) 17:24:50.84intで40桁表せられるハードウェア作ればいんじゃね?
0668355
2011/05/06(金) 17:53:21.34>>665
http://codepad.org/PXA5JrGF
0669デフォルトの名無しさん
2011/05/07(土) 00:48:45.13返数なしでcの指し示す配列にhogeを代入するプログラム
http://codepad.org/WYd2dorv
このプログラムだとエラーが出てしまいます
改善点を教えて下さい
0670デフォルトの名無しさん
2011/05/07(土) 00:54:44.26つ http://codepad.org/Tt57ftHa
0671デフォルトの名無しさん
2011/05/07(土) 01:27:24.56ありがとうございます
コピペしたところ、「識別子が見つかりませんでした」とエラーがでました
0672デフォルトの名無しさん
2011/05/07(土) 02:19:30.93#include <string.h>
0673デフォルトの名無しさん
2011/05/07(土) 02:22:45.40http://codepad.org/yv4B0Lo0
0674デフォルトの名無しさん
2011/05/07(土) 02:24:29.050675デフォルトの名無しさん
2011/05/07(土) 02:38:24.95ありがとうございました
0676デフォルトの名無しさん
2011/05/07(土) 17:03:40.24[2]問題文:char型のポインタ配列の先頭ポインタ**cを引数とする
返数なしでcの指し示す配列に順に月の名前の文字列を代入
作成したプログラム(http://codepad.org/jf7lkdXu)だと
エラーが起きてしまいます。お願いします。
0677デフォルトの名無しさん
2011/05/07(土) 17:06:03.20にしてみ。
0678デフォルトの名無しさん
2011/05/07(土) 17:10:13.640679デフォルトの名無しさん
2011/05/07(土) 18:10:28.30おお!できるようになりました
ポインタ配列とポインタのポインタはこうすればよかったのか
勉強になりました
ありがとうございました
0680デフォルトの名無しさん
2011/05/08(日) 18:06:11.25[2]問題文:自己参照型構造体を用いて、以下の処理をするプログラムを作成せよ。
正の数入力→連結リストを辿り、初めて入力された数ならばカウンタを1増やす。同じ数が続けて入力されたらその数のカウンタをさらに1増やす。
負の数入力→負の数の絶対値と同じ回数入力された数のデータを削除(例えば、-3を入力し、それ以前に14が3回入力されていたら、それを削除)
0を入力→データを出力して終了。
データ出力→終了の流れはどうにかなりましたが、それ以外で上手い発想が思いつきません。
http://codepad.org/yayuXIUa
期限は明日までです。
http://codepad.org/f51zggbZ
回答がついてないのでやろうと思ったんだけど、正の数入力時の内容がどうにもわからず。
「正の数入力→入力された数の入力回数を保持する」と読み替えて作ったものをうp。
意図と違ってたら、もうちょっと細かく書いてみてください。
元コードと考えが違うところは、headは有効なノードではなく、ダミーノードにした点ぐらいのはず。
0682デフォルトの名無しさん
2011/05/09(月) 05:41:56.98いいんじゃね?
俺もずっと前にこの手のプログラムを山ほど作ったが
ダミーノードを使った方がプログラムの見通しが良くなった。
今はC++のコンテナ std::list とイテレータで何も考えなくて
良くなったが、Cは全部書かないといけないし free() の所で
バグりやすいから大変だね
0683デフォルトの名無しさん
2011/05/09(月) 14:14:21.200684デフォルトの名無しさん
2011/05/09(月) 19:19:48.27小学生の工作宿題なんかを親が小学レベルに合わせずに親の基準(俺俺基準)
で作成したって感じだな。カンニングバレバレだろうな
>>681
>初めて入力された数ならばカウンタを1増やす
>同じ数が続けて入力されたらその数のカウンタをさらに1増やす
この2つの処理を
>正の数入力→入力された数の入力回数を保持する
に変更ってこと?
もとのコードは生かしたつもりだったけど、ダメだったかな。
変更内容はそのとおりで、元コードの構造体と、削除時の説明からそうしてみたけど、的外れですかね……
あとはリストの並び順とかも指定なかったので適当だったりで。
宿題ならこのほうがよくね?ってのがあるなら書いてくれると次書くときできるだけ反映します。
>>682
ありがとです。
一応、メモリリークの検査と、警告は全部潰す方向でやってます。
危うく見事にfreeまわりでバグってるとこでしたorz
0686デフォルトの名無しさん
2011/05/09(月) 21:53:00.11依頼主が何も言わないのなら、それで良いんじゃないか
少しはやる気ある依頼主みたいだから>>681を元に自分で俺様回答作成しているんじゃないか
0687デフォルトの名無しさん
2011/05/10(火) 00:19:48.64自己参照型構造体のメカニズムについて少しずつ理解はしています。
C言語が得意な知人曰く、headはポインタ変数にせず普通の変数として扱い、
その中のポインタ変数であるhead.nextを使うとやりやすいとの事なので、
また考えて見ます。
0688デフォルトの名無しさん
2011/05/10(火) 14:16:41.34(x, y)と(Δx, Δy)をそれぞれ配列として表現し、これを引数として受け取って求めたい座
標を返す関数void func1(double x[], double d[], double a[])を定義して、
その動作を確かめるプログラムkadai4-1.cを書きなさい。ただしx[]が元の位置座標、
d[]が移動分、そしてa[]に答え が代入されるものとする。
(x, y)と(Δx, Δy)はキーボードから次で入力するものとする。
scanf("%lf %lf %lf %lf", &A[0], &A[1],&B[0],&B[1]);
答えは以下で出力されるものとする。
printf("answer = (%lf, %lf)\n", C[0],C[1]);
よろしくおねがいします
0689デフォルトの名無しさん
2011/05/10(火) 14:21:32.07C言語の問題
だからかどうか知りませんが、点プレに沿って質問してくださいね
0690デフォルトの名無しさん
2011/05/10(火) 14:29:13.50#include <stdio.h>
void func(double x[], double d[], double a[])
{
a[0] = x[0] + d[0];
a[1] = x[1] + d[1];
}
int main(void)
{
double A[2], B[2], C[2];
scanf("%lf %lf %lf %lf", &A[0], &A[1],&B[0],&B[1]);
func(A, B, C);
printf("answer = (%lf, %lf)\n", C[0],C[1]);
return 0;
}
0691デフォルトの名無しさん
2011/05/10(火) 14:52:59.48書き方と解き方は結構繋がっているからな
0692688
2011/05/10(火) 15:04:40.282x2の行列A,Bの差を求める関数void func2(int A[][], int B[][], int C[][])を定義してその動作を確かめるプログラムkadai4-2.cを作りなさい。演算結果はC[][]に代入されて返されるものとする。
ただしAとBはキーボードから次で入力するものとする。
scanf("%d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[1][0],&a[1][1], &b[0][0],&b[0][1],&b[1][0], &b[1][1]);
答えは以下で出力されるものとする。
printf("answer = %d %d %d %d\n", c[0][0], c[0][1], c[1][0], c[1][1]);
0693デフォルトの名無しさん
2011/05/10(火) 22:12:04.51ただし,文字列の操作にはポインタ変数strDst, strSrc, pC, pDを用いることとし,strSrc[i] のような配列操作は用いないこととします.
また,配列strSrc[]の1つ前の番地に0が入っていることを前提としないプログラムにしてください.
http://codepad.org/V7e6qsPC
0694デフォルトの名無しさん
2011/05/10(火) 22:14:05.10C言語勉強したてなのですが、このような課題が出来ません…
ここ数時間試行錯誤してるのですが、どうも上手く出来てないようなのでお力を貸してもらえると嬉しいです。
0695デフォルトの名無しさん
2011/05/10(火) 22:17:42.10scanfや書き換えができるかどうかは処理系依存
殆どの処理系で禁止されている。
テンプレに嵌らない質問は別のスレで
0696デフォルトの名無しさん
2011/05/10(火) 22:19:53.04>>1 読んでテンプレ埋めろ
>>695
馬鹿は黙れ
0697デフォルトの名無しさん
2011/05/10(火) 22:27:05.91[2] 問題文: >>693
[3] 環境
[3.1] OS: windows7
[3.3] 言語:C言語
[4] 期限: 2011/5/12(金)
[5] その他の制限: 授業では最近ポインタに入りました。ポインタの入ってから初めての課題です。
文字列のコピーは出来たのですが、どうしても文字列の反転が出来ません…。
0698デフォルトの名無しさん
2011/05/10(火) 22:28:07.88ttp://codepad.org/3jbfqS2v
0699698
2011/05/10(火) 22:33:21.88strSrc, strDstとも配列だから問題ない。
>697
コメントに書いたけど、scanfで読み取る文字列がstrSrcのバッファを溢れさせると
まずいことになる。
まぁ、課題の進み具合からして、あふれるような入力は無い前提で
構わないとは思うが。
0700デフォルトの名無しさん
2011/05/10(火) 22:40:35.13ありがとうございます!理解するのに少し時間がかかりそうですが、勉強してきます…
0701デフォルトの名無しさん
2011/05/10(火) 22:41:33.22>>693にはstrSrcとstrDstはポインタ変数とあるが配列でいいの?
0702デフォルトの名無しさん
2011/05/10(火) 22:48:15.48本当ですね…問題文は一切改変してないので、問題作成者側のミスかもしれません。
授業(口頭での課題の簡単な説明)ではstrSrc , strDstを配列として扱っていたので、配列だと思われます。確認してみます…。
0703デフォルトの名無しさん
2011/05/10(火) 22:52:20.65while(*pC)pC++;
if(pC>strSrc)pC--;
while(pC>strSrc){
*pD=*pC;
pC--;pD++;
}
pD=0;
0704デフォルトの名無しさん
2011/05/10(火) 22:58:02.960705698
2011/05/10(火) 23:02:37.42>703さんのコードで3行目に当たるところの処理がまずい。
pC--;
→
if (pc > strSrc) {
pC--;
}
テストはほとんどしていないので、他にもあるかも。
0706デフォルトの名無しさん
2011/05/10(火) 23:13:42.89(#の後ろは無修正行を意味)
#pC=strSrc;pD=strDst;
#while(*pC)pC++;
#if(pC>strSrc)pC--;
while(pC>=strSrc){
#*pD=*pC;
#pC--;pD++;
#}
*pD=0;
これでおk?
0707デフォルトの名無しさん
2011/05/11(水) 00:56:53.90むやみに使う癖を付けると後で泣きを見やすい(実体験)
バイトサイズオンリーで押していくシステム直属処理用の
もので理論・応用レベルのコードではなかなか取れない
やっかいなバグの温床になりがち
0708デフォルトの名無しさん
2011/05/11(水) 01:14:13.97エンディアンではまったのですか?yrskrb kwsk
0709デフォルトの名無しさん
2011/05/11(水) 01:16:29.130710デフォルトの名無しさん
2011/05/11(水) 01:18:15.440711デフォルトの名無しさん
2011/05/11(水) 02:00:16.99そんなことはありません。sizeof を避ける、という意見は初めて聞きましたので、理由をしりたいだけです。
アラインメントの問題をさけるために assert をバンバンいれたり fwrite(), fread() で構造体のメンバ変数を
ちまちま読み書きしたことがあります。
エンディアンのトラブルを避ける方法はちょっとよくわかりません。
0712デフォルトの名無しさん
2011/05/11(水) 02:07:18.550713デフォルトの名無しさん
2011/05/11(水) 06:09:59.23[2] 問題文(含コード&リンク):ボウリングのスコア計算をするプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:
問題文はこれだけです
習った範囲は2次元配列、if、for、while、switchといった初歩的なものなので
可能ならばそれらでやっていただけると助かります
0714デフォルトの名無しさん
2011/05/11(水) 06:17:36.03[2] 問題文(含コード&リンク):
トランプのカード(1〜10,J,Q,K)が13枚ある。
まず、1枚のカードが表示されており、プレイヤーは次のカードが
その数字よりも大きいか小さいかを当てる。
間違えたらそこで試合終了(もう一回続けるかどうか尋ねる。)
予想が正しかったら次の予想を続けるゲームのプログラムを作りなさい。
また上記のゲームのプレイヤー側の思考プログラムを作りなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:
習った範囲は2次元配列、if、for、while、switchといった初歩的なものなので
可能ならばそれらでやっていただけると助かります
ゲームのプログラムと思考プログラムはそれぞれ別のファイルでお願いします。
0715デフォルトの名無しさん
2011/05/11(水) 06:44:47.86あと2つ目はわかったけど最初のボウリングの問題もっと具体的に
0716デフォルトの名無しさん
2011/05/11(水) 07:44:54.87何だか色々と申し訳ないです
ボーリングの問題なんですが本当に問題文これだけなんで
自分も詳しくは分からないのですがレーン毎に倒した本数を入力していく形式だと思います
一応今授業で乱数を学んでいるのですが特に関係なさそうですし…
0717デフォルトの名無しさん
2011/05/11(水) 08:22:37.56あと最後の投球は3回になる可能性も考慮して
0718デフォルトの名無しさん
2011/05/11(水) 09:01:27.16ゴールデンウィークの前に出された問題ですか?
0719デフォルトの名無しさん
2011/05/11(水) 09:24:40.82気持ち悪いので隔離スレでやってくれ
0720デフォルトの名無しさん
2011/05/11(水) 11:13:25.50int score[10][3];
0721デフォルトの名無しさん
2011/05/11(水) 11:58:48.19単純に面倒だな
0722デフォルトの名無しさん
2011/05/11(水) 12:22:47.08int main()
{
const int score[10][2] = {{0, 0}, {10, 0}, {8, 2}, {10, 0}, {10, 0}, {10, 0}, {5, 3}, {8, 2}, {10, 0}, {10, 10}};
const int extra = 10;
int sum = 0;
int i;
for (i = 0; i < 9; i++) {
if (score[i][0] == 10) {
if (i != 8 && score[i + 1][0] == 10) {
sum += 10 + score[i + 1][0] + score[i + 2][0];
} else {
sum += 10 + score[i + 1][0] + score[i + 1][1];
}
} else if ((score[i][0] + score[i][1]) == 10) {
sum += 10 + score[i + 1][0];
} else {
sum += score[i][0] + score[i][1];
}
printf("%d\n", sum);
}
sum += score[i][0] + score[i][1] + extra;
printf("%d\n", sum);
}
合ってるかもよく分からりません
0723デフォルトの名無しさん
2011/05/11(水) 12:44:17.89#include <stdio.h>
#include <stdlib.h>
int main()
{
const char *card[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
const int random[6] = {1, 4, 6, 5, 12, 0};
int i, res = 0;
for (i = 0; ; i++, i %= 6) {
printf("次は%sより大きいと思うなら1, 小さいと思うなら0を入力してください\n", card[random[i]]);
scanf("%d", &res);
if ((res == 0 && random[(i + 1) % 6] < random[i]) || (res == 1 && random[i] < random[(i + 1) % 6])) {
printf("つぎは%sなので正解でした\n続けるなら1を入力してください\n", card[random[i + 1]]);
scanf("%d", &res);
if (res != 1)
break;
} else {
printf("不正解ですい\n");
break;
}
}
}
0724デフォルトの名無しさん
2011/05/11(水) 12:49:45.35#include <stdio.h>
int main()
{
int res;
printf("出されたカードはなんでしたか?数字で入力してください(J = 11, Q = 12, K = 13で)\n");
scanf("%d", &res);
printf("次のカードは今回より%sとおもいます\n", res < 8 ? "大きい" : "小さい");
}
0725デフォルトの名無しさん
2011/05/11(水) 13:33:14.90[1] 授業単元プログラミング
[2] 問題文(含コード&リンク):
2x2の行列A,Bの差を求める関数void func2(int A[][], int B[][], int C[][])を定義してその動作を確かめるプログラムkadai4-2.cを作りなさい。演算結果はC[][]に代入されて返されるものとする。
ただしAとBはキーボードから次で入力するものとする。
scanf("%d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[1][0],&a[1][1], &b[0][0],&b[0][1],&b[1][0], &b[1][1]);
答えは以下で出力されるものとする。
printf("answer = %d %d %d %d\n", c[0][0], c[0][1], c[1][0], c[1][1]);
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 13日まで
[5] その他の制限 特になし
よろしくおねがいします。
0726デフォルトの名無しさん
2011/05/11(水) 13:38:51.76まてその関数どうやっても作れねーよ
0727デフォルトの名無しさん
2011/05/11(水) 13:46:14.63void func2(int A[][2], int B[][2], int C[][2])
{
int i ,j;
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
C[i][j] = A[i][j] - B[i][j];
}
int main()
{
int a[2][2], b[2][2], c[2][2];
scanf("%d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[1][0],&a[1][1], &b[0][0],&b[0][1],&b[1][0], &b[1][1]);
func2(a, b, c);
printf("answer = %d %d %d %d\n", c[0][0], c[0][1], c[1][0], c[1][1]);
}
0728デフォルトの名無しさん
2011/05/11(水) 14:12:18.39>ポインタ変数宣言時における構文糖
>type *p=type型配列定数宣言
>例
>int const *p={1,2,3,4,5,6,7,8,9,10};
>は許可されないので
>int pbase[10]={1,2,3,4,5,6,7,8,9,10};
>int const *p=pbase;
>としなければならない。
>これでは冗長なのでpがconstである場合に限り
>int p[]={1,2,3,4,5,6,7,8,9,10};
>でconst ポインタ変数pが宣言されたとすることができる
>Cでは配列とポインタを意図的に区別をしていない
>していないからこそ処理系の裁量で「配列」が値渡し(配列的)
>できるか参照渡し(ポインタ的)しか出来ないか決定できる
>前者の場合は副作用の少ないすっきりとしたわかりやすい
>コードが書けるが、実際には動作できないようなコードも
>生み出しがち。後者は現在の標準(巨大データは参照渡)。
0729デフォルトの名無しさん
2011/05/11(水) 14:35:16.74>type *p=type型配列定数宣言
>例
>int const *p={1,2,3,4,5,6,7,8,9,10};
>は許可されないので
>int pbase[10]={1,2,3,4,5,6,7,8,9,10};
>int const *p=pbase;
>としなければならない。
>それはおいといて
>int p[]={1,2,3,4,5,6,7,8,9,10};
>はint型の配列pの宣言です
>Cでは配列を関数の引数に渡すと
>関数内ではポインタになります
0730デフォルトの名無しさん
2011/05/11(水) 15:48:32.56>>717が言及しているけど、最後の10フレーム目は、ストライクが2回続いているんで、もう1投あるね。
{10, 10, 8}
0731デフォルトの名無しさん
2011/05/11(水) 16:06:08.47const int extra = 10;
が10フレームの3投目か。
0732デフォルトの名無しさん
2011/05/11(水) 17:20:46.96ありがとうございます
それと申し訳ないんですが>>714のゲームプレイヤー側の思考プログラムなんですが
「ランダムに大小を選択するのではなくある程度思考して選択するように」との一文があったのですが大丈夫ですかね?
それとボーリングのプログラムを倒したピンの数を標準入力していって
スコアを算出するように出来ませんかね?
お手数かけて申し訳ないです
0733デフォルトの名無しさん
2011/05/11(水) 17:22:52.840734デフォルトの名無しさん
2011/05/11(水) 18:14:57.05ランダムに選択していないし、ある程度かどの程度か分からないけれど、思考はしているように見えるよ。
「別の回答作ってるから少し待ってて」
0735デフォルトの名無しさん
2011/05/11(水) 18:19:44.77いまのCはint[][]ができるのか。良い時代になったな
>>727
[][2]と[][]は型が違うんじゃないか?
0736デフォルトの名無しさん
2011/05/11(水) 18:34:22.00許可していない(対応していない)というのも多いんじゃね?
0737デフォルトの名無しさん
2011/05/11(水) 19:14:32.07だって[][]とか不可能じゃん、こうするしかないじゃん
>>726=>>727だし
>>736
適当なこというなよ
0738デフォルトの名無しさん
2011/05/11(水) 19:27:41.45おいおいこれは「ジャグ配列」と言ってC/C++の二次元配列とは全く違うぞ
強いて言えば std::vector<std::vector<int> > に近い
つまり行ごとに列の要素数が違ってもいいわけだ
0739デフォルトの名無しさん
2011/05/11(水) 20:31:03.11あってるかどうかしらないけど
http://codepad.org/QdBVtj65
0740デフォルトの名無しさん
2011/05/11(水) 20:44:56.860741デフォルトの名無しさん
2011/05/11(水) 20:48:02.570742デフォルトの名無しさん
2011/05/11(水) 21:03:13.230の場合が多いけど処理系によって違う
0743デフォルトの名無しさん
2011/05/11(水) 21:17:57.26間違ってるだろうね。
Cの場合は
#define ((void *)0)
ってなっていることが多いとおもう。
#define 0
なら結果的に問題ないけど、終端文字をNULLって書くくらい、間違っている。
0744デフォルトの名無しさん
2011/05/12(木) 00:05:07.68どう定義されていようが、間違いには変わりない。
0745デフォルトの名無しさん
2011/05/12(木) 12:28:56.05[2] 問題文(含コード&リンク):
名前・身長・体重・血液型が記録されたメモ帳(ファイル)がある。
これを身長順にソートして並べ替えてコマンドプロンプト上に
表示させるプログラムを作成せよ。
なお、今回メモ帳はstudentsdata.txtという名前で保存されていることとする。
0746デフォルトの名無しさん
2011/05/12(木) 12:32:21.54[3.1] OS: Windows vista business
[3.2] コンパイラ名とバージョン: visual basic
[3.3] 言語:C言語
[4] 期限:2011年5月16日(月)午前9時まで
[5] その他の制限:
最後の行には身長・体重の平均、一番多い血液型を表示させること。
条件として構造体を使うこと。
長文で投稿できなかったので2回に分けました。
よろしくお願いします。
0747デフォルトの名無しさん
2011/05/12(木) 12:47:43.86で、ファイルは固定長?それとも何かの区切りがあるの?
>>746
つか、vbでCは無理
もう一度宿題を確認して来い
0748デフォルトの名無しさん
2011/05/12(木) 13:05:35.36勝手に決め打ちした書式でも文句は言えないぞ
0749デフォルトの名無しさん
2011/05/12(木) 14:14:19.58[2] 問題文(含コード&リンク):http://codepad.org/a9fxM1w5
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2011年05月17日12:00まで
[5] その他の制限:http://codepad.org/wW5cjiF7を元にすること
どの部分で何をしているのかも分かりません。
よろしくお願いします。
0750デフォルトの名無しさん
2011/05/12(木) 15:48:58.26このスレの896と897お願いします
困ってます
0751デフォルトの名無しさん
2011/05/12(木) 15:58:26.35[2] 次の連立方程式を解け
x1+2x2+3x3+4x4=30
2x1+3x2+4x3+x4=24
3x1+4x2+x3+2x4=22
4x1+x2+2x3+3x4=24
0752デフォルトの名無しさん
2011/05/12(木) 16:03:36.10[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: visual basic
[3.3] 言語: C++
[4] 期限: 2011年5月13日(金)
[5] できれば元の式のみを解くというだけでなく、他の数値等でも解けるように式自体を読み込まして解きたい。
数式がとても見辛いですがよろしくお願いします。ガウスの消去法です。
0753デフォルトの名無しさん
2011/05/12(木) 16:20:02.160754デフォルトの名無しさん
2011/05/12(木) 16:28:11.08ttp://www.geocities.jp/supermisosan/gauss.html
ここのコピペでやっときました
http://codepad.org/qs1bhQZW
できればとのことでしたので式での読み込みは対応してません
0755764
2011/05/12(木) 16:51:34.82ファイルの中は
氏名 身長 体重 血液型
氏名 身長 体重 血液型
・
・
・
といった具合に並んでいます。
(空白はスペースです)
あと、visual basicではなく
visual studioの間違いでした。すみませんでした。
0756デフォルトの名無しさん
2011/05/12(木) 16:55:10.140757デフォルトの名無しさん
2011/05/12(木) 17:40:32.25http://codepad.org/YSCWRuMX
データは
ito 157 50 B
sato 160 60 A
shiro 220 89 AB
itoo 170 49 AB
で試しました
0758デフォルトの名無しさん
2011/05/12(木) 17:53:16.34ありがとうございます!
助かります
0759デフォルトの名無しさん
2011/05/12(木) 23:09:33.05double a[N][N+1];
for (int i = 0; i < N;i++){
for (int j = 0; j < N + 1; j++){
printf("a[%d][%d] = ", i+1, j+1);
scanf("%lf", &a[i][j]);
}
}
0760デフォルトの名無しさん
2011/05/12(木) 23:58:57.58お礼が遅れてすみません。非常に助かります。
ありがとうございました!
0761デフォルトの名無しさん
2011/05/13(金) 00:30:28.83http://codepad.org/FAALZHkg
getopt() 周りは調べ物をせずに勘で書きましたので、はずれていたらごめんなさい。
0762デフォルトの名無しさん
2011/05/13(金) 11:37:13.83[2] 問題文:与えられた実数(a,b,c,d)に対して,つぎの連立非線形方程式
の解をニュートン法を用いて,解くプログラムを作成しなさい.
f1(x,y)=y+ax^2-b=0
f2(x,y)=y^2+cx^2-d=0
ただし,初期値(a,b,c,d)を入力でき,上記の方程式の解が画面表示さ
れること
【自己チェック法】
(a, b, c, d)=(0.1, 5, 1, 100)→ (x, y)=(9.306, -3.661),(-9.306, -3.661)
,
[3] 環境
[3.1] Windows
[3.2] gcc
[3.3] C言語
[4] 期限: 2011/5/15 18:00まで
[5] その他の制限: できるだけ簡単な関数で
よろしくお願いします.
0763デフォルトの名無しさん
2011/05/13(金) 12:22:07.41http://codepad.org/MqL6Rtek
0764デフォルトの名無しさん
2011/05/13(金) 12:22:54.06ttp://www.geocities.jp/supermisosan/newtonhou.html
0765デフォルトの名無しさん
2011/05/13(金) 12:37:13.49そうしないと数値を変えてコンパイルしなおさないともう一つの解を出せないですし
ニュートン法の手法自体では解が一つしか出ないんですが
複数解についてなにか指示はありましたか?
一応初期値を複数とって比較すれば出せないこともないですが数学的にはかなりアレな方法な気がします
0767デフォルトの名無しさん
2011/05/13(金) 13:31:49.67[2] 問題文:f(x)=e^-x -x^2=0の解(x>0)を原始反復法とニュートン法から求め、その収束の速さを比べよ。なお、解の精度は10^-6 とする。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2011年5月13日18:00まで
[5] その他の制限:なし
よろしくお願いします。
0768デフォルトの名無しさん
2011/05/13(金) 19:06:25.30どんなんだっけ?
0769デフォルトの名無しさん
2011/05/13(金) 19:09:05.55http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1261759137
0770デフォルトの名無しさん
2011/05/14(土) 07:44:30.37原始反復法ってなんですか?
0771デフォルトの名無しさん
2011/05/14(土) 07:54:29.230772デフォルトの名無しさん
2011/05/14(土) 11:33:02.880773デフォルトの名無しさん
2011/05/14(土) 12:46:44.72入力された商品名がない場合は、「そのような商品はありません」と出力する。
http://codepad.org/DGGLOUGq
http://codepad.org/h7pGT49o
↑2つのパターンで作成したんですが、両方ともエラーになります。
どうすればいいのか教えて下さい。
バージョンは、VisualC++です。
0774デフォルトの名無しさん
2011/05/14(土) 12:52:10.88文字列の比較はstrcmpを使ってください
==ではだめです
0775デフォルトの名無しさん
2011/05/14(土) 12:54:27.51○ char *name[2][16] = {"tree","cake"};
0776デフォルトの名無しさん
2011/05/14(土) 12:56:21.32むしろ
char *name[] = {"tree","cake"}
でいいだろ
ていうかその◯のやつはなんなんだよwwwwww
0777デフォルトの名無しさん
2011/05/14(土) 12:57:56.33直接エラーになっているのは
scanf("%s",&s); → scanf("%s",s);
文字列比較はstrcmpが必要になるのは>774の通り。
>775
何か勘違いしてませんか?
0778773
2011/05/14(土) 15:34:19.770779デフォルトの名無しさん
2011/05/14(土) 15:37:34.83できるよ
先頭から一文字づつ比較すればいい
0781デフォルトの名無しさん
2011/05/14(土) 16:00:18.52for文でも可能です
0782デフォルトの名無しさん
2011/05/14(土) 16:03:25.97やり方を教えて下さい
0783デフォルトの名無しさん
2011/05/14(土) 16:05:03.95ここは宿題すれだから、>>1のテンプレに従って
問題文と回答方法を書いてくれると早い。
0784デフォルトの名無しさん
2011/05/14(土) 17:35:15.95[2] 問題文:キーボードから入力された商品名の価格を出力するプログラム。
入力された商品名がない場合は、「そのような商品はありません」と出力する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual C++
[3.3] 言語: C++
[4] 期限: 2011年5月18日
[5] その他の制限:strcmpは使用しない方向でお願いします
http://codepad.org/DGGLOUGq
http://codepad.org/h7pGT49o
0785デフォルトの名無しさん
2011/05/14(土) 18:13:31.83http://codepad.org/jem1X2Ay
0786デフォルトの名無しさん
2011/05/14(土) 18:33:02.91バカすぎるw
0787デフォルトの名無しさん
2011/05/14(土) 19:28:00.85ttp://codepad.org/PkghZAMd
0788デフォルトの名無しさん
2011/05/14(土) 20:05:38.40>const char *name[] = {"tree","cake"};
>const int price[] = {300,500};
なぜ static をはずした?
0789787
2011/05/14(土) 20:16:50.68質問で気付いたけど呼び出し毎のスタック確保&解放防止の為なのね、
付けた方が良いのかも
0790デフォルトの名無しさん
2011/05/14(土) 20:37:21.04改変の危険と速度面から
0791デフォルトの名無しさん
2011/05/14(土) 20:37:49.380792デフォルトの名無しさん
2011/05/14(土) 23:07:51.48http://codepad.org/sMyHxgqq
0793デフォルトの名無しさん
2011/05/15(日) 00:40:17.56ってか前もこの手の話なかったか?w
0794デフォルトの名無しさん
2011/05/15(日) 01:06:02.73仕様通り。問題無し。
0795デフォルトの名無しさん
2011/05/15(日) 03:19:24.770797デフォルトの名無しさん
2011/05/15(日) 08:50:38.83本格的なC++化というのを見せてくれ。w
0798デフォルトの名無しさん
2011/05/15(日) 08:54:17.71本格的とかいわれてもwwwww
stringを使って簡略化したなら
末尾の検出のために手動で-1入れた配列とか使ってないでコンテナも使えばいいじゃんぐらいの話しよ
0799デフォルトの名無しさん
2011/05/15(日) 09:00:41.030800デフォルトの名無しさん
2011/05/15(日) 09:29:08.105月初旬じゃコンテナまで習ってないだろ。
http://codepad.org/lZa2IvaV
なんか商品がすごいなぁ
0802デフォルトの名無しさん
2011/05/15(日) 10:37:07.20出題者のこと考えるならそもそもstringも使うべきじゃないだろ
どうみてもCだもの
あくまで>>792が半端だなぁってだけだよ
0803デフォルトの名無しさん
2011/05/15(日) 10:45:00.34お題が、言語:C++、制約条件:strcmpは使用しない事とあるので、
std::string使えというのが出題者の意図と判断した。
もう一つの可能性(strcmpを自分で書く)は既に出ている。
質問テンプレに「これまで習った範囲」も入れた方が良いな。
0804デフォルトの名無しさん
2011/05/15(日) 10:45:06.08あと、strcmpを使わないっていうのは、本来そんな制限はないけど、
出題者が思い込みで勝手につけた制限だと思う。宿題スレにはよくあること
0805デフォルトの名無しさん
2011/05/15(日) 10:50:25.42あぁなるほど
C++って描いてあるのに結局Cでやれってことかよって奴をちょくちょく見たので思い込んでた
tree
tr
trees
rg
で試したけど全部300
0807デフォルトの名無しさん
2011/05/15(日) 13:39:45.23ご指摘ありがとうございます。
mystrcmp() に問題がありました。
>>784
バグがありました。以下に訂正いたします。
http://codepad.org/j4CqE1i7
0808デフォルトの名無しさん
2011/05/15(日) 13:51:40.71[2] キーボードから128文字以内の文字列を読み取り
それが浮動小数点表現であるかどうかを検査する
プログラムを作りなさい。浮動小数点表現ならば
その数に1を足した数字を表示しなさい。
[3] Windows/Visual C++/C言語
[4] 5/13迄(遅れています)
[5] printf,scanfしか習ってません
ボインタとかまだ習ってません
これ以外の関数は使えないと思います。
よろしくお願いします。
0809784
2011/05/15(日) 16:00:57.97様々なプログラムをありがとうございました
参考にさせていただきます
0810デフォルトの名無しさん
2011/05/15(日) 16:33:51.45ttp://codepad.org/2vOLnCEL
0811デフォルトの名無しさん
2011/05/15(日) 16:38:38.610812デフォルトの名無しさん
2011/05/15(日) 16:39:39.89http://codepad.org/UdQ3fBEH
習っていない表現があれば書き直しますので連絡ください。
0813デフォルトの名無しさん
2011/05/15(日) 18:22:11.31追加要望 http://hibari.2ch.net/test/read.cgi/tech/1295273862/869
に対応しました。あとバグをいくつかとりました。
http://codepad.org/m9T3sxmN
0814デフォルトの名無しさん
2011/05/15(日) 18:29:55.59エラー E2140 dai2.c 15: ここでは宣言はできない (関数 main )
またC99で書いたろカス
0815デフォルトの名無しさん
2011/05/15(日) 18:48:42.02それは出題者で出来るだろうから宿題。
0816デフォルトの名無しさん
2011/05/15(日) 18:52:46.47おっとご指摘感謝。
>>808
http://codepad.org/jbnR5QWF
0817デフォルトの名無しさん
2011/05/15(日) 18:55:59.95だってQカスだもの
0818デフォルトの名無しさん
2011/05/15(日) 19:35:09.50http://codepad.org/QcnnVfwC
以下をテスト
0819デフォルトの名無しさん
2011/05/15(日) 19:42:20.950820デフォルトの名無しさん
2011/05/15(日) 20:23:03.37>>818のバグ修正
http://codepad.org/Yygx9FfA
以下のパターンをテスト
1
-1
-100
+10
1.e
.1
1.0
1.-10
-1.F1
-1.e1
-1.e+1
-1.e.1
-10E10
-1.e2
1.0.
-
+
.
1.0 b
3.4 <= 行頭、行末が空白
0821デフォルトの名無しさん
2011/05/15(日) 20:25:43.42ついでにこれもテスト。
3.4 3.4
0822デフォルトの名無しさん
2011/05/15(日) 22:48:15.50整数.整数f+整数
という記法は無かったので、
int isexp(int c)
{
return c == 'E' || c == 'e';
}
に修正してくれ。コメントも合わせて要修正。
は2個?それともエラー? >>808
0824デフォルトの名無しさん
2011/05/15(日) 23:30:33.350825デフォルトの名無しさん
2011/05/15(日) 23:30:58.480826デフォルトの名無しさん
2011/05/16(月) 00:32:58.270827デフォルトの名無しさん
2011/05/16(月) 06:30:38.81if( sscanf(buf, "%lf%s", &value, s) == 1 )
printf("%s + 1 = %f\n", buf, value + 1.0);
#pragma warning (disable:4996)
// 処理:2つ以上の数は1つ目だけの処理
// 制限:scanf/printf だけを使う
// 目的:復興のための再開発
#include <stdio.h>
int main(void){
double data;
if(scanf("%lf", &data) == 1)
printf("%f\n", ++data );
else
printf("error\n");
}
0829デフォルトの名無しさん
2011/05/16(月) 11:42:39.62それだと小数点も指数も無い整数が通っちゃう気がする
0831デフォルトの名無しさん
2011/05/16(月) 12:09:47.86書けたのかな?
0832デフォルトの名無しさん
2011/05/16(月) 12:15:05.980833デフォルトの名無しさん
2011/05/16(月) 12:33:37.310834デフォルトの名無しさん
2011/05/16(月) 12:52:17.15多分こっちにも被害くるぜ
0835デフォルトの名無しさん
2011/05/16(月) 13:16:52.900836デフォルトの名無しさん
2011/05/16(月) 13:33:53.100837デフォルトの名無しさん
2011/05/16(月) 13:41:21.16幸せ回路全開だな
んなわけねーだろ
0838デフォルトの名無しさん
2011/05/16(月) 13:48:30.22そうだね
そうならないためにも◆QZaw55cn4cには消えてほしいね
0839デフォルトの名無しさん
2011/05/16(月) 13:53:16.690840デフォルトの名無しさん
2011/05/16(月) 13:59:17.07我慢できなくなっちゃった?
0841デフォルトの名無しさん
2011/05/16(月) 14:00:46.70無能の癖に自己顕示欲とプライドだけは無用に高いからなあw
0842デフォルトの名無しさん
2011/05/16(月) 14:14:43.730843デフォルトの名無しさん
2011/05/16(月) 14:23:01.380844デフォルトの名無しさん
2011/05/16(月) 14:34:14.23過疎版になって事実上板が死ぬから
0845デフォルトの名無しさん
2011/05/16(月) 14:47:46.360846デフォルトの名無しさん
2011/05/16(月) 14:52:59.19あっさり100倍速いコード書かれて涙目でフェードアウトした人のこと?
0847デフォルトの名無しさん
2011/05/16(月) 14:56:05.85過疎りはしないと思うよ。単発が増えまくるだろうけど
0848デフォルトの名無しさん
2011/05/16(月) 15:56:41.13いや減る
ID制になった他の板を見てみろよ
全部減ってる
ID表示は投稿量を減らす効果がありますと書いてあるし
http://tiyu.to/permalink.cgi?file=1ch_gen
0849デフォルトの名無しさん
2011/05/16(月) 16:05:32.600850デフォルトの名無しさん
2011/05/16(月) 16:10:06.660851デフォルトの名無しさん
2011/05/16(月) 16:32:21.150852デフォルトの名無しさん
2011/05/16(月) 16:52:58.090853デフォルトの名無しさん
2011/05/16(月) 17:12:21.090854デフォルトの名無しさん
2011/05/16(月) 17:46:55.69嘘だと思うならアンケ取ってみな
http://vote1.fc2.com/poll?mode=browse&uid=10647472&no=1
アンケ板作って見たから様子を見てみるか
0855デフォルトの名無しさん
2011/05/16(月) 18:05:52.00都度異なるID(IPと時刻から決定される3桁英数字ハッシュコード)
+積算投稿回数(10回未満:1 100回未満:2 1000回未満:3
...)
がいいと思います
荒らしと認定されたものが多いIPは赤で表示してもらうとか
0856デフォルトの名無しさん
2011/05/16(月) 18:08:29.88ここの投票所はそれが使えないんですよ
何かいい投票所はないですか?
ちなみにコメント欄入力必須にしときましたので、
あまりいい加減なコメントばかりならこの投票所を消します
ちゃんと理由を記入してください
0857デフォルトの名無しさん
2011/05/16(月) 18:14:58.280858デフォルトの名無しさん
2011/05/16(月) 18:22:39.85やっぱり消すわこれ
0859デフォルトの名無しさん
2011/05/16(月) 18:26:00.67それはIDにも言える事で・・・
0860デフォルトの名無しさん
2011/05/16(月) 18:26:43.39投票所じゃなくてスレにそういうIDがでればいいのにって話じゃね?
0861デフォルトの名無しさん
2011/05/16(月) 18:27:45.950862808
2011/05/16(月) 20:18:24.88友達が作ったプログラムを走らせてみると
こんな感じでした。
符号を入力してください(空入力で+とします):.
符号を入力してください(空入力で+とします):+
小数点以下0桁目を入力してください:3
3.000000000000000000
小数点以下1桁目を入力してください(空入力で終了):a
小数点以下1桁目を入力してください(空入力で終了):12
小数点以下1桁目を入力してください(空入力で終了):1
3.100000000000000089
小数点以下2桁目を入力してください(空入力で終了):4
3.140000000000000124
小数点以下3桁目を入力してください(空入力で終了):
exponent表現を使いますか<Y/N>?a
exponent表現を使いますか<Y/N>?y
符号を入力してください(空入力で+とします):-
exponent先頭1桁目を入力してください:1
0.314000000000000057
exponent先頭2桁目を入力してください(空入力で終了):
1.3140000000000001+1.0
でも、多分皆さんが作ってくださったコードが求めるものだと
思います。感謝致します。
0863デフォルトの名無しさん
2011/05/16(月) 20:29:31.84表せるのだったらNP完全だが、表せないんだったら
>>862みたいに自分で選ばせるしかないな
0864デフォルトの名無しさん
2011/05/16(月) 20:46:50.65Cの規格書ではBNFを使った文法を与えられているが、
たぶん正規表現でも書けると思う
0865デフォルトの名無しさん
2011/05/16(月) 20:59:52.49浮動小数点表現を題材に俺なんちゃって正規表現を実装して
パターンマッチングせよって課題ってことか
0866デフォルトの名無しさん
2011/05/16(月) 21:04:10.86ならexponent表現を使いますかって選択肢は不要なはずだね
0867デフォルトの名無しさん
2011/05/16(月) 21:23:17.95ガチガチの(ちょっと叩けば粉々に崩れる)プログラマ脳か、
頓知しか出来ない俺なんちゃって脳か
0868デフォルトの名無しさん
2011/05/17(火) 00:34:09.84[2] 画像を拡大せよ(128×128→256×256)、なお拡大方法は自由とする
[3] windows/Visual C++ 2008 Express edition/C++
[4] 2011/05/18
[5] きれいに拡大できる線形補間法で拡大しようとしていますがなかなか上手くいきません。
なお、複雑なwindowsアプリケーションでなく簡単なコンソールアプリケーションで作成したいです。
よろしくお願いします。
0870デフォルトの名無しさん
2011/05/17(火) 00:42:46.12画像形式は?
あとライブラリの使用はどの程度可能だ?VC2008についてる物なら何でも使っていいか
(もちろん画像処理そのものは別として)
0871デフォルトの名無しさん
2011/05/17(火) 00:45:24.810872868
2011/05/17(火) 01:00:43.17GetPixel等を用いずにやってみました。
http://codepad.org/vduTwrli
めちゃくちゃだと思いますが、このような感じで作成していきたいと思います。
>>870
bmpです。
ライブラリについて特に指定はありませんでした。
0873デフォルトの名無しさん
2011/05/17(火) 01:04:13.12(1)画素配列 int [128][128]をint [256][256]に滑らかに補完して返す関数
int *hokan(int *src)
の作成
(2)指定されたファイルを探して画像ファイルかどうかを検出してint[128][128]配列に
して返す関数の作成
int **resdFile(char *);
(3)hokan,readFileを使ってコンソールからファイル名を読み取って256x256配列に
直してコンソールで指定されたファイルに書き込むint main(void)の作成
てな具合に
それぞれ別の人が担当すりゃ空気良くならね?
0874デフォルトの名無しさん
2011/05/17(火) 01:04:52.99bmp のヘッダとかフォーマットとか全く知らないのか?
その辺りがむちゃくちゃ
0875デフォルトの名無しさん
2011/05/17(火) 01:27:02.09聞かなきゃなんともならん部分聞いてるだけじゃねーかwwww
分割してなにが解決するんだよ
0876デフォルトの名無しさん
2011/05/17(火) 01:34:18.66失礼。このスレにも流れと空気があってその関係の話ですた。
とりあえずfopenで直接バイナリを見てやるならBMPのフォーマットを調べることからやらないと
0878デフォルトの名無しさん
2011/05/17(火) 13:48:34.02[2] 問題文(含コード&リンク):
キーボードから入力した2つの文字列を連結する関数
void addstr(char str1[], char str2[], char ans[])を定義して、
この動作を確認するプログラムkadai5-1.cを作りなさい。
ただし、addstr()はstr1とstr2を連結したものをansに代入して終了するもの
とする。また、2つの文字列は次のように入力されるものとする。
scanf("%s", str1);
scanf("%s", str2);
答えは以下で出力されるものとする。
printf("answer = %s\n", answer);
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2011年5月19日18:00まで] または [無期限] のいずれか)
0879デフォルトの名無しさん
2011/05/17(火) 14:29:36.56void addstr(char str1[], char str2[], char ans[])
{
while(*str1) *ans++ = *str1++;
while(*ans++ = *str2++);
}
int main(void)
{
char str1[128], str2[125], answer[256];
scanf("%s", str1);
scanf("%s", str2);
addstr(str1, str2, answer);
printf("answer = %s\n", answer);
return 0;
}
0880デフォルトの名無しさん
2011/05/17(火) 15:24:21.34[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから入力した文字列を逆向きの文字列に変換する関数
void reverse(char str[], char answer[])を作り、その動作を確認する
プログラムkadai5-2.cを作りなさい。
但し対象となる文字列はstr[]に。
答えはanswer []に代入されて返信されるものとする。
scanf("%s", str);
答えは以下で出力されるものとする。
printf("answer = %s\n", answer);
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2011年5月19日18:00まで] または [無期限] のいずれか)
0881デフォルトの名無しさん
2011/05/17(火) 15:40:54.31ttp://codepad.org/PcMDvWwY
0882デフォルトの名無しさん
2011/05/17(火) 16:15:11.50[2]問題文
二次元配列に保存された10組の計測データ
x 23 34 45 21 34 56 68 78 89 45
y 22 28 55 17 42 56 60 87 91 39
に対して最小二乗法により直線近似した場合
の傾きと定数項を求めるプログラミングを作成しなさい。
※二つの変数の相関係数を求めて出力しなさい。
0883882の続きです。
2011/05/17(火) 16:17:13.47[3,1] OS:恐らくWindows7
[3,2] コンパイラ名とバージョン:すいません、わかりません。
[3,3] 言語:C
[4]期限:2011年5月18日10時00分まで
コマンドプロンプトと秀丸を使っています。
よろしくお願いします。
0884デフォルトの名無しさん
2011/05/17(火) 16:30:32.40[2] 問題文(含コード&リンク):
ttp://www.dotup.org/uploda/www.dotup.org1645289.txt
(上記URL先)のプログラムを機能別に分けたプログラムを作成しなさい。
また、どの点に着目して改良したかを述べなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual C++ 2008 Express edition
[3.3] 言語: C++
[4] 期限: 2011年5月18日(水)22:00
[5] その他の制限: 配列の章までの範囲でお願いします。
何が何と同時に実行されているのかを明確にして頂きたいのです。
また、部分ごとにどういうプログラムを実行しているか(人数の入力など)分けて頂けると嬉しいです。
0885デフォルトの名無しさん
2011/05/17(火) 17:17:17.59とりあえず暫定版
ttp://codepad.org/gvIqBgDD
・圧縮レベル0(BI_RGB)のみ対応
・画像データは1次元配列保持になっちゃった
・コード汚い
・画像サイズは128x128固定じゃない
試した画像
ttp://www1.axfc.net/uploader/Sc/so/235061
・test1bit.bmp ← エラー出る
・test4bit.bmp ← エラー出る
・test8bit.bmp
・test16bit.bmp
・test24bit.bmp
・test32bit.bmp
0886885
2011/05/17(火) 17:22:55.84ttp://www.ruche-home.net/
ttp://msdn.microsoft.com/en-us/library/dd183376(VS.85).aspx
0887デフォルトの名無しさん
2011/05/17(火) 17:56:31.42http://codepad.org/VKAy4eAf
このプログラムは直線近似だけでなく多項式近似も出来るようになっている
直線近似だけなら実はガウスジョルダン消去法は不要でたすき掛け演算で十分だが
分かりにくいのでこのようにしといた
0888デフォルトの名無しさん
2011/05/17(火) 18:05:48.63#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 128
void reverse( char str[] , char answer[] ) {
int index ;
char *pBuff ;
pBuff = str + strlen(str) -1 ;
for( index = 0 ; index < strlen(str) ; index++ ) {
answer[index] = *pBuff ;
pBuff-- ;
}
}
int main(int argc , char** argv ) {
char str[MAX_LENGTH] = {'\0'} ;
char answer[MAX_LENGTH] = {'\0'} ;
printf("input string:") ;
scanf("%s" , str ) ;
reverse( str , answer ) ;
printf("answer = %s\n" , answer ) ;
return 0 ;
}
0889デフォルトの名無しさん
2011/05/17(火) 18:11:49.670890デフォルトの名無しさん
2011/05/17(火) 18:19:09.06ガウスジョルダン消去法は最小二乗法なのか?
0891デフォルトの名無しさん
2011/05/17(火) 18:33:41.51当然違う。
0892デフォルトの名無しさん
2011/05/17(火) 18:40:20.50曲線近似する時は連立一次方程式を解かなければならないだろ
いまはそれがxで終わっているからこんなおおげさな事はしなくていいのだが
つるかめ算をするとかえってプログラムが読みにくくなる
0893デフォルトの名無しさん
2011/05/17(火) 18:49:47.36元のプログラムはそうなっている
0894882,883です。
2011/05/17(火) 20:00:25.71ホントにありがとうごさいます。
申し訳ないんですが、もう少し短くはなりませんか?
一応、学校で配られた二次元配列のプログラムを載せます。
0895894の続きです。
2011/05/17(火) 20:08:10.64#include<stdio.h>
#include < stdlib.h>
int main(void)
{
int a[2][2], i, j ;
a[0][0]=1 ; a[0][1]=2 ;
a[1][0]=3 ; a[1][1]=4 ;
for(i=0; i<2; i++){
for(j=0; j<2; j++;){
printf(" a[%d][%d]=%d", i, j, a[i][j]);
}
printf("¥n");
}
return(0);
}
0896デフォルトの名無しさん
2011/05/17(火) 20:42:19.72回帰分析を回帰直線専用に簡略化したけどこれでも長いかな?
これ以上短くするのは難しいかも・・・
codepadが重いのでideoneに貼らせてもらいました
http://ideone.com/pe3hT
0897895の続きです。
2011/05/17(火) 21:11:53.66また別の例に
double型のデータを格納し、配列名をa、大きさを3×5とした場合
→double a[3][5]
と書いてあります。ド素人で全然わかりませんが、
よろしくお願いいたします。
0898デフォルトの名無しさん
2011/05/17(火) 21:18:10.730899デフォルトの名無しさん
2011/05/17(火) 21:27:54.18課題と全然関係ないじゃん
0900デフォルトの名無しさん
2011/05/17(火) 22:54:37.33[2] 問題文(含コード&リンク): aprioriを実装しなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] Visual C++ 2010 Express edition
[3.3] 言語: c
[4] 期限: 2011年 5月22日
[5] その他の制限:配列まででできるのならそこまででお願いします。
部分ごとにどういう意味があるのかをコメントもできればお願いしたいです。
0901デフォルトの名無しさん
2011/05/17(火) 23:01:51.87"apriori" がなにかよくわかりません。説明している URL とかありませんか?
0902デフォルトの名無しさん
2011/05/17(火) 23:16:09.77http://www.atmarkit.co.jp/aig/04biz/associationanalysis.html
0903デフォルトの名無しさん
2011/05/17(火) 23:36:02.57例えばcatに似たmycatってコマンドを作りたい場合。
0904デフォルトの名無しさん
2011/05/18(水) 00:33:38.16#include <stdio.h>
#define LINE_SIZE (1024)
int main(int argc, char **argv)
{
FILE *pIn;
char buf[LINE_SIZE];
/* 引数チェック */
if (argc < 2) {
/* 引数指定がなければとりあえずなにもしない */
return -1;
}
pIn = fopen(argv[1], "r");
if (pIn == NULL) {
/* ファイルが開けなければ、とりあえずなにもしない */
return -1;
}
while (fgets(buf, LINE_SIZE, pIn) != NULL) {
/* 無加工で出力 */
printf("%s", buf);
}
fclose(pIn);
return 0;
}
0905894
2011/05/18(水) 01:50:24.770906885
2011/05/18(水) 05:14:24.50>>885の続き
ttp://ideone.com/G2SCk
・1bit画像に対応 ← new
・4bit画像に対応 ← new
これで画像すべて成功するはず
あと、なんかごめん、完全に自己満になった
0907749
2011/05/18(水) 14:59:36.470908デフォルトの名無しさん
2011/05/18(水) 17:12:57.77[1] 授業単元:計算機プログラミング
[2] 問題文:ttp://www.dotup.org/uploda/www.dotup.org1648258.pdf.html
リンク先の問題2
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: teraterm pro
[3.3] 言語: C
[4] 期限: [2011年5月22日まで]
[5] その他の制限:数値はキーボードから入力する形でお願いします
よろしくお願いします
0909デフォルトの名無しさん
2011/05/18(水) 17:17:59.02[3.2] コンパイラ名とバージョン: teraterm pro
まぁきっとgccだよね
0910デフォルトの名無しさん
2011/05/18(水) 19:13:19.630911デフォルトの名無しさん
2011/05/18(水) 19:26:52.27そこまでオリジナリティはないけど
ttp://ideone.com/wLAVv
0912デフォルトの名無しさん
2011/05/18(水) 20:18:31.82http://ibisforest.org/index.php?Apriori
こことかもありますのでお願いします。
0913デフォルトの名無しさん
2011/05/18(水) 20:18:47.950915デフォルトの名無しさん
2011/05/18(水) 20:31:18.70WindowsならVisual C++ Express Editionインストールして
デバッグモードで1行ずつ処理を追っていけばはかどるぞ
0917デフォルトの名無しさん
2011/05/19(木) 02:00:05.28[email protected]
0918917
2011/05/19(木) 02:20:43.500919884
2011/05/19(木) 08:53:22.38追記。
List5-13のプログラムを機能別に完全に分けたプログラムを作成しなさい.
1 人数の入力
2 データの入力 tensu[]へのデータ入力
3 分布の計算 bunpu[11] の計算
4 分布の出力
0920デフォルトの名無しさん
2011/05/19(木) 10:19:12.85理由は言わないでおくが
0921884
2011/05/19(木) 11:59:47.20すみません改めてお願いします。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org1651097.txt
(上記URL先)のプログラムを機能別に完全に分けたプログラムを作成しなさい。
1 人数の入力
2 データの入力 tensu[]へのデータ入力
3 分布の計算 bunpu[11] の計算
4 分布の出力
また、どの点に着目して改良したかを述べなさい。
[3] 環境
[3.1] OS: Windows7
[3.2] コンパイラ名とバージョン: Visual C++ 2008 Express edition
[3.3] 言語: C++
[4] 期限: 2011年5月19日(水)16:00
[5] その他の制限: 配列の章までの範囲でお願いします。
0922デフォルトの名無しさん
2011/05/19(木) 12:30:39.71[5]がお前にしか分からないから無理だな
0924デフォルトの名無しさん
2011/05/19(木) 13:02:01.11関数ならった?
0925>>884,921
2011/05/19(木) 13:09:17.22課題出された授業で別のプログラムを機能別にこういう風(↓)に分けたので、
この通りにしたらいいと思うんですが全く分かってないんで…
http://www.dotup.org/uploda/www.dotup.org1651215.c
↓
http://www.dotup.org/uploda/www.dotup.org1651216.c
0926デフォルトの名無しさん
2011/05/19(木) 13:42:45.00[2] 問題文(含コード&リンク):午前四時から正午までは Good Morning!、正午から午後八時まではGood Afternoon!、
午後八時から午前四時までは Good Evening!と表示するプログラムを書け。ただし、境界の時刻は前の時間帯に含まれる。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限:2011年5月22日24:00まで
[5] その他の制限:特になし
お願いします
0927デフォルトの名無しさん
2011/05/19(木) 14:09:58.22ttp://codepad.org/lbaDodhp
0928926
2011/05/19(木) 14:18:41.54迅速な対応恐れ入ります。
0929921
2011/05/19(木) 15:18:04.98説明不足で分かんないことがあったら言ってください
0930デフォルトの名無しさん
2011/05/19(木) 15:24:17.23すでに手遅れかもしれないが
0931921
2011/05/19(木) 15:29:48.400932デフォルトの名無しさん
2011/05/19(木) 15:37:41.84こういう事か?
http://codepad.org/j3ptnJOQ
":"がなぜか消えるな。
> また、どの点に着目して改良したかを述べなさい。
同時に行っていた点数の入力と分布の計算を分離した。
0934デフォルトの名無しさん
2011/05/19(木) 15:55:11.850935デフォルトの名無しさん
2011/05/19(木) 17:15:23.50[2]
長さが32の0と1の列
se7e6e5…e1e0d1d2…d22d23
を入力してこのビット列の表す実数値(実数表現の仕方はIEEE規格754に従うものと仮定する)
(-1)^s*(1+M)*2^E if-127<E<128
(-1)^s*M*2^(E+1) ifE=-127
Inf ifE=128,M=0
NaN ifE=128,M≠0
を出力するCプログラムを作成せよ。またこのプログラムの場合、使用した計算機の実数表現方式がIEEE規格754に従っているのなら、
計算結果として得られた実数値はコンピュータ内部では入力したビット列で表されているはずであるが、これをGDBのxコマンドを用いて調べてみよ。
[3] 環境 unix 言語 C
[4] 2011 5.20 16:00
0936908
2011/05/19(木) 17:44:50.12自分なりにやってみたところ、リンク先のような形にまでは出来ましたが
関数を用いて平均を求めるのとファイルに出力するのがどうしてもわかりませんでした
リンク先のものに付け足す形で平均の関数とファイルへの出力をお願いします
0937デフォルトの名無しさん
2011/05/19(木) 21:23:15.40http://ideone.com/bKxcz
0938デフォルトの名無しさん
2011/05/19(木) 21:29:26.26http://codepad.org/p1VWkOGH
> 計算結果として得られた実数値はコンピュータ内部では入力したビット列で表されているはずであるが、これをGDBのxコマンドを用いて調べてみよ。
(gdb) break 47
Breakpoint 1 at 0x400928: file 935.c, line 47.
(gdb) run
Starting program: /home/u/work/935
input binary data? 00000000010000000000000000000000 (1)
00000000010000000000000000000000 = 5.877472e-39
Breakpoint 1, ieee754_bin32 (b=4194304) at 935.c:47
(gdb) x/t &frac
0x7fffffffd99c: 00000000010000000000000000000000 (1)と一致
(gdb) c
Continuing.
input binary data? 00111111100000000000000000000000 (2)
00111111100000000000000000000000 = 1.000000e+00
Breakpoint 1, ieee754_bin32 (b=1065353216) at 935.c:47
(gdb) x/t &frac
0x7fffffffd99c: 00111111100000000000000000000000 (2)と一致
(gdb)
0939デフォルトの名無しさん
2011/05/19(木) 21:48:11.51[2] 問題文(含コード&リンク):
キーボードから入力された3つの整数を引数として受け取り、その中で最も小さい値を返す関数を定義し、以下の処理をするプログラムを作りなさい。
ただし、値の入出力はmain関数内で行うようにすること
(↓から実行中の画面の一例。)キーボード入力は、整数1:〜整数3:まで。
3つの整数を入力してください。
整数1:67
整数2:34
整数3:45
最も小さい値は34です。
[3] 環境
[3.1] OS:windows7
[3.2] コンパイラ名とバージョン: VS2007
[3.3] 言語:Visual C++ 2008 Express edition
[4] 期限: 2011年 5月20日 金曜日 午後1時まで
[5] その他の制限
Vmain( ) {最小値を探す}
return 結果 をmain へ?
main関数内で行う。
全然分からなくて、お力を借りたいです。
よろしくお願いします。
0940デフォルトの名無しさん
2011/05/19(木) 21:49:33.68[2] 問題文(含コード&リンク):
キーボードから入力された配列の要素数と各要素を引数として受け取り、要素の順番を逆に並び替える関数を定義し、以下の処理をするプログラムを作りなさい。ただし、値の入出力はmain関数内で行うようにすること
(↓から実行中の画面の一例。)キーボード入力は、要素数を入力してくださいからva[0]〜va[4]までの変換前の手前まで。
要素数を入力してください(10個まで):5
va[0]=32
va[1]=65
va[2]=34
va[3]=45
va[4]=12
変換前
va[0]=32
va[1]=65
va[2]=34
va[3]=45
va[4]=12
変換後
va[0]=12
va[1]=45
va[2]=34
va[3]=65
va[4]=32
整数1:67
整数2:34
整数3:45
最も小さい値は34です。
[5] その他の制限:入出力関数を用いて解答すること。ごめんなさい。全然わからず困ってます・・(´・ω・`)お願いします。
0941デフォルトの名無しさん
2011/05/19(木) 21:55:11.39http://codepad.org/0UaD5Wjt
0942デフォルトの名無しさん
2011/05/19(木) 21:55:47.45[5]制限の意味がさっぱり分らないです。
エスパーすると、最小値を探す関数を作成して、mainではそれを呼ぶこと、みたいな感じかな。
0943デフォルトの名無しさん
2011/05/19(木) 22:04:19.410944デフォルトの名無しさん
2011/05/19(木) 22:05:27.93http://codepad.org/U1Ydaxq7
>整数1:67
>整数2:34
>整数3:45
>最も小さい値は34です。
???
0945941
2011/05/19(木) 22:09:18.83http://codepad.org/ZQ0bjiTY
>>943
感謝
0946デフォルトの名無しさん
2011/05/19(木) 22:09:32.87http://www1.axfc.net/uploader/Sc/so/235704.zip
の結果を見て笑って欲しい
dlキーワードはbitmap
0947デフォルトの名無しさん
2011/05/19(木) 22:09:53.34ttp://codepad.org/y8WM3xIq
>943
>関数を定義しろって問題文に書いてある
いやそりゃ読めるけど、[5]とつながらないでしょ、って話だよ。
0948デフォルトの名無しさん
2011/05/19(木) 22:12:10.93Vmainは関数名?
#include <stdio.h>
int Vmain(int a, int b, int c)
{
if(a < b) {
if(a < c) return a;
return c;
}
if(b < c) return b;
return c;
}
int main(void)
{
int a, b, c;
printf("3つの整数を入力してください。\n");
printf("整数1:");
scanf("%d", &a);
printf("整数2:");
scanf("%d", &b);
printf("整数3:");
scanf("%d", &c);
printf("最も小さい値は%dです。\n", Vmain(a, b, c));
return 0;
}
0949デフォルトの名無しさん
2011/05/19(木) 22:39:36.83[2] 問題文:文字列ABCDを変数に代入し、ポインタを用いて次のように表示するプログラムを作成せよ
ABCD
BCD
CD
D
[3] 環境
[3.1] OS:Windows7
[3.2] コンパイラ名とバージョン: Visual Studio2008
[3.3] 言語: C++
[4] 期限: 5月20日12:00まで
[5] その他の制限:ありません
0951939
2011/05/19(木) 22:45:40.73>>948さんみたいなプログラムは構造とかscanfとかが授業内容的にもあってたので嬉しかったです(・ω・)
>>942>>944>>947
最後の整数1:とかの所は消し忘れミスです・・
制限の意味は、
↓整数1:67 }
main ↓整数2:34 }Vmain( ){最小値を探す}
↑ ↓整数3:45 }
↑
return 結果
の図があって、それを文章にしたものです。わかりにくくてごめんなさい・・
>>944さんのプログラムをscanfに直せるかちょっとやってみます。
規制中で、代行の方にお願いしてるのでレス遅れちゃうかもです(´・ω・`)
0952デフォルトの名無しさん
2011/05/19(木) 22:48:03.05○ >[1] 授業単元: Cプログラミング演習
× >[3.3] 言語: C++
???
http://codepad.org/XYAnHJkH
0953デフォルトの名無しさん
2011/05/19(木) 23:05:17.71#include<stdio.h>
int main(void)
{
char a[] = "ABCD";
char *p;
for (p = a; *p != '\0'; p++) {
printf("%s\n", p);
}
return 0;
}
0954デフォルトの名無しさん
2011/05/19(木) 23:09:57.61とってもありがとうございます。
言語のところも、テンプレート通りに作ったと思うのですが…。
0955デフォルトの名無しさん
2011/05/19(木) 23:10:38.020957デフォルトの名無しさん
2011/05/19(木) 23:17:27.12C++も分からない癖に
「Cで書きました」じゃなくて「C++が分かりません」だろ
0958940
2011/05/19(木) 23:26:11.18>>944さんのを実行したらエラーが出てしまいます。
>>940の
整数1:67
整数2:34
整数3:45
を消した問題をもう一度教えて頂けないでしょうか(´・ω・`)
できれば>>947さんや>>948さんみたいな形式だと嬉しいです。
ごめんなさい。
0959940
2011/05/19(木) 23:28:37.14>>944さんのを実行したらエラーが出てしまいます。
>>940の
整数1:67
整数2:34
整数3:45
を消した問題をもう一度教えて頂けないでしょうか(´・ω・`)
できれば>>947さんや>>948さんみたいな形式だと嬉しいです。
ごめんなさい。
[3.1] OS:windows7
[3.2] コンパイラ名とバージョン: VS2007
[3.3] 言語:Visual C++ 2008 Express edition
[5] その他の制限
入出力関数を用いて解答すること。C++で。
ファイル→新規作成→Win32コンソールアプリケーション→Win32アプリケーションウィザード→空のプロジェクトをチェック→完了
ソリューションエクスプローラ内のソースファイルの上で右クリック→追加→新しい項目→c++ファイル
0960デフォルトの名無しさん
2011/05/19(木) 23:41:53.72#include <stdio.h>
void rev(int *va, int n) {
int i, temp;
for(i = 0; i < --n; i++) {
temp = va[i];
va[i] = va[n];
va[n] = temp; }}
int main(void)
{
int i, n, va[10];
printf("要素数を入力してください(10個まで):");
scanf("%d", &n);
for(i = 0; i < n; i++) {
printf("va[%d] = ", i);
scanf("%d", va + i); }
printf("変換前\n");
for(i = 0; i < n; i++) printf("va[%d] = %d\n", i, va[i]);
rev(va, n);
printf("変換後\n");
for(i = 0; i < n; i++) printf("va[%d] = %d\n", i, va[i]);
return 0;
}
0961デフォルトの名無しさん
2011/05/19(木) 23:47:11.61C http://codepad.org/85aOn7Uz
C++ http://ideone.com/UaHnB
0962デフォルトの名無しさん
2011/05/19(木) 23:52:29.33[2] 問題文(含コード&リンク):
while分を用いて、金利が1%の銀行に10000円を預金した場合、
預金額(deposit)が15000円になるのに何年(year)かかるかを表示するプログラムを作成せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2011/5/31
宜しくお願いします
0963デフォルトの名無しさん
2011/05/19(木) 23:54:13.32面白いw
0964デフォルトの名無しさん
2011/05/20(金) 00:04:18.82[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
for文の二重ループを用いて、下の実行結果のように0〜9までの数字を
0から1個ずつ増やしながら10行表示するプログラムを作成せよ
0
01
012
0123
01234
012345
0123456
01234567
012345678
0123456789
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2011/5/31
0965デフォルトの名無しさん
2011/05/20(金) 00:22:57.32Q先生でいらっしゃいますか?
C++でC配列って、おじさんどうなの
0967デフォルトの名無しさん
2011/05/20(金) 00:39:11.19#include <stdio.h>
int main(void)
{
int i, j;
for(i = 0; i < 10; i++) {
for(j = 0; j <= i; j++) printf("%d", j);
putchar('\n');
}
return 0;
}
0968デフォルトの名無しさん
2011/05/20(金) 00:40:00.40あ、C++が分からない硬い頭では無理か
0969デフォルトの名無しさん
2011/05/20(金) 00:41:06.50これを見て配列の要素数を1024にするバカに何を言ってもムダだろう
0970デフォルトの名無しさん
2011/05/20(金) 00:42:13.21>[5] その他の制限:入出力関数を用いて解答すること。
と書いてあるのですが、C++で入出力関数が使われてないように見えますけど
0971デフォルトの名無しさん
2011/05/20(金) 00:43:19.06要素数1024はどうかと思うけど
0972デフォルトの名無しさん
2011/05/20(金) 00:44:25.05それから return 0; はmain()では不要ですよ
0973デフォルトの名無しさん
2011/05/20(金) 00:46:48.05頭の悪さがにじみ出てるな
0974デフォルトの名無しさん
2011/05/20(金) 00:47:19.111行目は分かるが
2行目はナンクセかと
0975デフォルトの名無しさん
2011/05/20(金) 00:50:26.44Qか?悔しいのか?std::cinとstd::coutはクラスだからcin.operator<<() と cout..operator>>() を
使っているわけだから入出力関数は使っていると言えるが、出来たら別関数にしてみなw
出来るか?
vector使えよ
0976デフォルトの名無しさん
2011/05/20(金) 00:53:28.27cin.operator>>() と cout.operator<<()
しかしこれはメンバ関数だから、題意は多分自分で入出力用関数を作れという事だと思う
0977デフォルトの名無しさん
2011/05/20(金) 00:53:32.32#include <stdio.h>
int main(){
int money = 10000;
int counter = 0;
while (money <= 15000)
{
money *= 1.01;
counter++;
}
printf("year = %d\n", counter);
return 0;
}
0978デフォルトの名無しさん
2011/05/20(金) 00:59:44.73ごめん、他人
int main() {return 0;}
を
int main() {}
とする事で得られるものを
名無しにも分かるように説明してみ
0979885
2011/05/20(金) 01:04:05.08直った、.>>906から、
390行〜455行(2倍にコピーする処理)
を修正した。
ttp://ideone.com/LSI76
0980デフォルトの名無しさん
2011/05/20(金) 01:06:06.75タイプ量の減少
0981デフォルトの名無しさん
2011/05/20(金) 01:14:47.35C++でゴルフ(笑)って事なら分かるけどそれはないわ
テンプレや補完使ってないの?
0982デフォルトの名無しさん
2011/05/20(金) 01:16:52.99確かにタイプ量は減少してると思うが?
>>978に対して「得られるもの」をちゃんと答えたぞ
文句あんのか
0983デフォルトの名無しさん
2011/05/20(金) 01:17:34.96テンプレや補完使ってないの?
0984デフォルトの名無しさん
2011/05/20(金) 01:20:04.90そんな事は最初聞いてなかったろ
後出しジャンケンは無視する
0985デフォルトの名無しさん
2011/05/20(金) 01:28:41.55○ C++でゴルフ(笑)って事なら分かるけどそれはないわな
>>984
>> タイプ量の減少
> テンプレや補完使ってないの?
>> 確かにタイプ量は減少してると思うが?
> テンプレや補完使ってないの?
>> 後出しジャンケンは無視する
時系列が・・・
0986デフォルトの名無しさん
2011/05/20(金) 01:30:44.24>>981の時点で既に後出しジャンケン
「得られるもの」だけ答えればそれでいい
0987デフォルトの名無しさん
2011/05/20(金) 01:51:25.38ホンマモノですか
なんだか、ごめんなさい
0988デフォルトの名無しさん
2011/05/20(金) 02:20:44.90http://codepad.org/3PDTfbjY
乗り遅れた感が半端ない
恥を忍んで修正版を…スレ汚しごめんなさい。
http://codepad.org/GWNhhutb
0991デフォルトの名無しさん
2011/05/20(金) 03:39:47.82これが気に入った
0992936
2011/05/20(金) 09:57:22.23ttp://www.dotup.org/uploda/www.dotup.org1652809.pdf.html
問題2です
0993デフォルトの名無しさん
2011/05/20(金) 10:38:38.60http://ideone.com/UYJ8c
平均を求める場所はまとめて関数にしたほうがいいんだろうか、平均を求める関数でよかったんだろうか
あと要素の先頭のポインタと個数渡すほうが普通だよなと作ってから思った(むしろこれ規格に厳密に考えると問題あるよね)
0994デフォルトの名無しさん
2011/05/20(金) 10:44:00.87ごめん間違えました
これは忘れてください
0995デフォルトの名無しさん
2011/05/20(金) 11:33:41.620996デフォルトの名無しさん
2011/05/20(金) 11:33:51.570997デフォルトの名無しさん
2011/05/20(金) 11:34:07.560998デフォルトの名無しさん
2011/05/20(金) 11:46:53.260999デフォルトの名無しさん
2011/05/20(金) 11:47:35.521000デフォルトの名無しさん
2011/05/20(金) 11:48:35.0310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。