C/C++の宿題を片付け ..
596:デフォルトの名無しさん
07/05/21 16:56:32 BE:157221599-2BP(222)
>>595
>mod使う方法でお願いします」。
とあったのでやむを得ず変数名にした。
597:≠595
07/05/21 17:10:31
#include <stdio.h>
int main()
{
const char * mod =
"2 3 5 7 11 13 17 19 23 29 31 37 "
"41 43 47 53 59 61 67 71 73 79 83 89 "
"97 101 103 107 109 113 127 131 137 139 149 151 "
"157 163 167 173 179 181 191 193 197 199 211 223 "
"227 229 233 239 241 251 257 263 269 271 277 281 "
"283 293 307 311 313 317 331 337 347 349 353 359 "
"367 373 379 383 389 397 401 409 419 421 431 433 "
"439 443 449 457 461 463 467 479 487 491 499 503 "
"509 521 523 541 547 557 563 569 571 577 587 593 "
"599 601 607 613 617 619 631 641 643 647 653 659 "
"661 673 677 683 691 701 709 719 727 733 739 743 "
"751 757 761 769 773 787 797 809 811 821 823 827 "
"829 839 853 857 859 863 877 881 883 887 907 911 "
"919 929 937 941 947 953 967 971 977 983 991 997";
printf("%s\n", mod);
return 0;
}
んじゃ、こんなもんでw
598:デフォルトの名無しさん
07/05/21 17:22:28
お前ら意地悪だなw
599:デフォルトの名無しさん
07/05/21 17:26:05
暗号なんかの実装だと既知素数はテーブル化されていることが多いよね。
600:デフォルトの名無しさん
07/05/21 17:35:55
いちいち求めるの面倒だもんな
601:デフォルトの名無しさん
07/05/21 17:49:01 BE:104814296-2BP(222)
面倒っつーか無駄だしね。
602:デフォルトの名無しさん
07/05/21 17:58:14
>>565
#include <stdio.h>
/* 3分ほど */
int main()
{
int n;
for(n = 1; n <= 100; n++){
printf("%3d ", n);
if(n % 5 == 0)
printf("せんだ");
if(n % 3 == 0)
printf("みつお");
printf("\n");
}
return 0;
}
603:602
07/05/21 17:59:42
仕様満たしてねえな俺w
604:デフォルトの名無しさん
07/05/21 18:02:07 BE:104814296-2BP(222)
ナハナハが抜けてるのくらい視力の問題だろw
605:デフォルトの名無しさん
07/05/21 18:06:07
>>565 やべえな。
#include <stdio.h>
/* 人間失格 */
int main()
{
int n, flag = 0;
for(n = 1; n <= 100; n++){
if(flag){
printf("ナハナハ");
flag = 0;
}else{
if(n % 15 == 0){
printf("せんだみつお");
flag = 1;
}else if(n % 5 == 0)
printf("せんだ");
else if(n % 3 == 0)
printf("みつお");
else
printf("%3d", n);
}
printf(" ");
}
return 0;
}
606:デフォルトの名無しさん
07/05/21 18:23:41
>>587
#include <stdio.h>
#include <math.h>
#define N 10
int main()
{
double sum = 0, ave, powsum = 0, var, dev;
int i, num[N], max, min;
for(i = 0; i < N; i++) scanf("%d", &num[i]);
for(i = 0; i < N; i++) sum += num[i];
ave = sum/N;
for(i = 0; i < N; i++) powsum = pow(num[i] - ave, 2);
var = powsum/N; //分散のつもり
dev = sqrt(var);//標準偏差のつもり
printf("sum = %f\nave = %f\nvar = %f\ndev = %f\n", sum, ave, var, dev);
return 0;
}
607:デフォルトの名無しさん
07/05/21 18:29:33
>>587 眼科逝ってくる。
#include <stdio.h>
#include <limits.h>
#include <math.h>
#define N 10
int main()
{
double sum = 0, ave, powsum = 0, var, dev;
int i, num[N], max = INT_MIN, min = INT_MAX;
for(i = 0; i < N; i++) scanf("%d", &num[i]);
for(i = 0; i < N; i++){
sum += num[i];
if(num[i] > max) max = num[i];
if(num[i] < min) min = num[i];
}
ave = sum/N;
for(i = 0; i < N; i++) powsum = pow(num[i] - ave, 2);
var = powsum/N; //分散のつもり
dev = sqrt(var);//標準偏差のつもり
printf("sum = %f\nave = %f\nmax = %d\nmin = %d\nvar = %f\ndev = %f\n", sum, ave, max, min, var, dev);
return 0;
}
608:デフォルトの名無しさん
07/05/21 18:52:28
宿題スレにどうしてC++固有の機能を使った問題が少ないのかな?
教官がCしかわからない頭の固いジジイが多いせいかもしれないな。
609:デフォルトの名無しさん
07/05/21 19:42:37
[1] 授業単元:c言語
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年05月22日08:00まで
よろしくお願いします。
610:デフォルトの名無しさん
07/05/21 19:43:18
>>608
Cレベルの宿題すら丸投げするんだから、C++レベル要求しても無駄かと
611:デフォルトの名無しさん
07/05/21 20:07:22
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):次の処理を行うプログラムを作成しなさい。
1、文字配列seiに姓を、文字配列namaeに名前を入力する。
2、seiにnamaeを連結させる。
3、seiの文字数をカウント表示する。
4、seiを出力する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:vc2005
[3.3] 言語:C++
[4] 期限:21時まで
[5] その他の制限:特になし
表示結果
姓は=> 永井
名前は=> さゆり
姓名は 永井さゆり です
文字数は 10 です
お願いします。
612:デフォルトの名無しさん
07/05/21 20:16:52
>>609
#include <stdio.h>
#define N 5
int main(int argc, char **argv)
{
int i, n, sum = 0;
double ave;
if (argc < 3)
return fprintf(stderr, "ファイル名を指定してください\n"), 1;
if (!freopen(argv[1], "r", stdin) || !freopen(argv[2], "w", stdout))
return fprintf(stderr, "ファイルが開けません\n"), 2;
for (i = 0; i < N && scanf("%d", &n) == 1; i++)
sum += n;
printf("平均値は%.1fです。\n", (double)sum/N);
return 0;
}
613:デフォルトの名無しさん
07/05/21 20:20:52
>>611
仕様と出力例が矛盾しとるようだな
614:デフォルトの名無しさん
07/05/21 20:26:49
>>565
#include<stdio.h>
int main(){
/*仕事中に携帯でこっそりやったら一時間以上かかった*/
int i, j;
for(i=1; i<=100; i++){
j = 0;
if(i%3 == 0){ printf("せんだ"); j += 1; }
if(i%5 == 0){ printf("みつお"); j += 1; }
if(!j){ printf("%d", i); }
putchar(' ');
if(j>1){printf("ナハナハ ");++i;}
}
return 0;
}
615:デフォルトの名無しさん
07/05/21 20:37:03
[1] 授業単元: C
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限:出来る限り早くお願いします。 無理言ってすいません。
[5] その他の制限:現在習っているのが関数、配列、制御文です。初心者です。よろしくおねがいします。
616:デフォルトの名無しさん
07/05/21 20:46:17 BE:29115735-2BP(222)
#include<stdio.h>
#include<ctype.h>
int alpha_jdg_cnt(int c){if(c=='.'){return 0;}if(isalpha(c)){return 1;}return 2;}
int main(void){int f,count=0;char s[256];do{printf("Input charactor:");fgets(s,256,stdin);
f=alpha_jdg_cnt(s[0]);if(f==1){count++;printf("ALPHABET : %i\n",count);}}
while(f!=0);return 0;}
617:デフォルトの名無しさん
07/05/21 20:47:34 BE:54348847-2BP(222)
>>611
>姓名は 永井さゆり です
>文字数は 10 です
何の文字数なのかと小一時間ry
618:デフォルトの名無しさん
07/05/21 20:50:38
姓 1
名 2
は 3
永 4
井 5
さ 6
ゆ 7
り 8
で 9
す 10
619:デフォルトの名無しさん
07/05/21 20:55:50
>>616
alpha_jdg_cntの中でカウントして無くないか?
多分static変数使って、関数内で出力するんでそ
620:デフォルトの名無しさん
07/05/21 20:56:47
>>615
#include <stdio.h>
int alpha_jdg_cnt(char);
int main(void) {
int cnt=0,flg;
char buf[32];
printf(">>\n\n");
do{
printf("Input character : ");
scanf("%s",buf);
flg=alpha_jdg_cnt(buf[0]);
if( flg == 1) {
cnt++;
printf("\nALPHABET : %d\n\n",cnt);
}
}while( flg!=0 );
printf("\n>>\n");
return 0;
}
int alpha_jdg_cnt(char ch) {
if( (ch>='A' && ch<='Z') || (ch>='a' && ch<='z') )
return 1;
else if( ch=='.' ) return 0;
return 2;
}
621:デフォルトの名無しさん
07/05/21 20:59:25
答えてる人ってやっぱりそういう職業に就いてる方?
それとも学生だったりします?
622:デフォルトの名無しさん
07/05/21 20:59:30
>>615 確かに、アルファベットのカウントも定義したライブラリの中か。それじゃこうか?
#include <stdio.h>
int alpha_jdg_cnt(char);
int main(void) {
int flg;
char buf[32];
printf(">>\n\n");
do{
printf("Input character : ");
scanf("%s",buf);
}while( alpha_jdg_cnt(buf[0])!=0 );
printf("\n>>\n");
return 0;
}
int alpha_jdg_cnt(char ch) {
static cnt=0;
if( (ch>='A' && ch<='Z') || (ch>='a' && ch<='z') ) {
cnt++;
printf("\nALPHABET : %d\n\n",cnt);
return 1;
}
else if( ch=='.' ) return 0;
return 2;
}
623:デフォルトの名無しさん
07/05/21 21:00:09
あ、流れに関係なく興味本位で聞いてみただけです
624:デフォルトの名無しさん
07/05/21 21:02:17
>>618
その通りです。
>>611をお願いします。
625:デフォルトの名無しさん
07/05/21 21:03:20
>>621
内定もらえない俺、将来有望なお前
626:デフォルトの名無しさん
07/05/21 21:04:59
>>624
>3、seiの文字数をカウント表示する。
嘘をつくな。
627:デフォルトの名無しさん
07/05/21 21:06:47
>>621
俺高卒ニート。
専門学校とか大学行ってる奴らってこんな宿題もできないんだね。
628:デフォルトの名無しさん
07/05/21 21:06:47
>>626
せいせいせいせいせいせーい、細かいことは気にするなフー!
629:デフォルトの名無しさん
07/05/21 21:08:57
>>627
全員ができないと思い込むあたり、やっぱりおまえ自身のレベルが低いってことだなw
ここで授業を受けている人の大半が質問しているわけじゃないだろ。
ほんの一部。ずるがしこい奴もいるだろうけど。
第一、こんなの最後に単位をもらっちゃえばどうでも良いことなんだよ。
卒業後に習ったことを使い続ける人でないならなおさらな。そんなもんだよ、社会ってのは。
630:デフォルトの名無しさん
07/05/21 21:11:13
はい釣れました
631:デフォルトの名無しさん
07/05/21 21:11:19
>>611 手抜き
#include <stdio.h>
#include <string.h>
#define STR_SIZE 256
int main()
{
char sei[STR_SIZE] = {0}, namae[STR_SIZE] = {0};
printf("姓は=> "); scanf("%s", sei);
printf("名前は=> "); scanf("%s", namae);
strcat(sei, namae);
printf("姓名は%sです\n", sei);
printf("文字数は%dです\n", strlen(sei));
return 0;
}
632:デフォルトの名無しさん
07/05/21 21:16:02
>>526の書いてある>>516のプログラムを解説していだたけないでしょうか?
まったく同じ課題が出ていて、「なぜそのプログラムのアルゴリズムで正しく動くのかについての解説を書く。」というのがあるのでお願いします。
633:思い込みによる勘違い低レベル馬鹿
07/05/21 21:18:18
627 名前:デフォルトの名無しさん 投稿日:2007/05/21(月) 21:06:47
>>621
俺高卒ニート。
専門学校とか大学行ってる奴らってこんな宿題もできないんだね。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
○〜に通っているやつらの中にはできない奴もいるんだね。
634:デフォルトの名無しさん
07/05/21 21:34:36
>>621
このスレで勉強すれば就職も夢じゃない!(※年齢制限有)
635:デフォルトの名無しさん
07/05/21 21:35:41
>>616=性帝トーマス◆13ThomasYo
トーマスですYO!
636:デフォルトの名無しさん
07/05/21 21:39:12
>>621
自分は職業としてプログラマやってるけど復習の為に時々やってる。
仕事はJavaメインだからC/C++を忘れないようにと。
637:デフォルトの名無しさん
07/05/21 21:50:53
>>621
元職業PG
鬱で退職して今はヒキ
仕事は辞めたが元々趣味でコード書いてたし、
やっぱ仕事じゃないプログラミングは楽しい。
638:デフォルトの名無しさん
07/05/21 21:55:53
>>621
組み込みのEmbedded C++ばかりやっているので普通のC++は
あまり知らない。テンプレートも例外処理も使えないC++でつ。
639:デフォルトの名無しさん
07/05/21 21:59:02
>>612
ありがとうございます!!
640:デフォルトの名無しさん
07/05/21 22:06:26
>>611
#include <iostream>
#include <cstring>
void ask(const char *prompt, char *buff, size_t len)
{
char c;
std::cout << prompt << std::flush;
if (!std::cin.get(buff, len))
std::cin.clear();
while (std::cin.get(c) && c != '\n')
;
}
int main(int argc, char **argv)
{
const int namelen = 256;
char sei[2 * namelen], namae[namelen];
ask("姓は=>", sei, namelen);
ask("名前は=>", namae, namelen);
std::strcat(sei, namae);
std::cout << "姓名は" << sei << "です\n"
<< "文字数は" << strlen(sei) << "です\n";
return 0;
}
>>621
もと三流請負システム屋なので、ちょっと難しい問題になると解けないんだYO。
641:デフォルトの名無しさん
07/05/21 22:09:29
俺ROM組だけど学生
暇つぶしに見てる
642:デフォルトの名無しさん
07/05/21 22:18:54
>>621
俺も学生。
化学科だから学校ではやってないけど趣味でプログラミングやってる。
でもここでは見てるだけ。
実用的なプログラムを作る他のスレでは作ってるけど。
643:デフォルトの名無しさん
07/05/21 22:23:59
[1] 授業単元: C
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin
[3.3] 言語: C
[4] 期限: 出来るだけ早めにお願いしたいです><
[5] その他の制限:特になし
自分でもやってみたのですが、全然上手くいきませんでした
力を貸していただけるとありがたいです
644:デフォルトの名無しさん
07/05/21 22:32:12
お願いしたいのはわかったが、期限はいつなんだ?
私はGUIはタルイからやらないけど・・・
645:643
07/05/21 22:32:27
すみません。
制限として、メニュー画面は上から「end」(終了)、「free」(フリー曲線)、
「moji」(文字の描画)、「line」(直線の描画)と、左上部に縦並びで表示して下さい。
よろしくお願いします。
646:643
07/05/21 22:33:44
度々すみません。
期限は5月23日です。
647:デフォルトの名無しさん
07/05/21 22:35:44
わざわざcygwinでXlibって、これまたマニアックな課題だな
648:デフォルトの名無しさん
07/05/21 23:00:07
>>632
ググってからどの辺が分からないのか聞いた方が良い。
基本的なところはWikipediaとかに載ってる
649:前スレ699,720
07/05/21 23:12:53
>>621
自分も学生ですね。
情報系なんだけどプログラミングの授業は始まったばかりなので、
趣味知識が大半かな・・・
答えたこと数回しかないんですけどね。
650:デフォルトの名無しさん
07/05/21 23:42:32
Javaでも悪くないがやっぱすVC++マンせー!
651:デフォルトの名無しさん
07/05/21 23:47:05
[1] 授業単元:アルゴリズム論
[2] 問題文(含コード&リンク):
抽象データ型「優先度つき待ち行列の半順序木による実現」を、配列を用いて実現せよ.
上の「優先度つき待ち行列の半順序木による実現」を用いて、与えれた整数配列を昇順に
並び換えて出力する関数を作成せよ.さらに以下の入力に対して実行せよ.
7 3 4 6 8 5 1 9
参考プログラム→URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007/05/23
[5] その他の制限: スタックとキューの辺り
よろしくお願いします。
652:デフォルトの名無しさん
07/05/22 00:06:36
[1] 授業単元:C++
[2] 問題文(含コード&リンク):C++で▽×Eの▽はどう表すでしょうか?
[3] 環境
[3.1] OS: Windows XP
[3.2] gcc
[3.3] 言語: C++
[4] 期限: 明日の朝
▽の表し方をどう作るのかわかりません・・・
よろしくお願いします。
653:デフォルトの名無しさん
07/05/22 00:14:21
>>652
URLリンク(www.google.co.jp)
654:デフォルトの名無しさん
07/05/22 01:07:14
[1] 授業単元:情報処理実習
[2] 問題文(含コード&リンク):fgetsを使ってキーボードからCTRL+D(EOFかNULLのことだと思います)
を入力されるまで文字を入力する。その後後ろから出力する。
例
入力: def
入力: ghi
入力: (Ctrl+D)
出力: ghi
出力: def
[3] 環境
[3.1] OS: Windows XP
[3.2] gcc
[3.3] 言語: C言語
[4] 期限: 明日の22時まで
よろしくお願いします。
655:デフォルトの名無しさん
07/05/22 01:10:48
>>652
ナブラよりも微分方程式をC++で解く方法がわかればいいんでしょ?
656:デフォルトの名無しさん
07/05/22 01:12:57
>>654
文字列の数の上限は無し?
657:デフォルトの名無しさん
07/05/22 01:42:23
>>654
#include<stdio.h>
#include<stdlib.h>
#define N 256
struct list{
char data[N];
list *next;
};
int main(){
list *top = NULL, *now;
int i = 0;
while(1){
now = (list*)malloc(sizeof(list));
now->next = top;
printf("入力: ");
if(fgets(now->data,N,stdin) == NULL) break;
top = now;
}
now = now->next;
while(now){
printf("出力: %s",now->data);
top=now;
now = now->next;
free(top);
}
return 0;
}
眠い頭でうあったからあってるかどうかしらね
658:デフォルトの名無しさん
07/05/22 01:55:16
listって、struct listって書いておかなきゃだめなんじゃね?モロにコンパイルエラー出てるガナ
659:デフォルトの名無しさん
07/05/22 01:57:21
うちのコンパイラはエラー出さなかった
もう寝るからそこの付け足しとかはてきとーにやってくれ
つかiとか使ってないしな
660:デフォルトの名無しさん
07/05/22 01:59:05
> int main(){
なるほど、もはやANSI、ISO準拠に非ずか、通りで
661:デフォルトの名無しさん
07/05/22 02:06:43
>>660
別に〜準拠とかチェックしてないから
ざっと調べたらstructを省略できるのはC++だったのか、次から気をつける。
662:デフォルトの名無しさん
07/05/22 02:10:53
なんだ、釣れないなぁ〜〜、ファビョる奴が釣れるか試していたのに、冷静に返されて orz
663:デフォルトの名無しさん
07/05/22 02:24:37
[1] 授業単元:言語論
[2] 問題文:
正規表現(+|-|)digit*.digit digit*(e(+|-|)digit digit*|)を実現する、
実数(整数)を識別するプログラム
入力されたデータが実数であればOK,そうでなければNGと表示させる。
(推奨:その後で連続してデータを入力できるとよい)
[3] 環境
[3.1] OS:XP,UNIX
[3.2] コンパイラ名とバージョン: BCCでもLSICでも
[3.3] 言語: C言語
[4] 期限:無期限
[5] その他の制限:-2.eだとOK,-.1eだとNG。
また、switch文推奨。scanfは使わず、getsかgetcharを用いること。
664:デフォルトの名無しさん
07/05/22 02:45:11
getsはあかんやろぉ〜〜〜どこのどいつだぁ〜〜い?講師は?
665:デフォルトの名無しさん
07/05/22 02:53:33
つまり、getsを使ってきた奴は減点対象って事だよ。
666:663
07/05/22 03:02:03
口頭で「scanfはいけないのはわかるよねー。だったらgetsかgetcharだよねー」
見たいな事を言っていたのでその通りに書きました。そのときに笑っていたので>>665さんみたいな感じだと重いmasu。
667:デフォルトの名無しさん
07/05/22 03:05:27
別にscanfでもなんら問題ない。書式の指定を%sにして文字配列に入れてから処理すりゃええし。
書式を%dとかにして文字列を受け付けようとするとダメだから推奨できんが。
668:デフォルトの名無しさん
07/05/22 03:16:27
scanfやらgetsやらはバッファオーバーフローが怖いって話だろ?
口頭だったらfgetsの聞き間違いじゃないの?
669:デフォルトの名無しさん
07/05/22 03:36:08
scanfがいけないといっておいてダメなgetsを言うのもどうかと・・・
670:デフォルトの名無しさん
07/05/22 03:38:43
「げっとえす」と「えふげっとえす」は
さすがに間違えないと思うんだ。
671:663
07/05/22 03:55:51
ぼくおなかがすいたんだな。
672:デフォルトの名無しさん
07/05/22 04:02:15
(||)は選択、digitは数値、+-eは文字、.は小数点か?
*は何?正規表現ってことは、ワイルドカード?乗算記号?なんか良く分からん
673:デフォルトの名無しさん
07/05/22 04:02:33
おっ、おおおおおお、おにぎりあげるから、後は自分でどうにかするんだな
674:デフォルトの名無しさん
07/05/22 04:11:10
>>672
あんまり気にしないでやってた。言いたいことはなんとなくわかりそう。
乗算ではないと思う。
>>671 つ■ 海苔でもくってろ
675:デフォルトの名無しさん
07/05/22 04:30:25
あー・・・ようやく何となく分かったかも
正規表現の+を使っちゃうと符合と被ってややこしいから
「digit digit*」って書いてあるのか。スペースは無視すんだな。
「digit digit*」は1桁以上の数値っつーことか。
676:デフォルトの名無しさん
07/05/22 04:36:34
アレ?でもそうすると
[5] その他の制限:-2.eだとOK,-.1eだとNG。
が逆になっちまう・・・。
-2.eは入力出来ないけど、-.1eが入力出来るという奇妙な現象。
やっぱ分かんねー・・・
677:デフォルトの名無しさん
07/05/22 07:30:01
>>482 お願いします。
678:デフォルトの名無しさん
07/05/22 08:17:50
>>651 よろしくお願いします。
679:デフォルトの名無しさん
07/05/22 10:10:12
>>657
よく読むとfreeし損ねてるのがあるな
そのまま提出すると怒られるかも
やっぱ眠いときは駄目だな
680:デフォルトの名無しさん
07/05/22 10:51:55
>>663
よくわからんからすげー適当に書いたお
URLリンク(kansai2channeler.hp.infoseek.co.jp)
.が必須のようだしeの後はdigitが必須のようだから
ただの整数も-2.eも-.1eも受理されないし
switchも使ってないお
681:解いてください。お願いします。
07/05/22 11:41:18
問2 時間(0以上23以下)を入力し、以下に示す時間に従った挨拶を出力するプログラムを作りなさい。
プログラムは、0未満24以上の時間が入力されるまで繰り返しなさい。
0時〜3時 :Good night
4時〜11時 :Good morning
12時〜16時 :Good afternoon
17時〜20時 :Good evening
21時〜23時 :Good Night
但し、一つの整数を引数とし、引数で指定された数値によって、上記メッセージを出力する関数を
作り、main関数では、その関数を呼び出すようにしなさい。
682:680
07/05/22 11:49:24
うわ
いくら適当と言ってもコンパイルも通らないソースをageちゃったよ
つーわけであげなおしスマソ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
683:デフォルトの名無しさん
07/05/22 11:53:16
>>663
* は正規表現どおりの定義だと「前方の 0回以上の繰り返し」の意となるんだが…
> [5] その他の制限:-2.eだとOK,-.1eだとNG。
どちらもマッチすると思われ
684:デフォルトの名無しさん
07/05/22 11:53:52
つまりここの人は脳内コーディングがデフォなのか
上手い人ほど大胆なミスをするってなんかの本で言ってたけどこんな所でもそれが見られるとは
685:680
07/05/22 12:07:43
>>683 ただのdigit*ではなくdigit digit*なので、「1回以上の繰り返し」になると
おもうよ
>>684 俺は別に全然上手くなんかないよ
>>681
#include <stdio.h>
char *s[] = {
"Good night", "Good night", "Good night", "Good night",
"Good morning", "Good morning", "Good morning", "Good morning",
"Good morning", "Good morning", "Good morning", "Good morning",
"Good afternoon", "Good afternoon", "Good afternoon", "Good afternoon",
"Good afternoon", "Good evening", "Good evening", "Good evening",
"Good evening", "Good Night", "Good Night", "Good Night",
};
char *hello(int h) { return s[h]; }
int main(void) {
int n;
while (scanf("%d", &n) == 1 && n >= 0 && n < 24)
puts(hello(n));
return 0;
}
686:デフォルトの名無しさん
07/05/22 12:09:04
>>685
俺が気にしてるのは整数部の 「digit* . 」 側。
ピリオドの前は digit* だけっしょ
687:デフォルトの名無しさん
07/05/22 12:09:22
>>681
コンパイル試してないから通るかわかんない。
0未満24以上は0以上24未満の間違いでおk。
あと予想外(数字以外)の入力で無限ループに入るのは仕様。
可読性がアレなのも仕様。
#include <stdio.h>
void hello(int hour){
char *mes = "night\0morning\0afternoon\0evening\0Night";
printf("Good %s\n",&mes[hour<4?0:hour<12?6:hour<17?14:hour<21?24:32]);
}
int main(){
int h=0;
while(1){
scanf("%d",&h);
if(h<0||h>23)continue;
break;
}
hello(h);
return 0;
}
688:680
07/05/22 12:10:22
>>686
整数部はそうだけど、eの後がdigit digit*なので、
eが来たらその後数字が必須になるんだお
だからどっちも受理されないお
689:デフォルトの名無しさん
07/05/22 12:12:08
>>688
e(+|-|) digit digit* |
おれはこれを e <省略可符号> <省略可 digit群>
と読んだ(末尾の | ね)
690:デフォルトの名無しさん
07/05/22 12:12:09
>>677>>482
文章がやばい事になってるけど、骨格自体は間違っていない筈だから
問題文などを変えれば問題ないだろう。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
691:デフォルトの名無しさん
07/05/22 12:13:21
ちょっと、問題文とは違うけど大体通る奴作ってみるか
692:680
07/05/22 12:14:26
>>689
にゃるほど
693:689
07/05/22 12:18:44
>>692
と思ったけど.... (<e付きのなんたら群> | 無) の結合のほうが正しいのか<問題側
694:デフォルトの名無しさん
07/05/22 12:49:49 BE:34938263-2BP(222)
>>681
#include<stdio.h>
void message(int n){char* seg;switch(n){case0:case1:case2:seg="night";break;
case4:case5:case6:case7:case8:case9:case10:case11:seg="morning";break;
case12:case13:case14:case15:case16:seg="afternoon";break;
case17:case18:case19:case20:seg="evening";break;
case21:case22:case23:seg="Night";break;}printf("Good %s\n",seg);}
int main(void){char tmp[256];fgets(tmp,256,stdin);message(atoi(tmp));return 0;}
695:685
07/05/22 13:07:56
>>681
繰り返しの仕様を誤解してた。main()を↓のように変えて。
int main(void) {
int n;
do {
while (scanf("%d", &n) != 1) {
clearerr(stdin);
scanf("%*[^\n]\n");
}
} while (n < 0 || n > 23);
puts(hello(n));
return 0;
}
696:デフォルトの名無しさん
07/05/22 14:15:25
0未満24以上ってのは、範囲外の数字が入力されたら終了って意味じゃねーの?
697:デフォルトの名無しさん
07/05/22 14:19:39
書きこむスレ間違えたのでこちらで。
whileを使って九九のプログラム作りたいのですがわかりません(´д`)
698:デフォルトの名無しさん
07/05/22 14:21:43
>>697
>>1 の質問テンプレ読んで書きなおし
699:デフォルトの名無しさん
07/05/22 14:28:18
適当な質問なので適当に応える
int i=0,j=0;
while(i++<9){j=0;while(j++<9)printf("%d x %d = %d\n",i,j,i*j);}
700:デフォルトの名無しさん
07/05/22 14:33:16
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):適当な大きさの配列を作り、配列の末尾から
先頭(0番目の要素)に向かって入力された値を格納するプログラムを作りなさい
[3] 環境
[3.1] OS: WindowsXP home
[3.2] コンパイラ名とバージョン:TeraPad 0.90
[3.3] 言語: どちらでも可(ただしcin coutを使用しろとの事です)
[4] 期限:今週の木曜まで
[5] その他の制限: 特になし
よろしくお願いします
701:デフォルトの名無しさん
07/05/22 14:40:26
TeraPadはテキストエディタ。コンパイラじゃないよ。
702:デフォルトの名無しさん
07/05/22 14:41:58
生茶ふいた
703:デフォルトの名無しさん
07/05/22 14:44:16
>>701
すみません勘違いしてました
djgppです(これも違ってたら申し訳ないです)
704:デフォルトの名無しさん
07/05/22 14:45:37
>>700
#include <iostream>
int main(void){
int array[5];
int i;
for(i=0;i<5;i++){
std::cout << "数値を入力して下さい : ";
std::cin >> array[i];
}
for(i=5-1;i>=0;i--)
std::cout << array[i] << std::endl;
return 0;
}
705:700
07/05/22 14:48:38
>>704
ありがとうございます
std::ってのがよくわからないんですが、
これは先頭に #using namespace std; を付ければ入力しなくてもいいんでしょうか?
706:デフォルトの名無しさん
07/05/22 14:49:25
>704
問題文読めてる?
707:デフォルトの名無しさん
07/05/22 15:00:45
[1] 授業単元: プログラミング演習1
[2] 問題文:
sample.txtに書かれている文字(数字、英数字、全角など何が含まれているかはわからないものとする)
をbase64エンコードするコードを記述せよ。
[3] 環境 OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC++ .net 2003
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:なし
よろしくお願いいたします。
708:デフォルトの名無しさん
07/05/22 15:05:58
>>700
>>704 の訂正
#include <iostream>
int main(void){
int array[5];
int i;
for(i=5-1;i>=0;i--){
std::cout << "数値を入力して下さい : ";
std::cin >> array[i];
}
for(i=0;i<5;i++)
std::cout << array[i] << std::endl;
return 0;
}
>>705 その通りです
>>706 読めてなかった
709:700
07/05/22 15:08:06
>>708
お手数お掛けしてすみません
どうもありがとうございました
710:デフォルトの名無しさん
07/05/22 15:10:44
Wikipedia項目リンク
711:デフォルトの名無しさん
07/05/22 15:25:40
[1] 授業単元:IT入門B1 C言語
[2] 問題文
二次関数(y = a x^2+ bx +c)でxがx1 <= x <= x2のときの最大値と最小値(そのときのxの値も含めて)を求めるプログラムを作成せよ。
ここでa,b,cは整数、x1,x2は浮動小数とする。
[3] 環境
[3.1] OS: Linux
[3.2] gcc versionは不明ですが最新版のはずです
[3.3] 言語:C
[4] 期限: 2007年5月28日0:00まで
[5] その他の制限: 特にありません。
どなたか手を差し伸べてください・・・orz
712:デフォルトの名無しさん
07/05/22 15:32:44
[1] データ構造論
[2] 課題 SE3.5
逆ポーランド電卓プログラムでは2項演算の演算子、加算( '+')、減算('-')、
乗算 ('*')、除算('/')の4種類しか用意していない。
負数を扱うための単項演算子 ('$'記号を用いる)、余りを求める2項演算子('%'記号を用いる)など
を導入するにはどうすればよいか?
[3.1] OS:Linux
[3.2] gcc 3.4 VC 6.0等
[3.3] 言語:C
[4] 期限: ([2007年05月23日12:00まで]
[5] その他の制限:特になし
よろしくお願いします
713:デフォルトの名無しさん
07/05/22 15:36:54
722の逆ポーランド電卓プログラムです
/* 逆ポーランド電卓プログラム
#include <stdio.h>
#include "s_q.h" /* s_q.h の取り込み */
main()
{
int type; /* 次の演算子または演算数のタイプ*/
int op2, atoi() ;
char s[MAXOP]; /* 入力領域 */
while ((type = getop(s)) != EOF) { /* 次の演算子または演算数がある間 */
switch (type) { /* そのタイプが */
case NUMBER: /* 演算数の場合 */
push(atoi(s)); break; case '+': /* 演算子 '+' の場合 */
push(pop() + pop()); break;
case '*': /* 演算子 '*' の場合 */push(pop() * pop());
break; case '-': /* 演算子 '-' の場合 */
op2 = pop(); push(pop() - op2); break; case '/': /* 演算子 '/' の場合 */
op2 = pop(); if(op2 != 0.0) push(pop() /op2);
else printf("零割りのエラー \n"); break;
case '\n': /* 改行文字 の場合 */
printf("\t%d\n",pop()); break; default: /* その他の場合 */
printf("未登録コマンド: %s\n", s); break;
}
}
return 0;
}
714:デフォルトの名無しさん
07/05/22 15:43:07
>>713
pop() の戻りの型を int と仮定(っぽいコードだし)
case '$': /* 演算子 '$' の場合 */push(-pop()); break;
case '%': /* 演算子 '%' の場合 */
/* 0割見ない場合 */ push(pop() % pop()); break;
/* 0割チェックする場合 */
{ int num, den; num=pop(); den=pop();
if (den != 0) { push(num/den); } else { /*0割だお スタックに戻しとくか? */ push(den); push(num); }
} break;
715:デフォルトの名無しさん
07/05/22 15:43:55
-if (den != 0) { push(num/den); }
+if (den != 0) { push(num%den); }
716:デフォルトの名無しさん
07/05/22 16:21:37 BE:77640858-2BP(222)
>>712
URLリンク(c-kadai.sakura.ne.jp)
717:デフォルトの名無しさん
07/05/22 16:59:19
>>707
#include<stdio.h>
int encode(char *dest, int dest_size, const char *src, int src_size){
char *base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
int dest_index, src_index, left_size, i;
long temp;
if(dest==NULL || src==NULL || src_size<=0 || dest_size<(src_size+2)/3*4) return -1;
for(src_index=dest_index=0;src_index+2<src_size;src_index+=3){
temp=(src[src_index]<<16)|(src[src_index+1]<<8)|src[src_index+2];
for(i=0;i<8*3;i+=6) dest[dest_index++]=base64[(temp>>(18-i))&0x3F];
}
left_size=src_size-src_index;
for(i=0,temp=0;i<left_size;i++) temp=(temp<<8)|src[src_index+i];
for(;i<3;i++) temp=(temp<<8);
for(i=0;i<left_size*8;i+=6) dest[dest_index++]=base64[(temp>>(18-i))&0x3F];
for(;dest_index%4!=0;) dest[dest_index++]='=';
return dest_index;
}
int main(void){
FILE *fp;
char src_buf[3*100], dest_buf[(sizeof(src_buf)+2)/3*4];
int read_size, coded_size;
if((fp=fopen("sample.txt", "rb"))==NULL) return 1;
for(;;){
read_size=fread(src_buf, 1, sizeof(src_buf), fp);
coded_size=encode(dest_buf, sizeof(dest_buf), src_buf, read_size);
if(read_size<=0 || coded_size<=0) break;
fwrite(dest_buf, 1, coded_size, stdout);
}
fclose(fp);
return 0;
}
718:デフォルトの名無しさん
07/05/22 17:07:23
訂正
int encode(char *dest, int dest_size, const char *src, int src_size){
↓
int encode(char *dest, int dest_size, const unsigned char *src, int src_size){
719:デフォルトの名無しさん
07/05/22 17:31:11
>>690 ありがとうございます、ですけどC++だったんですが。
文法の方はなんとかできるんで、なんとかしてみます。
720:デフォルトの名無しさん
07/05/22 17:34:44
>>518 よろしくお願いします。
721:デフォルトの名無しさん
07/05/22 17:41:22
>>717
ありがとうございます。たすかりました
722:デフォルトの名無しさん
07/05/22 18:28:51
[1] 授業単元: プログラミング演習
[2] 問題文:重複しない適当な値ですべての要素が初期化された配列を作り、適当な整数(Nとする)を入力して
N番目の要素の値を表示するプログラムを作りなさい。入力と表示は繰り返す。
Nにどのような値が入力されたとしても、適切に対処しなさい。
ただし、表示は次のようにしなさい。
配列名がa,a[0]の値が20であるとき、Nとして0が入力された場合の表示:a[0]=20
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:5月24日
[5] その他の制限:
お願いします
723:デフォルトの名無しさん
07/05/22 18:33:07
<?php
$ary = array(0=>1);
?>
724:デフォルトの名無しさん
07/05/22 18:49:30 BE:81522476-2BP(222)
>>722
#include<stdio.h>
int main(void){char tmp[256];int n;
int a[]={2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89,
97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223,
227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359,
367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433,
439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593,
599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659,
661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743,
751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827,
829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997,};
do{fgets(tmp,256,stdin);n=atoi(tmp);if(n>=0&&n<sizeof(mod)/sizeof(int)){
printf("a[%i]=%i\n",n,a[n]);}}while(n>=0);return 0;}
725:722
07/05/22 19:04:28
>>724
圧巻ですね・・・
どうもありがとうございます
726:デフォルトの名無しさん
07/05/22 20:41:14
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
以下のnについて,1/nをn個加算した結果を求めよ.
n=1000, 4096, 10000
変数の型をfloatとdoubleとした場合のそれぞれについて(合計 2×3=6つの場合)調べよ
float型の値の出力の場合は%f, double型の値の出力には%16.14e(全桁数16, 小数点)以下14桁を示すを用いる
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 明日
[5] その他:無し
お願いしますヽ(T_T )ノ
727:デフォルトの名無しさん
07/05/22 21:12:38
>>726
#include <stdio.h>
int main(void)
{
double nd[]={1000.0,4096.0,10000.0},sumd;
float nf[]={1000.0,4096.0,10000.0},sumf;
int i,j;
for(i=0,sumd=0.0; i<sizeof(nd)/sizeof(nd[0]); i++,sumd=0.0) {
for(j=0; j<nd[i]; j++) {
sumd+=1/nd[i];
}
printf("1/%.0lf : %16.14e\n",nd[i],sumd);
}
puts("");
for(i=0,sumf=0.0; i<sizeof(nf)/sizeof(nf[0]); i++,sumf=0.0) {
for(j=0; j<nf[i]; j++) {
sumf+=1/nf[i];
}
printf("1/%.0lf : %f\n",nf[i],sumf);
}
return 0;
}
728:デフォルトの名無しさん
07/05/22 21:16:28
>>727 細かいことを言うと、int型にキャストするべきかも
for(j=0; j<(int)nd[i]; j++)
for(j=0; j<(int)nf[i]; j++)
729:デフォルトの名無しさん
07/05/22 21:17:20
しかし、みなさん問題を解くスピードが速い!
プログラミング歴何年ぐらいなんでしょうか?
730:651
07/05/22 21:18:07
>>651 お願いします。
731:デフォルトの名無しさん
07/05/22 21:34:44
[1] 授業単元:プログラミング2
[2] 問題文(含コード&リンク):
ある文字列を与えられた時に、全体の文字の約m%を別の文字にランダムに置き換える関数
とそれを用いるmain関数を書け。
(1)文字列は次のものを文字配列としてmainに確保する。
"It's not surprising that food dropped onto bacteria would collect some bacteria."
(2)置き換わる文字は英大文字の中のどれかとする。
(3)置き換える操作を行う機能を関数mutateとして実装する。関数プロトタイプを次のようにする:
void mutate(char s[], int len, int m);
引数s[]は文字列、引数lenは文字列長、引数mは置き換える割合(%)である。
(4)置き換える割合(%)mをmainで入力して指定できるようにする。mが1,3,5,10の場合に
ついて置き換えた結果の文字列を出力する。
ヒント:
(1)例えば、確立5%で置き換えるというのは、(例えば)1から10000までの擬似乱数を発生させて、
その値が1から500までの範囲だったら置き換える操作をして、その範囲
外だったら何もしないというようにすればよい。
(2)英小文字をランダムに作るには、例えば1から26までの整数をAからZまでのアルファベット
にこの順で対応させ、1から26までの範囲の整数をランダムに発生させて対応する英字に変換する。
732:731
07/05/22 21:36:26
実行例:
basil$ ./a.out
Initial:
It's not surprising that food dropped onto bacteria would collect some bacteria.
It's notEsurprising that food droppedPonto bacteria would collect some bacteria.
置き換えの割合をで指定せよ: 5
It's noFEsurprisiGg that food droppedPonBo bacteriF would collect some bacteria.
置き換えの割合をで指定せよ: 10
It's noFEsuDprZsiEg that food droppeQPonBE bacteriFZwould collect some bacteOia.
置き換えの割合をで指定せよ: ^D
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限:2007/05/22/23:59
[5] その他の制限: 特になし
全然分からず困っています。よろしく御願いします。
733:デフォルトの名無しさん
07/05/22 21:53:25
>>726です。
>>727
ありがとうございます。
734:デフォルトの名無しさん
07/05/22 22:05:48
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
テストデータを読み込み、その文字の頻度をカウントするプログラムを作成せよ。
(データに含まれてる文字の種類はASCIIコードに限られ
ピリオドや改行コードもひとつの文字として取り扱う)
[3] 環境
[3.1] OS: (Windows/Linux/等々) Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 来週の月曜日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
735:デフォルトの名無しさん
07/05/22 22:12:01
>>730
void MAKENULL(PRQueue *Q){ Q->last = 0; }
void INSERT (ElementType x, PRQueue *Q){
int i, j;
for (i = Q->last++; i > 0; i = j) {
j = (i - 1)/2;
if (Q->elements[j] > x)
Q->elements[i] = Q->elements[j];
else break;
}
Q->elements[i] = x;
}
ElementType DELETEMIN(PRQueue *Q){
int i, j, root, tmp;
root = Q->elements[0];
tmp = Q->elements[--Q->last];
for (i = 0; 2*i + 1 < Q->last; i = j) {
j = 2*i + 1;
if (j + 1 < Q->last && Q->elements[j] > Q->elements[j + 1])
j++;
if (Q->elements[j] < tmp)
Q->elements[i] = Q->elements[j];
else break;
}
Q->elements[i] = tmp;
return root;
}
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4181日前に更新/299 KB
担当:undef