ようかんマンがC/C++の宿題を片付けて見せます 26棹

このエントリーをはてなブックマークに追加
815デフォルトの名無しさん:04/07/09 23:34
>>813
申し訳ございません
どなたか作ってください
重ね重ねお願いいたします
>>812
サイズ指定のない配列って、mallocを使えってことかな?
817811:04/07/09 23:37
>>813
スマソ単位かかってて切羽詰ってた(;´Д`)

>>814
回答ありがとうございます!
おかげで夏休み、不安を残さず迎えられそうです(゚∀゚)
>>816
いいえ
mallocは使わなくてもいいです。
819814:04/07/09 23:40
そういうことなら嘘プログラム書けばよかったな
>>812
ヽ|・∀・|ノあいよ〜 (1問目は誰かやってると思うから2問目)

#include <stdio.h>

int main(void){
char *mojip[3];
int i, j, k;
mojip[0] = "one"; mojip[1] = "two"; mojip[2] = "three";
for(i=0; i<3; i++){
for(j=0; j<3; j++){
for(k=0; k<3; k++){
if(i!=j && i!=k && j!=k) printf("%s %s %s\n",mojip[i],mojip[j],mojip[k]);
}}}
return 0;
}
「サイズ指定の無い配列」というのがわからん。
>>819
大丈夫、このままだと動かないから
823812:04/07/09 23:54
>>820
ようかんマン様
ありがとうございます
>>821
こいういことでは?
int hairetsu[3][] = { { 1, 2, 3, 4 }, { 1, 4, 9, 16 }, { 1, 8, 27, 64 } };
         ↑これが「サイズ指定の無い」ってこと
825824:04/07/09 23:56
これじゃ無理か。
>>824
なるほど。
>>824
俺もそう思った
テーブルサイズを容易に変更できるよう・・・
#define使っとけって意味かな・・・?
int[][] = { {1, 1, 1},
{2, 4, 8},
{3, 9, 27},
{4, 16, 64},
{5, 25, 125},
{6, 36, 216},
{7, 49, 343},
{8, 64, 512},
{9, 81, 729},
{10, 100, 1000} };

こういう風にするのかな?
エラー
/* 812 (1) 前半 */

#include<stdio.h>
#define TABLE_SIZE 10

int table[TABLE_SIZE][3];

void table_init()
{
int i;

for (i=1; i<=TABLE_SIZE; i++) {
table[i-1][0] = i;
table[i-1][1] = i*i;
table[i-1][2] = i*i*i;
}
}
/* 812 (1) 後半 */

void func(int x)
{
int i;

for (i=0; i<TABLE_SIZE; i++) {
if (table[i][2] == x) {
printf("3乗根 %d\n", i+1);
break;
}
}

if ((1 <= x) && (x <= TABLE_SIZE))
printf("2乗 %d\n", table[x-1][1]);
}


int main()
{
int x;

table_init();

printf("数値を入力してください.");
scanf ("%d", &x);
func(x);

return 0;
}
>>831
それって、サイズ指定ありでは?
834デフォルトの名無しさん:04/07/10 00:20
ライブニッツの公式よりせいどの良い公式を調べて見つけ、Cプログラムを
作成せよ。またその公式とライブニッツの公式との比較も行え
と言う宿題が出たのですが、がんばっても解けなかったので
よろしくお願い済ます!!
2次元配列だと、両方サイズ指定無しにする訳にはいかないぞ?
>>835
int mat[][3] = {{1,0,0}, {2,0,0}, {3,0,0}, ・・・};

こういうことかと思ったけど。
>>812
一番の問題ちょっと説明いいかげんですね
誰か自分の宿題お願いします。(・_・)/

入力された3値を辺にもつ三角形の種類およびその面積を表示する
プログラムを作成せよ。
ただし「ポインタ変数を引数にもつ関数を作成、使用する」

面積=√s(s-a)(s-b)(s-c)
s=(a+b+c)/2
三辺はそれぞれa,b,cとする。


です。お願いします
int pointer_dunc(int *a){
return *a;
}


int main(){
int a;

pointer_dunc(&a);

}


後は自分で考えろ。
>>838
ポインタが引数の関数を使えないことはないけど、
ポインタの引数の練習にふさわしい問題かなぁ?
出題者の意図がわからん。
#include <stdio.h>
#include <math.h>

int menseki(double a, double b, double c, int *result);

int main(int argc, char *argv[])
{
double result;

if (argv != 4 || !menseki(atof(argv[1], argv[2], argv[3]), &result)) {
printf("なんかヘンよ\n");
} else {
printf("面積 = %f", result);
}
return 0;
}

int menseki(double a, double b, double c, int *result)
{
double s;
/* エラーチェックはもっとあるんで、自力で考えてくれ */
if (a <= 0 || b <= 0 || c <= 0) {
return 0;
}
s = (a + b + c) / 2;
*result = sqrt(s(s-a) * (s-b) * (s-c));
return 1;
}
842838:04/07/10 01:04
>>839,840
教官によると、できるだけ凝ったプログラムにして欲しいと言っていましたが、
問題の意図も解き方も僕にはわかりません。
ポインタの意味すらわからないんで、どうかお願いします。
>>842
意味も意図も考えず紙を埋めるだけ。
それになんの意味があるのか。
さっさとやめてしまえ。路はいくらでもある。
844812:04/07/10 01:06
>>831ー832
ありがとうございます
凝りようもないんだがなあ。。。
>>841
リターン値でエラーを返して、引数で結果を返すってことなら、
ポインタの引数を使う必然性があるな。
気づかなかった。

> if (argv != 4 || !menseki(atof(argv[1], argv[2], argv[3]), &result)) {
これは
if (argv != 4 || !menseki(atof(argv[1]), atof(argv[2]), atof(argv[3]), &result)) {
こうだと思うが。
三角形の種類も表示させるらしいぞ
848838:04/07/10 01:19
>>843
ごもっともです。これが専門ではありませんが
>>846
846さんの言うように修正した、841のプログラムでも、エラーが出ます。
「エラー E2314 26: 関数でないものを呼び出している(関数 menseki )」
どうすればいいんでしょうか??

>>841
ありがとうございまふ
>>848
反省の色無し。と。
三角形のいろんな公式をひっぱってきて判定をガーッとかけまくれば性質抽出は出来るね
>>848
動作確認はしないけど、コンパイルは通るようにしてみた。

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

int menseki(double a, double b, double c, double *result);

int main(int argc, char *argv[])
{
double result;

if (argc != 4 || !menseki(atof(argv[1]), atof(argv[2]), atof(argv[3]), &result)) {
printf("なんかヘンよ\n");
} else {
printf("面積 = %f", result);
}
return 0;
}

int menseki(double a, double b, double c, double *result)
{
double s;
/* エラーチェックはもっとあるんで、自力で考えてくれ */
if (a <= 0 || b <= 0 || c <= 0) {
return 0;
}
s = (a + b + c) / 2;
*result = sqrt(s * (s-a) * (s-b) * (s-c));
return 1;
}





















>>838
ヽ|・∀・|ノ 三角形種類表示

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

double Triangular(int a,int b,int c,char *kind){
double s = (a+b+c)/2;
s = sqrt(s*(s-a)*(s-b)*(s-c));
if(a == b && b == c ) strcpy(kind,"正三角形");
else if(a == b || b == c || a == c) strcpy(kind,"二等辺三角形");
else if(a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a) strcpy(kind,"直角三角形");
else strcpy(kind,"三角形");
return s;
}

int main(){
int a, b, c;
double s;
char kind[100], gc[100];
printf("A="); a=atoi(gets(gc));
printf("B="); b=atoi(gets(gc));
printf("C="); c=atoi(gets(gc));
s = Triangular(a, b, c, kind);
printf("%s 面積=%f",kind,s);
return 0;
}
854838:04/07/10 01:34
>>851
なんかへんよと表示されるだけです・・・。

どなたか、三角形の種類の判別もできるプログラムお願いします。
2等辺とか、正三角とかの判別です。

お忙しいと思いますがどうかお願いします。
>>854
コマンドラインで数字を渡してる?
856838:04/07/10 01:38
おお!ようかんまんさんありがとうございます!感謝です('-'*)
直角二等辺三角形とかは?
#include <stdio.h>
#include <string.h>
#include <math.h>

double Triangular(int a,int b,int c,char *kind){
double s = (a+b+c)/2;
s = sqrt(s*(s-a)*(s-b)*(s-c));
if(a == b && b == c ) strcpy(kind,"正三角形");
else if(a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a){
if(a == b || b == c || a == c) strcpy(kind,"直角二等辺三角形");
else strcpy(kind,"直角三角形");
}else if(a == b || b == c || a == c) strcpy(kind,"二等辺三角形");
else strcpy(kind,"不等辺三角形");
return s;
}

int main(){
int a, b, c;
double s;
char kind[100], gc[100];
printf("A="); a=atoi(gets(gc));
printf("B="); b=atoi(gets(gc));
printf("C="); c=atoi(gets(gc));
s = Triangular(a, b, c, kind);
printf("%s 面積=%f",kind,s);
return 0;
}
以下の(1)〜(3)の全処理をこの順に行うプログラムを作成してください。
(1) ファイルから以下のフォーマット書籍データを読み込み、構造体に格納する。
   ファイルは /lesson/cs.endo/04Prog1/biblio.txtからコピーして使用する。
 
   書籍データのファイルの抜粋(「著者名」,「書名」,「出版社」,「発行年」の4つの属性がそれぞれカンマで区切られ、1行に1書籍のデータが格納されている)
 (例)B.W.Kernighan & D.M.Ritchie,The C Programming Language,Practice Hall,1988
H.M.Deitel & P.J.Deitei,C How to Program,Prentice Hall,2001

(2) (1)で読み込んだ書籍データすべてを、発行年の昇順に並べ替えて次の形式でファイル(ファイル名 formatted.txt)に出力する。
   ただし並べ替えのアルゴリズムは何を使ってもよいです。まだ、各書籍データの区切りには空白一行を1つ入れてください。
 (例)Author: Brian W. Kernighan & Dennis M. Ritchie
    Title: The C Programming Language
    Publisher: Prentice Hall
    Year: 1988

(3) 書籍データの書名に現れるすべての相異なる単語の出現頻度を求め、標準出力に書き出してください。
   ここで、単語は出現した順に並べるものとします。また、大文字は小文字に読み替え、両者を区別しないでください。
   また、単語のうち次の冠詞と前置詞 a, the, by, in, on, of, to, with は除外し、カウントしないでください。

という課題があるのですが、助けてください。誰かお願いします。
どこまで分かった?
a・w・k
(1)だけ出来た。
(2)まで出来た。
864デフォルトの名無しさん
>>859
(3)がマンドクセ('A`)