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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
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/
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バイトじゃない環境の方が少なくない?
0900デフォルトの名無しさん2007/05/20(日) 23:11:07
平気でそういう宿題出す教官がいるってのは悲しいがな。
0901デフォルトの名無しさん2007/05/20(日) 23:13:47
君ならどういう宿題を出すのかね
0902デフォルトの名無しさん2007/05/20(日) 23:15:25
最大値を65,535か32,767にする。
0903デフォルトの名無しさん2007/05/20(日) 23:17:46
学校で使ってる環境がint4バイトなだけだろ。
なんでそんなとこに突っ込み入るのかわからん。
0904デフォルトの名無しさん2007/05/20(日) 23:20:14
Visual Studio 2005ってかいてあるんだから別に不都合ないだろ
0905デフォルトの名無しさん2007/05/20(日) 23:25:03
何か突っ込み入れたかったんだろ。
考えの浅さを暴露しただけだったが。
0906デフォルトの名無しさん2007/05/21(月) 00:04:13
3つの整数を入力させて、3角形になるなら面積を表示するっていう宿題なんですけど、
数値計算がうまくいてません。助けてください

#include <math.h>
#include <stdio.h>

int main()
{
float S, s, x, y, z;

s = (x + y + z) / 2;

S = sqrt( s * (s-x) * (s-y) * (s-z) );

printf("三辺は?\n");
scanf("%lf %lf %lf",&x ,&y ,&z);

if( x+y>z && y+z>x && z+x>y )
{
printf("面積は%lfです\n",sqrt(S));
}

else
{
printf("三角形ではありません\n");
}
}
0907デフォルトの名無しさん2007/05/21(月) 00:06:50
[1] 授業単元:情報科学2
[2] 問題文(含コード&リンク):http://brain.is.kyushu-u.ac.jp/~shidoji/japanese/InformationScience/3.pdf
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] gcc 3.4 だとと思う
 [3.3] 言語: C
[4] 期限: 2007/05/21 15時まで
0908デフォルトの名無しさん2007/05/21(月) 00:08:21
三つの整数とは?
0909デフォルトの名無しさん2007/05/21(月) 00:14:24
>906
floatをdoubleにするか、scanfで%lfじゃなく%fにする。
sとSの計算はscanfの後ろに置く
0910デフォルトの名無しさん2007/05/21(月) 01:15:54
C言語です(>_<)
多次元配列a[3][2]の中に数字をランダムに入れて、それを大きい順にまたa[3][2]に入れるにはどうしたらいいんですか?(for文を用いて)
0911デフォルトの名無しさん2007/05/21(月) 01:55:10
>909
たすかりました!ありがとうございます。
0912デフォルトの名無しさん2007/05/22(火) 11:46:07
>>853
ICBM/SLBMの着弾誤差50メートル?www
Mt級の戦略核だったら50メートルと500メートルでも大した差はねぇぞ
0913ぼるじょあ ◆hZ8e4Wjqvw 2007/05/22(火) 11:51:57
>>910
(・3・) エェー 問題の意味が分からなかったYO!
          ってことでエスパー回答だYO!

#include<stdio.h>
#include<stdlib.h>
int main(void){
    int a[3][2], *p_max, temp;
    int i, j, k, l;

    for(i=0;i<3;i++)
        for(j=0;j<2;j++)
            a[i][j]=rand();
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            p_max=&a[i][j];
            for(k=i,l=j;k<3;k++){
                for(;l<2;l++){
                    if(*p_max<a[k][l])
                        p_max=&a[k][l];
                }
                l=0;
            }
            temp=a[i][j];
            a[i][j]=*p_max;
            *p_max=temp;
        }
    }
    return 0;
}
0914ぼるじょあ ◆hZ8e4Wjqvw 2007/05/22(火) 11:55:11
>>910
(・3・) エェー >>913 訂正だYO!
          
        for(j=0;j<3;j++){
↓
        for(j=0;j<2;j++){
0915デフォルトの名無しさん2007/05/22(火) 12:49:37
C++っす
各タブを\tに、各バックスペースを\bに、各バックスラッシュを\\に置き換えながら、
入力を出力に複写するプログラムを書きたいです

すみませんがお願いします
0916デフォルトの名無しさん2007/05/22(火) 14:09:33
>>915
-=・=- -=・=-
同じ問題がプログラミング言語Cのアンサーブックに答えが書かれてたな。
0917デフォルトの名無しさん2007/05/22(火) 14:35:40
>>912
そこを拘るのが日本人
0918 ◆3hOqNZ9GO. 2007/05/22(火) 15:06:37
>876ですが、コンパイルしたところ

bash-2.05b$ gcc repo05.c
/usr/lib/gcc-lib/i386-vine-linux/3.3.2/../../../crt1.o(.text+0x18): In function`_start':
: undefined reference to `main'
collect2: ld はステータス 1 で終了しました

とエラーがでてしまいます。今日提出日なのでなるべく早く返事ください!!
急ですみませんがよろしくお願いします(><)
0919ぼるじょあ ◆hZ8e4Wjqvw 2007/05/22(火) 15:09:20
>>907
(・3・) エェー 行数制限厳しいYO!

#include <stdio.h>
#include <math.h>
int main(void){
    int price=100, num=1;
    printf("リンゴの数を入力して下さい : ");
    scanf("%d", &num);
    if(num<=0) price=0;
    if(num>=10) price=95;
    if(num>=20) price=90;
    printf("値段 %d 円\n", price*num);
    return 0;
}
int main(void){
    int year;
    printf("西暦年を入力して下さい : ");
    scanf("%d", &year);
    if(year%400==0 || (year%100!=0 && year%4==0)) printf("閏年です\n");
    else printf("閏年ではありません\n");
    return 0;
}
int main(void){
    double a, b, c, s;
    printf("三角形の三辺の長さを入力して下さい : ");
    scanf("%lf %lf %lf", &a, &b, &c);
    if(a+b<=c || b+c<=a || c+a<=b){printf("三角形ではありません\n");return 0;}
    s=(a+b+c)/2;
    printf("%f\n", sqrt(s*(s-a)*(s-b)*(s-c)));
    return 0;
}
0920 ◆3hOqNZ9GO. 2007/05/22(火) 15:22:35
>>918です

できました!!!!!
ただたんに僕が入力ミスしてただけでした…

どうもありがとうございました!!!!!
0921デフォルトの名無しさん2007/05/22(火) 20:20:54
>>880お願いします・・・
0922デフォルトの名無しさん2007/05/23(水) 00:07:06
>>880
880と同じ問題に苦戦している俺ワロタ
阪大www
0923デフォルトの名無しさん2007/05/23(水) 17:58:12
>>921
取り合えず、2問ほどテストして連立方程式の解や逆行列が求められる事は確認した。
ただ、GJ法や部分ピボット選択をよく理解してないので間違ってるかもhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4035.c
久々に楽しめる問題だったよ。ありがと。
0924デフォルトの名無しさん2007/05/23(水) 18:57:21
>>923
遅いよ
今日の五時で締め切り……
0925デフォルトの名無しさん2007/05/23(水) 22:49:51
>>923
アリガトウ!
でも924と同じく、間に合いませんでした・・・
課題1と3だけやって提出した・・・・
0926デフォルトの名無しさん2007/05/23(水) 22:58:13
>>910の改訂です(>_<)
2行3列の2次元配列に自然数をランダムに選ぶ。ただし,58はどこかに入れる。その時以下のプログラムを作れ。

配列に入れられた数値を
�@降順に出力
�A昇順に出力
�B数値58の行番号、列番号を出力
if、for、while、do文習いました。バブルソートを使います。
お願いしますm(_ _)m
0927homoじょあ ◆5OLf4yFnuM 2007/05/23(水) 23:35:26
>>926
(・3・) エェー 意味取り違えてるかもしれないけど
          http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4038.txt
0928気まぐれアナスイ2007/05/24(木) 14:46:42
num1,num5 == 58
0929デフォルトの名無しさん2007/05/24(木) 19:02:32
>>927さん、意味を取り違えてるとはどういう意味ですか?>>926です。
0930依頼者2007/05/24(木) 22:21:13
[1] 授業単元:Cプログラミング基礎演習
[2] 問題文(含コード&リンク):
x[6]を宣言してx[0]に5、x[1]に8、x[2]に6、x[3]に4、x[4]に1、x[5]に3を代入した後、ポインタを使って、x[0]、x[2]、x[4]の和と
x[1]、x[3]、x[5]の積を求めるプログラムを作成せよ。
[3] 環境:
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio
 [3.3] 言語: C
[4] 期限: 5月28日迄

よろしくお願いします。
0931デフォルトの名無しさん2007/05/24(木) 22:53:48
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
例題と使用するhtmlファイルです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4051.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4050.zip[3] 環境:

HTMLファイルのタグを除去する('<'と'>'で囲まれた部分を除いて出力する)
プログラムを次のように書け。
(1)getlineを用いて行ごとに処理する。
(2)連続する空白文字(ブランク、タブ、改行文字)は1つだけにする(他は削除する)

ヒント:空白文字を続けないようにするには、直前の文字を覚えておくのが一つ
の方法である。
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc3.4
 [3.3] 言語: C
[4] 期限: 5月24日23時59分
できれば簡単なコードにしていただけると嬉しいです。
期限ぎりぎりで申し訳ありませんが、よろしく御願いします。
0932デフォルトの名無しさん2007/05/24(木) 22:56:39
>>930
#include<stdio.h>
int main(){
int i,j=0,k=1,x[6]={5,8,6,4,1,3};
for(i=0;i<6;i++)if(i%2)k*=*(x+i);else j+=*(x+i);
printf("和%d 積%d\n",j,k);
return 0;
}
0933依頼者2007/05/24(木) 23:06:45
>>932さん
ありがとうございます。助かりました。
0934依頼者2007/05/24(木) 23:19:52
[1] 授業単元:Cプログラミング基礎演習
[2] 問題文(含コード&リンク):
与えられた文字数分だけ文字を一文字ずつ順に表示するprint関数を作成せよ。
引数として文字列stringと整数nを用入ること。ここでstringは文字列型ポインタ配列の先頭アドレスを、nは表示する文字数を意味する。
[3] 環境:
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio
 [3.3] 言語: C
[4] 期限: 5月28日迄
すいません、もう一つお願いします
0935デフォルトの名無しさん2007/05/24(木) 23:26:25
>>934
#include<stdio.h>
void print(char *string, int n){while(n-- && *string)putchar(*string++);}
int main(){
print("bakasyoujiki",4);
return 0;
}
0936デフォルトの名無しさん2007/05/24(木) 23:32:24
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
例題と使用するhtmlファイルです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4051.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4050.zip

HTMLファイルのタグを除去する('<'と'>'で囲まれた部分を除いて出力する)
プログラムを次のように書け。
(1)getlineを用いて行ごとに処理する。
(2)連続する空白文字(ブランク、タブ、改行文字)は1つだけにする(他は削除する)

ヒント:空白文字を続けないようにするには、直前の文字を覚えておくのが一つ
の方法である。
[3] 環境:
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc3.4
 [3.3] 言語: C
[4] 期限: 5月24日23時59分
できれば簡単なコードにしていただけると嬉しいです。
期限ぎりぎりで申し訳ありませんが、よろしく御願いします。
0937依頼者2007/05/24(木) 23:43:50
>>935さん
ありがとうございました
0938デフォルトの名無しさん2007/05/25(金) 01:56:48
>>936
(^3^) <これでいいかYo!?

int main() {
    int flag = 0, count = 0;
    char line[1024];
    while(getline(line, sizeof(line))) {
        char *m, *n;
        for(m = n = line; *m; ++m) {
            if(*m == '<') while(*++m && *m != '>');
            else {
                char c = *n++ = *m;
                if(c == ' ' || c == '\t') while(c == m[1]) ++m;
            }
        }
        *n = '\0';
        if(*line && *line != '\n') printf("%d: %s", ++count, line);
    }
    return 0;
}
0939デフォルトの名無しさん2007/05/25(金) 02:11:01
flag使ってなかったYO!
0940和田っちあっちゃん2007/05/25(金) 20:07:24
[1] 授業単元:コンピュータ基礎
[2] 問題文(含コード&リンク):
<条件>
・ビリヤード台がおいてある
・台の左下端の座標は(0,0)、右上端の座標は(2,1)とする
・位置(x0、y0)に手玉
・手玉の初速度(v0x,v0y)
  ・手玉の位置、初速度はscanfをつかって入力する
<問題>
・手玉はどこに衝突するか?
  ・衝突位置の座標を表示する
  ・ポケットにおちることは考えなくてもよい
  ・手玉の大きさ、摩擦等は考えない
  ・20回のバンクを考慮して21カ所解答
[3] 環境
C言語で
[4] 期限: [2007年6月1日まで]
[5] その他の制限: if,while,for構文まで

おねがいします。。
0941デフォルトの名無しさん2007/05/25(金) 20:17:17
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
4人分の身長と体重のデータを二次元配列に格納し、平均身長、体重、BMIを求めよ。
ただしBMI=体重÷身長の二乗。大きさがN,Mの二次元配列a[][]をつかい、次のように初期化する。
float a[5][2]={{165.6,70.3,0},{156.0,60.3,0},{170.1,82.5,0},{180.8,67.8,0},{0,0,22.0}
結果は次のようにせよ
    h     w     BMI
1 165.6  70.3    ?
2 156.0  60.3    ?
3 170.1  82.5    ?
4 180.8  67.8    ?
平均  ?     ?      ?

 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio
 [3.3] 言語: C
[4]5月28日11時50分まで
for-loopを使って解くとよいと書いてありました。
どうかお願いします
0942デフォルトの名無しさん2007/05/25(金) 21:17:22
>>941
[5][2]では初期化できないだろ。
[5][3]の写し間違い?
0943デフォルトの名無しさん2007/05/25(金) 21:21:31
すいません写し間違いでした・・・・
N、Mはdefineで適当に定義してもいいと教授は言ってたけれど
自分は5、3でやってたけどできなくて・・・
0944デフォルトの名無しさん2007/05/25(金) 21:50:45
>>941
凄く高度なのですが、数値を全角で表示するなんて、俺にはムリポ
中華a[n][2]はBMIを入れるのか?、5番目のデータは身長が0だから表示されないのか?
BMIの式に身長の単位が(m)である事を明記してくれよ。
近い物は出来たのでお目汚しにどうぞ、数値は半角で表示が例と異なります。
#include<stdio.h>
#include<math.h>
int main(void){
char n,num=0;
float a[5][3]={{165.6,70.3,0},{156.0,60.3,0},{170.1,82.5,0},{180.8,67.8,0},{0,0,22.0}};
float sumh=0,sumw=0,sumb=0;
printf("       h     w     BMI\n");
for(n=0;n<5;n++){
if(a[n][0]==0) continue;
num++;
a[n][2]=a[n][1]/pow(a[n][0]/100,2);
sumh+=a[n][0];sumw+=a[n][1];sumb+=a[n][2];
printf("%4d%6.1f%6.1f%6.1f\n",n+1,a[n][0],a[n][1],a[n][2]);
}
printf("平均%6.1f%6.1f%6.1f\n",sumh/num,sumw/num,sumb/num);
return 0;
}
0945デフォルトの名無しさん2007/05/25(金) 22:17:44
すいません・・・・できたあああああああ
有難うございました間に合いました。
0946homoじょあ ◆5OLf4yFnuM 2007/05/25(金) 22:41:05
>>929
(・3・) エェー 配列を並べ替えるのか並べ替えずに表示だけ並べ替えるのかわからんかったYO
0947ぼるじょあ ◆hZ8e4Wjqvw 2007/05/26(土) 11:18:47
(・3・) エェー >>881 で馬鹿なことやってるのに気づいてしまったYO!
          スレが終わる前に訂正だYO! …orz

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=0;j+1<data_num-i;j++){
            if(data[j]>data[j+1]){
                tmp=data[j];
                data[j]=data[j+1];
                data[j+1]=tmp;
            }
        }
    }
}
0948デフォルトの名無しさん2007/05/26(土) 16:45:56
変数のibの下位8ビットの上位4ビットを0にする

ib=0x0F0F

答えはどのようになるのでしょうか?
0949デフォルトの名無しさん2007/05/26(土) 17:04:34
unsigned bitMaskUpper4OfLower8 = ~ 0xf0;
ib &= bitMaskUpper4OfLower8;
0950デフォルトの名無しさん2007/05/26(土) 17:06:01
プログラムではなくて答えです
0951デフォルトの名無しさん2007/05/26(土) 17:08:36
>ib=0x0F0F
0952デフォルトの名無しさん2007/05/26(土) 17:20:29
>>951
ありがとございます

iaを0にするの場合は
ic=ia & ××××
で&をつけ

iaを1にするだと
ic=ia
0953デフォルトの名無しさん2007/05/26(土) 17:21:46
iaを1にするときは
ic=ia | ××××

iaを反転するときは
ic=ia ^ ××××


という感じでいいのでしょうか?>>952は途中で送ってしまいましたすいません
0954デフォルトの名無しさん2007/05/26(土) 18:09:33
>>952-953
よろしくおねがいします
0955日本語は適切に2007/05/26(土) 18:22:05
>iaを0にするの場合は
ia = 0;
>iaを1にするだと
ia = 1;
>iaを反転するときは
ia = ! ia;
0956デフォルトの名無しさん2007/05/26(土) 18:27:49
int ia =0x0F0A, ib;

変数のiaの上位8ビットを0x00にしなさい、という問題で
どのようにして答えを書くべきなのでしょうか?

ib = ia & 0x0F0A

でいいのでしょうか?
0957ぼるじょあ ◆hZ8e4Wjqvw 2007/05/26(土) 18:38:54
>>956
(・3・) エェー 解説してみるYO!

mask=0x0080;
ia | mask; // ビットをセットするYO!
~(~ia | mask); // ビットをクリアするYO!
ia ^ mask; // ビットを反転するYO!


上位8ビットを0x00にするなら次の通りだYO!
mask=0xff00;
ib = ~(~ia | mask);
0958ぼるじょあ ◆hZ8e4Wjqvw 2007/05/26(土) 18:44:52
ついでに ia と mask が同じ型なら
mask = 0x00ff;
ib = ia & ~mask;
でもおkだYO!
0959デフォルトの名無しさん2007/05/26(土) 18:45:10
>>957
変数iaが16ビットであるという前提はどこから?
0960デフォルトの名無しさん2007/05/26(土) 18:48:18
>>957-958
すいません、プログラムではなくて答えを教えて頂ければ幸いです
0961ぼるじょあ ◆hZ8e4Wjqvw 2007/05/26(土) 18:52:21
>>959
(・3・) エェー >>957 の方法なら ia は何bitでもいいYO!
          >>958 だと sizeof(mask)>=sizeof(ia) じゃないとうまくいかないことがあるYO!
0962デフォルトの名無しさん2007/05/26(土) 18:54:03
>>961
>(・3・) エェー >>957 の方法なら ia は何bitでもいいYO!
おいおい、これはなんだよ。
>上位8ビットを0x00にするなら次の通りだYO!
>mask=0xff00;
0963ぼるじょあ ◆hZ8e4Wjqvw 2007/05/26(土) 19:12:57
>>962
(・3・) エェー なるほど! そういう意味かYO!
          難しいYO!

mask=0xff<<(sizeof(ia)*CHAR_BIT-8);
ib = ia & ~mask;

但し sizeof(mask)>=sizeof(ia) && sizeof(ia)==sizeof(ib) の時、限定だYO!
0964ぼるじょあ ◆hZ8e4Wjqvw 2007/05/26(土) 19:24:21
(・3・) エェー 答え書いてみたYO!

int ia =0x0F0A, ib;
ib=((unsigned int)ia<<8)>>8;
0965デフォルトの名無しさん2007/05/27(日) 02:21:36
>>957
>上位8ビットを0x00にするなら次の通りだYO!
>mask=0xff00;
>ib = ~(~ia | mask);

0x00FFと &取ればよくね?
0966デフォルトの名無しさん2007/05/28(月) 16:06:03
>>946 homoじょあさんへ
表示だけでいいです。すいませんでしたm(_ _)m
0967デフォルトの名無しさん2007/05/28(月) 20:37:32
コマンドラインで指定する正の整数nについて,12 + 22 + 32 + · · · + n2 の値を求めるプログラムを
作成せよ.
% ./kadai6-4
引数(正の整数) を指定してください.
% ./kadai6-4 1 2
引数(正の整数) を1 つだけ指定してください.
% ./kadai6-4 17
1 から17 までの2 乗和は1785 です.
%
0968デフォルトの名無しさん2007/05/28(月) 21:12:52
[1] 授業単元: コンピュータ基礎
[2] 問題文(含コード&リンク):
浮動小数点型データを5個入力して、最大値、最小値、平均を求めよ
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio
 [3.3] 言語: C
[4]6月1日
基礎なのについていけない・・・・・専門学校と一般校の差でしょうか・・・・
ポインタを使って解くのを参考 らしいです。
お願いします。
0969homoじょあ ◆5OLf4yFnuM 2007/05/28(月) 21:25:49
>>967
(・3・) エェー 酷いの作ったYO
#include <stdio.h>
#include <stdlib.h>

int func(int n){
if(n == 1) return 12;
return n*10+2 + func(n-1);
}

int main(int argc, char *argv[]){
int n;
if(argc < 2){
puts("引数(正の整数) を指定してください.");
}else if(argc > 2){
puts("引数(正の整数) を1 つだけ指定してください.");
}else{
n = atoi(argv[1]);
if(n <= 0) return -1;
printf("1から%dまでの2乗和は%dです\n", n, func(n));
}
return 0;
}
0970ぼるじょあ ◆hZ8e4Wjqvw 2007/05/28(月) 21:35:12
>>968
(・3・) エェー やってみたYO!

#include<stdio.h>

int main(void){
    double value, maximum, minimum, total;
    int i;

    for(i=0;i<5;i++){
        printf("Input value : ");
        scanf("%lf", &value);
        if(i==0){
            maximum=minimum=value;
            total=0.0;
        }
        if(maximum<value) maximum=value;
        if(minimum>value) minimum=value;
        total+=value;
    }
    printf("Maximum:%.5e Minimum:%.5e Average:%.5e\n", maximum, minimum, total/5);

    return 0;
}
レス数が950を超えています。1000を超えると書き込みができなくなります。