トップページ⇒tech
1001コメント395KB

ぼるじょあがC/C++の宿題を片づけますYO! 67代目

■ このスレッドは過去ログ倉庫に格納されています
0001ぼるじょあ ◆yBEncckFOU 2006/12/10(日) 11:33:41
(・3・)エェー ぼるじょあですYO!
         わからない宿題を片づけますYO!

あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html

【前スレ】
ぼるじょあがC/C++の宿題を片づけますYO! 66代目
http://pc8.2ch.net/test/read.cgi/tech/1149349035/
0800デフォルトの名無しさん2007/05/01(火) 01:02:21
>>799
じゃなくてこれは正規分布の乱数の関数だから
プログラムが正しく動作しているのを確認しただけじゃないの?
0801デフォルトの名無しさん2007/05/01(火) 01:15:27
M_PIとかはCでは標準、C++では非標準なんだっけ?
0802デフォルトの名無しさん2007/05/01(火) 01:27:40
>>800
律儀やねぇ
0803デフォルトの名無しさん2007/05/01(火) 11:18:28
質問です

コアラのマーチのファンはいませんか?
0804デフォルトの名無しさん2007/05/01(火) 11:20:53
ttp://www.uploda.net/cgi/uploader1/index.php?dlpas_id=0000211591.zip
オナしました。。
ダウンロードパス・解凍パスはonaです
0805デフォルトの名無しさん2007/05/07(月) 18:30:36
>>706
ちがうお 白ランとか黒ランとかいうぼるじょあさんだお
ランレングス符号化の問題やってくれるお
0806デフォルトの名無しさん2007/05/09(水) 17:20:44
配列で、
a[0]=8
a[1]=50
a[3]=72
a[4]=20
a[5]=10
って出力したいんですけど、a[2]がとんでるじゃないですか?if文をつかってとばすってきいたんですけど…わかりません。ソースコード教えてください。C言語です。
0807デフォルトの名無しさん2007/05/09(水) 17:22:24
配列で、
a[0]=8
a[1]=50
a[3]=72
a[4]=20
a[5]=10
って出力したいんですけど、a[2]がとんでるじゃないですか?if文をつかってとばすってきいたんですけど…わかりません。ソースコード教えてください。C言語です。
0808デフォルトの名無しさん2007/05/09(水) 19:20:49
>>806
つcontinue
#include<stdio.h>
int main(void)
{
int n;
int a[]={8,50,801,72,20,10)};
for(n=0;n<=5;n++){
if(n==2) continue;
printf("a[%d]=%d\n",n,a[n]);
return 0;
}
間違っててもオラしらねえだ。
0809依頼者2007/05/10(木) 21:02:35
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):
(1)関数mainにおいてキーボードから2つの文字を入力し
アルファベットの順序に並べ替えてモニタに出力するプログラムの作成。
 
(2)キーボードから30個の配列に小数を代入し、それらを小さい順に
並び替え、その結果をモニタに出力するプログラムを作成せよ。このソート
の問題は、バブルソートで実施し、連続する2数の交換main以外の関数swap
で実施せよ。
プログラムの作成。
[3] 環境:
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio.net
 [3.3] 言語: C
[4] 期限: 5月12日まで。

簡単なプログラムでお願いします。
0810デフォルトの名無しさん2007/05/11(金) 17:11:28
>>808さん。
ありがとうございます。
0811C初心者2007/05/11(金) 21:59:24
問題文
以下の(a)~(d)の方法で、
 1/1-1/2+1/3-1/4+…+1/n
を求める関数を作成してください。これらの関数は、
 int n;
double ansa,ansb,ansc,ansd;
double suma(int),sumb(int),sumc(int),sumd(int);
:
:
ansa=suma(n);
snsb=sumb(n);
ansc=sumc(n);
ansd=sumd(n);
といった形式で使うものとします。n>0に限定してもいいですが、関数suma,sumb,sumc,sumdの中身
を書き換えることなく、任意のnについて計算できるように注意してください。作成した4つの関数
を用いて、n=10000で計算した結果を比較し、違っているならばなぜ違うかを考察してください。
  (a)suma:順次左(1/1)から加えていく方法
  (b)sumb:順次右(1/n)から加えていく方法
  (c)sumc:正負の項を別々に、順次左から加えていく方法
  (d)sumd:正負の項を別々に、順次右から加えていく方法
 環境
  OS:Linux
 コンパイラ名とバージョン:gcc
 言語: C
 期限: 2007/5/18まで

おねがいします。
0812C初心者2007/05/11(金) 22:13:06
追加です。
問題文
 配列に格納された実数を大きさの順に並べ替える関数を作成してください。この関数は以下
のように使うものとします。n=1000は例であって、データ数は1000とは限りません(ただし、
プログラムの都合上1000以下とします)。
--------------------------------------------------------------------
double a[1000];
void sort(double*,int);
:
:
n=1000;

/*(ここでa[0]からa[999]をファイルから読み込む)*/

sort(a,n);

/*(ここでa[0]からa[999]をプリントし、結果を確認する)*/
-------------------------------------------------------------------
環境
  OS:Linux
 コンパイラ名とバージョン:gcc
 言語: C
 期限: 2007/5/18まで
0813C初心者2007/05/11(金) 22:25:14
すみませんまた追加です。
問題文
 自然対数の底eを1000桁求めるプログラムを作成してください。e^xをマクローリン展開
した
   e^x=1+x/1!+x^2/2!+…+x^n/n!+…
において、x=1とおいた式を計算するとよいでしょう。

環境
  OS:Linux
 コンパイラ名とバージョン:gcc
 言語: C
 期限: 2007/5/18まで
0814デフォルトの名無しさん2007/05/12(土) 02:54:07
printf("%s/n","Hello World");

上のprintf文の%sでどのように"Hello World"を処理しているのか分かりません。
どなたかご教授して下さい。
0815デフォルトの名無しさん2007/05/12(土) 04:16:05
>811
メインは省略
double suma(int n) {
 int i;
 double sum = 0;
 for(i=1; i<=n; i++) {
  if(i%2) sum += (double)1 / i;
  else sum -= (double)1 / i; }
 return sum;
}
double sumb(int n) {
 int i;
 double sum = 0;
 for(i=n; i > 0; i--) {
  if(i%2) sum += (double)1 / i;
  else sum -= (double)1 / i; }
 return sum;
}
double sumc(int n) {
 int i;
 double sum = 0;
 for(i=1; i<=n; i+=2) sum += (double)1 / i;
 for(i=2; i<=n; i+=2) sum -= (double)1 / i;
 return sum;
}
double sumd(int n) {
 int i;
 double sum = 0;
 for(i=n; i > 0; i-=2) sum += (double)1 / i;
 for(i=n-1; i > 0; i-=2) sum -=(double)1 / i;
 return n % 2 ? sum : -sum;
}
0816C初心者2007/05/12(土) 16:18:11
>>815
 ありがとうございます。とりあえず関数sumaについてプログラムを作ってみたのですが
メインの部分はこれで良いのでしょうか?みていただけると幸いです。
#include <stdio.h>

double suma(int n) {
int i;
double sum = 0;
for(i=1; i<=n; i++) {
if(i%2) sum += (double)1 / i;
else sum -= (double)1 / i; }
return sum;
}

int main(void)
{
int n;
double ansa;
double suma(int);
printf("nを入力してください:"); scanf("%f",&n);

ansa = suma(n);
printf("計算結果は%fです。\n",ansa);

return(0);
}
0817デフォルトの名無しさん2007/05/12(土) 16:21:25
名前欄に初心者と書く奴は死んでしまえ今すぐに
0818デフォルトの名無しさん2007/05/12(土) 16:27:50
> (double)1

なんというキモさ
0819デフォルトの名無しさん2007/05/12(土) 19:28:36
1.0でいいのにね
0820依頼者2007/05/12(土) 20:13:41
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):
(1)関数mainにおいてキーボードから2つの文字を入力し
アルファベットの順序に並べ替えてモニタに出力するプログラムの作成。
 
(2)キーボードから30個の配列に小数を代入し、それらを小さい順に
並び替え、その結果をモニタに出力するプログラムを作成せよ。このソート
の問題は、バブルソートで実施し、連続する2数の交換main以外の関数swap
で実施せよ。

[3] 環境:
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio.net
 [3.3] 言語: C
[4] 期限: 5月14日まで。

全然わかりません、よろしくお願いします。
0821ぼるじょあ ◆hZ8e4Wjqvw 2007/05/13(日) 11:03:52
>>820
(・3・) エェー (2)だけやっといたYO!

#include<stdio.h>
#define DATA_NUM 30
void swap(double *a, double *b){
    double c;
    c=*a;
    *a=*b;
    *b=c;
}
int main(void){
    double data[DATA_NUM];
    int i, j;
    for(i=0;i<DATA_NUM;i++){
        printf("実数を入力して下さい");
        scanf("%lf", &data[i]);
    }
    for(i=0;i+1<DATA_NUM;i++){
        for(j=i+1;j<DATA_NUM;j++){
            if(data[i]>data[j]){
                swap(&data[i], &data[j]);
            }
        }
    }
    for(i=0;i<DATA_NUM;i++)
        printf("%f\n", data[i]);
    return 0;
}
0822依頼者2007/05/13(日) 15:21:27
>>821さんありがとうございます。

あとどなたか(1)のほうもお願いします。
0823デフォルトの名無しさん2007/05/13(日) 16:08:33
>>822
簡単だから自分でやって見れ
まずはCの復習、ここがお勧め→ttp://effy.ldw.jp/c/index.html
考え方はと言うか疑似コード?は
0.骨格を作る(#includeやmain(){})。
ぼるじょあ氏のswap関数を組み込む(main関数の前にコピペ)
1.char型の変数、a,bを宣言
2.文字をscanf("%c",&a)かなにかでキーボードからを入力して変数aに文字を入れる。
3.同じ様に文字を入力して変数bに入れる。
4.もし、aがbより大きければ(アルファベット順じゃないなら)入れ替える。if(a>b) swap(&a,&b);文字も数値として扱われるから大きさを比べられる。
5.a,bを出力
6.終わり
0824デフォルトの名無しさん2007/05/14(月) 02:51:45
実はぼるじょあの中の人は、女もいるという噂
0825デフォルトの名無しさん2007/05/14(月) 08:24:30
ぼるじょあうざい
0826デフォルトの名無しさん2007/05/14(月) 22:41:50
[1] 授業単元: プログラミング基礎�T
[2] 問題文: はじめに人数を入力。その人数分、交通費を入力。
するとお金の種類ごと(一万円、五千円、千円、五百円、百円、五十円、十円、五円、一円)に何枚用意する必要があるか表示してくれるプログラムを作成せよ。
以下の三つが課題達成条件です。
・人数として0もしくは負の数を入力された場合は、「正しい人数を入力してください」と、表示し終了する。
・枚数が0枚の場合は硬貨の種類は表示しない。
・正しい硬貨と枚数が表示される。
  
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: Visual C++ 2005
 [3.3] 言語: C
[4] 期限: 5月15日まで
[5] その他の制限: do,while,for文まで習いました。

よろしくお願いします。
0827homoじょあ ◆5OLf4yFnuM 2007/05/14(月) 23:06:39
>>826
#include <stdio.h>

int main(void){
int sum = 0, num, cnt, tmp;
int money[] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1};
printf("人数:");
scanf("%d", &num);
if(num <= 0){
printf("正しい人数を入力して下さい\n");
return -1;
}
for(cnt=0; cnt<num; cnt++){
printf("%d人目の交通費:", cnt+1);
scanf("%d", &tmp);
sum += tmp;
}
for(cnt=0; cnt<9; cnt++){
tmp = sum / money[cnt];
if(tmp != 0){
printf("%d円:%d枚\n", money[cnt], tmp);
sum -= tmp * money[cnt];
}
}
return 0;
}
0828デフォルトの名無しさん2007/05/14(月) 23:23:16
>>827
ありがとうございます。感謝です
0829ぼるじょあ ◆hZ8e4Wjqvw 2007/05/14(月) 23:27:11
>>826
(・3・) エェー おいらもやってみたYO!

#include<stdio.h>
void money_num_calc(const int money_kind[], int money_kind_num, int money_num[], int value){
    int i;
    if(value<0) value=0;
    for(i=0;i<money_kind_num;i++){
        money_num[i]=value/money_kind[i];
        value%=money_kind[i];
    }
}
int main(void){
    const int money_kind[]={10000,5000,1000,500,100,50,10,5,1};
    int money_num_total[sizeof(money_kind)/sizeof(money_kind[0])]={0};
    int money_num[sizeof(money_kind)/sizeof(money_kind[0])];
    int human_num, human_index, i, value;
    printf("人数を入力して下さい ");
    scanf("%d", &human_num);
    if(human_num<=0){printf("\n正しい人数を入力してください\n");return 1;}
    for(human_index=0;human_index<human_num;human_index++){
        printf("%d 人目の交通費を入力してください ", human_index+1);
        scanf("%d", &value);
        money_num_calc(money_kind, sizeof(money_kind)/sizeof(money_kind[0]), money_num, value);
        for(i=0;i<sizeof(money_kind)/sizeof(money_kind[0]);i++)
            money_num_total[i]+=money_num[i];
    }
    for(i=0;i<sizeof(money_kind)/sizeof(money_kind[0]);i++)
        if(money_num_total[i]>0)
            printf("%5d 円 : %d 枚\n", money_kind[i], money_num_total[i]);
    return 0;
}
0830ぼるじょあ ◆hZ8e4Wjqvw 2007/05/14(月) 23:31:49
>>826
(・3・) エェー 関数使うのやめてみたYO! あと交通費が負数のときは 0円換算するYO!

#include<stdio.h>
int main(void){
    const int money_kind[]={10000,5000,1000,500,100,50,10,5,1};
    int money_num[9]={0};
    int human_num, human_index, i, value;

    printf("人数を入力して下さい ");
    scanf("%d", &human_num);
    if(human_num<=0){
        printf("\n正しい人数を入力してください\n");
        return 1;
    }

    for(human_index=0;human_index<human_num;human_index++){
        printf("%d 人目の交通費を入力してください ", human_index+1);
        scanf("%d", &value);
        if(value<0) value=0;
        for(i=0;i<9;i++){
            money_num[i]+=value/money_kind[i];
            value%=money_kind[i];
        }
    }
    for(i=0;i<9;i++)
        if(money_num[i]>0)
            printf("%5d 円 : %d 枚\n", money_kind[i], money_num[i]);
    return 0;
}
0831デフォルトの名無しさん2007/05/15(火) 03:28:30
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
1.英文を入力するとその暗号文が出力されるプログラムの作成
入力:文字列(英文)
出力:文字列(数字)
2.暗号文を元の英文に戻すプログラムの作成
入力:文字列(数字)
出力:文字列(英文)
暗号は換字暗号でよい。[アルファベット(a〜z)、スペースを数字(00〜26)、スペースを対応させる]例a⇔23、b⇔09、c⇔17…
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 火曜日の夕方、もしくは水曜日の朝まで
[5] その他の制限: ループ(forやwhile)、配列を使って作成する

ぼるじょあさん、よろしくおねがいします。
0832ぼるじょあ ◆hZ8e4Wjqvw 2007/05/15(火) 09:48:13
>>831
(・3・) エェー マルチポストすんなYO!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void swap(int *a, int *b){
    int c; c=*a;*a=*b;*b=c;
}
int main(void){ // 1.
    char symbol[]="abcdefghijklmnopqrstuvwxyz ", *ptr;
    int i, moji, num[sizeof(symbol)-1];
    for(i=0;i<sizeof(symbol)-1;i++) num[i]=i;
    for(i=0;i<sizeof(symbol)-1;i++) swap(&num[i], &num[rand()%(sizeof(symbol)-1)]);
    while((moji=getchar())!=EOF){
        ptr=strchr(symbol, moji);
        if(ptr!=NULL)
            ; // ここにある処理を書けYO!
    }
    return 0;
}
int main(void){ // 2.
    char symbol[]="abcdefghijklmnopqrstuvwxyz ";
    int i, moji, num[sizeof(symbol)-1];
    for(i=0;i<sizeof(symbol)-1;i++) num[i]=i;
    for(i=0;i<sizeof(symbol)-1;i++) swap(&num[i], &num[rand()%(sizeof(symbol)-1)]);
    while(scanf("%02d", &moji)>0){
        for(i=0;i<sizeof(symbol)-1;i++)
            if(moji==num[i])
                ; // ここにある処理を書けYO!
    }
    return 0;
}
0833ぼるじょあ ◆hZ8e4Wjqvw 2007/05/15(火) 10:06:46
>>831
(・3・) エェー 少し短くしたYO!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void swap(char *a, char *b){
    char c; c=*a;*a=*b;*b=c;
}
int main(void){ // 1.
    char symbol[]="abcdefghijklmnopqrstuvwxyz ", *ptr;
    int i, moji;
    for(i=0;i<sizeof(symbol)-1;i++)
        swap(&symbol[i], &symbol[rand()%(sizeof(symbol)-1)]);
    while((moji=getchar())!=EOF){
        ptr=strchr(symbol, moji);
        if(ptr!=NULL)
            ; // ここにある処理を書けYO!
    }
    return 0;
}
int main(void){ // 2.
    char symbol[]="abcdefghijklmnopqrstuvwxyz ";
    int i, moji;
    for(i=0;i<sizeof(symbol)-1;i++)
        swap(&symbol[i], &symbol[rand()%(sizeof(symbol)-1)]);
    while(scanf("%02d", &moji)>0){
        if(moji>=0 && moji<sizeof(symbol)-1)
            ; // ここにある処理を書けYO!
    }
    return 0;
}
08348312007/05/15(火) 17:42:22
ぼるじょあさん、ご返答ありがとうございます。
コンパイラがgccではなく、borlandでした。すいません。
あと一つ目のプログラムを実行したら以下のようなエラーが出てしまいます。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void swap(char *a, char *b)
{
char c; c=*a;*a=*b;*b=c;
}
int main(void){
char symbol[]="abcdefghijklmnopqrstuvwxyz ", *ptr;
int i, moji;
for(i=0;i<sizeof(symbol)-1;i++)
swap(&symbol[i], &symbol[rand()%(sizeof(symbol)-1)]);
while((moji=getchar())!=EOF){
ptr=strchr(symbol, moji);
if(ptr!=NULL);}
 return 0;
}

>bcc32 bo1.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
bo1.c:
警告 W8019 bo1.c 17: コードは効果を持たない(関数 main )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

なにか解決策は無いでしょうか?
08358312007/05/15(火) 17:44:47
もしくは
#include <stdio.h>
int main(void){
  int  i;
  char a[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  int  b[]={'01','10','11','02','20','22','03','30','33','04','40','44','05','50','55','06','60','66','07','70','77','08','80','88','09','90'};

   printf();
   scanf();

while(){
}
   printf();

 return 0;
}

このプログラムを改良してもらえないでしょうか?
無理を言ってすいません。
0836デフォルトの名無しさん2007/05/15(火) 17:52:25
>>834
いつから「警告」のことを「エラー」と言うようになったのでしょう。
0837デフォルトの名無しさん2007/05/15(火) 17:54:05
>>835
そのプログラムを改良したくても、間違いだらけでコンパイルの通しようもありませんが。
08388352007/05/15(火) 18:12:47
#include <stdio.h>
int main(void){
int; i;
char a[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int b[26]={'01','10','11','02','20','22','03','30','33','04','40','44','05','50','55','06','60','66','07','70','77','08','80','88','09','90'};

printf("01から90までの数字を入力してください:");
scanf("%s", &a);

while(){
}
printf("%s\n", a);

return 0;
}

申し訳ありません。
自力で出来るのがこの程度なのです。
while文のなかの構造や配列の使い方がよくわかりません。
何度もすいません。

>>834
警告とエラーは違うのですね。すいません。
0839デフォルトの名無しさん2007/05/15(火) 18:15:44
>>838
試しに、bの全要素を出力して味噌。ほんとにその数値でいいの?
0840ぼるじょあ ◆hZ8e4Wjqvw 2007/05/15(火) 18:29:38
>>834
(・3・) エェー マルチは嫌いだから
          穴埋め問題にしておいただけだYO!
          でも、レス見る限り解けなさそうだからヒントやるYO!

ヒント
1 の main の穴埋め部分
printf("%02d", ???-???)

2 の main の穴埋め部分
putchar(symbol[???])

???の部分に適当な変数名を当てはめていけばいつか答えにあたるYO!
08418382007/05/15(火) 19:05:53
>>839
はい。bの要素の数値は何でもいいです。
英文字と1対1で対応していればいいです。

>>840
アドバイスありがとうございます。
自分で作ったプログラムもいろいろ考えてみます。
0842デフォルトの名無しさん2007/05/15(火) 19:10:47
>>841
御託並べずに出力してみろ。想定した(自分で書いた積もりの)数値が出力されるか?
0843デフォルトの名無しさん2007/05/15(火) 19:27:22
>暗号は換字暗号でよい。[アルファベット(a〜z)、スペースを数字(00〜26)、スペースを対応させる]例a⇔23、b⇔09、c⇔17…

これは問題文そのまま?
08448382007/05/16(水) 00:33:20
>>843
問題文は
「暗号は最も簡単な暗号:換字暗号でよい。」
です。
「アルファベット(a〜z)、スペースを数字(00〜26)、スペースを対応させる」の部分は
勝手に付け足しました…

>>842
うまくできませんね…。
配列の要素とscanf、printfのなかも変えてやってみます。
0845デフォルトの名無しさん2007/05/16(水) 01:14:47
【質問テンプレ】
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):
パソコンに設定されている日付を読み込んで(<time.h>とかかな?)
キーボードから入力される日付と合致しているかしていないかの判断を行う

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
 [3.3] 言語: C
[4] 期限: 2007年05月17日まで
[5] その他の制限  : 入力されてくる日付はYYYYMMDD方式でも
年月日個別でもどちらのパターンでも構いません
0846デフォルトの名無しさん2007/05/16(水) 01:34:33
>>845 不要なものも入っているから不要なら消しておいて
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {
struct tm *date;
time_t now;
int year, month, day;
int hour, minute, second;

int iy,im,id; // 入力で受け付ける年月日
char buf[10];

printf("年月日を入力\n");
printf("年 > ");
scanf("%s",buf);
iy=atoi(buf);
printf("月 > ");
scanf("%s",buf);
im=atoi(buf);
printf("年 > ");
scanf("%s",buf);
id=atoi(buf);
0847846の続き2007/05/16(水) 01:35:15


/* 現在の日時を取得 */
time(&now);
date = localtime(&now);

year = date->tm_year + 1900;
month = date->tm_mon + 1;
day = date->tm_mday;

hour = date->tm_hour;
minute = date->tm_min;
second = date->tm_sec;

printf("入力された年月日 : %d / %d / %d \n",iy,im,id);
printf("現在 : %d / %d / %d \n",year,month,day);
printf("%2d : %2d : %2d \n",hour,minute,second);

if(iy==year && im==month && id==day)
printf("一致\n");
else printf("不一致\n");
return 0;
}
08488442007/05/16(水) 01:44:39
#include <stdio.h>
int main(void){

int a,b;
char eigo[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int suuji[26]={1,10,11,2,20,22,3,30,33,4,40,44,5,50,55,6,60,66,7,70,77,8,80,88,9,90};

for( a=0; a<26; a++ )
{
printf("test0[%d] = %c\n", a, eigo[a]);
}

for( b=0; b<26; b++ )
{
printf("test1[%d] = %d\n", b, suuji[b]);
}

return 0;
}
--------------------------
これで思うような出力が出来たのですが、
これを1対1で対応させて暗号とするにはどうしたらよいのでしょうか?
アドバイスください。ぼるじょあさんのは難しくて理解できませんでした。
せっかく答えていただいたのに申し訳ありません。
0849デフォルトの名無しさん2007/05/16(水) 03:18:41
換字式暗号だと、配列は1つでいいだろ。
0850デフォルトの名無しさん2007/05/16(水) 03:26:46
>>848
向こうのスレに答えがあるようだけど。
0851デフォルトの名無しさん2007/05/16(水) 12:27:03
10個の整数データを木構造に保存し、
キーボードから前順,中順,後順を選択すると、
その順で木をなぞる再起プログラミングを作成せよ.

プログラミング。
C言語です。
5月21日まで。
OSはwindowsです。
よろしくお願いいたします。

0852デフォルトの名無しさんNGNG?2BP(222)
>前順,中順,後順

意味が分からない。
0853デフォルトの名無しさん2007/05/16(水) 13:26:13
C言語で核ミサイルを着弾誤差50メートルの
範囲内で制御するルーチンを作りなさい

アメリカ陵軍情報局研修3
OSはWINDOWS3000
期限となる日時は機密条項に抵触するため、
可能な限り早くお願いする
頼んだつもりは無いが、未来は諸君の腕にかかっている
0854デフォルトの名無しさん2007/05/16(水) 13:37:20
キモチワルイ
0855気まぐれアナスイ2007/05/16(水) 14:09:51
!(ΦyΦ+){ぼるじょあッ}
0856デフォルトの名無しさんNGNG?2BP(222)
>アメリカ陵軍

新2ch語誕生の予感。
0857デフォルトの名無しさん2007/05/16(水) 16:31:51
>>853
>WINDOWS3000

とりあえず俺の手元にはテスト環境が見あたらないな。
うpきぼんぬ。
0858デフォルトの名無しさん2007/05/16(水) 16:34:20
>>852
10個の整数データを木構造に保存し、
順に木をなぞる再起プログラミングを作成せよ.

これなら分かりますか??

再起プログラミングが、よく分からないんです。
教えていただけないでしょうか?
0859デフォルトの名無しさん2007/05/16(水) 16:38:36
木構造つったって色んな木があるでしょ。
何の木?
0860デフォルトの名無しさんNGNG?2BP(222)
>>858
どんな木で何の順だよ。
0861デフォルトの名無しさん2007/05/16(水) 17:11:37
>>859
根付き木です。
ポインタにより木を実現し,データを保存せよって書いてあるんですが
自分は意味が分かりません。
お願いします。
>>860
課題をそのままコピーしただけなので、
よくわかんないですけど、色々調べたのですが深さ優先探索での
前順、中順、後順の事だと思います。すいません。
0862デフォルトの名無しさん2007/05/16(水) 17:12:50
(・3・)エェー ゴミじょあ
0863デフォルトの名無しさん2007/05/16(水) 17:22:27
>>861
http://ja.wikipedia.org/wiki/%E3%83%84%E3%83%AA%E3%83%BC%E6%A7%8B%E9%80%A0
0864デフォルトの名無しさんNGNG?2BP(222)
>>861
>ポインタにより木を実現し,データを保存せよって書いてあるんですが

どういう基準で入力値を構造化するのか定義しろ。

>前順、中順、後順

そんな言葉は存在しねえので、それぞれが何を表してるのか定義しろ。
0865デフォルトの名無しさん2007/05/16(水) 17:27:29
>>864
いや、存在はしてるみたい。
マイナーな言葉で通じる人が少ないかもしらんけど。
0866デフォルトの名無しさんNGNG?2BP(222)
そうか。じゃあ通じる言葉で書いて貰おう>>861
0867デフォルトの名無しさん2007/05/16(水) 21:53:16
>>846 847
ありがとうございました
0868デフォルトの名無しさん2007/05/16(水) 23:11:05
[1] 授業単元: ぼるじょあがC/C++の宿題を片づけますYO! 67代目
[2] 問題文(含コード&リンク): 問題が分かりません。
[3] 環境
 [3.1] OS: 2 ちゃんねる
 [3.2] コンパイラ名とバージョン: Docomo2.0
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: printf() 系関数は使用不可。
0869デフォルトの名無しさん2007/05/16(水) 23:40:31
2 ちゃんねる というOSはどこで手に入りまつか?それがないと答えようがありません ><;
0870依頼者2007/05/17(木) 22:32:13
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):
キーボードより文字列aと文字列bを入力し、比較する(どちらが辞書並びで先かを表示)プログラムの作成。
但し、strcmp関数を用いてはならない。
[3] 環境:
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio.net
 [3.3] 言語: C
[4] 期限: 5月19日まで。
0871デフォルトの名無しさん2007/05/18(金) 00:09:46
つstrncmp
0872デフォルトの名無しさん2007/05/18(金) 00:27:39
>>870
#include<stdio.h>
int main(void)
{
char a[50],b[50],n;
printf("文字列a:");scanf("%s",a);
printf("文字列b:");scanf("%s",b);
for(n=0;n<50;n++){
if(a[n]!=b[n]){
if(a[n]=='\0')printf("文字列aが辞書並びで先");
else if(b[n]=='\0')printf("文字列bが辞書並びで先");
else if(a[n]<b[n]) printf("文字列aが辞書並びで先");
else printf("文字列bが辞書並びで先");
break;
}else if(a[n]=='\0' && b[n]=='\0'){
printf("文字列は同じ");
break;
}
}
return 0;
}
0873デフォルトの名無しさんNGNG?2BP(222)
>>870
ターゲットのロケールとコードページを。
0874C初心者2007/05/18(金) 15:01:26
812お願いします(o*。_。)o
0875ぼるじょあ ◆hZ8e4Wjqvw 2007/05/18(金) 15:42:13
>>812
(・3・) エェー バブルソートでやってみたYO!

void sort(double *data, int data_num){
    int i, j;
    double tmp;
    if(data==NULL || data_num<1) return;
    for(i=0;i+1<data_num;i++){
        for(j=i+1;j<data_num;j++){
            if(data[i]>data[j]){
                tmp=data[i];
                data[i]=data[j];
                data[j]=tmp;
            }
        }
    }
}
0876 ◆kqWkheFZ3g 2007/05/18(金) 18:58:30
1授業単元:プログラミング実習
2問題文:配列を用いてn個までの値を入力し、その最大値、最小値、及び
全体の平均点を出すプログラムを作成せよ。
3環境:Linux3.2
gcc
C
4 2007年5月22日17時
5 ifやwhile、そして今日配列まで習いました。

よろしくお願いします!!
0877依頼者2007/05/18(金) 20:44:49
>>872さん。ありがとうございました。
0878C初心者2007/05/18(金) 21:46:07
>>875
 ありがとうございます<(_ _)>月曜にならないと操作できないので、また後で実効してみます。
0879デフォルトの名無しさん2007/05/19(土) 09:51:37
>>876
おそらくわかるであろう範囲のものを使って書いておいた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4001.txt
0880デフォルトの名無しさん2007/05/19(土) 16:33:27
1] 授業単元: 情報処理演習
[2] 問題文(含コード&リンク): Gauss消去法のプログラムを変更することにより、Gauss-Jordan法のプログラムを作成せよ。
任意のn×n行列Aとn×m行列Bを与えて、AX=Bいの解行列Xを(完全ピポット選択でなく部分ピボット選択のGauss-Jordan法
により)求めるプログラムを作成せよ。このとき、n,mや行列A,Bは標準入力から入力し、また、実際に行列A,Xの積を計算することで、
得られた解が正しいかどうかをチェックする機能も実装せよ。またこのプログラムを用いて、線形連立方程式の解や、逆行列を
求めた例も示せ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語: C
[4] 期限: 5月22日
[5] その他の制限: 問題文長いですが・・・よろしくお願いします!!
0881ぼるじょあ ◆hZ8e4Wjqvw 2007/05/20(日) 12:29:47
>>812
(・3・) エェー >>875 はバブルソートと違うYO!今度こそバブルソートだYO!

void sort(double *data, int data_num){
    int i, j;
    double tmp;
    if(data==NULL || data_num<1) return;
    for(i=0;i+1<data_num;i++){
        for(j=i;j+1<data_num;j++){
            if(data[j]>data[j+1]){
                tmp=data[j];
                data[j]=data[j+1];
                data[j+1]=tmp;
            }
        }
    }
}
0882 ◆kqWkheFZ3g 2007/05/20(日) 13:32:47
>>879さん、ありがとうございました!!!
月曜日に学校にいって早速実行してみたいとおもいます。
こんなに難しいのになんでスラスラできるのか不思議でたまりません。
0883デフォルトの名無しさん2007/05/20(日) 16:15:04
お礼を言うのはいいことだけど、あまりヘタなことは言わん方が
0884デフォルトの名無しさん2007/05/20(日) 16:18:51
なんで家のパソコンにコンパイラを入れようとしないかな。
0885デフォルトの名無しさん2007/05/20(日) 18:19:55
[1] 授業単元:C言語
[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
     [3.2] コンパイラ名とバージョン:VC++
     [3.3] 言語:C
力業でやればできそうなのですが、スマートな方法がなかなか思いつかなくて・・・よろしくお願いします

0886デフォルトの名無しさん2007/05/20(日) 19:26:57
>>884
2chで宿題丸投げするような連中はたかが知れてるさw
08878852007/05/20(日) 20:24:27
休憩を挟んだらあっさりと解けてしまいました
ご迷惑おかけしましたー
0888デフォルトの名無しさん2007/05/20(日) 20:57:27
>>887
【初心者歓迎】C/C++室 Ver.37【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1178432985/408
ここで質問してた人でしょ?
0889デフォルトの名無しさん2007/05/20(日) 21:19:14
[1] 授業単元:Cプログラミング基礎演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4012.txt
[3] 環境:
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C
[4] 期限: 5月21日迄

宜しくお願いします。
0890デフォルトの名無しさん2007/05/20(日) 21:21:48
>>887
まるで全て自力で解いたかのような口ぶりだな
0891デフォルトの名無しさん2007/05/20(日) 21:40:48
>>889
問題文がないぞ
0892デフォルトの名無しさん2007/05/20(日) 21:57:10
だれか>>885を3時間かかっても解けなかった俺を慰めてくれませんか?
>>887を見たらor2
08938892007/05/20(日) 22:26:16
上記の通り、指定の関数を使い
文字列"12345"(固定です)を数値の12345に変換するプログラムです。
宜しくお願いします
0894デフォルトの名無しさん2007/05/20(日) 22:29:29
おいおい・・・・・・・・・・・・・・・・・・・・
0895デフォルトの名無しさん2007/05/20(日) 22:34:17
atoi()と同じ動作をする関数を作る課題かと思ってたら・・
関数を使うだけ!?!????????
08968892007/05/20(日) 22:37:58
atoi()と同じ動作をする関数を作る課題です。
全く初心者なものでごめんなさい。文章が少なすぎました><
0897デフォルトの名無しさん2007/05/20(日) 22:57:59
int myatoi(char *p) {
   int ret = 0;
   while(*p) ret = ret * 10 + *p++ - '0';
   return ret;
}
0898デフォルトの名無しさん2007/05/20(日) 23:00:12
intは2147483647も表せないだろ。
0899デフォルトの名無しさん2007/05/20(日) 23:05:13
いまどきintが4バイトじゃない環境の方が少なくない?
■ このスレッドは過去ログ倉庫に格納されています