C/C++の宿題を片付け ..
[2ch|▼Menu]
577:デフォルトの名無しさん
07/05/21 09:05:51
>>576
64×64は画像のサイズです。
説明不足ですみません。

578:デフォルトの名無しさん
07/05/21 09:07:27
>>561
単元から言って、データ構造やらそれを表現するデータファイルの仕様策定も
やるべき作業に含まれてるんかな?
ということで適当に作ってみたが。
動いてるけど、一般的に見て正しいかどうかは知らんよ。

URLリンク(kansai2channeler.hp.infoseek.co.jp)


579:575
07/05/21 09:15:43
>>576
整数(ピクセル?)です。

580:デフォルトの名無しさん
07/05/21 09:49:13
>>565
#include <stdio.h>
#define SENDA num%3==0
#define MITSUO num%5==0
int SendaMitsuoNahanaha(int num){
if(num != 1) switch(SendaMitsuoNahanaha(num-1)){
case 1: printf("ナハナハ "); return 0; break;}
if(0);
else if(SENDA && MITSUO) {printf("せんだみつお "); return 1;}
else if(SENDA) {printf("せんだ ");}
else if(MITSUO) {printf("みつお ");}
else {printf("%d ", num);}
return 0;}
int main(void){
SendaMitsuoNahanaha(100);
return 0;}
/* 90分くらい。完全敗北した気分だ...*/


581:デフォルトの名無しさん
07/05/21 10:19:31
90分はかかりすぎなうえにマクロ内に変数名直接書くな。
せめて引数つきマクロにせい。

582:デフォルトの名無しさん
07/05/21 12:11:32
時間割の宿題って過去にでた?
過去スレから探そうと思うんだが。

583:デフォルトの名無しさん
07/05/21 12:50:56
つーかマクロはカッコで囲めよな・・・・

584:デフォルトの名無しさん
07/05/21 13:52:22
通常の式と同じように扱うことを意図したマクロでは括弧を使うのが当然だが、
>>580みたいな局所的なテキスト置換の用途では、正しく使うにはいずれにせよ展開後の
テキストを具体的に知っておく必要があるから、括弧はどっちでもいいような。

585:デフォルトの名無しさん
07/05/21 14:25:15
どっちでもいいわけないだろうが。
利用側の識別子に依存するマクロってなんだそれ?

586:デフォルトの名無しさん
07/05/21 14:31:42
どーでもいい。>>565はせめてC++ならまだ面白かっただろうな。

587:デフォルトの名無しさん
07/05/21 15:19:11
[1] 授業単元: 情報2
[2] 問題文(含コード&リンク):
10 個の整数データを入力して,総和,平均値,最大値,最小値,分散および標準偏差を求める
プログラムを作成しなさい
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (Cygwin)
 [3.3] 言語: (C/)
[4] 期限: (2週間後)
[5] その他の制限: (なし)

お願いします。



588:デフォルトの名無しさん
07/05/21 15:28:10
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
1.2つの正の整数u, vの最大公約数gcd(u, v)を求めるユークリッドのアルゴリズムについて,
繰り返し版のプログラムをつくりなさい。尚,ユークリッドの方法は,「uがvより大きいならば,
uとvの最大公約数がvとu-vの最大公約数に等しい」ことに基づく。
関数のプロトタイプ宣言は次のようにしなさい。
  int gcd(int, int);
▼出力例
最大公約数を求めます!
2つの正整数を入力してください:124 432↵
124と432の最大公約数は4です
2.キーボードから0〜9の数字dと,正の整数nを読み込み,n以下の整数xで,
xとxの2乗の10進数表示の両方にdを含むものをすべて出力するプログラムをつくりなさい。
ただし,次のプロトタイプ宣言で示すように,整数xとdを仮引数として,
xとxの2乗の10進数表示の両方にdを含む場合に1,
そうでない場合に0を返す関数hit_digitを作成しなさい。
 int hit_digit(int x, int d);
▼出力例
0〜9の数字dを入力して下さい:7↵
正の整数nを入力して下さい:100↵
該当するものは次の通り:
27 74 76 87
全部で4個ありました

[3] 環境
 [3.1] OS:windows (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:borland (gcc 3.4 VC 6.0等)
 [3.3] 言語:C (C/C++/どちらでも可 のいずれか)
[4] 期限: 今週日曜日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
2つありますがよろしくお願します。


589:デフォルトの名無しさん
07/05/21 16:03:59 BE:46584364-2BP(222)
>>588上段
#include<stdio.h>
int gcd(int u,int v){int tmp,res,r;if(u<v){tmp=u;u=v;v=tmp;}
if((r=u%v)==0){res=v;}else{res=gcd(v,r);}return res;}
int main(void){char tmp[256];int u,v,d;printf("最大公約数を求めます!\n");
printf("2つの正整数を入力してください:");fgets(tmp, 256, stdin);
sscanf(tmp, "%u %u", &u, &v);d=gcd(u,v);if(d!=1){
printf("%uと%uの最大公約数は%uです。\n",u,v,d);}else{
printf("%uと%uは互いに素です。\n",u,v);}return 0;}

590:デフォルトの名無しさん
07/05/21 16:21:59
1000までの素数を求めて出力するプログラムの作成を教えてください。
mod使う方法でお願いします」。



591:デフォルトの名無しさん
07/05/21 16:23:37 BE:29115353-2BP(222)
>>588下段
#include<stdio.h>
#include<stdlib.h>
int hit_digit_h(int x,int d){char tmp[256];char* p=tmp;
sprintf(tmp,"%i",x);while(*p!='\0'){if(*p==(d+'0')){
return 1;}p++;}return 0;}
int hit_digit(int x, int d){
return hit_digit_h(x,d) && hit_digit_h(x*x,d);}
int main(void){char tmp[256];int d,x,i,c=0;do{
printf("0〜9の数字dを入力して下さい:");fgets(tmp, 256, stdin);
d = atoi(tmp);}while(d<0||d>9);printf("正の整数nを入力して下さい:");
fgets(tmp, 256, stdin);x=atoi(tmp);for (i=0; i<=x; i++){
if(hit_digit(i,d)){printf("%i ",i);c++;}}if(c){
printf("\n%i個ありました。\n",c);}else{printf("\nありません。\n");
}return 0;}

592:デフォルトの名無しさん
07/05/21 16:26:45 BE:46585038-2BP(222)
>>590
#include<stdio.h>
int 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,};
int main(void){int i;for(i=0;i<sizeof(mod)/sizeof(int);i++){
printf("%i ",mod[i]);}return 0;}

593:デフォルトの名無しさん
07/05/21 16:30:36
>>592
マジカヨw

594:デフォルトの名無しさん
07/05/21 16:36:25 BE:58230465-2BP(222)
何か問題でも?

595:デフォルトの名無しさん
07/05/21 16:53:30
>>592
そんならこれでよくね?
#include <stdio.h>
int main() { return puts(
"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"
), 0; }

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;
}


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4179日前に更新/299 KB
担当:undef