C/C++の宿題やらせてください。7代目。
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG今まで1年*ヶ月、ほとんど毎日休まず一生懸命C++を勉強してきた。
わからない宿題若しくは処理があったら私にやらせてくださいm(_ _)m
5代目(前スレ): http://pc2.2ch.net/test/read.cgi/tech/1051594046/l50
4代目: http://pc2.2ch.net/test/read.cgi/tech/1045074808/l50
3代目: http://pc2.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
宿題手伝いますYO!!: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html
ラウンジ:質問が長い時はココを使うと便利
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
前スレ
http://pc2.2ch.net/test/read.cgi/tech/1053045530/l50
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG乙
0004デフォルトの名無しさん
NGNG教えてください。
次レスのプログラムを参考にして
ファイルの最後から逆に単語を読み込んで
順次標準出力に出力させるプログラムを作成してください。
単語中の文字列の並びも反対になり、
一度ファイルの最初から読み込んで配列に格納したのち,
後ろから出力させるのは不可。
例:ファイルが次のようだとすると
sora kamo ai u_eda
次のような出力をするプログラムを書く。
ade_u ia omak aros
よろしくおねがいします。
00054
NGNG#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#define ON 1
#define OFF 2
#define MAXWORD 10
#define MAXWORDLEN 32
#define MAX 300
#define MemoryErr(where) fprintf(stderr,"Memory full in " #where "\n", where)
int NowMaxSize;
00064つづき
NGNG{
char c;
char StoreFlg;
int i;
i = 0;
StoreFlg = OFF;
while(( c = getc(Infile)) != EOF )
{
if( c != ' ' )
{
StoreFlg = ON;
word[i++] = c;
if( i >= MAXWORDLEN ) return 0;
}
else if( StoreFlg )
{
word[i++] = '\0';
return 1;
}
}
return EOF;
}
00074つづき
NGNG{
int i, j, ran[MAX];
char **word;
char oneword[MAXWORDLEN];
int wordlen, wordnum = 0;
NowMaxSize = MAXWORD;
00084つづき
NGNG{
if( !wordlen )
{
fprintf( stderr, "Delimiters are not found...\n" );
}
else
{
printf( " %s (%d) \n", oneword, wordlen-1 );
if( wordnum >= NowMaxSize )
{
NowMaxSize += MAXWORD;
if( ( word = ( char ** ) realloc( word, NowMaxSize * sizeof( char * ) ) ) = NULL )
{
MemoryErr(3);
exit(-1);
}
}
if( ( word[wordnum] = ( char * ) calloc( wordlen, sizeof( char ) ) ) = NULL )
{
MemoryErr(5);
exit(-1);
}
strcpy( word[wordnum++], oneword );
}
}
0009デフォルトの名無しさん
NGNG前にも同じものなかったか?
00104つづき
NGNGfor( j = 0; j < MAX; j++ )
{
ran[j] = 0;
}
for( j = 0; j <= wordnum; j++ )
{
i = rand() % wordnum;
if( ran[i] != ON )
{
fprintf( Outfile, "\t word[%d] %s\n", i, word[i] );
ran[i] = ON;
}
}
}
00114つづき
NGNG{
FILE *Infile, *Outfile;
if( ( Infile = fopen( argv[1], "r" ) ) == NULL )
{
fprintf( stderr, "Can not open %s\n", argv[1] );
exit(0);
}
else if( ( Outfile = fopen( argv[2], "w" ) ) == NULL )
{
fprintf( stderr, "Can not open %s\n", argv[2] );
exit(0);
}
ReadWord( Infile, Outfile );
fclose ( Infile );
fclose ( Outfile );
return (0);
}
0013デフォルトの名無しさん
NGNG3を入れると 「1,1,1」 「1,2」 「2,1」 「0,3」 と
出すにはどうすればいいのですか?
00149
NGNGとりあえず、オレならこうする。
/* 全角空白が入ってるから、そのままコピペするなよ! */
#include <stdio.h>
int main( int argc, char **argv )
{
/* ***** 内部変数定義 ***** */
FILE *iFp;
int iCh;
int i;
if( argc==2 ) /* コマンドライン引数簡易チェック */
{
/* ***** 指定ファイルを開く ***** */
iFp = fopen( argv[1], "r" );
for( i=1; !fseek(iFp,-i,SEEK_END); i++ ) /* ファイルの終端から先頭までループ */
{
/* ***** 1文字読み出し表示 ***** */
iCh = fgetc( iFp );
putchar( iCh );
}
}
return 0;
}
0015前スレ948
NGNGスタックからキューに直したプログラムもお願いします。
00164
NGNGおお!早い!!
ありがとうございます。
ちなみにそのプログラムを参考にするプログラムのどのへんに
入れればいいんですか?
参考にするプログラムは単語ごとの順番をランダムに出力するのは
わかるのですが微妙に理解できていないので‥‥
0017何が悪いですか?
NGNGvoid Hanoi(int n, char a, char b, char c);
void moveDisk(int n, char a, char b);
int main(){
int Nnm;
char a,b,c;
scanf("%d",&Num);
Hanoi(Num,a,b,c);
}
void Hanoi(int n, char a, char b, char c)
{
if (n > 0) {
hanoiTower(n-1, a, c, b);
moveDisk(n, a, c);
hanoiTower(n-1, b, a , c);
}
}
void moveDisk(int n, char a, char b)
{
printf("No.%dのディスクを棒%cから棒%cに移動せよ。\n", n, a, b);
}
0019デフォルトの名無しさん
NGNG頭。
取り敢えず関数名が間違っているのと変数名が間違っている。
つーか、エラーメッセージくらい読めるだろ?
00239
NGNG訂正
/* 全角空白が入ってるから、そのままコピペするなよ! */
#include <stdio.h>
int main( int argc, char **argv )
{
/* ***** 内部変数定義 ***** */
FILE *iFp;
int iCh;
int i;
if( argc==2 ) /* コマンドライン引数簡易チェック */
{
/* ***** 指定ファイルを開く ***** */
iFp = fopen( argv[1], "r" );
for( i=1; !fseek(iFp,-i,SEEK_END); i++ ) /* ファイルの終端から先頭までループ */
{
/* ***** 1文字読み出し表示 ***** */
iCh = fgetc( iFp );
putchar( iCh );
}
/* ***** ファイルを閉じる ***** */
fclose( iFp );
}
return 0;
}
0024何が悪いですか?
NGNGすみません。単なる打ち間違えです。それは愛嬌ということで。
これだと
…棒 から棒 へ…
の部分が空白で表示されちゃうんです。
0025デフォルトの名無しさん
NGNG俺ならこうするが・・・
#include <stdio.h>
void f(FILE *i){int c;if(EOF!=(c=getc(i))){f(i);putchar(c);}}
int main(void){f(stdin);return 0;}
00269
NGNG>printf("No.%dのディスクを棒%cから棒%cに移動せよ。\n", n, a, b);
printf("No.%dのディスクを棒%dから棒%dに移動せよ。\n", n, a, b);
だろ?
0028デフォルトの名無しさん
NGNGHanoi(Num, 'a', 'b', 'c');
0029デフォルトの名無しさん
NGNG利口そうでなんとやら。
main()をよく読め。
0030何が悪いですか?
NGNGchar a,b,c
なのに?
0031デフォルトの名無しさん
NGNGvoid inserttail(struct node *p, ET x) {
struct node *tail = gettail(p);
insertafter(tail, x);
}
insertafterの代わりに使ってくれ。
そういやぁvoidも使ってねーな。
0032デフォルトの名無しさん
NGNG大学2年の基礎C言語の授業です。
�@
行列の掛け算を行います、行列aとbは4行4列とします。行列aの要素の値は、
各自決めたください。行列bは単位行列とします。
計算はマトリクスの積を使うと便利。
�A
単制度実数型の配列を4行3列で宣言します。各要素の値は、行と列の和とします。例えば、
二行三列の場所は2+3=5とします。まず、配列を表示し、その後、配列に係数3を掛けます。
3倍された結果をはじめと同じように表示します。表示するときは、
小数点以下二桁まで表示します。
お願いします。
ぺこり。
0033何が悪いですか?
NGNGありがとうございます!!
0034デフォルトの名無しさん
NGNG>>14>>23は遅すぎ
バグありだけど、これを参考にしろ>>4
http://pc2.2ch.net/test/read.cgi/tech/1053045530/774
0035デフォルトの名無しさん
NGNG突っ込み所満載だが・・・
#include <stdio.h>
#include <string.h>
static char buf[1024];
static void foo( int rest, char* pos )
{
char tmp[16];
int i, len;
if( rest == 0 ){
*pos = NULL;
printf( "%s\n", buf );
return;
}
for( i = 1; i <= rest; i++ ){
sprintf( tmp, "%d,", i );
len = strlen( tmp );
strcpy( pos, tmp );
foo( rest - i, pos + len );
}
}
int main( void )
{
int max;
scanf( "%d", &max );
foo( max, buf );
return( 0 );
}
0036デフォルトの名無しさん
NGNGああん、そのまま提出したらつっこまれるよう
トラップを色々仕掛けておいたのに、
ばらしちゃうんだもんなあw
しょぼいトラップはまだ残ってるけどw
0037デフォルトの名無しさん
NGNG> 計算はマトリクスの積を使うと便利。
この一文が謎で手を着けかねているのだが、
「行列の掛け算=マトリクスの積」
ではないの?
0038デフォルトの名無しさん
NGNG計算なんてしなくてもいいんじゃねぇか?
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNGでなけりゃ行列 a を、そのまま表示すれば済んでしまうし。
確認がしやすいように単位行列か。
#include <stdio.h>
int main()
{
int i,j;
int a[4][4],b[4][4];
/*ここで行列 a を好きなように作ってくれ*/
/*単位行列 b の作成*/
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
if(i-j)
b[i][j]=0;
else
b[i][j]=1;
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",a[i][0]*b[0][j] + a[i][1]*b[1][j] + a[i][2]*b[2][j] + a[i][3]*b[3][j]);
}
printf("\n");
}
return 0;
}
004232
NGNGマトリクス計算とは、要は普通の行列計算のことです。
0043デフォルトの名無しさん
NGNG一つだけが正であれば、「一つが正です。」と、そうでなければ、
「共に正ではありません。」と表示するプログラムを作成せよ
わからないので教えて下さい
0044デフォルトの名無しさん
NGNGif( a>=0 && b>=0 )
{
puts( "共に正です。" );
}
else
{
if( a>=0 || b>=0 )
{
puts( "一つが正です。" );
}
else
{
puts( "共に正ではありません。" );
}
}
0045デフォルトの名無しさん
NGNGどうかその上の部分も…!お願いします
0046デフォルトの名無しさん
NGNGint a,b;
scanf( "%d%d", &a, &b );
0047デフォルトの名無しさん
NGNGあとは頑張ってみます!
0048デフォルトの名無しさん
NGNGなぜelse ifにしない。
0049デフォルトの名無しさん
NGNGhttp://www2.bbspink.com/test/read.cgi/erog/1053601941/
0050デフォルトの名無しさん
NGNG一つだけが0であれば、「一つが0です。」と、そうでなければ、
「共に0ではありません。」と表示するプログラムを作成せよ
わからないので教えて下さい
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGこういうのでいいのかな
#include <stdio.h>
int main(void) {
int n, o;
printf("Input First Number:");
scanf("%d", &n);
printf("Input Second Number:");
scanf("%d", &o);
if (n==0 && o==0) printf("共に0です。\n");
else if (n==0 || o==0)printf("一つが0です。\n");
else printf("共に0ではありません。\n");
return 0;
}
0053マルコ
NGNGお願いします。
なんか直したら普通よりも多くの計算が出来るらしいのですが。
#include<stdio.h>
int fibonacci(int) ;
int main()
{
int result, number;
printf("整数を入力してください:");
scanf("%d", &number);
result = fibonacci (number);
printf("Fibonacci (%d) = %d\n", number, result);
return 0;
}
int fibonacci (int n)
{
if (n == 0 || n == 1) {
return n;
}
else {
return fibonacci(n - 1) + fibonacci (n - 2);
}
}
0054マルコ
NGNGそれと53の問題を再帰関数を使わないようにして
反復に書き直してみてください。
よろしくお願いします。
0055デフォルトの名無しさん
NGNGdouble fibonacci(int) ;
int main()
{
double result;
int number;
printf("整数を入力してください:");
scanf("%d", &number);
result = fibonacci (number);
printf("Fibonacci (%d) = %g\n", number, result);
return 0;
}
double fibonacci (int n)
{
if (n == 0 || n == 1) {
return n;
}
else {
return fibonacci(n - 1) + fibonacci (n - 2);
}
}
非再帰版はどっかに転がってたと思う。このスレか前のスレにはなかった?
0056マルコ
NGNGありがとうございます。
探してみます。
0057マルコ
NGNG質問なんですがdouble型とint型の
フィボナッチの違いは何ですか?
0058動画直リン
NGNG0059うええだ
NGNGよろしくお願いします。
#include <stdio.h>
void hanoi(int n, int x, int y, int z)
{
if (n<1) {
return;
}
hanoi(n-1, x, z, y);
printf("Move disc#%d from %d to %d.\n",n,x,z);
hanoi(n-1, y, x, z);
return;
}
int main()
{
int n;
printf("Enter the number of discs: ");
scanf("%d",&n);
hanoi(n, 1, 2, 3);
return 0;
}
0060デフォルトの名無しさん
NGNGどういうふうに?
0061デフォルトの名無しさん
NGNGdoubleとintの違い。
0062デフォルトの名無しさん
NGNG今日の売上を入力してください.
りんご:200、みかん:300、イチゴ:500、ナシ:800、イチヂク:250
<<本日までの売上>>
りんご:200、みかん:300、イチゴ:500、ナシ:800、イチヂク:250
売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):1
今日の売上を入力してください.
りんご:100、みかん:400、イチゴ:300、ナシ:100、イチヂク:0
<<本日までの売上>>
りんご:300、みかん:700、イチゴ:800、ナシ:1600、イチヂク:250
売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):99
終了します.
006362
NGNGこんな感じでやってみましたが、どうもおかしいようで・・・
void main(void)
{
int account[5],i,input;
initialize(account);
printf("初期化を完了しました.\n");
while(1)
{
printf("売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):");
scanf("%d",&input);
if(input==99)
{
printf("終了します\n");
break;
}
printf("本日の売上を入力してください.\n");
dairy_input(account);
printf("<<本日までの売上>>\n");
dairy_output(account);
}
006462
NGNGって注意事項みたいなことが書かれてますが、どこがおかしいんでしょう?
ご指摘お願いします。
0065デフォルトの名無しさん
NGNG006662
NGNG支店ができ,合計で3店舗となった.3店分の売上を管理できるように
プログラムを拡張したものも課題ででました。
こちらの条件は
(1)3つのユーザ定義関数の定義は書き換えず,そのまま使用する.
(2)データは下図のように各支店の売上を管理する配列を用意し,それぞれへのポインタを格納する配列を使って管理する.
とかかれてます。1問目ができなくて困ってるのに・・・私ダメかも。。。
006762
NGNG(1)データはポインタの配列ではなく,2次元の配列(accounts(店舗番号,商品番号)で管理する.
(2)3つのユーザ定義関数を書き換え,店舗番号を引数として指定できるようにする.(例:dairy_input[店舗番号][商品番号]))
これ3問目なのかな・・・どうしよ。。。すいません助けていただきたいです。。。
006862
NGNGDairy・・・っとー、ちょっと手直してみます。
0069デフォルトの名無しさん
NGNG実装したらいいんでしょうか...
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGとりあえず、「おかしい」とはどうおかしいのか書け
007369
NGNGそれはわかるんだけど...
簡単なサンプルソースつけてもらえないでしょうか?
0074デフォルトの名無しさん
NGNGint i;
for (i = 0; i < 5; i++) {
account[i] = 0;
}
}
void dairy_input(int account[]) {
int i, p;
printf("りんご:");
scanf("%d", &p);
account[0] += p;
printf("みかん:");
scanf("%d", &p);
account[1] += p;
printf("イチゴ:");
scanf("%d", &p);
account[2] += p;
printf("ナシ:");
scanf("%d", &p);
account[3] += p;
printf("イチヂク:");
scanf("%d", &p);
account[4] += p;
}
void dairy_output(int account[]) {
printf("りんご:%d, みかん:%d, イチゴ:%d, ナシ:%d, イチヂク:%d\n\n", account[0], account[1], account[2], account[3], account[4]);
}
0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNGナシの売上が 800+100=1600 になってることだな。
合ってるか?>>62
0077デフォルトの名無しさん
NGNG何がわからないのか良くわからないです。
面倒な部分ははしょってるけど、↓みたいなのでいいですか?
誤解してたらごめん。
//a.hの内容
#if まだ定義してなかったr
#include "b.h"
class b;
class a {
//................
b* pBOject;
}
#endif
//b.hの内容
#if まだ定義してなかたら、
#include "a.h"
class a;
class b {
//..................
a* pAObject;
}
#endif
007832
NGNG0079デフォルトの名無しさん
NGNGint main(void) {
float a[4][3];
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
a[i][j] = i + j + 2;
printf("%5.2f ", a[i][j]);
}
printf("\n");
}
printf("\n");
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
a[i][j] *= 3;
printf("%5.2f ", a[i][j]);
}
printf("\n");
}
return 0;
}
0080デフォルトの名無しさん
NGNGピラミッドにしなくてもOKです。
0081デフォルトの名無しさん
NGNG前スレ
0082デフォルトの名無しさん
NGNG思ったんですが・・
0083デフォルトの名無しさん
NGNG当方大学二年生、今週あたりからプロミングの授業が始まったのですが、教官が
まったく教えることをしないで次の課題をだしてくれました。
100〜999の間の数で「奇数」かつ「各桁の数の和が20」であるものをすべて書き出す
プログラムを組め。
というものなんです。
どうかおねがいします
0084デフォルトの名無しさん
NGNG#include <iostream>
main()
{
for(int i=101; i<=999; i+=2)
{
if(i/100+(i%100)/10+(i%10) == 20)
std::cout << i << std::endl;
}
return 0;
}
0085デフォルトの名無しさん
NGNGchar *fnameと定義されたfnameに格納する。そうするとfnameがその
ファイルネーム(文字列)のアドレスをさしますよね。
それで実際に例えばファイルネームがc:\abcd.txtだったとして画面にはabcd
と表示したいんだけどどうすればいいでしょうか?
0086デフォルトの名無しさん
NGNGfor (ic = 100; ic <= 999; ic++) {
if (ic % 2 == 1 &&
ic / 100 + ic / 10 % 10 + ic % 10 == 20) {
printf("%d\n", ic);
}
}
0087デフォルトの名無しさん
NGNGprintf("%.4s\n", strchr(fname, '\\'));
0088デフォルトの名無しさん
NGNG#include <stdio.h>
int main()
{
puts( "299 389 497 479 587 569 695 677 659 785 767 749 893 875 857 839 983 965 947 929" );
return 0;
}
0089デフォルトの名無しさん
NGNGprintf("%.4s\n", strchr(fname, '\\') + 1);
だ。
0090デフォルトの名無しさん
NGNGstrchrが文字列の先頭から任意の文字アドレスを検索するってのはわかりました。
'\\'部分と+1ってのがわかりません。よかったら解説お願いします。
009185
NGNG0092デフォルトの名無しさん
NGNGその三つの数字には、共通の約数があるかどうかを調べよ。
どうかよろしくお願いします。
0093デフォルトの名無しさん
NGNGint gcd(int x, int y)
{
int z;
if (y)
while ((z = x % y)) {
x = y;
y = z;
}
return abs(y);
}
int a, b, c;
if (gcd(gcd(a, b), c) > 1)
0094デフォルトの名無しさん
NGNG4つの場合(削除したいデータが葉に置かれているとき、削除したいデータが置かれているノードが一人子を持つとき、
削除したいデータの置かれているノードが子を二人持つとき←2パターンある)にわけて削除するということはわかっているのですが。
後ポインタのポインタも使うみたいです。
宜しくお願いします。
0095デフォルトの名無しさん
NGNG必ず1という約数がある。
0096デフォルトの名無しさん
NGNGいきなりコードを書くことを考えずに、
まず、どんな処理をすればよいか日本語で考えてみれ!
箇条書きでも何でもいいから、日本語でやるべき事を書けば、
後はその一つ一つをどうやって実現するか?を考えていけばいい。
009792
NGNG3つの数字を一つずつyakusuu();関数にいれ、
forを使って初めの約数を戻り値とするようにしたのですが、
それだと6、9、12では
共通の約数3があるのに私の考えた方法では2、3、2となってしまい一致せずだめ、となってしまわけです。
日本語が激しくわかりにくくてすいません。
0098デフォルトの名無しさん
NGNGまず、自分がその「共通する約数」が在るかないかを判定する時、
頭の中でどの様に判定しているか考えてみ。
とりあえず、値は例として「6、9、12」でも使ってな。
0099デフォルトの名無しさん
NGNGfor (i = 2; i <= a[0]; i++) {
if ((a[0] % i == 0) && (a[1] % i == 0) && (a[2] % i == 0)) {
printf("common divisor found.\n");
return 0;
}
}
printf("common divisor not found.\n");
return 0;
一応貼るけど
ループ抜ける判定が不十分です
そこは自分でやって
0100デフォルトの名無しさん
NGNG>>93じゃダメなのか?
0101デフォルトの名無しさん
NGNG> printf("%.4s\n", strchr(fname, '\\') + 1);
strchr(fname, '\\')はc:\abcd.txtの\(を差すポインタ)を返す。
それに+1することはその次の文字、即ちaを差す。
よって、printf()にはa(の場所)が渡されるわけだ。
0102デフォルトの名無しさん
NGNG「パスカルの三角形 C言語」でぐぐれば一発
0103デフォルトの名無しさん
NGNGfname からフォルダ名と拡張子を取って表示する
#include <stdio.h>
int main()
{
const char* fname = "a:\\X.Y.Z\\abcd.txt.bak";
char *begin, *end;
for (begin = end = (char *)fname; *end; ++end)
if (*end == '\\')
begin = end + 1;
for (end = begin; *end && *end != '.'; ++end);
printf("%.*s\n", end - begin, begin);
return 0;
}
strchr と strrchr を使って書けば、↑の2個のfor文がこう↓なる
if ((begin = strrchr(fname, '\\')) == NULL)
begin = (char *)fname;
else
begin++;
if ((end = strchr(begin, '.')) == NULL)
end = (char *)fname + strlen(fname);
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNG何らかのデータを出力ファイルに格納するという宿題がでました。
出力ファイル名は12文字以内のフリーフォーマットとします。
考えてるんですが、どう考えていいかさえもわからず悩んでます。
どうかソースをよろしくお願いします。
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNGint main(int argc, char *argv[]) {
FILE *out;
out = fopen(argv[1], "w");
fprintf(out, "Hello world!\n");
fclose(out);
return 0;
}
エラーチェックなし
0108デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
FILE* fp;
if (argc != 2) {
printf("usage: %s filename\n", argv[0]);
exit(1);
}
if (strlen(argv[1]) > 12) {
printf("%s: %s is too long\n", argv[0], argv[1]);
exit(1);
}
if ((fp = fopen(argv[1], "w")) == NULL) {
perror(argv[1]);
exit(1);
}
fprintf(fp, "output filename: %s\n", argv[1]);
fclose(fp);
return 0;
}
0109デフォルトの名無しさん
NGNGこれでコンパイルかけてみます。
0110デフォルトの名無しさん
NGNG何がしたい
0111デフォルトの名無しさん
NGNG適当な関数空間に写像して陽に計算してしまうか
各項の上界が指数的に減少するなどの知識を使って適当な収束判定
0112106
NGNGどうやって足し算していくのか分かりません
0114106
NGNG要はこの問題が分からないんです。絶対値が10^(-15)で計算するのですが
どうやればよいのでしょうか?
0115デフォルトの名無しさん
NGNG#include <stdio.h>
#include <float.h>
#include <math.h>
double cos_Maclaurin(unsigned k, double x)
{
unsigned n = 2 * k;
double r = 1;
for (; n > 0; --n)
r *= x / n;
if (k % 2)
r *= -1;
return r;
}
double sum_infinite(double (*func)(unsigned, double), double x)
{
unsigned n;
double r = 0, rr = 1;
for (n = 0; r != rr; ++n) {
rr = r;
r += func(n, x);
}
return r;
}
int main()
{
double x = -0.23;
printf("cos(%21.14e) = %21.14e (%21.14e)\n",
x, sum_infinite(cos_Maclaurin, x), cos(x));
return 0;
}
0116デフォルトの名無しさん
NGNGC言語を1年ばかり勉強してきたがいまいち実力に不安がある人が
初心者向けの問題をいかに早く解けるを確認することによってカタ
ルシスを得る為にあるわけで、初心者に何かアドバイスするスレと
いうわけでもないので、その点誤解無いように。
0117デフォルトの名無しさん
NGNG整数だけを読み取って表示するにはどうすればいいのですか?
0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG問題1、複利の利率xと単利の利率yで元金vをn年預けた場合、複利の元利合計w1が
単利の元利合計w2の2倍を超えるのは、何年後か。変数の型は、これまで通りとせよ。
ただし、y>xとする。
0120デフォルトの名無しさん
NGNG/*利率*/
#include <stdio.h>
#include <math.h>
void main(void)
{
int x1,x2;
double y1,y2;
int z,i;
double w1,w2;
printf("元金、利率の順に2組、一行ずつ入力してください。\n");
scanf("%ld,%lf",&x1,&y1);
scanf("%ld,%lf",&x2,&y2);
z=w1/w2;
for(z=1;z>=2;z++);
w1=x1*pow((1.0+y2/100.),z*1.0);
w2=x2*pow((1.0+y2/100.),z*1.0);
{printf("%d年目に超えました",z);
}
という感じになりましたけど、うまく出来ないです。
複利と単利の式がうまくかけてないです。
for文を使わないといけないようです。
0121デフォルトの名無しさん
NGNGクラスを識別する学生コード
1101 1年1組の出席簿1番の学生
2315 2年3組の出席簿15番の学生
2年生の3クラスを対象とする。
試験科目は、英語
データの投入は、学生コード、英語の順。
0122デフォルトの名無しさん
NGNG#include <stdio.h>
#include <ctype.h>
#define NCLASS 100
typedef struct {
unsigned grade, class, number, score;
} DATUM;
int parse(char* s, DATUM* d)
{
while (isspace(*s)) s++;
if (!isdigit(*s)) goto error;
d->grade = *s++ - '0';
if (!isdigit(*s)) goto error;
d->class = *s++ - '0';
if (!isdigit(*s)) goto error;
d->number = *s++ - '0';
if (!isdigit(*s)) goto error;
d->number = d->number * 10 + *s++ - '0';
while (isspace(*s)) s++;
if (!isdigit(*s)) goto error;
d->score = 0;
while (isdigit(*s))
d->score = d->score * 10 + *s++ - '0';
if (!isspace(*s)) goto error;
return 0;
error:
return -1;
}
0123122
NGNG{
DATUM d;
double sum[NCLASS] = {};
unsigned num[NCLASS] = {}, lineno = 0;
int i;
char buf[BUFSIZ];
while (fgets(buf, sizeof buf, stdin) != NULL) {
lineno++;
if (!parse(buf, &d)) {
if (d.grade && d.class && d.number) {
sum[d.grade * 10 + d.class] += d.score;
num[d.grade * 10 + d.class]++;
}
else
printf("line %d: invalid datum\n", lineno);
}
else
printf("line %d: invalid format\n", lineno);
}
for (i = 0; i < NCLASS; i++)
if (num[i])
printf("%d年%d組 %2d人 平均 %.2f点\n",
i / 10, i % 10, num[i], sum[i] / num[i]);
return 0;
}
0124山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0125デフォルトの名無しさん
NGNG金額計算という事で、俺は元利合計を int 型にしたけど気に入らなかったら double 型に戻して。
#include <stdio.h>
int main()
{
int principal,i,w1,w2;
double simple,compound;
printf("元金を入力。\n>");
scanf("%d",&principal);
printf("単利を入力。\n>");
scanf("%lf",&simple);
printf("複利を入力。\n>");
scanf("%lf",&compound);
w1=w2=principal;
for(i=1;w2<w1*2;i++)
{
w1+=(int)(principal*simple);
w2+=(int)(w2*compound);
if(!(int)(w2*compound))
{
printf("超えることはありません。\n");
return 0;
}
}
printf("%d 年後に2倍を超えました。\n",i);
return 0;
}
0126追伸
NGNG#include <stdio.h>
int main()
{
int i;
double simple,compound,w1=1.0,w2=1.0;
printf("単利を入力。\n>");
scanf("%lf",&simple);
printf("複利を入力。\n>");
scanf("%lf",&compound);
for(i=0;w2<w1*2;i++)
{
w1+=1*simple;
w2+=w2*compound;
}
printf("%d 年後に2倍を超えました。\n",i);
return 0;
}
0127デフォルトの名無しさん
NGNGisdigit
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNG「五行五列の行列AとBを加えた行列Cを求めるプログラムを作成せよ。
又、Aは先に定義し、Bはキーボード入力、Cは標準出力とする。」
ループがどうとかこうとか…ポインタを使う場合と使わない場合を作るとか言う話でした
0130デフォルトの名無しさん
NGNG別に意味不明ではないが?
0131デフォルトの名無しさん
NGNGポインタ云々はよーわからん
#include <stdio.h>
#define NROW 5
#define NCOLUMN 5
void print_matrix(float m[NROW][NCOLUMN]) {
int i, j;
for (i = 0; i < NROW; i++) {
for (j = 0; j < NCOLUMN; j++) {
printf("%7.2f", m[i][j]);
if (j < NCOLUMN - 1)
putchar(' ');
}
putchar('\n');
}
}
int main() {
float m_A[NROW][NCOLUMN] = {
{ 1, 0, 0, 0, 0, }, { 0, 1, 0, 0, 0, }, { 0, 0, 1, 0, 0, },
{ 0, 0, 0, 1, 0, }, { 0, 0, 0, 0, 1, }, };
float m_B[NROW][NCOLUMN], m_C[NROW][NCOLUMN];
int i, j;
for (i = 0; i < NROW; i++)
for (j = 0; j < NCOLUMN; j++) {
printf("B[%d][%d] = ", i, j);
scanf("%f", &m_B[i][j]);
m_C[i][j] = m_A[i][j] + m_B[i][j];
}
print_matrix(m_C);
return 0;
}
0132100
NGNG(実行例)
初期化を完了しました.
売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):1
今日の売上を入力してください.
りんご:200みかん:300イチゴ:500ナシ:800イチヂク:250
<<本日までの売上>>
りんご:200みかん:300イチゴ:500ナシ:800イチヂク:250
売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):1
今日の売上を入力してください.
りんご:100みかん:400イチゴ:300ナシ:100イチヂク:0
<<本日までの売上>>
りんご:300みかん:700イチゴ:800ナシ:1600イチヂク:250
売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):99
終了します.
0133デフォルトの名無しさん
NGNG{
puts("初期化を完了しました. "
"売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):1 \n"
"今日の売上を入力してください. \n"
"りんご:200みかん:300イチゴ:500ナシ:800イチヂク:250 \n"
"<<本日までの売上>> \n"
"りんご:200みかん:300イチゴ:500ナシ:800イチヂク:250 \n"
"売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):1 \n"
"今日の売上を入力してください. \n"
"りんご:100みかん:400イチゴ:300ナシ:100イチヂク:0 \n"
"<<本日までの売上>> \n"
"りんご:300みかん:700イチゴ:800ナシ:1600イチヂク:250 \n"
"売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):99 \n"
"終了します. ");
return 0;
}
0135のひのひ
NGNGプログラムA
#include<stdio.h>
int prog1(int a, int b){
a=a+10
b=b+20;
return a*b;
}
int main(){
int a=10,b=20,c;
c=prog1(a,b);
printf("a=%d b=%d c=%d\n",a,b,c);
return 0;
}
a=10 b=20 c=800
プログラムB
#include<stdio.h>
int prog1(int *a, int *b){
*a=*a+10;
*b=*b+20;
return *a**b;
}
int main(){
int a=10,b=20,c;
c=prog1(&a,&b);
printf("a=%d b=%d c=%d\n",a,b,c);
return 0;
}
a=20 b=40 c=800
すみませんが、どうかよろしくお願いします!!!
0137デフォルトの名無しさん
NGNGつまらないよ。
0138デフォルトの名無しさん
NGNGネタでないなら、多分説明しても理解できないと思う。
0139デフォルトの名無しさん
NGNGそれは宿題なの?
0140デフォルトの名無しさん
NGNGプログラムAの関数prog1のa,bは、mainのa,bとは別の変数。
関数呼び出し時に、mainのa,bの値がコピーされている。
別の変数なので、prog1のa,bに変更をくわえても、mainのa,bは変化しない。
プログラムBの関数prog1のa,bはポインタ。
関数呼び出し時に、mainのa,bのアドレスがコピーされる。
*演算子を付けた、*a,*bはmainの変数a,bそのものなので、
それに変更をくわえるということは、mainのa,bに変更をくわえることを意味する。
こんな感じでどう?
0141のひのひ
NGNG0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG問題あり。
全てのfloatをintに、printf,scanfのフォーマットを%dに変更せよ。
0144デフォルトの名無しさん
NGNGネタじゃ無かったらマジレスしてやりたいんだがなぁ。
実行例だけじゃなくて、ちゃんと設問を書き写せ。
つか
> りんご:200みかん:300イチゴ:500ナシ:800イチヂク:250
ここ、ちょっと難しいんだよね。
( マルチバイト文字で文字列解析が必要なので )
0145129
NGNG#define NROW 5
#define NCOLUMN 5
void print_matrix(int m[NROW][NCOLUMN]) {
int i, j;
for (i = 0; i < NROW; i++) {
for (j = 0; j < NCOLUMN; j++) {
printf("%d", m[i][j]);
if (j < NCOLUMN - 1)
putchar(' ');
}
putchar('\n');
}
}
int main() {
int m_A[NROW][NCOLUMN] = {
{ 1, 0, 0, 0, 0, }, { 0, 1, 0, 0, 0, }, { 0, 0, 1, 0, 0, },
{ 0, 0, 0, 1, 0, }, { 0, 0, 0, 0, 1, }, };
int m_B[NROW][NCOLUMN], m_C[NROW][NCOLUMN];
int i, j;
for (i = 0; i < NROW; i++)
for (j = 0; j < NCOLUMN; j++) {
printf("B[%d][%d] = ", i, j);
scanf("%d", &m_B[i][j]);
m_C[i][j] = m_A[i][j] + m_B[i][j];
}
print_matrix(m_C);
return 0;
}
これでOKですか?
0146デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
int main(void)
{
const char str[5][9]={"りんご","みかん","イチゴ","ナシ","イチジク"};
int uriage[5]={0};
char s[BUFSIZ];
int num,i;
for(;;)
{
printf("売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):");
gets(s);num=atoi(s);
if(num==1)
{
puts("今日の売上を入力してください.");
for(i=0;i<5;i++){printf("%s:",str[i]);gets(s);uriage[i]+=atoi(s);}
}
else if(num==99)break;
printf("本日までの売上は");
for(i=0;i<5;i++)printf("%s:%d ",str[i],uriage[i]);puts("");
}
return 0;
}
0147デフォルトの名無しさん
NGNG用いて行うプログラムを作成して欲しいのです。
よろしくお願いします。
0148デフォルトの名無しさん
NGNGbsearch関数を利用して要素を探索
*/
#include <stdio.h>
#include <stdlib.h>
/*--- 整数を比較する関数 ---*/
int int_cmp(const int *a, const int *b)
{
if (*a < *b)
return (-1);
else if (*a > *b)
return (1);
else
return (0);
}
0149デフォルトの名無しさん
NGNG{
int i, ky, *p;
int x[7];
int nx = sizeof(x) / sizeof(x[0]);
printf("%d個の整数を昇順に入力してください。\n", nx);
printf("x[0]:");
scanf("%d", &x[0]);
for (i = 1; i < nx; i++) {
do {
printf("x[%d]:", i);
scanf("%d", &x[i]);
} while (x[i] < x[i - 1]);/* 一つ前の値よりも小さければ再入力 */
}
printf("探す値:");
scanf("%d", &ky);
p = bsearch(&ky,/* 探索値へのポインタ */
x,/* 配列 */
nx,/* 要素数 */
sizeof(int),/* 要素の大きさ */
(int (*)(const void *, const void *))int_cmp/* 比較関数 */
);
if (p == NULL)
puts("探索に失敗しました。");
else
printf("%dは%d番目にあります。\n", ky, (int)(p - &x[0]) + 1);
return (0);
}
以上です。期待しています。
0150デフォルトの名無しさん
NGNG読み込んで小さい順にソートし、結果を出力するプログラムを作る。
作ってはみたんですが、例えば50個のデータをソートすることが出来ませ
ん。どうすればいいんですか?
0151デフォルトの名無しさん
NGNG@@ -8,9 +8,9 @@
/*--- 整数を比較する関数 ---*/
int int_cmp(const int *a, const int *b)
{
- if (*a < *b)
+ if (*a > *b)
return (-1);
- else if (*a > *b)
+ else if (*a < *b)
return (1);
else
return (0);
@@ -21,14 +21,14 @@
int i, ky, *p;
int x[7];
int nx = sizeof(x) / sizeof(x[0]);
- printf("%d個の整数を昇順に入力してください。\n", nx);
+ printf("%d個の整数を降順に入力してください。\n", nx);
printf("x[0]:");
scanf("%d", &x[0]);
for (i = 1; i < nx; i++) {
do {
printf("x[%d]:", i);
scanf("%d", &x[i]);
- } while (x[i] < x[i - 1]);/* 一つ前の値よりも小さければ再入力 */
+ } while (x[i] > x[i - 1]);/* 一つ前の値よりも大きければ再入力 */
}
printf("探す値:");
scanf("%d", &ky);
0152151
NGNG頭に-の付いた行を+の行と置換すれ。
0153デフォルトの名無しさん
NGNGちなみに最初に要素の個数を指定することはできません。
0154デフォルトの名無しさん
NGNGhttp://www2.bbspink.com/test/read.cgi/erog/1053601941/
【PC版】Ever17-the out of infinity【大失敗作】
http://www2.bbspink.com/test/read.cgi/erog/1053601941/
【PC版】Ever17-the out of infinity【大失敗作】
http://www2.bbspink.com/test/read.cgi/erog/1053601941/
【PC版】Ever17-the out of infinity【大失敗作】
http://www2.bbspink.com/test/read.cgi/erog/1053601941/
【PC版】Ever17-the out of infinity【大失敗作】
http://www2.bbspink.com/test/read.cgi/erog/1053601941/
【PC版】Ever17-the out of infinity【大失敗作】
http://www2.bbspink.com/test/read.cgi/erog/1053601941/
0155デフォルトの名無しさん
NGNG↓
http://www.dvd-yuis.com/index2.html
0156147
NGNGインデントの件ですが、改行を削除する際に消してしまいすいません。
改行が多いと投稿が出来ないので・・・・。
さっそくコンパイルして実行してみました。
エラーも起きることなく上手くいっているみたいですが、
long型で宣言などしなくても大丈夫なのですか?
問題文にはlong型の配列から・・・・とあるので心配です。
intをLongに置き換えるだけでいいのですか?
お時間がありましたら改良をよろしくお願いします。
0157名無し募集中。。。
NGNG0159147
NGNG全部置き換えてもいいのならそうします(笑)。
よろしくお願いします。
0160デフォルトの名無しさん
NGNG#include <stdio.h>
#include <math.h>
int main() {
int i, n = 100, sign = -1;
double x = 1;
for (i = 2; i <= n; i++) {
x += sign / sqrt(i);
sign *= -1;
}
printf("%g\n", x);
return 0;
}
0161147
NGNGint型なのをlong型にしてもらえるだけで結構です。
急いでいます。よろしくお願いします。
0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNG0165165
NGNG(正弦波がx軸と交差する日)を出力するプログラムを作りなさい。
ヒント:まず今日の日付をy/m/dの形式で入力したとき、今日が今年の何日
めか計算する(関数timeを用いる)。同様に生年月日を入力したとき、その年
の元旦から何日目に当たるかを計算し、うるう年(4で割り切れ、かつ100
では割り切れない年だが、400で割り切れる場合はうるう年とする)を考慮
し、365日または366日から引くことによって、誕生日からその年の年末
までの日数を計算する。そして、例えば身体であれば、それを23で割った剰
余を出し、その剰余が23/2より大きければ23から引き、23/2以下であ
れば23/2から引くと次のよう注意日までの日数が求まる。
お願いします
0166デフォルトの名無しさん
NGNG今日の日付を入力する必要性が感じられないのですが
0167147
NGNG0168デフォルトの名無しさん
NGNGやれるところからやるべし、
うるう年判定関数 うるう年なら戻り値1, 平年なら戻り値0
int uru(int year)
{
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
return 1;
} else {
return 0;
}
}
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG#define N 100
main(){
int i,j,min,x[N];
for(i=0;i<N;i++)
scanf("%d",&x[i]);
for(i=0;i<N-1;i++){
for(j=i+1;j<N;j++){
if(x[i]>x[j]){
min=x[i];
x[i]=x[j];
x[j]=min;
}
}
}
for(i=0;i<N;i++)
printf(" %d ",x[i]);
printf("\n");
}
これを改良してデータ数が100未満でも動くようにして下さい。
0171デフォルトの名無しさん
NGNG#include<stdio.h>
#define N 99
main(){
int i,j,min,x[N];
for(i=0;i<N;i++)
scanf("%d",&x[i]);
for(i=0;i<N-1;i++){
for(j=i+1;j<N;j++){
if(x[i]>x[j]){
min=x[i];
x[i]=x[j];
x[j]=min;
}
}
}
for(i=0;i<N;i++)
printf(" %d ",x[i]);
printf("\n");
}
0172デフォルトの名無しさん
NGNG>>94 と同一人物?
あと前スレでリスト構造のinsert、deleteを作ってくれっていってた人?
いきなり >>169 の書き込みだけじゃ情報が少なすぎるんだけど…
0173デフォルトの名無しさん
NGNGワラタ
0175デフォルトの名無しさん
NGNG戻ってきたな。
>>150 でいってたプログラムを貼り付けたんだね。
標準入力からいくつデータが入るかをプログラムに教えなければならない。
その情報がない。
例えば標準入力で個数をしていするとか、
EOFを検出したとこまで、有効なデータの個数とか。
適当に作ってくれというんならそれでもいいし。
0176デフォルトの名無しさん
NGNG「C言語を使ってサインカーブ(sin(x))の模様を書け」
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
関数(<math.h>を使った式計算のプログラム)に
入ったばかりなのにいきなりです。もうお手上げです。
もちろんprintf(" *\n *\n......なんてのはだめです
0177デフォルトの名無しさん
NGNGprintf("〜");
0179176
NGNG0180176
NGNG0181ためしてないけど、こんな感じ
NGNGfor( 角度 = 0°; 角度 < 360°;角度 += 10°)
{
printf("%*s*", sin( 角度→弧度(角度) ) * 幅 + 幅/2 ) ;
}
0182181
NGNG0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG#include <stdio.h>
#include <math.h>
#define RAZIAN(KAKUDO) 3.141592/(180/KAKUDO)
int main(void)
{
int i,n;
double sinNum[73];
for(i=0;i<=72;i++)
sinNum[i]=sin(RAZIAN((double)(i*5)));
for(i=10;i>=-10;i--)
{
for(n=0;n<=72;n++)
if(sinNum[n]>=(double)i/10-0.05&&sinNum[n]<(double)i/10+0.05)printf("*");
else if(i==0)printf("-");
else printf(" ");
puts("");
}
return 0;
}
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGちなみに問題は
和が一定となるような自然数の列を列挙するプログラムを作成せよ
です
0188186
NGNG0189デフォルトの名無しさん
NGNGうるへー!中卒だからつづりが分からないんだよー。
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNG#include <stdio.h>
#include <time.h>
#define MONSPERYEAR 12
#define SECSPERMIN 60
#define MINSPERHOUR 60
#define HOURSPERDAY 24
#define DAYSPERNYEAR 365
#define DAYSPERLYEAR 366
#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR)
#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY)
#define TM_YEAR_BASE 1900
#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
static const int mon_lengths[2][MONSPERYEAR] = {
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
};
static const int year_lengths[2] = {
DAYSPERNYEAR, DAYSPERLYEAR
};
0192191
NGNGstatic const int bio_cycles[BIORHYTHMS] = {
23, 28, 33
};
static const char* bio_types[BIORHYTHMS] = {
"身体", "感情", "知性"
};
int daysbetween(int y, int m, int d, struct tm* tm)
{
int yt = tm->tm_year + TM_YEAR_BASE;
for (--m; m < MONSPERYEAR; ++m)
d -= mon_lengths[isleap(y)][m];
for (++y; y < yt; ++y)
d -= year_lengths[isleap(y)];
d -= tm->tm_yday + 1;
return -d;
}
0193191
NGNG{
int y, m, d, days, i;
time_t t, tx;
struct tm tm;
char buf[BUFSIZ];
if (fputs("生年月日を入力してください: ", stdout) != EOF &&
fgets(buf, sizeof buf, stdin) != NULL &&
sscanf(buf, "%d/%d/%d", &y, &m, &d) == 3 &&
1 < m && m < MONSPERYEAR &&
1 < d && d < mon_lengths[isleap(y)][m]) {
time(&t);
localtime_r(&t, &tm);
days = daysbetween(y, m, d, &tm);
printf("今日は生まれてから %d 日目\n", days);
for (i = 0; i < BIORHYTHMS; ++i) {
tx = t + SECSPERDAY * ((bio_cycles[i] - days % bio_cycles[i])
% (int)((bio_cycles[i] + 1) / 2));
localtime_r(&tx, &tm);
printf("次の%sの要注意日: %d/%02d/%02d\n", bio_types[i],
tm.tm_year + TM_YEAR_BASE, tm.tm_mon + 1, tm.tm_mday);
}
}
return 0;
}
0194デフォルトの名無しさん
NGNG中学で習うんだろうに。
0195191
NGNG1 <= m && m <= MONSPERYEAR &&
1 <= d && d <= mon_lengths[isleap(y)][m - 1]) {
>>165
今日の日付を聞かないのを作ってしまいました。
0196デフォルトの名無しさん
NGNG中学の時、中学のLVがあれば、わざわざ中卒でない。
0197デフォルトの名無しさん
NGNG#include <stdio.h>
#define KOU_SUU 5//項の数
#define HENIKI 5//それぞれが0~HENIKIの値をとりうる 0が自然数でない派はnum[]を1で初期化して、num[i]=0をnum[i]=1に直す
#define WA 10//表示する和
int main(void)
{
int num[KOU_SUU]={0},i,goukei,show=0;
for(;num[KOU_SUU-1]<=HENIKI;)
{
for(i=KOU_SUU-1,goukei=0;i>=0;i--)goukei+=num[i];
if(goukei==WA)
{
for(i=KOU_SUU-1;i>=0;i--){printf("%d",num[i]);if(i)printf("+");else printf("=");}
printf("%d\n",WA);show++;
if((show%20)==0)getchar();
}
num[0]++;
for(i=0;i<=KOU_SUU-2;i++)
if(num[i]>HENIKI){num[i]=0;num[i+1]++;}
}
return 0;
}
0198176
NGNGでもsin(x)をsin(x-3)pi/5に置き換えて、縦書きにつまり
*
*
*
*
*
*
*
*
*
*
*
*
*
このようにS字にするにはどうすればいいんですか?
0199デフォルトの名無しさん
NGNG#include <stdio.h>
#include <math.h>
#define RAZIAN(KAKUDO) 3.141592/(180/KAKUDO)
int main(void)
{
int i,n,sinNum;
for(i=0;i<=20;i++)
{
sinNum=(int)(sin(RAZIAN((double)(i*18)))*100);
for(n=-100;n<=100;n+=5)
if(n-2<=sinNum&&n+2>=sinNum)printf("*");
else if(n==0)printf("|");
else printf(" ");
puts("");
}
return 0;
}
0200デフォルトの名無しさん
NGNGヒント(もう答え同然かもしれませんけど)くださった>>184さん、>>199さん。
ありがとうございます。
0201191
NGNGちゃんと今日の日付を聞くようにしました。
#include <stdio.h>
#include <time.h>
#define MONSPERYEAR 12
#define SECSPERMIN 60
#define MINSPERHOUR 60
#define HOURSPERDAY 24
#define DAYSPERNYEAR 365
#define DAYSPERLYEAR 366
#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR)
#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY)
#define TM_YEAR_BASE 1900
#define EPOCH_YEAR 1970
#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
static const int mon_lengths[2][MONSPERYEAR] = {
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
};
static const int year_lengths[2] = {
DAYSPERNYEAR, DAYSPERLYEAR
};
0202191
NGNGstatic const int bio_cycles[BIORHYTHMS] = {
23, 28, 33
};
static const char* bio_types[BIORHYTHMS] = {
"身体", "感情", "知性"
};
typedef struct {
int year, mon, day;
} DATE;
int getdays(DATE* from, DATE* to)
{
int i, days = to->day;
for (i = from->mon - 1; i < MONSPERYEAR; ++i)
days += mon_lengths[isleap(from->year)][i];
for (i = from->year + 1; i < to->year; ++i)
days += year_lengths[isleap(i)];
for (i = to->mon - 2; i >= 0; --i)
days += mon_lengths[isleap(to->year)][i];
return days - from->day;
}
0203191
NGNG{
char buf[BUFSIZ];
return (fputs(str, stdout) != EOF &&
fgets(buf, sizeof buf, stdin) != NULL &&
sscanf(buf, "%d/%d/%d", &d->year, &d->mon, &d->day) == 3 &&
d->mon >= 1 &&
d->mon <= MONSPERYEAR &&
d->day >= 1 &&
d->day <= mon_lengths[isleap(d->year)][d->mon - 1]);
}
0204191
NGNG{
DATE from, to, epoch = { EPOCH_YEAR, 1, 1 };
int days, base, i;
time_t t;
struct tm tm;
if (getdate("生年月日を入力してください: ", &from) &&
getdate("今日の日付を入力してください: ", &to)) {
base = getdays(&epoch, &to);
days = getdays(&from, &to);
printf("今日は生まれてから %d 日目\n", days);
for (i = 0; i < BIORHYTHMS; ++i) {
t = SECSPERDAY * ((bio_cycles[i] - days % bio_cycles[i])
% (int)((bio_cycles[i] + 1) / 2) + base);
localtime_r(&t, &tm);
printf("次の%sの要注意日: %d/%02d/%02d\n", bio_types[i],
tm.tm_year + TM_YEAR_BASE, tm.tm_mon + 1, tm.tm_mday);
}
}
return 0;
}
0205デフォルトの名無しさん
NGNG各学生の前期と後期の合計および前後期の総合計を求めるプログラムをつくりなさい。
これどなたかおねげーしますだ。
0206デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
int main() {
int i, j, min, n = 0, alloc = 512 * BUFSIZ, *x;
char buf[BUFSIZ];
x = (int*)malloc(alloc * sizeof(int));
if (x == NULL) goto err;
while (fgets(buf, sizeof buf, stdin) != NULL &&
sscanf(buf, "%d", &x[n]) == 1) {
n++;
if (n == alloc) {
alloc *= 2;
x = (int*)realloc(x, alloc * sizeof(int));
if (x == NULL) goto err;
}
}
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (x[i] > x[j]) {
min = x[i];
x[i] = x[j];
x[j] = min;
}
for (i = 0; i < n; i++)
printf("%d\n", x[i]);
return 0;
err:
fputs("virtual memory exhausted\n", stderr);
return 1;
}
0207デフォルトの名無しさん
NGNGファイルに100個以下のデータ(個数は不明)が入っていてそれをソートできる
ようにしたいんです。
0208デフォルトの名無しさん
NGNG>>206のfgets()のstdinを、自分で開いたストリームのFILE*に変更すればいい。
0209デフォルトの名無しさん
NGNGリダイレクト
0210デフォルトの名無しさん
NGNGいや、それでわかる奴なら質問しないだろうと思ってね。
0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNG#include<stdio.h>
#define N 100
int main(){
int i,j, n, t, min, x[N];
for(i=0;i<N;i++) {
if (scanf("%d", &x[i]) <= 0) {
break;
}
}
n = i;
for(i = 0; i < n - 1; i++){
min = i;
for(j = i + 1; j < n; j++){
if(x[j] < x[min]) min = j;
}
t = x[i];
x[i] = x[min];
x[min] = t;
}
for(i=0;i<n;i++)
printf("%d ", x[i]);
printf("\n");
return 0;
}
0213デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void)
{
int ten[5/*生徒*/][2/*前後*/][3/*科目*/];char str[BUFSIZ];
const char zengo[2][5]={"前期","後期"};int i,n,g;int goukei[2];
for(i=0;i<=4;i++)for(n=0;n<=1;n++)
{
printf("生徒%cの%sの点数は?国語、数学、英語をスペースで区切って入力して下さい\n",i+'A',zengo[n]);
fgets(str, sizeof(str), stdin);
if(sscanf(str, "%d %d %d", &ten[i][n][0],&ten[i][n][1],&ten[i][n][2])!=3)
{puts("入力エラー やり直し");n--;continue;}
for(g=0;g<=2;g++)if(ten[i][n][g]<0||ten[i][n][g]>100){puts("入力エラー やり直し");n--;continue;}
}
puts("\n 前期 後期 総合");
for(i=0;i<=4;i++)
{
for(n=0;n<=1;n++)for(g=0,goukei[n]=0;g<=2;g++)goukei[n]+=ten[i][n][g];
printf("%c%5d%6d%6d\n",i+'A',goukei[0],goukei[1],goukei[0]+goukei[1]);
}
return 0;
}
0214100
NGNG支店ができ,合計で3店舗となって、
3店舗分のプログラムにするにはどうしたらいいでしょうか?
東京支店、神奈川支店、群馬支店のように3店舗ぶんの売り上げを、
表示させたいんですが条件があり
(1)3つのユーザ定義関数の定義は書き換えず,そのまま使用する.
(2)データは下図のように各支店の売上を管理する配列を用意し,
それぞれへのポインタを格納する配列を使って管理する.
この条件をみたしてのプログラムの作り方が、
いまいちわかんないです
0215100
NGNG支店ができ,合計で3店舗となって、
3店舗分のプログラムにするにはどうしたらいいでしょうか?
東京支店、神奈川支店、群馬支店のように3店舗ぶんの売り上げを、
表示させたいんですが条件があり
(1)3つのユーザ定義関数の定義は書き換えず,そのまま使用する.
(2)データは各支店の売上を管理する配列を用意し,
それぞれへのポインタを格納する配列を使って管理する.
この条件をみたしてのプログラムの作り方が、
いまいちわかんないです
0216デフォルトの名無しさん
NGNG0217myth
NGNGdouble fibonacci(int) ;
int main()
{
double result;
int number;
printf("整数を入力してください:");
scanf("%d", &number);
result = fibonacci (number);
printf("Fibonacci (%d) = %g\n", number, result);
return 0;
}
double fibonacci (int n)
{
if (n == 0 || n == 1) {
return n;
}
else {
return fibonacci(n - 1) + fibonacci (n - 2);
}
}
コレを再帰を使わず反復構造を用いて書き換えてください。
お願いします。
0218デフォルトの名無しさん
NGNG{ int temp = *nx;
*nx = *ny;
*ny = *nz;
*nz = temp; }
void sort3(int *n1, int *n2, int *n3)
{ if(*n1 > *n2 && *n2 > *n3)
swap1(n3, n2, n1);
if(*n1 > *n3 && *n3 > *n2)
swap1(n3, n2, n1);
if(*n2 > *n1 && *n1 > *n3)
swap1(n1, n3, n2);
if(*n2 > *n3 && *n3 > *n1)
swap1(n3, n1, n2);
if(*n3 > *n1 && *n1 > *n2)
swap1(n1, n2, n3); }
int main(void)
{ int na, nb, nc;
puts("3つの整数を入力してください。");
printf("整数A"); scanf("%d", &na);
printf("整数B"); scanf("%d", &nb);
printf("整数C"); scanf("%d", &nc);
sort3(&na, &nb, &nc );
puts("これらを昇順に並べました。");
printf("整数Aは%dです。\n", na);
printf("整数Bは%dです。\n", nb);
printf("整数Cは%dです。\n", nc);
return(0); }
3つのint型整数を昇順にならべかえる関数をつくれ
ポインタのところです
うまくいきません 間違いを指摘してください
0219デフォルトの名無しさん
NGNG突っ込み所満載だな…。
まずは、ソートとは何か?から勉強しれ!
0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNGdouble fibonacci(int n)
{
int i;
double d, route5;
if (n == 0 || n == 1) return n;
d = 1;
route5 = sqrt(5);
for (i = 0; i < n - 2; i++) {
d = d * (1 + route5) / 2;
d = round(d);
}
return d;
}
0222デフォルトの名無しさん
NGNG{int a = 0, b = 1;
for (; n != 0; n--) {
int tmp = a;
a += b;
b = tmp;
}
return a;
}
0223218
NGNGまんどくせーからやってちょ
0224デフォルトの名無しさん
NGNGswap1だのsort3だのは誰が作ったんだ?
おまえが作ったのか?
まさか問題で与えられたわけじゃないよな。
3つだからどうにかなってるけど、
もっと多かったらどうなるかちゃんと考えてみろ。
0225218
NGNGswap1 は自分で作りました
もっと多かったらできなくなりますね
どうすればいいんすか?
0226デフォルトの名無しさん
NGNG#include <math.h>
#include <float.h>
double fibonacci(int n)
{
double a = 0, b = 1, c;
for (; n; --n) {
c = a;
a += b;
b = c;
}
if (log(a) > log(2) * DBL_MANT_DIG) {
fputs("もうだめぽ\n", stderr);
a = -1;
}
return a;
}
0227デフォルトの名無しさん
NGNG(;´Д`) エッ
0228デフォルトの名無しさん
NGNG0229218
NGNGやってもらえないでしょうか
3つのint型整数を昇順にならべかえる関数をつくれ
ポインタのところです
void sort3(int *n1, int *n2, int *n3)
これは使ってください。
0230デフォルトの名無しさん
NGNG{int temp = *nx;
if(temp > *ny) {
*nx = *ny;
*ny = temp;}}
void sort3(int *n1, int *n2, int *n3)
{swap1(n1,n2);
swap1(n2,n3);
swap1(n1,n2);}オレモワケワカラン
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG>>1読め
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG問題で与えられてるsort3()関数がおかしいでFA
0235デフォルトの名無しさん
NGNG好きなの選べ
ttp://www1.cts.ne.jp/~clab/Contents/Sortindex.html
0236デフォルトの名無しさん
NGNGint tmp = *a;
*a = *b;
*b = tmp;}
void sort3(int *n1, int *n2, int *n3){
if (*n1 > *n2) swap(n1, n2);
if (*n1 > *n3) swap(n1, n3);
if (*n2 > *n3) swap(n2, n3);}
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG0239myth
NGNGありがとうございました。
0240デフォルトの名無しさん
NGNGそれは求めてるものと違うと思うぞ
0241VB厨
NGNGVCでdao使ってるんですけど
レコードを削除するコードがわかりません
ちゅぼウみたいな質問ですが おしえてください
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNGそう言わずに教えてください 師匠!!
さわりだけでも。
0244myth
NGNGなんかコンパイルできませんでした。
誰か217を教えてください。
0245デフォルトの名無しさん
NGNG>>226
0246動画直リン
NGNG0247デフォルトの名無しさん
NGNG215の続きなんですが、こういった実行例のプログラムを
作っていただけないでしょうか?
(実行例)
初期化を完了しました.
売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):1
今日の売上を入力してください.
【星が丘本店】
りんご:200みかん:300イチゴ:500ナシ:800イチヂク:250
【塩釜口支店】
りんご:200みかん:300イチゴ:500ナシ:800イチヂク:250
【上社支店】
りんご:200みかん:300イチゴ:500ナシ:800イチヂク:250
0248デフォルトの名無しさん
NGNG<<本日までの売上>>
【星が丘本店】
りんご:200みかん:300イチゴ:500ナシ:800イチヂク:250
【塩釜口支店】
りんご:200みかん:300イチゴ:500ナシ:800イチヂク:250
【上社支店】
りんご:200みかん:300イチゴ:500ナシ:800イチヂク:250
売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):1
今日の売上を入力してください.
(以下略)
売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):99
終了します.
0249デフォルトの名無しさん
NGNG#define N 8
void merge(int end_a,int end_b){
int i=0,j=0,k=0,m,a[N],b[N],c[N];
while((i<end_a)&&(j<end_b))
if(a[i]<=b[j]) c[k++]=a[i++];
else c[k++]=b[j++];
if(i>=end_a)
for(m=j;m<end_b;m++) c[m+end_a]=b[m];
else
for(m=i;m<end_a;m++) c[m+end_b]=a[m];
}
void sort(int p,int q){
int i,med,a[N],b[N],c[N],d[N];
if(p<q){
med=(p+q)/2;
sort(p,med);
sort(med+1,q);
for(i=p;i<med;i++)
a[i-p]=d[i];
for(i=med+1;i<=q;i++)
b[i-med-1]=d[i];
merge(med-p-1,q-med);
for(i=p;i<=q;i++)
d[i]=c[i-p];
}
}
0250デフォルトの名無しさん
NGNGmain(){
int i,j,d[N];
printf("Input : ");
for(i=0;i<N;i++)
scanf("%d",&d[i]);
printf("\n");
sort(0,N-1);
printf("Result :");
for(i=0;i<N;i++)
printf(" %d ",d[i]);
printf("\n");
}
マージソートのプログラムを作ったつもりなんですが、コンパイルエラーが
出ないのに動きません。どう改良したら動くようになりますか?
0251デフォルトの名無しさん
NGNGどのように配列dと関数sortが関連を持ってるのかが良くわかりません。
とりあえず、スコープという言葉の意味を調べてみて下さい。
0252デフォルトの名無しさん
NGNG誰かお願いします。解けませんでした。
0253デフォルトの名無しさん
NGNGC++でいいのか?
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNGCでお願いします。
0256デフォルトの名無しさん
NGNG{
ofstream of("gakusei.dat");
of << "名前,数学,英語,国語,理科,社会" << endl;
for(;;)
{
Student st;
cout << "名前?" << endl;
cin >> st.name;
if(st.name == "Q") break;
if(st.name.size() > 20)
{
cerr << "名前永杉" << endl;
break;
}
cout << "数学?" << endl;
cin >> st.math;
cout << "英語?" << endl;
cin >> st.eng;
cout << "国語?" << endl;
cin >> st.jap;
cout << "理科?" << endl;
cin >> st.sci;
cout << "社会?" << endl;
cin >> st.nat;
st.Output(of);
}
}
0257デフォルトの名無しさん
NGNG遅いよ。もうC++で書いちゃったよ。
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
struct Student
{
string name;
int eng, math, jap, sci, nat;
void Output(ostream &os) { os << math << "," << eng << "," << jap << "," << sci << "," << nat << endl; }
}
0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNGありがとうございます。
C++に触れたことないので全然分かりませんでしたが
短時間でこれだけできるのは流石ですね。
もしできたらCのほうでもお願いします。
0260お願いします。
NGNG・もしnが偶数ならば、n/2を新たにnとおく。
・もしnが奇数ならば、3n+1を新たにnとおく。
という操作を繰り返す。どんな自然数nを入力として与えても、
高々有限回の反復で必ず1になるという予想をL.Collatzの予想という。
自然数nを入力したとき、それが1に収束するまでのステップと
そのステップ数を表示するようなプログラムを作成せよ。
お願いします。
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG#include <iostream>
main()
{
int step;
for(step = 0 ;n > 1;step++)
{
n = n % 2 ? n/2 : 3*n+1;
cout << n << endl;
}
cout << "ステップ数:" << step << endl;
}
0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNG●各m=2,3,…,nについて、mが素数ならば『mは素数である』という旨のメッセージを、
そうでない場合はmの自明でない因数分解を一つ、各々表示する。
●2からnまでの素数の個数を数えて、その結果を表示する。
プログラムについて何もわからないので、どうか宜しくお願いします。
0265デフォルトの名無しさん
NGNGできたらお願いします。C++はサパーリでした。
0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNG(1,2)共通
#include <iostream>
using namespace std;
int GetPrime(int n)
{
for(int i=2; i<n-1;i++)
{
if(n%i == 0)
return n;
}
return 0;
}
0268デフォルトの名無しさん
NGNG(1)
main()
{
int n, pr;
cout << "数入れて" << endl;
cin >> n;
pr = GetPrime(n);
if(pr)
cout << pr << "が因数" << endl;
else
cout << n << "は素数" << endl
}
(2)
main()
{
int n, count;
cout << "数入れて" << endl;
cin >> n;
for(int i=2; i<n; i++)
count = GetPrime(n) ? count : count+1;
cout << "素数は" << count << "個" << endl;
}
0269デフォルトの名無しさん
NGNG処理の流れくらいは分かるだろ
0270デフォルトの名無しさん
NGNGここに依頼してるような奴らをなめるな
0271デフォルトの名無しさん
NGNG>174
はいそうです。
どうもすみませんでした。
他にどんな情報が必要になるんでしょうか?
問題が2分探索木のdelete関数を作れなんですよ。
ヒントでポインタのポインタを使うとなっているのですが。
0272デフォルトの名無しさん
NGNG>174
リストの時の構造体の定義は、
typedef struct node{
dataType data ;
struct node *next ;
}nodeType ; /* リストのノードの型 */
です。
0273デフォルトの名無しさん
NGNG2分探索木ぐらいあちこちに落ちてるだろ。
0274デフォルトの名無しさん
NGNGR.セジウィックのアルゴリズム本を買いなさい。
0275172
NGNG> 他にどんな情報が必要になるんでしょうか?
今回はliststructure.hやlist_appli_header.hのようなヘッダファイルはないの?
keyTypeはどのように定義されているんだ?
前のprintAllDataのように既に作ってある関数とかないの?
> 問題が2分探索木のdelete関数を作れなんですよ。
delete関数だけ作れっていう問題なら、既に作ってある関数がいくつか
あると思うんだけど。
欠席したんでもらえなかったというオチ?
0276172
NGNGごめん言い方悪かった。
リストの時のnodeType構造体に相当するものは、今回ないの?
という質問でした。
>>275にも書いたように2文木探索のヘッダファイルを
貼り付けてくれればいいんだけど。
0277初心者プログラマー
NGNG改善できるところがないか添削していただけませんか?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html#1
ここにソースを置いています(c言語のプログラムソースを添削してください(1))
よろしくおねがいします
0278デフォルトの名無しさん
NGNG>276
探したらありました!
●bin_appli_header.h
typedef int keyType ;
typedef struct {
keyType key ;
} dataType ;
typedef struct node {
dataType data ;
struct node *left ;
struct node *right ;
} nodeType ;
int less(keyType, keyType) ;
int equal(keyType, keyType) ;
keyType key(dataType *p) ;
keyType key2(nodeType *p) ;
void setKey(nodeType *p, keyType a_key) ;
void printKey(nodeType *p) ;
0279デフォルトの名無しさん
NGNG>276
●bintreestructure.h
int BSTinit(void) ;
int BSTinsert(dataType *dp) ;
nodeType* BSTsearch(keyType) ;
int BSTdelete(keyType) ;
nodeType *delete_min(nodeType **mp);
void printAllData( ) ; /* print out the data in preorder */
static nodeType *head ;
static nodeType *sentry ;
0280デフォルトの名無しさん
NGNGくだらないスレ二つも立てるなよ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1054220849
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1054220847
ちゃんとこういうスレがあるんだから
宿題のソースはここに置いてね
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
0281初心者プログラマー
NGNG0282デフォルトの名無しさん
NGNG>276
そして、
#include <stdio.h>
#include <stdlib.h>
#include "bin_appli_header.h"
#include "bintreestructure.h"
int BSTinit(void)
{
sentry = (nodeType *)malloc(sizeof(nodeType)) ;
if (sentry == NULL) {
return 0 ;
}
else {
head = sentry ;
sentry->left = sentry->right = sentry ;
return 1 ;
}
}
0283デフォルトの名無しさん
NGNG>276
続き、
int BSTdelete(keyType a_key)
{
/*この部分が宿題*/
}
void printAllData2(nodeType *p)
{
if (p == sentry)
return ;
printKey(p) ;
printAllData2(p->left) ;
printAllData2(p->right) ;
}
void printAllData(void)
{
printAllData2(head) ;
}
こうなってました。よろしくお願いします!
0284デフォルトの名無しさん
NGNGhttp://endou.kir.jp/betu/linkvp/linkvp.html
0285172
NGNG{
nodeType **pp = &head;
while ((*pp) != sentry) {
if (a_key == (*pp)->data.key) {
nodeType *node = *pp;
if (node->left == node->right) *pp = sentry;
else if (node->left == sentry) *pp = node->right;
else if (node->right == sentry) *pp = node->left;
else {
nodeType *p = node->left;
while (p->right != sentry) p = p->right;
p->right = node->right;
*pp = node->left;
}
free(node);
return 1;
}
pp = (a_key < (*pp)->data.key)? &(*pp)->left : &(*pp)->right;
}
return 0;
}
0286デフォルトの名無しさん
NGNGどうもありがとうございます!
コンパイルも問題なく出来ました。
お願いなんですが、リストの時のように解説して頂けますか?
お願いします!
0287デフォルトの名無しさん
NGNGそれなのにint fgetc()なの?
char fgetc()じゃないのでしょうか?
俺すげー勘違いしてる?
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNG×ポインタで指定されてるファイル
○ストリーム
だろ?
0290デフォルトの名無しさん
NGNG>>288も言っているが、0-255のキャラクタとEOFというエラーを返すために
int型になっていると思えばいい。
#古いCがcharを返すことができなかったのは内緒。
0291デフォルトの名無しさん
NGNGこんな宣言がでてきたんですけど
0の後ろのLはどういう意味があるのでしょう?
0292デフォルトの名無しさん
NGNGlong
0293172
NGNG改良版。sentryを有効活用。
int BSTdelete(keyType a_key)
{
nodeType **pp = &head;
nodeType *node;
sentry->data.key = a_key;
while (a_key != (*pp)->data.key) {
pp = (a_key < (*pp)->data.key)? &(*pp)->left : &(*pp)->right;
}
if (*pp == sentry) return 0;
node = *pp;
if (node->left == node->right) *pp = sentry;
else if (node->left == sentry) *pp = node->right;
else if (node->right == sentry) *pp = node->left;
else {
nodeType *p = node->left;
while (p->right != sentry) p = p->right;
p->right = node->right;
*pp = node->left;
}
free(node);
return 1;
}
解説は夜になってしまうかも
0294291
NGNGunsigned long total = 0L;
unsigned long total = 0;
これって違いがあるんですか?
0295デフォルトの名無しさん
NGNGありがとうござます。
夜でもいいので解説待ってます!
0296デフォルトの名無しさん
NGNGdouble d = 0.0;
とするのと同じ。
プログラムを読む人間に対するメッセージとでも。
0297デフォルトの名無しさん
NGNG違いあるのでしょうか?
0298デフォルトの名無しさん
NGNGポインタ変数をつかうの?
0299デフォルトの名無しさん
NGNGfgetc() は関数だが getc() はマクロでも良い。
0300デフォルトの名無しさん
NGNG機能的には同じだが
getcはマクロとして実装されていることがある
0301デフォルトの名無しさん
NGNGしょうもない質問すんな。
するなら「〜の意味を述べよという宿題が出た」とか書くぐらいの頭使え。
0302デフォルトの名無しさん
NGNG学生番号(3桁の整数)と氏名(アルファベットで姓のみ)をメンバとする構造体を定義し,
キーボードから学生番号と氏名を5名分読み込むプログラムを作成しなさい.
ただし,3桁以外の整数値を入力した場合は再入力するようにし,最後に5名分のデータをすべて表示すること.
〔実行結果〕
学生番号(3桁の整数)> 444
氏名(アルファベットで姓のみ)> takeda
…………
学生番号(3桁の整数)> 1100
学生番号(3桁の整数)> 99
学生番号(3桁の整数)> 631
氏名(アルファベットで姓のみ)> Sato
学生番号(3桁の整数)> 107
氏名(アルファベットで姓のみ)> Furukawa
〈5名分のデータ表示例〉
学生番号: 444 氏名: Takeda
学生番号: 221 氏名: Kato
学生番号: 859 氏名: Azuma
学生番号: 631 氏名: Sato
学生番号: 107 氏名: Furukawa
0303デフォルトの名無しさん
NGNGあとCかC++ちゃんと書かないと、
0304172
NGNG冗長な箇所があったので修正
if (node->left == node->right) *pp = sentry;
else if (node->left == sentry) *pp = node->right;
↓
if (node->left == sentry) *pp = node->right;
0305デフォルトの名無しさん
NGNG考えてみたけど上手く動きません。
プロの人どこがおかしいのかおせーてくだせーませ
#include <stdio.h>
int main(void)
{
struct Seito{
int num;
int name[30];
} S_s[5];
int i;
for(i = 0; i < 5; i++){
do{
printf("学生番号(3桁の整数)>");
scanf("%d",&S_s[i].num);
}
while(S_s[i].num < 100 || S_s[i].num > 999);
printf("氏名>");
gets(S_s[i].name);
}
for(i = 0; i < 5; i++){
printf("学生番号:%d 氏名:%s\n",S_s[i].num,S_s[i].name);
}
return 0;
}
0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNGじゃないかな。
0308デフォルトの名無しさん
NGNGそのまま素通りなのです。
getsが何故か働いてくれない
0309デフォルトの名無しさん
NGNG受け取るのか弾くのか
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNGttp://www.google.co.jp/search?q=%8C%C4%82%D1%8Fo%82%B5%82%F0%94%F2%82%CE%82%B5%82%C4%82%A2%82%E9%82%E6%82%A4%82%BE
0312デフォルトの名無しさん
NGNG0313305
NGNGscanfとgets使うなといわれても何を使えばいいのか。
プロの人ならどう書くのでしょう?
0314デフォルトの名無しさん
NGNG再度C FAQを熟読しなさい。
fgetsしてsscanfすれと書いてあるだろうが。
0315デフォルトの名無しさん
NGNG名前にアルファベット以外を使った時の扱いは?
0316デフォルトの名無しさん
NGNG0317305
NGNG突込みどころあったら教えてもらいたいです。
ちなみに俺は>>302じゃないす。
#include <stdio.h>
int main(void)
{
struct Seito{
int num;
int name[30];
} S_s[5];
int i;
int buf[30];
for(i = 0; i < 5; i++){
do{
printf("学生番号(3桁の整数)>");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&S_s[i].num);
}
while(S_s[i].num < 100 || S_s[i].num > 999);
printf("氏名>");
fgets(S_s[i].name,sizeof(S_s[i].name),stdin);
}
for(i = 0; i < 5; i++){
printf("学生番号:%d 氏名:%s\n",S_s[i].num,S_s[i].name);
}
return 0;
}
0318デフォルトの名無しさん
NGNGscanfやgets問題はエラーチェック。整数を入力して欲しい所で文字列を入力
したり、2つの要素を入力して欲しい所で1つや3つだったりすると、プログラムが
おかしくなる。scanfやgetsでも、後々何か足すことでエラーチェックは出来るが、
単独で使うことは、テスト用に作った小さいものぐらい。
fgets、sscanfコンボは、エラーチェックが出来る物でいちばん有名で、精度も
高く、簡単に出来るから使われる。さっきも書いたようにエラー入力と扱いたい所
は、型と要素数だが、それが簡単に出来る。
まず、fgetsでバッファに格納する。入力する文字列をBUFSIZにして、getsでも
いいが、長さを自由に変えられるfgetsの方が良い。次に入力した文字列をsscanf
で分解していく。欲しい要素が名前、年齢、血液型、年収の時、型は左から%s、%d
、%s、%ld、となる。Tarou 25 AB 6000000と正しく入力すると、sscanfは4を
返す。Tarou 25 ABと要素を少なく入力すると、今度は3を返す。Tarou Zirou AB
6000000と型を間違えて入力すると、sscanfは0を返す。
つまり、入力して欲しい要素数とsscanfの戻り値が同じ時以外、全てエラー入力
だったことに成るので、そこだけをチェックすれば、エラーチェックを出来たこと
になるから、簡単に正しく出来るということで、よく使われる。
0319デフォルトの名無しさん
NGNG・もしnが偶数ならば、n/2を新たにnとおく。
・もしnが奇数ならば、3n+1を新たにnとおく。
という操作を繰り返す。どんな自然数nを入力として与えても、
高々有限回の反復で必ず1になるという予想をL.Collatzの予想という。
自然数nを入力したとき、それが1に収束するまでのステップと
そのステップ数を表示するようなプログラムを作成せよ。
学校の宿題なんですが、始まったばかりで最初に#include<stdio.h>とか書くくらいしかわかりません。
くだらない問題かもしれませんが、どうかお願いします。
0320デフォルトの名無しさん
NGNG>>262
0321デフォルトの名無しさん
NGNGscanf()は工夫すれば何とかなるが、gets()はオーバーフローがまったくチェッ
クできない。
0322デフォルトの名無しさん
NGNGそれを用いたプログラムを作成しなさい。
関数:int strext(s,t,m,n)
引数:char *s 抽出された文字列部分の先頭アドレス
char *t 与えられた文字列の先頭アドレス
int m 抽出する開始位置(文字列の左端を0)
int n 抽出する文字列部分の長さ
戻り値:抽出成功のとき1、失敗で0
たとえば、"thunderbird",2,6と入力すると、関数は1を返して、"under"と出力する。
試行錯誤してみたんですが・・・
0323323
NGNGポアソン分布に従うとき、1分ごとのアクセス要求の系列を
生成するプログラムを作成しなさい
お願いします
0324デフォルトの名無しさん
NGNG> たとえば、"thunderbird",2,6と入力すると、関数は1を返して、"under"と出力する。
引数nはNULを含めるの?
0325デフォルトの名無しさん
NGNGint strext(char *s, const char *t, size_t m, size_t n)
{
if (m + n > strlen(t))
return 0;
memcpy(s, t + m, n);
*(s + n) = '\0';
return 1;
}
0326デフォルトの名無しさん
NGNG{
while (m && *t) {
*t++;
m--;
}
while (n && *t) {
*s++ = *t++;
n--;
}
*s = 0;
return (!m && !n);
}
0327デフォルトの名無しさん
NGNG名前: 頭脳土方
E-mail: [email protected]
内容:
現調にいってくれるひと募集。
5月31〜6月1日 宿泊費、交通費、でます。
もちろん、現調なのでお金払います。(値段は相談)
C++が分かる人。開発室と電話連絡しながら、
コンパイルしたりテストしたり、してください。
メール [email protected]
もまいら、よろしくおねがいします。
0328デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG宿題にならないだろ
0332デフォルトの名無しさん
NGNG修正版
int strext(char *s, const char *t, size_t m, size_t n)
{
while (m && *t) {
t++;
m--;
}
while (n-- && n && *t)
*s++ = *t++;
*s = 0;
return !m && !n;
}
0333デフォルトの名無しさん
NGNGCらしくない仕様の関数だね。
0334デフォルトの名無しさん
NGNG> 戻り値:抽出成功のとき1、失敗で0
成功と失敗の基準は?
0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNG#include <time.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define drand() (((double)rand())/RAND_MAX)
int
poisson(double lambda)
{
int k;
for(k=0, lambda=exp(lambda)*drand(); lambda>1; k++) lambda*=drand();
return k;
}
int
main(int argc, char **argv)
{
int n,m; double lambda;
srand(time(NULL));
n = m = argc > 1 ? abs(atoi(argv[1])) : 20;
lambda = argc > 2 ? abs(atof(argv[2])) : 5;
while(m--) printf("%d ", poisson(lambda)); puts("");
return 0;
}
0337デフォルトの名無しさん
NGNG>>264のプログラムに用いたアルゴリズムの説明を添えろとのことなのですが、
そもそも根本からわからないのでどうかお願いします。
0338デフォルトの名無しさん
NGNG「面白いのを作れ」と言ったんです。
創造力の無い僕はブロックの影にエロ画像でもいれとくか、とか考えたのですが、
何処かにイイ画像は無いですか?
老若男女全ての人が見て、綺麗、エッチなのがここで言うイイ画像です。
とりあえず現状で使用を考えてるのは Pasera です。
0339デフォルトの名無しさん
NGNGPaseraで問題無し。
0340デフォルトの名無しさん
NGNGモナー仕込め
0341デフォルトの名無しさん
NGNGdouble factorial(int )
を用いるのではなく、
53!≒4.27*10^69を使いたいのです。
Cでよろしくお願いします。
0342デフォルトの名無しさん
NGNG掛け算をしたあとに10で割る。
0343デフォルトの名無しさん
NGNGint main(void) {
double n, i;
n = 4.27e+69;
for (i = 53; i > 0; i--) {
printf("%3.2e\n", n);
n /= i;
}
return 0;
}
0344デフォルトの名無しさん
NGNG問題が意味不明だが、こういうことか?
#include <stdio.h>
#include <math.h>
double factorial(unsigned n)
{
static double C;
static double E;
if (C == 0) {
C = sqrt(2 * acos(-1));
E = exp(1);
}
return C * pow(n, n + .5) / pow(E, n);
}
int main()
{
int i;
for (i = 1; i <= 53; i++)
printf("%d! = %.2e\n", i, factorial(i));
return 0 ;
}
0345デフォルトの名無しさん
NGNGstruct num { double x; int y; };
struct num product(struct num n, int i) {
n.x *= i;
while (n.x > 10) {
n.x /= 10;
n.y += 1;
}
return n;
}
struct num factorial(int i) {
struct num n;
n.x = 1;
n.y = 0;
while (i > 0) n = product(n, i--);
return n;
}
void print_factorial(int i) {
struct num n = factorial(i);
printf("%02d!=%1.2f*10^%02d\n", i, n.x, n.y);
}
int main(void) {
int i;
for (i=1; i<=53; i++)
print_factorial(i);
return 0;
}
0346デフォルトの名無しさん
NGNG#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char **argv)
{
int i,j;
for(i=1;i<=53;i=j) printf("%2d! = %.2e%s",i,exp(lgamma(j=i+1)),i%5?" ":"\n");
return 0;
}
0347デフォルトの名無しさん
NGNG下のプログラムを名前(氏名)のアルファベット順に
構造体のリストに登録するように変更せよ。
1 #include <stdio.h>
2
3 /* 構造体型GAKUSEIの定義 */
4 typedef struct gakusei{
5 char name[11];
6 int kokugo;
7 int suugaku;
8 int rika;
9 int syakai;
10 int eigo;
11 struct gakusei *next;
12 } GAKUSEI;
13
14
15 main(){
16 GAKUSEI start_dmy; /* リストの先頭の構造体変数(データは入らない) */
17 GAKUSEI *ptr; /* 作業用のポインタ */
18 GAKUSEI *new_ptr; /* 新しく確保した領域を指すポインタ */
19
20 ptr = &start_dmy; /* 作業用のポインタを先頭の要素を指すようにする */
0348347
NGNG22 while(1){
23
24 /*** 構造体1個分の領域を確保する ***/
25 new_ptr = (GAKUSEI *)malloc(sizeof(GAKUSEI));
26 if(new_ptr == NULL){
27 printf("メモリを確保できませんでした。\n");
28 exit(1);
29 }
30
31 /*** キーボードからの学生データの入力 ***/
32 printf("氏名を入力してください:");
33 scanf("%s", new_ptr->name);
34 if(strcmp(new_ptr->name, "Q")==0){ /* 名前の入力がQだったら入力終了 */
35 break;
36 }
37 printf("国語の点数:");
38 scanf("%d", &new_ptr->kokugo);
39 printf("数学の点数:");
40 scanf("%d", &new_ptr->suugaku);
0349347
NGNG42 scanf("%d", &new_ptr->rika);
43 printf("社会の点数:");
44 scanf("%d", &new_ptr->syakai);
45 printf("英語の点数:");
46 scanf("%d", &new_ptr->eigo);
47
48 /*** 新しく確保した領域をリストの最後に繋げる ***/
49 ptr->next = new_ptr; /* これまでの最後の構造体のメンバnextを
50 新しく確保した領域を指すように変更 */
51 new_ptr->next = NULL; /* 新しく確保した構造体のメンバnextを
52 NULLに設定 */
53 ptr = new_ptr; /* 作業用のポインタを新し領域を指すよ
54 うに変更 */
55 }
56
57 printf("\n\n\n");
58 for(ptr = start_dmy.next ; ptr!=NULL ; ptr=ptr->next){
59 printf("氏名:%10s ", ptr->name);
60 printf("国語:%3d ", ptr->kokugo);
61 printf("数学:%3d ", ptr->suugaku);
62 printf("理科:%3d ", ptr->rika);
63 printf("社会:%3d ", ptr->syakai);
64 printf("英語:%3d\n", ptr->eigo);
65 }
66 }
0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNG0352347修正
NGNG下のプログラムを名前(氏名)のアルファベット順に
構造体のリストに登録するように変更せよ。
#include <stdio.h>
/* 構造体型GAKUSEIの定義 */
typedef struct gakusei{
char name[11];
int kokugo;
int suugaku;
int rika;
int syakai;
int eigo;
struct gakusei *next;
} GAKUSEI;
main(){
GAKUSEI start_dmy; /* リストの先頭の構造体変数(データは入らない) */
GAKUSEI *ptr; /* 作業用のポインタ */
GAKUSEI *new_ptr; /* 新しく確保した領域を指すポインタ */
ptr = &start_dmy; /* 作業用のポインタを先頭の要素を指すようにする */
0353347修正
NGNGwhile(1){
/*** 構造体1個分の領域を確保する ***/
new_ptr = (GAKUSEI *)malloc(sizeof(GAKUSEI));
if(new_ptr == NULL){
printf("メモリを確保できませんでした。\n");
exit(1);
}
/*** キーボードからの学生データの入力 ***/
printf("氏名を入力してください:");
scanf("%s", new_ptr->name);
if(strcmp(new_ptr->name, "Q")==0){ /* 名前の入力がQだったら入力終了 */
break;
}
printf("国語の点数:");
scanf("%d", &new_ptr->kokugo);
printf("数学の点数:");
scanf("%d", &new_ptr->suugaku);
0354347修正
NGNGscanf("%d", &new_ptr->rika);
printf("社会の点数:");
scanf("%d", &new_ptr->syakai);
printf("英語の点数:");
scanf("%d", &new_ptr->eigo);
/*** 新しく確保した領域をリストの最後に繋げる ***/
ptr->next = new_ptr; /* これまでの最後の構造体のメンバnextを
新しく確保した領域を指すように変更 */
new_ptr->next = NULL; /* 新しく確保した構造体のメンバnextを
NULLに設定 */
ptr = new_ptr; /* 作業用のポインタを新し領域を指すよ
うに変更 */
}
printf("\n\n\n");
for(ptr = start_dmy.next ; ptr!=NULL ; ptr=ptr->next){
printf("氏名:%10s ", ptr->name);
printf("国語:%3d ", ptr->kokugo);
printf("数学:%3d ", ptr->suugaku);
printf("理科:%3d ", ptr->rika);
printf("社会:%3d ", ptr->syakai);
printf("英語:%3d\n", ptr->eigo);
}
}
0356172
NGNG>>293 + >>304 の解説
左の方から昇順になっている2分木から引数a_keyと一致するkeyをもつ要素を削除する関数。
return 0; までが要素を探している部分。その後が木から要素を削除している部分。
リストでは要素を削除にするためには、1つ前の要素をもっていれば良かった。
その要素の次を示すのがnextだけだったからである。
今回はleftとrightがあるので、前の要素をもっていてもどちらに削除の要素が付いているのか
わかりづらい。そのため、ポインタのポインタのppを使ってleft、right(あとhead)を
もつようにしている。
要素を探している部分は、「番兵」という技法を使っている。
木の端(葉の先)には必ずsentryが指すものがあるが、これのkeyにa_keyを代入すると、
この木は必ずa_keyと一致するkeyをもつ要素があるということになり、
ループの終了条件を一致するまでとすることができる。
左から昇順になっているので、今*ppが指しているの要素がa_keyよりも大きければ、
leftを小さければrightを辿る。
一致した要素が見つかったら、それが前に仕込んだ番兵かどうかを確認し、
番兵だったら木の中には、一致するものがなかったということになる。
0357172
NGNGfreeで削除する要素をnodeでもつようにする。
削除した要素を埋めるのはleftかrightかがもつ要素になる。
leftに有効な要素がない(== sentry)のなら、rightで埋める。
このときrightもsentryかもしれないが、その場合*ppにはsentryを入れることになるので
構わず代入する。同様にrightに有効な要素がないのなら、leftで埋める。
else節は両方とも有効な要素がある場合となる。
このときどちらにするかはいろいろ考え方はあるが、今回はシンプルにleftで
埋めることにした。ただright側の要素を指すものがなくなってしまうので、
leftが指す木の一番右にある要素をループを使って探し、その更に右に
rightの要素を付けている。
木の変更が終わったらfreeで削除。
0358デフォルトの名無しさん
NGNGこの関数を追加して、
void insert(GAKUSEI* list, GAKUSEI* new)
{
GAKUSEI* prev = list;
for(list = list->next; list; prev = list, list = list->next)
if (strcmp(list->name, new->name) > 0)
break;
new->next = list;
prev->next = new;
}
48-54行目を消して、替わりに↓を書く。
insert(&start_dmy, new_ptr);
0359デフォルトの名無しさん
NGNGこれってソートもしないといけないのか?
0360デフォルトの名無しさん
NGNG>357
約束通り解説して頂きありがとうございました。
質問なのですが、
&(*pp)->leftと&(*pp->left)は違うんですか?
0361デフォルトの名無しさん
NGNG&(*pp->left)→&((*pp)->left)
0362デフォルトの名無しさん
NGNG>357
それと、*ppは常にheadになるんですか?
0363デフォルトの名無しさん
NGNG違います。
*pp->leftは*(pp->left)と同値です(&(*pp->left)は&(*(pp->left))と同値)。
ppが構造体へのポインタのポインタであるならば、(*pp)->leftのようにしないとなりません。
そうしなければコンパイラはエラーを報告してくるでしょう。
0364デフォルトの名無しさん
NGNGそれで*ppつまりheadの指している要素が削除したい要素でないならば、さらに潜り、
削除したい要素がheadの指している要素より小さかったらleft大きかったらrightへ。
この時のポインタの付け替えは、
ppは根の左の構造体を指すようになると考えてよいのでしょうか?
0365デフォルトの名無しさん
NGNGうーむ、どうやらポインタのポインタの性質がわかってないみたいです・・・。
ポインタの時はわかったのに、ポインタのポインタになっただけで
かなりややこしくなりますね。
0366347修正
NGNGおそらくソートもしないといけないとおもいます。
036799323
NGNGポアソン分布に従うとき、1分ごとのアクセス要求の系列を
生成するプログラムを作成しなさい
お願いします
0368デフォルトの名無しさん
NGNGただたんにλ=5のときのポアソン分布でいいの?
(来客数がx人になる確率pを求めればいいのかな?)
0369動画直リン
NGNG0370デフォルトの名無しさん
NGNG>>336 じゃダメだったのか?
0371デフォルトの名無しさん
NGNG3つの条件を満たす「横の長さ」と「縦の長さ」を求めるCプログラムを作成せよ。
1.縦*横 = 4000
2.縦/横 < 10
3.縦+横 が最小値
0372367
NGNGどうです。λ=5のときのポアソン分布です。
0373デフォルトの名無しさん
NGNGint main(){
int h,w;
int h_of_hw_min,w_of_hw_min;
double hw_min=1e+16;
for(w=1;w<4000;w++){
h=(int)4000/w; // h*w = 4000を変形
if((double)h/w < 10.0) break; // 条件を満たしてないならskip
if(h+w < hw_min) { // 最小値を求める
h_of_hw_min=h;
w_of_hw_min=w;
hw_min=h+w;
}
}
//結果表示
printf("h*w=%d \n",h_of_hw_min*w_of_hw_min);
printf("h=%d * w=%d \n",h_of_hw_min,w_of_hw_min);
printf("h+w = %lf",hw_min);
}
やるきなーくコーディング。
ただし、横と縦の長さは整数限定。
0374デフォルトの名無しさん
NGNG#include <math.h>
double poisson(int x,double lamda){
double ret;
int i;
ret = exp(-lamda)*pow(lamda,(double)x);
for(i=1;i<=x;i++){
ret/=(double)i;
}
return ret;
}
int main(){
int x;
const double lamda=5.0;
for(x=0;x<20;x++){
printf("%d %lf \n",x , poisson(x , lamda) );
}
}
0375デフォルトの名無しさん
NGNGint main(int argc,char**argv)
{ int H,S,A=8000,H2=0,S2;
for(H=1;H<4000;H++)
for(S=1;S<4000;S++)
if(S*H==4000)
if(H/S<10)
if(H+S<=A)
{ A=H+S;
H2=H;
S2=S; }
if(H2==0)
printf("それらの条件を満たす数はありません\n");
else
printf("それらの条件は縦%d,横%dが満たします\n",H2,S2);
return 0;
}
ifのネストが見にくいなぁ。
一応、自然数のみで書いたが、
問題の条件が不足してるぞ。
縦、横の範囲設定がわからん
0376デフォルトの名無しさん
NGNGpolicyの問題だが、変数名に大文字を使うのはいかがなものかと...
あと、Sってなに?
0377375
NGNG実は二通りあるのだな、これ。
縦、横が80,50と50,80。
そこ修正してまたUPするわ。
0378デフォルトの名無しさん
NGNG新・mac板でAppleから新しく出たブラウザSafariを掘り下げています。
まだ設定できる項目も少なく、標準的な機能が欠如していたりしていますが
タブに対応していたり、Googleの検索機能が標準装備されていたりと
めぼしい機能が盛り込まれてあり、今年出たばかりのソフトの強みというか
将来性を感じさせてくれます。
オープンソースで未だBeta版なのでこれからどうなるか楽しみです。
よろしければプログラム板の住人さんにも意見をいただきたいです。
--コピペをお許しを--
0379デフォルトの名無しさん
NGNGついでに、自分のプログラムは間違えてて欝だ。
0380デフォルトの名無しさん
NGNG#include <stdio.h>
int main(){
int h,w;
int h_of_hw_min,w_of_hw_min;
double hw_min=1e+16;
double area=4000;
for(w=sqrt(area);w>1;w--){
h=(int)4000/w; // h*w = 4000を変形
if(4000 % w !=0)continue;
if((double)h/w >= 10.0) continue; // 条件を満たしてないならskip
if(h+w < hw_min) { // 最小値を求める
h_of_hw_min=h;
w_of_hw_min=w;
hw_min=h+w;
}
}
//結果表示
printf("h*w=%d \n",h_of_hw_min*w_of_hw_min);
printf("h=%d * w=%d \n",h_of_hw_min,w_of_hw_min);
printf("h+w = %lf",hw_min);
}
**breakとcontinue間違えるなんざ...
0381デフォルトの名無しさん
NGNGん?なんで?
縦/横 < 10しかないじゃん。
縦/横 > 1という条件は無いけど・・・
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG#include <math.h>
#include <stdio.h>
int main(void)
{
printf("%g\n", sqrt(4000));
return 0;
}
0384375
NGNG完全版。(一応十個まで対応)
#include<stdio.h>
int main(int argc,char**argv)
{ int H,W,A=8000,H2[10]={0},W2[10],i=0;
for(H=1;H<4000;H++) for(W=1;W<4000;W++)
if(H*W==4000) if(H/W<10){
if(H+W==A){
if(i==10) break;
H2[i]=H; W2[i]=W;
i++;
}if(H+W<A){
i=1; A=H+W;
H2[0]=H; W2[0]=W;
}
}
if(H2==0) printf("それらの条件を満たす数はありません\n");
else
for(;i--;) printf("それらの条件は縦%d,横%dが満たします\n",H2[i],W2[i]);
return 0;
}
ちなみにSに関しては、
High,Sideから取っていたので。
修正して
Height,Widthから取りました。
0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNG3個以上がありえないのは、図を書いてみれば一発でわかるだろうに
0388375
NGNGいや、プログラムで求める以上
「3個以上はない。」と決めるのはプログラムだ。
実際なら10個までも誤りなのさ。
けど、何回もreallocするのも面倒だから
10個までにした。
0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG>>336
0391デフォルトの名無しさん
NGNGプログラムを作って解け、という出題にも無理があるわけで、
あまり突っ込まないのが吉でしょう
0392デフォルトの名無しさん
NGNG整数だけなら別に無理のない出題だと思うが?
0393393
NGNG10人分の成績を入力し、60点以上の人数を表示し、その合計点ならびに平均点を表示するプログラムをお願いします。
for( ; ; ; )実行文
ブロック文 {実行文;}
++
お願いしまっす。
0394デフォルトの名無しさん
NGNG> ブロック文 {実行文;}
> ++
これは何?
0395デフォルトの名無しさん
NGNGC言語なんだから、短絡評価使えばいいと思うけど。
if(S*H==4000)
if(H/S<10)
if(H+S<=A)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
if(S*H == 4000 && H/S < 10 && H + S <= A)
0396デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <stdio.h>
#define DATASIZE 10
int
main(int argc, char **argv)
{
int i, n, score;
double sum=0;
char buf[BUFSIZ];
n = argc > 1 ? atoi(argv[1]) : DATASIZE;
for (i=0; i<n; i++) {
if (feof(stdin)) break;
fgets(buf, BUFSIZ, stdin);
sscanf(buf, "%d", &score);
sum += score;
}
printf("%f\n", sum/i);
return 0;
}
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG例1)Average:整数または実数データの平均値を求めるクラスで、
+=演算子でデータを追加し、!演算子で結果を返す
例2)Point3D:3次元座標の点を扱うクラスで、-演算子で2点間の距離を計算する
例3)Fraction2:分数を扱うクラスで、^演算子で分数のべき乗(整数乗)
を返し、!演算子で逆数を返す
例4)その他:独自のクラスと演算子を定義する
例1〜3は何とかできるんですが、例4の独自の演算子の定義が出来ません。
アイディアでは、簡単な文字列の連結を行う演算子を作ろうと思うのですが・・・
例えば、
1)文字を入力汁!
ABC
2)文字を入力汁!
DEG
結果
ABCDEFG ・・・といった実行結果にしてみたいです。
おながいします
0399デフォルトの名無しさん
NGNG>簡単な文字列の連結を行う演算子
それは、VC で言う CString、C++Builder で言う AnsiString クラスでは?
0400デフォルトの名無しさん
NGNGこっから煮るなり焼くなりして
#include <iostream>
class MyString
{
char str_[32768];
public:
MyString()
{
str_[0] = '\0';
}
MyString& operator=(const char str[])
{
strcpy(str_, str);
return *this;
}
MyString& operator+(const char str[])
{
strcat(str_, str);
return *this;
}
const char* operator() ()
{
return str_;
}
};
0401デフォルトの名無しさん
NGNG{
MyString str;
str = "hello";
str = str + " world";
std::cout << str() << std::endl;
}
0402デフォルトの名無しさん
NGNG複雑な論理式よりも、if文のネストのほうが遥かにマシ
だと思うが。
0403323
NGNGポアソン分布に従うとき、1分ごとのアクセス要求の系列を
生成するプログラムを作成しなさい
>>336
ありがとうございます。でも、absを使用しないプログラムは出来ないんですか?
#include <time.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define drand() (((double)rand())/RAND_MAX)
int
poisson(double lambda)
{
int k;
for(k=0, lambda=exp(lambda)*drand(); lambda>1; k++) lambda*=drand();
return k;
}
int
main(int argc, char **argv)
{
int n,m; double lambda;
srand(time(NULL));
n = m = argc > 1 ? abs(atoi(argv[1])) : 20;
lambda = argc > 2 ? abs(atof(argv[2])) : 5;
while(m--) printf("%d ", poisson(lambda)); puts("");
return 0;
}
0404デフォルトの名無しさん
NGNG君の求めるのは>>374じゃないのか?
0405デフォルトの名無しさん
NGNG「もしAでBでCなら」よりも、「もしAで、もしBで、もしCなら」のほうがいいと?
0406デフォルトの名無しさん
NGNG> ありがとうございます。でも、absを使用しないプログラムは出来ないんですか?
いらんならそのまま外せばいい。なんなら n = 20; lambda = 5; とすればいい。
この場合コマンドラインから出力の個数や平均を渡せなくなるだけ。
0407デフォルトの名無しさん
NGNGあの程度は複雑でもなんでもないだろ。
0408デフォルトの名無しさん
NGNG0409デフォルトの名無しさん
NGNG容積がそれぞれ C(i) (i=1,2,...,n) である n 個の物体がある。これらの物体を適当に組み合わせて、容積 W のいくつかの箱 (Bin) に詰める。物体の形は考慮しないものとする。このとき、箱の個数を最小にする詰め方を示せ。
※近似解、局所最適解ではなく、厳密最小解を求めよ。
[入力] 箱の容積 W、物体の容積 C(i) (i=1,2,...,n)
データ形式
1 行目: 箱の容積 W (正整数)
2 行目以降: 物体の容積 C(i)、各行 1 個ずつ (正整数)
最終行: "-1"
各行の最初の整数以外はコメント
[出力] 箱の個数を最小にする詰め方 (各箱に入れる物体の容積の組み合わせ)
0410デフォルトの名無しさん
NGNG入力:
12 # 箱の容積 12
4
1
8
3
8
2
8
2
4
5
6
8
-1
出力: (表示形式は適宜変えてよい)
箱の容積: 12
詰め方:
( 4 8 ) -> 12
( 1 3 8 ) -> 12
( 2 8 2 ) -> 12
( 5 6 ) -> 11
( 4 8 ) -> 12
箱の個数: 5
おながいします
0411デフォルトの名無しさん
NGNGなるべく速い方法でおながいします。
入力と出力は標準入力と標準出力で、
数千行のデータはリダイレクトで入力します。
0412デフォルトの名無しさん
NGNG> 数千行のデータはリダイレクトで入力します。
意味不明
この箱は変形自在な箱なのね・・・
0413デフォルトの名無しさん
NGNGC++でもいいのか?
0414デフォルトの名無しさん
NGNGunsigned char Red;
unsigned char Green;
unsigned char Blue;
unsigned char Alpha;
}RGBA;
RGBA Buffer[Width][Height];
↑みたいにカラー情報が入っています。
これを、
Buffer[0][0]Buffer[1][0]Buffer[2][0]・・・Buffer[0][1]Buffer[1][1]Buffer[2][1]・・・
というように並べ替えてブロックソートしたいのですが、どうすればいいでしょうか?
できれば簡単(単純)にやる方法を教えていただきたいのですが・・・。
0415デフォルトの名無しさん
NGNG末尾行に-1があるファイルからリダイレクトで入力するので、
標準入力と標準出力ということで処理でOKという事です。
>>413
CかC++ならOKです。
0416デフォルトの名無しさん
NGNG> Buffer[0][0]Buffer[1][0]Buffer[2][0]・・・Buffer[0][1]Buffer[1][1]Buffer[2][1]・・・
> というように並べ替えてブロックソートしたいのですが、どうすればいいでしょうか?
というようにって、どういうようにか全くわからん
なんにしてもスレ違いだから、アルゴリズム系のスレに行け
0417415
NGNG//iostream,vector,algorithm,limitsをincludeする
using namespace std;
main()
{
vector<int> objectsizes;
int boxsize;
cin >> boxsize;
cin.ignore(numeric_limits<int>::max(), '\n');
while(cin.good())
{
int n;
cin >> n;
if(n == -1)
break;
objectsizes.push_back(n);
cin.ignore(numeric_limits<int>::max(), '\n');
}
sort(objectsizes.begin(), objectsizes.end());
//いろいろ処理とか
//std::coutに結果を出力
}
入出力の部分はこんな感じです。
このコードは自分で書いた物なので他のコンテナに入れるべきなのかもしれないし、
ソートしなくてもいいのかもしれません。
C++で書いてますがCでも脳内でC++に変換するので構いません。
肝心のどうやって入力した内容から箱の個数を最小にする詰め方を導き出すのかが
私には想像も付かないのです。
0418デフォルトの名無しさん
NGNGプログラムを作成しなさい。
《入力形式》
・最初のメッセージ
平均点を求める処理 処理を続けますか:はい(0)、いいえ(9):
・処理を続行するとき
平均点を求める処理 処理を続けますか:はい(0)、いいえ(9):0[Enter]
点数を入力してください(0〜100):
・得点を入力する時
平均点を求める処理 処理を続けますか:はい(0)、いいえ(9):0[Enter]
点数を入力してください(0〜100):100[Enter] 処理を続けますか:はい(0)、いいえ(9):
・得点に0〜100以外の点数を入力したとき
平均点を求める処理 処理を続けますか:はい(0)、いいえ(9):0[Enter] 点数を入力してください(0〜100):110[Enter]
もう一度0〜100の間で点数を入力してください 点数を入力してください(0〜100):
・処理を終了するとき
処理を続けますか:はい(0)、いいえ(9):9[Enter]
人数=受験者人数 平均点=算出した平均値
《平均点の算出について》
•点数の合計÷受験者人数で求める。
–注)受験者人数が0のときは、割り算をしないで、0を平均点にする。
•表示形式 –小数部を2桁で表示する。 –※計算結果を%6.2fの指定で表示する。
と言う問題です。do文を使ってお願いします。
0419419
NGNG0420デフォルトの名無しさん
NGNG上手く動かないです。
どこに問題があるかご教授願いします。
#include <stdio.h>
#include <string.h>
struct jyusyo{
char address[50];
char name[20];
char tel[15];
int age;
};
int get_keybord(struct jyusyo *);
void put_disk(struct jyusyo *, int,FILE *);
0421420
NGNG{
struct jyusyo js_s[10];
int cnt;
char f_name[20];
FILE *fp;
cnt = get_keybord(js_s);
do{
printf("ファイル名>>");
fgets(f_name,sizeof(f_name),stdin);
}while(!strlen(f_name));
fp = fopen(f_name,"w");
put_disk(js_s, cnt,fp);
return 0;
}
0422420
NGNG{
int i = 0;
char buff[5];
do{
printf("住所>>");
fgets(jp->address,sizeof(jp->address),stdin);
printf("名前>>");
fgets(jp->name,sizeof(jp->name),stdin);
printf("電話>>");
fgets(jp->tel,sizeof(jp->tel),stdin);
printf("年齢>>");
fgets(buff,sizeof(buff),stdin);
sscanf(buff,"%d",&jp->age);
i++;
}while((strlen((jp++)->address)) == 0);
printf("チェック");
return i-1;
}
void put_disk(struct jyusyo *jsp, int num,FILE *f_p)
{
int i;
for(i = 0;i < num; i++){
fprintf(f_p,"%s\n",jsp->address);
fprintf(f_p,"%s\n",jsp->name);
fprintf(f_p,"%s\n",jsp->tel);
fprintf(f_p,"%d\n",jsp->age);
}
fclose(f_p);
}
0423デフォルトの名無しさん
NGNG#include <stdio.h>
int main()
{
char buf[BUFSIZ];
int x, n = 0;
float sum = 0;
for (;;) {
do {
fputs("平均点を求める処理 処理を続けますか:はい(0)、いいえ(9):",
stdout);
if (fgets(buf, sizeof buf, stdin)) {
if (sscanf(buf, "%d", &x) == 1 && x == 9)
goto out;
}
else {
putchar('\n');
goto out;
}
} while (x != 0);
0424423
NGNGfputs("点数を入力してください(0〜100):", stdout);
if (fgets(buf, sizeof buf, stdin)) {
if (sscanf(buf, "%d", &x) == 1) {
if (x >= 0 && x <= 100)
break;
else
puts("もう一度0〜100の間で点数を入力してください");
}
}
else {
putchar('\n');
goto out;
}
}
sum += x;
n++;
}
out:
printf("人数=%d 平均点=%6.2f\n", n, n ? sum / n : 0);
return 0;
}
0425デフォルトの名無しさん
NGNG> }while((strlen((jp++)->address)) == 0);
↑ここがクサイ。
0426418
NGNGやっていただいてありがとうございます。
でもまだ初心者なのでわからないものばかりです。
学校の宿題なので習ってない記号や文字を使うわけには行かないので。
printf,scanf,do,if,else,while,putchar,for辺りだけ使って出来ませんか?
よろしくお願いします。
0427デフォルトの名無しさん
NGNGそういうもんなの?
0429デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNGhttp://www.dvd-yuis.com/
最速発送!すぐ届く!!
http://www.dvd-yuis.com/
女性も安心!秘密厳守!!
http://www.dvd-yuis.com/
おっ!安い!買っちゃお!
http://www.dvd-yuis.com/
えっ!?もう届いたの?
http://www.dvd-yuis.com/
0432デフォルトの名無しさん
NGNGそれぞれの要素を調べて理解した上で、「自分で調べました」って言えばいいだろ。
0433418
NGNG今>>423さんのプログラム見て要素を理解しようとしてるんですけど
わからないキーワードが多くて。。
「s」scanfとか「f」putsとか頭文字にわからないものがついていたり
char buf[BUFSIZ]とかマジわからんのです。。
0434デフォルトの名無しさん
NGNGそれはわからんのじゃなくて知らんのだ。調べやがれ。
0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNGfputsはファイルに出力。
char buf[BUFSIZ]はBUFSIZだけ入る文字列。
0439デフォルトの名無しさん
NGNGttp://www.google.co.jp/
0440418
NGNG0441デフォルトの名無しさん
NGNGそれで調べ方がわからんと申すか?
貴様プログラムの要る単位あきらめろ。
0442418
NGNGこの辺とか全部見たことないっす。どうか教えて下さい。
0443デフォルトの名無しさん
NGNGttp://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&c2coff=1&q=manpage+fgets&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0444デフォルトの名無しさん
NGNGってことはgoogleの使い方を知らないのですね。
0445デフォルトの名無しさん
NGNG知恵がなくて調べられないのだろ?
0446デフォルトの名無しさん
NGNGWIN環境だと厳しいのだろうか?
0448デフォルトの名無しさん
NGNG#include <stdio.h>
int main()
{
int a, num = 0, sum = 0;
float avg = 0;
while (1) {
printf("平均点を求める処理 処理を続けますか:はい(0)、いいえ(9):");
scanf("%d", &a);
if (a == 9)
break;
if (a != 0)
continue;
while (1) {
printf("点数を入力してください(0〜100):");
scanf("%d", &a);
if (a >= 0 && a <= 100)
break;
printf("もう一度0〜100の間で点数を入力してください\n");
}
sum += a;
num++;
}
if (num)
avg = sum / num;
printf("人数=%d 平均点=%6.2f\n", num, avg);
return 0;
}
0450デフォルトの名無しさん
NGNG0451448
NGNGavg = (float)sum / num;
の間違いだ。
0452418
NGNGもちろん何もない状態からこんなの作れなかったです。
ただ単純に見たことのないキーワードがないので教科書を見ながら
解決していけば何とかプログラムが何でこうなるのか理解できそうだと
言う事です。
>>451
わざわざ基本のキーワードだけ本当に使っていただいてありがとうございました。
0453デフォルトの名無しさん
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=70
おながいします。
0454デフォルトの名無しさん
NGNGこれって文字列のやつですよね?
任意の行列を入れるってのがよくわかんないんです。
誰か教えてください。
0455デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNG提出は火曜でしょ?もう少し考えなさいな。
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG何に使えと?
0462デフォルトの名無しさん
NGNGふるいにかけて削除していく。
0463デフォルトの名無しさん
NGNGいや、宿題だというのはわかってるよ。
0464デフォルトの名無しさん
NGNG0-1 knapsack ならうまくいくのに…
0465デフォルトの名無しさん
NGNG・ある英字を小文字ならば大文字に変換する
このような処理を行うにはどうすれば良いでしょうか?
ただしisalpha()などの文字列処理関数を使わずにやりたいのですが…
お願いします。
0466デフォルトの名無しさん
NGNGある文字がcという変数に代入されてるとして
ASCII前提なら、
if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z'))
/* … */
で英字の判定ができる。
ある文字が小文字のとき、大文字に変換するのは
if ('a' <= c && c <= 'z')
c += 'A' - 'a';
でできる。
0467デフォルトの名無しさん
NGNG最初の要素2をゲトー リストを順順に見て、
2の倍数ハケーンしたら、自分->次->次の次 の関係において、自分->次の次、にしつつ次を殺す。
例えば、2->3->4->5->6->NULLなら、
n=2
[2] 3->4->5->6->NULL
[4] 3->5->6->NULL
[6] 3->5->NULL
で、結果を入れるリストに2をappendしておけ。
0468326
NGNG{
struct jyusyo js_s[10];
int cnt;
char f_name[20];
FILE *fp;
cnt = get_keybord(js_s);
do{
printf("ファイル名>>");
fgets(f_name,sizeof(f_name),stdin);
}while(!strlen(f_name));
fp = fopen(f_name,"w");
put_disk(js_s, cnt,fp);
return 0;
}
0469デフォルトの名無しさん
NGNG悪い、実行してみたら、表示の際、ちゃんとなるようになってるわ。
0470デフォルトの名無しさん
NGNG1!〜53!を計算して、それらを桁を揃えて出力するCプログラムは?
(桁は右に揃える)
その際、53!は4.27×10の69乗であることを考慮して
階乗値を入れる配列の大きさを決めなさい。
お願いします。
0471デフォルトの名無しさん
NGNG0472470
NGNG0473デフォルトの名無しさん
NGNG#define SIZE 10
#define BASE 10000000
long factrial[SIZE] = { 0 };
void print_factrial(void) {
long *p = factrial;
for (; p < factrial + SIZE && *p == 0; p++)
printf(" ");
printf("%7ld", *p++);
for (; p < factrial + SIZE; p++)
printf("%07ld", *p);
}
void product(int i) {
long *p = factrial;
for (; p < factrial + SIZE; p++)
*p *= i;
for(p--; p > factrial; p--) {
*(p-1) += *p / BASE;
*p %= BASE;
}
}
int main(void) {
int i;
factrial[SIZE-1] = 1;
for (i = 1; i <= 53; i++) {
product(i);
printf("%2d!=", i);
print_factrial();
putchar('\n');
}
return 0;
}
0474デフォルトの名無しさん
NGNG言語はCです。よろしくお願いします。
0475デフォルトの名無しさん
NGNGint count;
void func1(int val, int *called)
{
int count;
count = 2;
printf("func1: count は %d です.\n", ++count);
printf("func1: called は %d です.\n", *called);
printf("func1: val は %d です.\n", val);
++count;
++(*called);
}
void func2(int count, int *called)
{
printf("func2: count は %d です.\n", ++count);
printf("func2: called は %d です.\n", *called);
++count;
}
void main(int argc, char *argv[])
{
int called = 1;
count = 1;
printf("main: count は %d です.\n", count);
func1(count, &called);
printf("main: count は %d です.\n", count);
func2(count, &called);
printf("main: count は %d です.\n", count);
}
0476デフォルトの名無しさん
NGNGint main( int argc , char* argv[] )
{
char program[] = "cp";
argv[0] = program;
return execvp( program , argv );
}
0477デフォルトの名無しさん
NGNGVC++で
テキストエデイタのコントロールが
未入力(NULL)の場合にメッセージを表示したいんです
おしえてください。おながいします
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNGvoid func1(int val, int *called)
{
int count;
count = 2;
printf("func1: count は %d です.\n", ++count); 3
printf("func1: called は %d です.\n", *called); 1
printf("func1: val は %d です.\n", val); 1
++count; 4
++(*called); 2
}
void func2(int count, int *called)
{
printf("func2: count は %d です.\n", ++count); 1
printf("func2: called は %d です.\n", *called); 2
++count; 2
}
void main(int argc, char *argv[])
{
int called = 1;
count = 1;
printf("main: count は %d です.\n", count); 1
func1(count, &called);
printf("main: count は %d です.\n", count); 1
func2(count, &called);
printf("main: count は %d です.\n", count); 1
}
0481デフォルトの名無しさん
NGNGナルフォドstrcmpで比較する手がありますたね
ありがとうございます。
0482YahooBB219001164144.bbtec.net
NGNG0483デフォルトの名無しさん
NGNGおいおい、""と比較するのにstrcmp()使うのか?
0484教えて厨
NGNGヒットミス法でeのx乗を0から1までの定積分を求めよ
という問題があるのですが、いまいちどういう方針でとけばいいのかわかりません。
だれかヒント教えてくれませんか?
0485教えて厨
NGNGヒットミス法
与えられた関数f(x)を「0 <= f(x)/fmax <=1」で規格化します。
試行回数(発生した乱数の数)をNとします。
乱数sを発生させ、そのsに対するf(s)を求め、さらにもう1個の乱数rを発生させます。
もし、r<=f(s)ならrを採用(hit)し、それ以外は捨てます(miss)。
採用された回数をnとすると、f(x)の0から1までの積分値は、
(n/N)*fmaxによって求められます
0486デフォルトの名無しさん
NGNGmain(int argc, char* argv[])
{
execvp("cp", argv);
}
0487デフォルトの名無しさん
NGNG一応 判定とおってるっぽいです。
0488デフォルトの名無しさん
NGNGstrlen()のがイイっぽいです。
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGs = rand(); r = rand();
if (r <= f(s)) n++;
}
0491デフォルトの名無しさん
NGNGつーか、GetWindowText()の戻り値って文字列長じゃなかったっけ?
0492デフォルトの名無しさん
NGNG身長と標準体重の対応表を表示するプログラムを for 文を使って作成せよ。
なお、表示する身長の範囲(開始値,終了値,増分)は、整数値として読み込み、標準体重は小数点以下を2桁だけ表示すること。
実行例:(下線部分は実行時に入力)
開始値: 130
終了値: 190
増分: 5
130 cm 37.2 kg
135 cm 40.1 kg
:
:
190 cm 79.4 kg
0493デフォルトの名無しさん
NGNG0494駆け出し厨
NGNGどうやって取得したらいいですか?
0495教えて厨
NGNG乱数の発生法として線形合同法をつかわないといけないのですが。。。
0496教えて厨
NGNG#include <math.h>
#include <stdlib.h>
#define N 100000
int b ,i , n ;
long int a , m , mod ,seed ;
double c , fx , p ;
0497教えて厨
NGNG{
n = 0 ;
a = 1664525 ;
b = 1 ;
m = 1013904223 ;
seed = 10 ;
fx = exp(0.3) ;
for ( i=1 ; i <= 2*N ; i++){
seed = ( a * seed + b ) % m ;
c = (double)seed / m ;
if ( fx >= c ){
n++ ;
}
fx = exp(c) ;
}
p =(double)n / N ;
printf ("%f\n", p ) ;
}
0498教えて厨
NGNG0499デフォルトの名無しさん
NGNGGetDlgItem()で取れます。
0500デフォルトの名無しさん
NGNGここは質問スレじゃない。
CButton::m_hWnd;
0501デフォルトの名無しさん
NGNGヒントをくれと言うから、>>490がちゃんとヒント(というか答)を書いてるのに、
もとの文章には一切書いてないことで文句を言う。
どういう教育受けたらそういう馬鹿なれるの?
0502>498
NGNGこんなんはいかが?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double f(double x){ return exp(x);}
#define fmax f(1.0)
static unsigned long seedS;
#define a 1664525UL
#define b 0UL
#define m 4294967296UL
void usr_srand(unsigned long s){ seedS = s;}
double usr_rand(void){ seedS = ( a * seedS + b ) % m; return (double)seedS / m;}
#define N 10000000
main() {
double r, s; long i, n;
usr_srand(1UL); n = 0;
for (i = 0L; i < N; i++) {
s = usr_rand(); r = usr_rand();if (r <= f(s) / fmax) n++;
}
printf("S=%12.8f\n", (double)n / N * fmax);
}
0503デフォルトの名無しさん
NGNG0504498
NGNGありがとうございます。
そっか、一回のるーぷで乱数を2回生成したらいいのか。。。。
もうちょいよくかんがえてみます。
0505デフォルトの名無しさん
NGNGint main(void) {
int h_min, h_max, dh;
double h, w;
printf("開始値: ");
scanf("%d", &h_min);
printf("終了値: ");
scanf("%d", &h_max);
printf("増分: ");
scanf("%d", &dh);
for (h = h_min; h <= h_max; h += dh) {
w = h * h * 22 / 10000;
printf("%.0f cm\t%.2f kg\n", h, w);
}
return 0;
}
0506デフォルトの名無しさん
NGNG結局、おまえは全部答書いてもらわないと理解できないんだろ?
なら、「ヒントくれ」なんて書かずに、正直に「作ってくれ」って丸投げしろよ。
0508デフォルトの名無しさん
NGNGhttp://anzu.sakura.ne.jp/~kuga/wol/
2chスレ
http://game3.2ch.net/test/read.cgi/mmominor/1053536167/
0509>>453
NGNGしかし、解のためのリストは別には準備しません。
例にあげられたリストの扱い方は好みじゃないのでちと変えました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=71
終了判定に難がありますが、私としてはリストを使うこの方法は好ましく思います。
単純に大きな配列を準備する方法は、一般化が行き届いていないのが不満です。
0510デフォルトの名無しさん
NGNG意味不明。説明求む。
0511>>510
NGNG巨大な配列を準備するのに抵抗があるという感覚にすぎません。
なお、N=100 が巨大、というわけではないので念のため。
0512デフォルトの名無しさん
NGNG1からhttpサーバ作ろうと思ったらどれくらい時間かかるでしょうか…?
0513デフォルトの名無しさん
NGNG「1から」の意味がわからん。
0514デフォルトの名無しさん
NGNGOSからという意味です。
0515デフォルトの名無しさん
NGNGハードからじゃないの?
0516512
NGNGUNIXで作るんですが…今からソケット覚えて3日かそこらで作れるでしょうか?
0517デフォルトの名無しさん
NGNGApacheでさえ多くの人と時間ががかかわってきてるのにまだ完成に至らない。
0518デフォルトの名無しさん
NGNGエラー処理無しでGETにファイル返すだけならいけるかも
0519デフォルトの名無しさん
NGNG> 終了判定に難がありますが、私としてはリストを使うこの方法は好ましく思います。
この用途の場合、最初から要素数が決まっていて増える事がないし、
消してもその領域を再利用することがないので、リストは必要ないと思います。
0520デフォルトの名無しさん
NGNGPとかRではじまるスクリプト言語なら簡単に書けると思うが
0521デフォルトの名無しさん
NGNG0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNG0524512
NGNGとりあえずエラー処理なしならいけそうですか。どうもです。
0525>>519
NGNGエラトステネスの篩で配列を使用すれば、その Ο(1)で望みの場所にフラグを立てる
/落とすことができるという特徴を十分にいかすことができますから、速度・領域
のいずれの点からもリストには分がないですね。
0526
NGNG0527デフォルトの名無しさん
NGNGhttp://ime.nu/ime.nu/ime.nu/www.net-de-dvd.com/
0528デフォルトの名無しさん
NGNGここ見られるならIE使えるよね。
0529526
NGNG0530デフォルトの名無しさん
NGNG釣りだよな?w
ま、それは「教えて」というか「作ってくれ」ということなんだろうなw
0531デフォルトの名無しさん
NGNG0532526
NGNG教えてくれってゆうか作ってくれ
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNGint a = 1;
int b = 2;
int resultTasizan = a + b;
int resultHikizan = a - b;
printf("足し算の答え %d\n引き算の答え %d\n", a, b);
return 0;
}
//使うときにはソースを書き換えてあげてください。
0535デフォルトの名無しさん
NGNGちょっとはググれ!
0536デフォルトの名無しさん
NGNG使えません。
0537デフォルトの名無しさん
NGNG「IE」とは限らないだろ?
「ブラウザ」って書けよ。
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNG(2)
xを二つの領域(0<=x=<0.2 , 0,2<=x=<0.4)にわけ、それぞれの領域で
ラグランジュ補間を行い、0から0,4までの間で0.02きざみで、f(x) の値、
補間による近似値 g(x) 及び、 f(x)-g(x) の値を表にして示すとともに、
グラフとして図示せよ。表は線はいらず、計算結果をプリントアウトしたものとする。
図は手書きでもグラフソフト使用でも可。
ex
x f(x) g(x) f(x)-g(x)
0 〜〜 〜〜 〜〜
0.2 〜〜 〜〜 〜〜
・ 〜〜 〜〜 〜〜
・ 〜〜 〜〜 〜〜
・
・
(3)
(2)で得られた21個のxとf(x)のデーターに対し、最小二乗法による理論式
y=A*x+B の最適のA,Bの値を推理せよ。
0541540
NGNGexp(0.37*x)テイラー展開して、第二項までを取った直線の式を
y=A'*x+B'とするとき、(3)で得られた y=A*x+Bに対する
N
E(A,B)= (yi-A*xi-B)^2
i=1
と、y=A'*x+Bに対する
N
E(A',B')= (yi-A'*xi-B')^2
i=1
を求め、E(A,B)<=E(A',B')を示せ・・・。
提出物
�@ (2),(3),(4)が一気に行えるプログラム
�A 動作結果
�B アルゴリズム
�C フローチャート
もうだめですTT どなたかお願いします。
0542540 続き
NGNGexp(0.37*x)テイラー展開して、第二項までを取った直線の式を
y=A'*x+B'とするとき、(3)で得られた y=A*x+Bに対する
N
E(A,B)= (yi-A*xi-B)^2
i=1
と、y=A'*x+Bに対する
N
E(A',B')= (yi-A'*xi-B')^2
i=1
を求め、E(A,B)<=E(A',B')を示せ・・・。
提出物
�@ (2),(3),(4)が一気に行えるプログラム
�A 動作結果
�B アルゴリズム
�C フローチャート
もうだめですTT どなたかお願いします。
0543540
NGNG0544デフォルトの名無しさん
NGNGJAVAでやったことあるけど意味不明だったな・・・
0545デフォルトの名無しさん
NGNG安心して24時間お買い物ができる!
セルビデオ店が近くにないお客様も気軽にお買い物を楽しめます。
http://www.net-de-dvd.com/
0546526
NGNGもっとちゃんと教えろ!
0547デフォルトの名無しさん
NGNGオマエガナー
0548526
NGNGやってくれと言ってるだけだぞ?
例1 1+5+10をキーボードから入力すると、
結果は16ですと表示されるようにしたいんだ!!
これも加えて引き算もわからんので頼む!
0549動画直リン
NGNG0550デフォルトの名無しさん
NGNGそんなに簡単だと思うのなら自分でやってみたら?
実は以前ここで+-*/をやる計算機って問題が出て、
それを解いたものがあるんだけど、
オーバースペックだし行数多いから張らないw
0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNGいいですか?
同じ cppファイル内で関数 a_Function()というのを作って
それをボタンが押された度に呼出したいのですが
うまくいきません。
a_Function:定義されていない識別子です。のコンパイルエラーが出ます。
VCはまだ浅いので どなたさんか問題点の指摘 アドバイス等
頂けないでしょうか。
0553デフォルトの名無しさん
NGNGここは質問スレじゃないってば。
>>526
#include <stdio.h>
int main(void)
{
char buf[BUFSIZ - 30];
char cmd[BUFSIZ];
fgets(buf, sizeof(buf), stdin);
sprintf(cmd, "awk 'BEGIN {print \"結果は\"%s\"だろうよ\"}' /dev/null", buf);
system(cmd);
return 0;
}
0554デフォルトの名無しさん
NGNGMFCかVC++の質問スレはなかったか?
クラスウィザードでボタンのIDを選んでメッセージBN_CLIKEDを選んで関数の追加。
その名前をa_Function()にすれば医員で内科医?
0555デフォルトの名無しさん
NGNGそ そんなウラワザがあったんですね。
大変たすかりました。
ありがとうございました。
0556526
NGNGerror C2065: 'system' : 定義されていない識別子です。
っていうエラーがでますたww
0557デフォルトの名無しさん
NGNGsystemにはstdlib.hを
0558デフォルトの名無しさん
NGNGあ、いつも(自作の)テンプレ使ってるから忘れてた。
0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNG0562c+
NGNG0563デフォルトの名無しさん
NGNG0564c+
NGNG0565c+
NGNGはどんないみですか?
0566直リン
NGNG0567デフォルトの名無しさん
NGNGttp://www.google.co.jp/search?q=%22invalid+operands+to+binary%22+%83%81%83b%83Z%81%5B%83W
0568デフォルトの名無しさん
NGNG「今すぐ英和辞典を買ってきなさい」という意味
0569デフォルトの名無しさん
NGNGいんヴぁりどおぺらんずつーばいなりあすてりすく
といういみでつ。
0570デフォルトの名無しさん
NGNGテンプレには入ってるよ。<stdlib.h
0571デフォルトの名無しさん
NGNGここはそういうレベルの高い宿題は分かる人がいないので教えてくれません。
最近では>>409-410などもレベルの高い問題にあたります。
ここでは素数の求め方とか階乗とか文字列のひっくり返し方とか聞いて下さい。
0572デフォルトの名無しさん
NGNG(2)どの点を使って補間するのかわからん。(3)以降を見るに、0と0.2、0.2と0.4の点を
使ってやるようにも思える。合ってるか?
(4)xi、yiの定義は?もし、(3)で使ったxとf(x)のデータなら、
そうなるのは当たり前。最小二乗法だから。
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNG10年後を楽しみに待っててくれ!
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG1) 学籍番号:0381074 氏名:中島裕吾 作成日:平成15年5月30日
2) 問題:(a+b)*c/bとa+b*c/bを計算するプログラムを作成せよ。
3) 問題の分析:実数の計算をし、実数で表示させるプログラム。
4) ソースプログラム:
*/
#include <stdio.h>
int main(void)
{
float a=2.34,b=5.58,c=6.765,d,e;
d=(a+b)*c/b;
e=a+b*c/b;
printf("(a+b)*c/b=%f \n a+b*c/b=%f \n",d,e);
}
/*
5) 実行結果:(a+b)*c/b=9.601935
a+b*c/b=9.105000
6) 結果の分析の感想:()があるかないかで答えがちがうところ
が出力できた。
*/
0577デフォルトの名無しさん
NGNG1)
2) 問題:scanf()を使ってキーボードからdouble型変数a,b,cにデータを入力し、
(a+b)*c/bとa+b*c/bを計算するプログラムを作成せよ。
3) 問題の分析:double型とscanf()を使って計算をするプログラム。
4) ソースプログラム:
*/
#include <stdio.h>
int main(void)
{
double a,b,c,d,e;
printf("実数を入力して下さい!12.3 23.4 2.65\n");
scanf("%lf%lf%lf",&a,&b,&c);
d=(a+b)*c/b;
e=a+b*c/b;
printf("%.1f %.1f %.2f\n",a,b,c);
printf("(a+b)*c/b=%.3f \n a+b*c/b=%.3f \n",d,e);
}
/*
5) 実行結果:12.3 23.4 2.65
(a+b)*c/b=4.0
a+b*c/b=15.0
6) 結果の分析の感想:出力は課題どうりになったと思う。指定子で小数点以下を
指定したのでとても見やすくなった。
*/
0578デフォルトの名無しさん
NGNG2.嫌いな奴の実名を書いて、さらしage
0579デフォルトの名無しさん
NGNGあー、やる気が途中でうせた版ならあげてみるか。
void ResolveProblem(int iBottle,int iThings[],int iNumThings){
int volume[100]; // bottleの使用容量
int i,j,n;
for(i=0;i<iNumThings;i++){
volume[i]=0;
}
j=0;
for(n=0;n<iNumThings;n++){
int flag = 0;
for(i=0;i<j;i++){
if(volume[i] + iThings[n] <= iBottle){
printf("%d is inserted No. %2d : %d: before(%d) -> after(%d) \n"
, n , i , iThings[n] , volume[i] , volume[i]+iThings[n]);
volume[i]+=iThings[n];
flag = 1;
break;
}
}
if(flag == 0){
printf("Make a new bottle -> %d \n", j);
printf("%d is inserted to No. %2d : %d: before(%d) -> after(%d) \n"
, n , j , iThings[n] , volume[j] , volume[j]+iThings[n]);
volume[j++]=iThings[n];
}
}
for(n=0;n<j;n++){
printf("%d ",volume[n]);
}
}
0580デフォルトの名無しさん
NGNGnはどの物体をビンに入れようとしているか。
iは物体を入れるビンの番号
jは現在のビンの本数
あー、もっといい方法があったなぁ、でも面倒なのでやめ。
0581デフォルトの名無しさん
NGNG1.今持ってるビンのなかで、物体iを入れれるのがあるか?
2.あれば、入れる。
3.なければ、新しいビンを用意して入れる。
これだけ。実際には、ビンに入れれるデータの件数とか気にしなければ、
ビンnにデータiが入れれるのに、新しいビンを用意した場合だけが非効率となるので、
まあこれでいいんじゃないの?
0582デフォルトの名無しさん
NGNGy=Ax を求めよ。
という問題なんですが、具体的にどういう計算をすれば良いのでしょうか?
(入力するデータはすべて与えられています)
Cと言うより数学の質問のような気がしますがお願いします。
0583デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNGx1
x2
x3
A:
a11 a12 a13
a21 a22 a23
a31 a32 a33
y:
a11*x1+a12*x2+a13*x3
a21*x1+a22*x2+a23*x3
a31*x1+a32*x2+a33*x3
0587デフォルトの名無しさん
NGNG詳しい人います?
0588デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNGC言語のことなら俺にきけ板でも書いたのですが、
宿題っぽいので、こっちに書きます。
0591デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNGのですが、どうすればいいですか?
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNG勘違いすんなよ!
0595デフォルトの名無しさん
NGNG問題1:"tamachan">gomachan
Miss!
問題2:"Asakusa">Asakusa
OK!
0596デフォルトの名無しさん
NGNG問題はどうやって与えるの?
0597595
NGNG問題は"tamachann"と"Asakusa"で固定です。
0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNG0602リアル宿題
NGNGA=a1ix+a2iy+a3iz ,B=b1ix+b2iy+b3izとします。ここで、ix,iy,izはX、Y、Z方向の
単位ベクトルです。二つのベクトルの内積を計算しなさい。
A・B=a1b1+a2b2+a3b3です。要素の値はa1=1、a2=2、a3=3、
b1=2、b2=3、b3=4とします。
FOR文を使った場合と使わない場合のプログラムを書いてください。
0603直リン
NGNG0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNG/* タイピングプログラム */
#include <stdio.h>
int main()
{
puts("問題1:\"tamachan\">gomachan\n"
"Miss!\n"
"問題2:\"Asakusa\">Asakusa\n"
"OK!");
return 0;
}
0606デフォルトの名無しさん
NGNG出力結果例
10進数 2進数
0 00000000
1 00000001
2 00000010
・
・
・
0607602
NGNGそれ使って提出したレポートが返ってきました…。
配列使わないと駄目みたいです…
0609r
NGNGint main() {
int i, j:
for( i = 0; i<256; i++ ) {
printf("%d ",i);
for( j = 0x80; j != 0; j >>= 1 )
printf("%s" j & i ? "1" : "0" );
printf("n");
}
}
0610595
NGNG>の右側は自分で入力して、それが問題と同じ文字列なら"OK!"を、違っていたら"Miss!"を出力する、という意味ですが・・・説明足りなくてすみません。
0611デフォルトの名無しさん
NGNG心配するな、>>605は明らかに確信犯だ。(w
0612595
NGNGそうなんですか・・・
あきらかに「大学の課題を解いてくれ!」みたいな質問は
相手にされない、ということですか?
0613デフォルトの名無しさん
NGNG>printf("n");
printf("\n");
だろ?
0614デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
int main()
{
const char* answer[] = { "Miss!", "OK!" };
const int n = 2;
const char* question[] = { "tamachann", "Asakusa" };
char buf[BUFSIZ];
int i;
for (i = 0; i < n; i++) {
printf("問題%d:\"%s\">", i + 1, question[i]);
if (fgets(buf, sizeof buf, stdin) == NULL) {
putchar('\n');
break;
}
puts(answer[strncmp(question[i], buf, strlen(question[i])) == 0]);
}
return 0;
}
0615デフォルトの名無しさん
NGNG#include <string.h>
int main()
{
char buf[123456];
printf("問題1:\"tamachan\">");
fgets(buf,sizeof buf,stdin);
if(strcmp(buf,"tamachan\n")
printf("Miss!\n");
else
printf("OK!\n");
printf("問題2:\"tamachan\">");
fgets(buf,sizeof buf,stdin);
if(strcmp(buf,"Asakusa\n")
printf("Miss!\n");
else
printf("OK!\n");
return 0;
}
0616デフォルトの名無しさん
NGNGエラく危険なコードを書いてくれますね…
0617デフォルトの名無しさん
NGNG全角数字だと何度言えば(ry
0618デフォルトの名無しさん
NGNGどの辺が?
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG0622614
NGNG#include <stdio.h>
#include <string.h>
int main()
{
const char* answers[] = { "Miss!", "OK!" };
const int nqustions = 2;
const char* questions[] = { "tamachann", "Asakusa" };
char buf[BUFSIZ], *p;
int i;
for (i = 0; i < nqustions; i++) {
printf("問題%d:\"%s\">", i + 1, questions[i]);
if (fgets(buf, sizeof buf, stdin) == NULL) {
putchar('\n');
break;
}
if ((p = strchr(buf, '\n')))
*p = 0;
puts(answers[strcmp(questions[i], buf) == 0]);
}
return 0;
}
0623デフォルトの名無しさん
NGNG#include <string.h>
main(){
char a[20],b[20],c[20]={"tamachan"},d[20]={"Asakusa"};
printf("問題1:\"tamachan\">");
gets(a);
if(strcmp(a,c)==0){
printf("OK! ");
}else{
printf("Miss!!");
}
printf("問題2:\"Asakusa\">");
gets(b);
if(strcmp(b,d)==0){
printf("OK! ");
}else{
printf("Miss!!");
}
return (0);
}
スペース入れたらダメだけど作ってみたぽ
0624デフォルトの名無しさん
NGNG0625おねがいします
NGNGれ替えを行った後、表示するプログラムを作成せよ。(入力した整数の個数
をnなら、0番目の要素はn-1番目の要素と、1番目の要素はn-2番目の要
素と入れ替える。)入力終了は,負の数で検出するものとする。また、使用
する配列は一つのみとする。
0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNG#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>
int main()
{
typedef std::vector< int > vector;
vector::size_type const max = 100;
vector v;
int input;
while( v.size() < max && std::cin >> input && input >= 0 ) v.push_back( input );
std::reverse( v.begin() , v.end() );
std::copy( v.begin() , v.end() , std::ostream_iterator< int >( std::cout , "\n" ) );
}
ワーイC++サイコー
0628デフォルトの名無しさん
NGNGで、配列は?
0630元祖C++屋
NGNG#include <iterator>
#include <iostream>
int main()
{
const int max = 100;
int array[max], input, i;
for(i=0;i<100 && std::cin >> input && input >= 0;++i) array[i] = input;
std::reverse(array, array + i);
std::copy(array, array + i, std::ostream_iterator<int>(std::cout, "\n"));
}
0631デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
#define ARRAYSIZE 100
void reverse(int a[], int n) {
int i, j, t;
for (i = 0, j = n - 1; i < j; ++i, --j) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
int main() {
char buf[BUFSIZ];
int i, a[ARRAYSIZE], n;
for (n = 0; n < ARRAYSIZE;) {
if (!fgets(buf, sizeof buf, stdin))
break;
if (sscanf(buf, "%d", &a[n]) == 1) {
if (a[n] < 0)
break;
++n;
}
while (!strchr(buf, '\n') &&
fgets(buf, sizeof buf, stdin));
}
reverse(a, n);
for (i = 0; i < n; ++i)
printf("%d\n", a[i]);
return 0;
}
0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNG0634540
NGNG俺もよくわかんないんですTT
金曜日に提出なので明日中にはっきりしてきたいと思います・・。TT
0635デフォルトの名無しさん
NGNG□□□□□■■
□□□□■■■
□□□■■■■
□□■■■■■
□■■■■■■
■■■■■■■ と
■□□□□□■
■■□□□■■
■■■□■■■
■■■■■■■
■■■□■■■
■■□□□■■
■□□□□□■ を表記するプログラム作ってください!
#include <stdio.h>
main()
{
intsize, i, j;
printf("サイズを入力して下さい:");
scanf("%d", &size );
for( j = 0; j < size; j++ )
の後続けて
0636デフォルトの名無しさん
NGNGどういうものが欲しいのか、ちゃんと説明しないと、>>605みたいな回答するよ。
0637デフォルトの名無しさん
NGNG"□□□□□□■\n"
"□□□□□■■\n"
"□□□□■■■\n"
"□□□■■■■\n"
"□□■■■■■\n"
"□■■■■■■\n"
"■■■■■■■\n"
};
printf(str);
0638デフォルトの名無しさん
NGNG{
for(int i=0;i<MAX;i++)
printf("%s",(MAX-i-1)>j?"□":"■");
printf("\n");
}
0639デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNG0642637=638
NGNG^(排他的論理和)を使うとできるよ。
0643デフォルトの名無しさん
NGNGstruct node
{
ET x;
struct node *next;
};
こういう構造体の単方向リストで、
一つ前のノードを返す関数struct node * prevnode(struct node *p)
を作成するという問題を教えてください。
0644デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNG下記ソースで行うと正常に読み書きできません。
MSDN見ながらがんがったのですが(´・ω・`)
ちなみに環境はVC++6.0コンパイラを使いますた。
どのように修正すればよいか教えて下さい。
#include <iostream.h>
#include <fstream.h>
struct tbl {
int a;
char b[10];
};
void main(){
tbl t1 = {100,"abc"};
tbl t2;
ofstream ofs("c:\\test.dat",ios::binary);
ofs.write(char*)&t1,sizeof(struct tbl));
ofs.close;
ifstream ifs("c:\\test.dat",ios::binary);
ifs.read((char*)&t2,sizeof(struct tbl));
ifs.close();
cout << t2.a << "\t" << t2.b << endl;
}
0646デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNGレス遅くなりました。ごめんなさい
えっと学校で作った時のソースを思い出しながら書いたのでどこかスペルミスがあるかもしれません。
コピペで家のVC.NETでコンパイルしたら通りませんでした・・・
で、打ち直して動かしたら普通に動いちゃいました・・・
動作確認済みのソースを下に張っておきます。
それにしても、学校での苦労はなんだったのだろう。・゚・(ノД`)・゚・。
ずれて読みにくかったら申し訳ございません。(先にお詫びを・・・)
#include <iostream.h>
#include <fstream.h>
struct tbl{
int a;
char b[10];
};
void main(){
tbl t1 = {115,"abc"};
tbl t2;
ofstream ofs("c:\\test.dat",ios::binary);
ofs.write((char *)&t1,sizeof(struct tbl));
ofs.close();
ifstream ifs("c:\\test.dat",ios::binary);
ifs.read((char *)&t2,sizeof(struct tbl));
ifs.close();
cout << t2.a << "\t" << t2.b << endl;
}
0648デフォルトの名無しさん
NGNGエラーメッセージ読まないからですよ。
0649645=647
NGNG↑のソースコピペでビルドして動作確認致しました。
0650645
NGNG学校でコンパイルした時はコンパイルエラーは出なくて
読み込みと書き込みは行っているのですが
正常にt1→ファイル→t2とデータが移ってもらえなかったのです。
状況報告あいまいで申し訳ございません。
0651
NGNG0652デフォルトの名無しさん
NGNG変数が物を格納できるバケツに例えられるならば、
構造体はそのバケツを複数格納できる棚のようなもの。
プログラマは棚とバケツを指定してやって中の値を取り出すことができる。
Cでは格納や取り出しは自由自在だが、C++になるとアクセス制限もかけられるようになる。
概念的な解説は以上だ。わかったか?
0653デフォルトの名無しさん
NGNGtypedef struct node{
char word[MAXWORDLEN] ;
struct node *Next ;
} node_t ;
ex4o を実行すると最初は次のようになる.
%ex4o
Initialize a queue.
>
ここで,”> “ は,キューの処理のためのコマンド入力を促すプロンプトである.入力できるコマンドは以下の3つである.
c (キューを初期化する)
e #WORD(s) (キューの先頭に要素(単語(複数も可)WORD(s)をwordに格納した構造体node_t)を追加する)
d (キューの先頭の要素を取り出し,wordの中身を出力する.キューになにもデータがない時は,No more data.と出力する).
以下は実行例である.
% ex4o
Initialize a queue.
> d
No more data.
> e programming
Enqueue: [programming]
> e group 3
Enqueue: [group 3]
> d
Ctrl-d (コントロールキーを押しながらdを押すこと)でプログラムは終了する,このプログラムを作成せよ.
0655575
NGNG10個程度なら直に終わるんだけど、20個くらいにすると何分という単位。
数千個だといつ終わることになるのやら。
アルゴリズムとしては >>579 さんのものに毛が生えた程度のもの。
今再帰使っているんだけど、それをループにしたからって焼け石に水。
根本的な改善案が思いつかないのでここでやめる。
Bin-Packing問題を調べまくる気にもなれんし。
とりあえずソースをここに貼っとく。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=72
0656デフォルトの名無しさん
NGNGデータがある時のdの実行例がないのは、何も出力しなくていいからか?
0657デフォルトの名無しさん
NGNG「最終的なbottleの数 x 要素の数」
じゃないかな?データが倍になっても、計算時間は倍になるだけpo.
0658デフォルトの名無しさん
NGNG一つの完成として first fit という algorithm がある。
しかし first fit は最適解を与えない場合があることが知られている。
0659上も579です(;;)
NGNGとりあえず、漏れ版あげておくっす。
0660575
NGNG0661デフォルトの名無しさん
NGNGそんなわけない。bin-packing の最適化問題は有名なNP完全問題だ。
0663デフォルトの名無しさん
NGNGだよね。
厳密解を要求されてるから、結局は全組み合わせを調べるしか無いのかなあ、と。
0664r
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=74
main関数はいい加減に書いたから、main関数だけはちゃんと修正するヨロシ
0665デフォルトの名無しさん
NGNGポインタを用いたリスト(リンクによるリスト)によるキュー(待ち行列)のプログラムである.キューの各要素は以下のような構造体となっている.
typedef struct node{char word[MAXWORDLEN] ;struct node *Next ;} node_t ;
ex4o を実行すると最初は次のようになる.
%ex4o
Initialize a queue.
>
ここで,”> “ は,キューの処理のためのコマンド入力を促すプロンプトで入力できるコマンドは以下の3つである.
c (キューを初期化する)
e #WORD(s) (キューの先頭に要素(単語(複数も可)WORD(s)をwordに格納した構造体node_t)を追加する)
d (キューの先頭の要素を取り出し,wordの中身を出力する.キューになにもデータがない時は,No more data.と出力する).
% ex4o
Initialize a queue.
> d
No more data.
> e programming
Enqueue: [programming]
> e group 3
Enqueue: [group 3]
> d
Dequeue: [programming]
> d
Dequeue: [group 3]
> e practice
Enqueue: [practice]
> c
Initialize a queue.
> d
No more data
>
Ctrl-d (コントロールキーを押しながらdを押すこと)でプログラムは終了する,このプログラムを作成せよ.
0667デフォルトの名無しさん
NGNGInitialize a queue.
No more data.
Enqueue: [programming]
Enqueue: [group 3]
Dequeue: [programming]
Dequeue: [group 3]
Enqueue: [practice]が出ないんですよ〜
0668デフォルトの名無しさん
NGNGセルの挿入、削除を行う関数を教えてください。
0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNGcinした数値の平均と総和出せるようにしたいんですけど、
クラスの宣言くらいしかやり方わかんないんです。
どんなプログラムにすればいいか教えてください(つд`)
0671デフォルトの名無しさん
NGNG最強の人造人間
0673赤木ハルコ
NGNG9991桁から10000桁の10個の数字を表示しなさい。
諸注意 ANSI準拠のC言語を用いること。マーチンの法則を用いること。
こんな宿題が出ましたが〜どなたかやっていただけないでしょうか?
よろしくお願いいたします
0674デフォルトの名無しさん
NGNG#include <iostream>
#include <numeric>
#include <vector>
using namespace std;
class NumArray
{
protected:
vector<double> vec;
public:
void Add(double d) { vec.push_back(d); }
double GetTotal() { return accumulate(vec.begin(), vec.end(), 0.0); }
double GetAverage() { return accumulate(vec.begin(), vec.end(), 0.0) / vec.size(); }
}
void main()
{
NumArray array;
while(cin.good())
{
double num;
cin >> num;
array.Add(num);
}
cout << "平均は" << array.GetAverage() << endl;
cout << "総和は" << array.GetTotal() << endl;
}
0675674
NGNGdouble GetAverage() { return accumulate(vec.begin(), vec.end(), 0.0) / vec.size(); }
}
○
double GetAverage() { return accumulate(vec.begin(), vec.end(), 0.0) / vec.size(); }
};
0677デフォルトの名無しさん
NGNGどれ?
http://www.google.co.jp/search?q=%E3%83%9E%E3%83%BC%E3%83%81%E3%83%B3%E3%81%AE%E6%B3%95%E5%89%87
0679デフォルトの名無しさん
NGNGうがぁ。調べて分かりますた。ショボーン
0680680
NGNGここでn分目開始時点における未処理のアクセス要求をXn(初期状態としてX1=0)、n分目に到着するアクセス要求をAnとおくと、Xn+1=max(Xn+An−μ、0)であることに注意する。またシミュレーションでは初期状態の影響を取り除
くため、n=200分目から1200分目のXnについて平均を求め、さらに乱数の種を変えて20回実行し、これら20個のデータから95%信頼区も評価せよ。ただし自由度19のt分布における95%信頼区間を与えるt0は2.09である
onegaisimasu
0681デフォルトの名無しさん
NGNG指定文字を\に変換して逆順に出力するプログラムを作る課題が出ました
プログラムは通ったんですがどこか無駄が有りそうなんです
どなたかスッキリさせていただけますか?御願いします
ソースはココにはりますた
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=75
例が以下のとおりです
指定文字 ? a
文字列 ? abcdefgabcdefg
変換後文字列 gfedcb\gfedcb\
変換文字数 5
0682デフォルトの名無しさん
NGNG一回のループでやっちゃダメなの?
0683681
NGNG見づらいソースで申し訳ありませぬ(´Д`;)
0684デフォルトの名無しさん
NGNG{
int i,j,r;
char tmp;
r=0;
for(i=0,j=strlen(s)-1;i<j;i++,j--){
tmp=s[i];
s[i]=(s[j]==c)? r++,'\\':s[j];
s[j]=(tmp==c)? r++,'\\':tmp;
}
return r;
}
0685670
NGNGありがとうございますおかげで何とかできました。
たびたび注文してすいませんが、protectedではなくprivateにして、
演算子はoperatorメンバ関数を使ってオーバーロードする方法だったらどうなりますか?
良かったら教えてください
0686デフォルトの名無しさん
NGNGこのスレのどっかにそれとおなじようなのがあったきがする
0687デフォルトの名無しさん
NGNGバグってた。鬱
int reverse_replace(char *s,char c)
{
int i,j,r;
char tmp;
r=0;
for(i=0,j=strlen(s)-1;i<j;i++,j--){
tmp=s[i];
s[i]=(s[j]==c)? r++,'\\':s[j];
s[j]=(tmp==c)? r++,'\\':tmp;
}
if((i==j)&&(s[i]==c)) r++;
return r;
}
0688681
NGNG0689デフォルトの名無しさん
NGNGその変換文字数 5というのはどのようにして得られた値なの?
0690デフォルトの名無しさん
NGNG#include <iostream>
#include <numeric>
#include <vector>
using namespace std;
class NumArray
{
private:
vector<double> vec;
public:
void operator+=(double d) { vec.push_back(d); }
void Add(double d) { vec.push_back(d); }
double GetTotal() { return accumulate(vec.begin(), vec.end(), 0.0); }
double GetAverage() { return GetTotal() / vec.size(); }
friend ostream& operator<<(ostream& os, NumArray& na);
};
ostream& operator<<(ostream& os, NumArray& na)
{
os << na.GetTotal() << endl;
return os;
}
0691デフォルトの名無しさん
NGNG{
NumArray array;
for(;;)
{
double num;
cin >> num;
if(cin.fail())
break;
array += num;
}
cout << "平均は" << array.GetAverage() << endl;
cout << "総和は" << array << endl;
}
0692デフォルトの名無しさん
NGNGvoid Add(double d) { vec.push_back(d); }
0693デフォルトの名無しさん
NGNG又、Aは先に定義し、Bはキーボード入力、Cは標準出力とする
又、宣言は配列で、処理はポインタを用いて行え。
ヨロシクオネガイシマス
0694デフォルトの名無しさん
NGNG本当は1を足したり引いたりするためのものじゃないと聞いたのだが
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNG聞いた本人に聞けば?
0699デフォルトの名無しさん
NGNG>>129-131
0700デフォルトの名無しさん
NGNGお願いします
0701デフォルトの名無しさん
NGNG新規取得中です
全部更新チェックです
タイミングによって>>864のように無限エラーになる時と>>879のように消したのに
続きが読み込まれる時があります。
0702デフォルトの名無しさん
NGNGsub func{
my $a = shift;
my @list = split( /\n/, $a );
foreach( @list ){ ... }
}
みたいなことをCでやりたいんだけど、どう書けばいいんですか?
足りない脳みそひねってるうちに煙出てきた(´ー`)
0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNGstrtok
バグ
これらの関数は絶対に使用しないこと。もし使用する場合は、以下のことに注意すること。
これらの関数はその最初の引数を変更する。
これらの関数は const な文字列では使えない。
終端文字はすべて \0 になってしまう。
strtok() 関数はパーズに静的バッファを用いるので、スレッドセーフでない。もしこれが問題になる場合は strtok_r() を用いること。
0705680
NGNGないですよ・・・
誰かお願いします!
0706デフォルトの名無しさん
NGNGhttp://www.dvd-yuis.com/
最速発送!すぐ届く!!
http://www.dvd-yuis.com/
女性も安心!秘密厳守!!
http://www.dvd-yuis.com/
おっ!安い!買っちゃお!
http://www.dvd-yuis.com/
えっ!?もう届いたの?
http://www.dvd-yuis.com/
0708デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define max(x,y) ((x)>(y)?(x):(y))
#define drand() ((double)rand()/RAND_MAX)
int poisson(double lambda)
{
int k;
for(k = 0, lambda = exp(lambda) * drand(); lambda > 1; k++)
lambda *= drand();
return k;
}
int main()
{
const int mu = 6;
const double lambda = 5;
const int start = 200;
const int end = 1200;
const int ntrial = 20;
const double t0 = 2.09;
double xn, xm, an, sum, rms, mean = 0, m2 = 0, hw;
int i, j;
0709708
NGNGsrand(rand());
sum = 0;
xm = 0;
for (j = 1; j < end; j++) {
an = poisson(lambda);
xn = max(xm + an - mu, 0);
xm = xn;
if (j >= start)
sum += xn;
}
sum /= (end - start);
mean += sum;
m2 += sum * sum;
}
mean /= ntrial;
rms = sqrt(m2 / ntrial - mean * mean);
hw = t0 * rms / sqrt(ntrial);
printf("mean = %g\trms = %g\n", mean, rms);
printf("%g <= mean <= %g (95%%CL)\n", mean - hw, mean + hw);
return 0;
}
0710デフォルトの名無しさん
NGNGstrtok_r() は POSIX.1c に、strtok() は XPG4 と XPG4-UNIX にある。
実装に依存した話と、仕様を混同しない注意が必要。
07111000
NGNG1からNまでをランダムに選ぶのはどうやったらできるでしょうか?
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG1からNまでペンで書いた紙をシャッフルして選ぶんだ
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG(int)((double)rand()/RAND_MAX*N)+1
>>712
それはrand()が線形合同法の場合やばい
0716デフォルトの名無しさん
NGNGこの問題をなるべく速くメモリを使わないで正確に行うのは
結構難しいと思うのだが。
0717デフォルトの名無しさん
NGNG誰がそんなことを要求した?
0718デフォルトの名無しさん
NGNGrand()が線形合同法じゃないと仮定した場合
その方法は問題ないのか?
0719デフォルトの名無しさん
NGNG俺
0720デフォルトの名無しさん
NGNGどの方法?
0721デフォルトの名無しさん
NGNGあまのじゃくですね
0722デフォルトの名無しさん
NGNG(int)((double)rand()/RAND_MAX*N)+1
0723デフォルトの名無しさん
NGNG方法によっては上位ビットに偏りがあるので問題あり。
0724デフォルトの名無しさん
NGNG色々ありますが、とりあえずC FAQに書いてあります
0725デフォルトの名無しさん
NGNG本当か?
0727デフォルトの名無しさん
NGNG#include <algorithm>
using namespace std;
template<int N> class Matrix
{
protected:
double val[N][N];
public:
Matrix()
{
fill(&val[0][0], &val[N-1][N], 0);
}
Matrix(double v[N][N])
{
copy(&v[0][0], &v[N-1][N], &val[0][0]);
}
Matrix operator+(Matrix& m)
{
Matrix<N> mat;
for(int i=0; i<N; i++)
for(int j=0; j<N; j++)
mat.val[i][j] = val[i][j] + m.val[i][j];
return mat;
}
double* operator[](int i) { return val[i]; }
0728デフォルトの名無しさん
NGNG{
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
os << na.val[i][j] << ' ';
os << endl;
}
return os;
}
};
int main()
{
double dm[5][5] = { 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0 };
Matrix<5> mat(dm), mat2;
for(int i=0; i<5; i++)
for(int j=0; j<5; j++)
{
double num;
cin >> num;
mat2[i][j] = num;
}
Matrix<5> mat3 = mat + mat2;
cout << mat3 << endl;
}
0729デフォルトの名無しさん
NGNGこの辺とか
fill(&val[0][0], &val[N-1][N], 0);
copy(&v[0][0], &v[N-1][N], &val[0][0]);
double* operator[](int i) { return val[i]; }
0732デフォルトの名無しさん
NGNGしたとき比較回数が最大になるようにdata2を作れ。
0733r
NGNGとりあえず疑似コード。
int sorted[n];
sortTo( sorted, data1, n );
for( i = 0; i < n/2; i++ ) {
data2[i] = sorted[i];
data2[i + n/2] = sorted[n - i];
}
つーか、マージソートの実装によって、
比較回数って異なりそうな議がするなぁ
0735デフォルトの名無しさん
NGNGマージソートの実装は以下の通りです。
void mergesort(int first, int last)
{
int middle;
static int i, j, k, p;
if (first < last) {
middle = (first + last) / 2;
mergesort(first, middle);
mergesort(middle + 1, last);
p = 0;
for (i = first; i <= middle; i++) work[p++] = a[i];
i = middle + 1; j = 0; k = first;
while (i <= last && j < p)
if (work[j].key <= a[i].key) a[k++] = work[j++];
else a[k++] = a[i++];
while (j < p) a[k++] = work[j++];
}
}
0737r
NGNGつまり、1個目のwhileでどんだけ処理できるかが問題だな。
結合する時、iとjが交互に増分されるようにする。
まず、最後の結合で
for( int i = 0; i < n/2; i++ ) {
data1[i] = sorted[i * 2];
data1[n/2 + i] = sorted[i * 2 + 1];
}
となればいい。
これをdata1の0〜n/2とdata1のn/2+1〜n について、再帰的に適用する。
0738>673, >677
NGNG面倒です...。一度はとりくんでみたいもの。
0739デフォルトの名無しさん
NGNG#include <string.h>
#include <stdlib.h>
#include <ctype.h>
void main(void)
{
char moji; /* 文字列の一時的な格納領域 */
int len;
int number; /* 変換後の数値 */
while(1)
{
printf("数値を6桁以内に入力して=>");
rewind(stdin);
scanf("%s",&moji);
len=strlen(moji);
if (len>=7)
{
printf("7桁以上です。\n");
}
if (!isdigit(moji))
{
printf("数値じゃありません。\n");
}
0740デフォルトの名無しさん
NGNGif(number>0)
{
printf("プラスです。\n");
}
else if(number==0)
{
printf("ゼロです。\n");
}
else
{
printf("マイナスです。\n");
}
}
}
エラーが
error C2664: 'strlen' : 1 番目の引数を 'char' から 'const char *' に変換できません。 (新しい機能 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
error C2664: 'atoi' : 1 番目の引数を 'char' から 'const char *' に変換できません。 (新しい機能 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
cl.exe の実行エラー
と出るんですけど分かりません
0741デフォルトの名無しさん
NGNGそのまんま。charは1文字で、char *は文字列の事。だから比べる型が違うので
エラーになる。constは変数を定数のように使う時につける。仮引数に付いている
場合は、渡した関数で値を変換しないと言う意味。strcpyを例に見て見ると、
左側がchar*で、右側がconst char*。右側の文字列を左側にコピーすることをが
分かる。コードを変えるなら、char mozi[BUFSIZ]で良い。
0742デフォルトの名無しさん
NGNGint len;
int number; /* 変換後の数値 */
while(1)
{
printf("数値を6桁以内に入力して=>");
rewind(stdin);
scanf("%s",&moji);
これでエラーは無くなりましたが
数値じゃありませんを出力するにはどうしたらいいんでしょうか?
0743デフォルトの名無しさん
NGNG数字を入力してください6桁以内=>99----scanfで
プラスです
数字を入力してください6桁以内=>1234567
6桁以内に入力して(符号ふくむ)
数字を入力してください6桁以内=>fdfjhふぃえ
数字じゃありません
数字を入力してください6桁以内=>fd4324343
数字じゃありません
数字入力してください6桁以内=>12345678fdふぁ
6桁以内に入力して(符号ふくむ)
数字入力してください6桁以内=>0000
ゼロです
数字入力してください6桁以内=>−434
マイナスです
数字入力してください6桁以内=>jjj
数字じゃあれません
という感じに出力されるプログラムができません
0744デフォルトの名無しさん
NGNGscanfで文字列に読み込んで、strlenとisdigitで長さと文字種を
調べることは出来るが、scanfで文字列を安全に読むのは無理だろう。
scanfを使うのをやめてfgetsとatoiにすることを薦める。
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNGお願いします
0747デフォルトの名無しさん
NGNG必ず全角なのはなんでだ?
何かそうゆうネタなのんか?
>>473
while( fgets( buf, 100, stdin ), strcmp(buf, "exit") != 0 ) {
if( buf[0] == '-' ) {
minouse = 1;
lim = 5;
ptr = buf + 1;
} else {
minouse = 0;
lim = 6;
ptr = buf;
}
for( i = 0; i < lim && ptr[i] != '¥0' && isdigit(ptr[i]); i++ ) {
}
if( i == lim ) {
printf("桁数オーバ¥n");
} else if( ptr[i] != '¥0' ) {
printf("数字でない¥n");
} else if( minouse == 1 ) {
printf("マイナスです。¥n");
} else if( minouse == 0 ) {
printf("プラスです¥n");
}
適当に修正汁
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG頼むから中学生からやり直すかgoogle覚えてきてくれ。
0750デフォルトの名無しさん
NGNG参考文献は「http://e-words.jp/w/FIFO.html」でいいだろ。
あと、「http://e-words.jp/w/E382ADE383A5E383BC.html」だ。
node_t 入力された言葉(word)を保持するためのノードの構造体
Node_Create 引数で与えられた「言葉」を持つノードを追加。返り値:ノードのポインタ
Node_Display 引数で与えられたポインタ上にあるノードの内容を表示
queue 入力された文字を、FIFOで保存するための構造体。
Queue_Create queueの先頭要素を作成。
Queue_Clear 全てのqueueを再帰で削除。
Queue_AddNode 新しいqueueを追加する。
Queue_Pop 先頭のqueueの内容(node)を返り値とし、その先頭要素を削除する。
使用方法
e 言葉(word)で、言葉を保存する。
c で全ての内容を破棄する。
d 保存している中で、もっとも古いものを表示し、その要素を削除する。
実行例:
>e abc
>e bcd
>e cde
>d
[ abc ]
>d
[ bcd ]
>d
[ cde ]
>d
>
0751デフォルトの名無しさん
NGNGいいたいことは解った。googleなんかじゃ乗ってないな...
0752474
NGNG0753デフォルトの名無しさん
NGNGgoogleをなめちゃいかん。39件見付かった。
0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNG実行例 実行例の様になるようにmainを修正してください!
↓ お願いします!!
Initialize a queue.
> d
No more data.
> e programming
Enqueue: [programming]
> e group 3
Enqueue: [group 3]
> d
Dequeue: [programming]
> e ALGORITHM
Enqueue: [ALGORITHM]
> d
Dequeue: [group 3]
> e practice
Enqueue: [practice]
> d
Dequeue: [ALGORITHM]
> c
Initialize a queue.
> d
No more data
>
0757デフォルトの名無しさん
NGNGよろしくお願いします。
/*
階乗値を再帰的に求める
*/
#include <stdio.h>
/*--- 整数値nの階乗を返却 ---*/
int factorial(int n)
{
if (n > 0)
return (n * factorial(n - 1));
else
return (1);
}
int main(void)
{
int x;
printf("整数を入力せよ:");
scanf("%d", &x);
printf("%dの階乗は%dです。\n", x, factorial(x));
return (0);
}
0758デフォルトの名無しさん
NGNG下記のプログラムも再帰関数を用いらず関数gcdを実現してください。
/*ユークリッドの互除法によって最大公約数を求める*/
#include <stdio.h>
/*--- 整数値x, yの最大公約数を返却する ---*/
int gcd(int x, int y)
{
if (y == 0)
return (x);
else
return (gcd(y, x % y));
}
int main(void)
{
int x, y;
printf("整数を入力せよ:");
scanf("%d", &x);
printf("整数を入力せよ:");
scanf("%d", &y);
printf("最大公約数は%dです。\n", gcd(x, y));
return (0);
}
0759デフォルトの名無しさん
NGNG前スレ
>>758
今スレ
0760デフォルトの名無しさん
NGNGプログラム2でバイナリティファイルを開いて,fseek()関数を用いて、フィボナッチ数列を10項間隔で求めよ。
という問題なのですが、プログラム2を実行したときにフィボナッチの値がおかしくなってしまいます。
どうか宜しくお願いします
/* プログラム1 */
#include<stdio.h>
int main(void)
{
FILE *fp;
long double f[101];
int i;
f[0]=0.0;
f[1]=1.0
printf("%d[byte]\n",sizeof(long double));
for(i=2;i<101;++i)
f[i]=f[i-1]+f[i-2];
for(i=0;i<101;++i)
printf("n = %d, fibo = %21.0Lf\n", i, f[i]);
/* fibo.binをバイナリ書き込みようにオープンする*/
if((fp=fopen("fibo.bin","wb"))==NULL){
fprintf(stderr, "ファイルを開けません\n");
return 0;
}
/* バイナリデータの書込 */
fwrite(f,sizeof(long double),101,fp);
fclose(fp);
return 0;
}
0761760
NGNG/* プログラム2 */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
int i,c;
long double data[11];
if((fp = fopen("fibo.bin", "rb")) == NULL ) {
fprintf(stderr,"ファイルオープンエラー\n");
exit(1);
}
fseek(fp,0L,SEEK_SET);
fread(&data[0],sizeof(long double),1,fp);
printf("n=%d, fibo = %22.0Lf\n",0,data[0]);
for(i=1;i<=10L;++i){
fseek(fp,10,SEEK_CUR);
fread (&data[i],sizeof(long double),1,fp);
printf("n=%d, fibo = %22.0Lf\n",i*10,data[i]);
}
return(0);
}
0762デフォルトの名無しさん
NGNGfseekの第2引数は10じゃなく9*sizeof(long double)
0763757
NGNGしかし、過去スレでは
任意の数の階乗ではなく、15までであったり
再帰を使っていたりと私が求める答えとは異なっています。
一緒に考えてもらえませんか?お願いします。
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNGint i = 1;
for (; n > 0; n--) i *= n;
return i;
}
int gcd(int x, int y) {
while (y != 0) {
int tmp = x;
x = y;
y = tmp % y;
}
return x;
}
0767760
NGNGお返事ありがとうございます
言われたとおりにやったらうまくいきました
感謝です
ありがとうございました
0768デフォルトの名無しさん
NGNGdf/dx=lim{f(x+h)-f(x)}/h
に従い、十分小さいhを与えて関数x^3の微分値数値計算する関数を作成。
また解析解dx^3/dx=3x^2と比較するプログラムを考える事。
*比較するxの値の個数は20程度
小さい実数 h を実行時に与えるようにしてください. atof(argv[1]) あるいは scanf() どちらを用いてもいいです.
x の 範囲は実行時に与えるようにしなくとも結構です. プログラム内で適当に(例:0から10まで0.5刻み)固定してください.
−−−−−−−−−−−−
友人に頼まれたのですがほとんどCの入り口にいる僕にとっては難しいです・・
どうかご教授お願いいたします。C++ではなくC言語の課題らしいです。
0769デフォルトの名無しさん
NGNG[0,2π] の間で π/100 毎に正弦と余弦の値を表示するプログラムを作成せよ。
ただし、出力は角度毎に改行し、正弦の値、余弦の値の順に 出力させる。
0770デフォルトの名無しさん
NGNGたとえば、A軸 B軸 C軸 のように。
/*ハノイの塔*/
#include <stdio.h>
/*--- 円盤をx軸からy軸へ移動 ---*/
void move(int no, int x, int y)
{
if (no > 1)
move(no - 1, x, 6 - x - y);
printf("[%d]を%d軸から%d軸へ移動\n", no, x, y);
if (no > 1)
move(no - 1, 6 - x - y, y);
}
int main(void)
{
int n;/* 円盤の枚数 */
printf("円盤の枚数:");
scanf("%d", &n);
move(n, 1, 3);
return (0);
}
0771デフォルトの名無しさん
NGNG算数弱いんならプログラム止めた方が良いよ。
まさか sin(), cos() も知らない訳じゃないでしょ。
0772デフォルトの名無しさん
NGNG0773デフォルトの名無しさん
NGNGprintf("%f\t%f\n", sin(rad), cos(rad));
}
0774デフォルトの名無しさん
NGNG安心して24時間お買い物ができる!
セルビデオ店が近くにないお客様も気軽にお買い物を楽しめます。
http://www.net-de-dvd.com/
安心確実
お支払は安心の代金引換です
振り込んだのに商品が届かない等
の心配は無用!
http://www.net-de-dvd.com/
0775デフォルトの名無しさん
NGNG#include <stdio.h>
main(){printf("%c%c%c\n", 0+'A', 1+'A', 2+'A');}
0776デフォルトの名無しさん
NGNG偉そうに見えたらごめんね。
でもC言語の問題じゃなくて純粋に算数(数学に有らず)の話でしょ。
この業界に向いてないのかなぁと思っただけです。
0777デフォルトの名無しさん
NGNGfloat h, x, dfx1, dfx2;
printf("Input \"h\": \n");
scanf("%f", &h);
for (x = 0; x <= 10; x += 0.5) {
dfx1 = ((x + h) * (x + h) * (x + h) - x * x * x) / h;
dfx2 = 3 * x * x;
printf("%f\t%f\n", dfx1, dfx2);
}
return 0;
}
精度については聞くな
0778770
NGNGとりあえず、main関数に挿入したのですが上手くいきません。
0779>>770
NGNG(どっちのmain()から実行するの?)
printf("[%d]を%d軸から%d軸へ移動\n", no, x, y);
を
printf("[%d]を%c軸から%c軸へ移動\n", no, (char)x+'A', (char)y+'B');
としたら、と>775はいっているかと。
0780>732
NGNG0781デフォルトの名無しさん
NGNGマージソートでいいんじゃない?
0782758
NGNGそして、今回は更に発展させたプログラムを作りたいです。
要素数がnである配列aの全要素の最大公約数を求める関数です。
int gcdary(int a[], int n) ;
を利用して欲しいです。よろしくお願いします。
0783デフォルトの名無しさん
NGNGどうしてもプログラムの内容が理解できません。なぜ型変換をしたりするんでしょうか?
どなたか解説をお願いいたします。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i = 1;
if(*((char *)&i) == 0x01)
printf("リトルエンディアン\n");
else if(*((char *)&i + sizeof(i) - 1) == 0x01)
printf("ビッグエンディアン\n");
else
printf(">謎<\n");
return EXIT_SUCCESS;
}
http://www.wdic.org/?word=%A5%A8%A5%F3%A5%C7%A5%A3%A5%A2%A5%F3%A5%CD%A5%B9+%3ATECH
0784デフォルトの名無しさん
NGNGftp://ftp.matsusaka-u.ac.jp/pub/algorithms/src/gcd.c の ngcd() 参照
0785>781
NGNG奥村晴彦氏の著書をみて納得しました。
(なぜ a.key, a.info と構造体にしているかもわかりました。)
0786デフォルトの名無しさん
NGNG*((char*)&i) はiのポインタをchar*と見做してその先頭を表す。
char*では連続するバイトが順々に割り当てられるので、
格納されている順に参照される。
sizeof(int)==4 を仮定すると、
littleendian なら [4321] の順に格納されているので、
先頭は4番目のバイトとなる。
bigendian なら [1234] の順に格納されているので、
先頭は1番目のバイトとなる。
0787デフォルトの名無しさん
NGNGこのスレか前スレ辺りに私が書いたハノイの塔のプログラムがある。
それはバーの名前をキャラクタで与えている。
0788デフォルトの名無しさん
NGNGグレゴリ−級数は求まったのですが、ダンプ表示の仕方が全く分かりません
どなたかお願いします
#include<stdio.h>
#include<math.h>
union dump{
double f;
unsigned char byte[8];
};
float G(double i,double x);
int main(void)
{
double Gre;
double i=1.0;
double x=1.0;
int c;
Gre=G(i,x);
}
float G(double i, double x)
{
float Gre=0.0;
for(i=1.0;i<=1000000.0;++i)
Gre += (-1.0)*pow((-1.0), i)*pow(x, 2.0*i-1.0) /
(2.0*i-1.0);
return(Gre);
}
0789>783
NGNG(すなわち size(int) = 1 )
char のサイズは処理系によらず 1 バイトだったはずですから、
(char *)&i で2バイト構成中の先頭の1バイトのアドレスを、
(char *)&i + 1 ならば2バイト構成中の後ろの方のアドレスを
求めることになりますね。
0790デフォルトの名無しさん
NGNG>(すなわち size(int) = 1 )
めちゃくちゃだな。sizeof(int)==2って言いたいんじゃないのか?
0791デフォルトの名無しさん
NGNG> (すなわち size(int) = 1 )
これの説明を。
0792デフォルトの名無しさん
NGNGつーかリトルじゃなかったらビッグにしちゃっていいんじゃないの?
0793デフォルトの名無しさん
NGNGfloatとdoubleが入り乱れてますね。
for(j=0;j<8;j++) printf("%02x",dump.byte[j]);
でいいの?IEEE表記を見てわかる人じゃないと・・・。
0794788
NGNG申し訳ないのですがもう少し詳しく説明していただけませんでしょうか?
C言語は全くの素人なもので…
本当に、すいません
0795デフォルトの名無しさん
NGNGこれでいい?
int main(void)
{
double Gre;
double i=1.0;
double x=1.0;
int c;
union dump d;
Gre=G(i,x);
d.f=Gre;
for(c=0;c<8;c++) printf("%02x",d.byte[c]);
printf("\n");
return 0;
}
0796デフォルトの名無しさん
NGNG1234567890
2345678901
3456789012
…100回繰り返す
for文、if文、while、do-whileなどを使って賢く表示せよ
お願いします
0797r
NGNG#include <stdio.h>
int main() {
int i, j;
for( i = 0; i < 100; i++ ) {
for( j = 0; j < 10; j++ )
printf( "%d", i % 10);
putchar('¥n');
}
return 0;
}
0800788
NGNGありがとうございます
お陰で今日のレポート提出期限に間に合いそうです
本当に助かりました
0801デフォルトの名無しさん
NGNGfloatとdouble揃えておいてね
0802デフォルトの名無しさん
NGNG0803796
NGNG0804デフォルトの名無しさん
NGNG0805540
NGNG友達も誰も宿題ができないまま、時間が僕をおそいます・・・
もう死にます・・・・
どなたか>>540からのやつをおねがいします(T0T)
0806デフォルトの名無しさん
NGNGできない人の方が多いだろうから大丈夫じゃない?
解説があったなら聞いてないのが悪い。
0807デフォルトの名無しさん
NGNG馬鹿だから分からないの。ごめんね('-'*)
0808デフォルトの名無しさん
NGNGi%10を(i+j)%10と置換してみよう
0810デフォルトの名無しさん
NGNG>>540は条件不足。どの点を使って補間するかは分からないと出来ない。
0811デフォルトの名無しさん
NGNG>>634の結果は?
0813デフォルトの名無しさん
NGNG>>807と同じく。せめてプログラムのみの問題に書き換えてくれれば・・・
流れ図書けば誰かやってくれるかも知れない。
それすらできないなら、質問する板が違う。
0814デフォルトの名無しさん
NGNGPen3S1.5Gで10万桁7分でした。
doubleの仮数部が53ビットなら62957620桁までいけます。
何日かかるかわからんから試す気にならんけど。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=76
0815803
NGNG(1)
**********
* *********
** ********
*** *******
**** ******
***** *****
****** ****
******* ***
******** **
********* *
**********
(2)
0123456789
1023456789
1203456789
1230456789
1234056789
1234506789
1234560789
1234567089
1234567809
1234567890
2134567890
2314567890
…繰り返す
この2つです、よろしくお願いします!
123456789
0816803
NGNG0817デフォルトの名無しさん
NGNGで交換する。
0818803
NGNG0819デフォルトの名無しさん
NGNGprintf(" ");
} else {
printf("*");
}
0820803
NGNG0821デフォルトの名無しさん
NGNGint main() {
int i,j;
for(i=0;i<11;i++) {
for(j=0;j<11;j++) {
if(i==j)
printf(" ");
else
printf("*");
}
printf("\n");
}
return 0;
}
0822803
NGNG0823デフォルトの名無しさん
NGNG(1)
int i,j;
for(i=0;i<11;i++){
for(j=0;j<11;j++)
printf("%c",(i==j)?' ':'*');
printf("\n");
}
(2) なんか汚い。。。
int i,j;
for(i=0;i<100;i++){
int l=i/10;
int m=i%10;
if(i>0 && m==0) continue;
for(j=0;j<10;j++){
int n;
if(j==m){
n=l;
} else if(j<m){
n=(j+l+1)%10;
} else {
n=(j+l)%10;
}
printf("%d",n);
}
printf("\n");
}
0824540
NGNGまず
(1)
x f(x)
0 〜〜
0,1 〜〜
0,2 〜〜
0,3 〜〜
0,4 〜〜
この表を完成させて、そしてそれで(2)に行きます・・
それぞれの領域とは、5つの数字の間の、4領域だと思います。
今日は友達が泊まりに来て、他のレポは全部終わった・・・・。
あとはこれだけです。
いろいろ迷惑かけてすいません。もう死にそうなんです(ToT)
0825803
NGNG初心者なんでもう全くついていけてないんですが、しっかり表示されてる!
どれぐらい勉強すればこのぐらいすぐ書けるようになるんだろう(゚o゚)
0826デフォルトの名無しさん
NGNG>>540には2つの領域って書いてあるが?
0 0.1 0.2 と 0.2 0.3 0.4 の3点で補間するんじゃないのか?
2点でやるならLagrange補間の意味が全くないんだが。
0827540
NGNG多分そうだと思います。それぞれの領域じゃなくて、その二つだけでした。
ラグランジュ補間、今友達と、テキスト見てやっと少しわかりました。
0828デフォルトの名無しさん
NGNG領域毎に補間するのだろうが3点に限る根拠もよく分からない。
0829デフォルトの名無しさん
NGNGこんな課題です。
データ件数はプログラムの最初に入力させます。
構造体を使って、名前と生年月日を入力させ、それを出力します。
生年月日の形式は、19741113のような形でいいです。
一応プログラムは作成してみました。
でも、構造体がわからないので、現状では構造体を使わないプログラムになってます。
このプログラムを、構造体を使うように直していただけませんか?
私の作成したプログラムに問題点があったら、そこも直して欲しいです。
0830デフォルトの名無しさん
NGNG(1)で求めてる5点を使うとして、
領域を2つに分けるとそれぞれに3点ずつしか存在しないから
0831540
NGNG0832540
NGNGそれが二つ・・・・です。
0833829
NGNG#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define BUFF_SIZE 1024
#define NAME_DATA_SIZE 3
void main()
{
int i,j,data_size=0; char s[100],buff[BUFF_SIZE];
char*array[NAME_DATA_SIZE]; char*karray[NAME_DATA_SIZE];
printf("データ件数を入力せよ\n");
fgets(s,100,stdin); sscanf(s,"%d",&data_size);
printf("%d人分のデータを入力せよ\n",data_size);
for(i=0;i<data_size;i++){
printf("%d人目の名前を入力せよ\n",i+1);
if(fgets(buff,sizeof(buff),stdin)==NULL){break;}
array[i]=(char*)malloc(strlen(buff)+1);
if(array[i]!=NULL) strcpy(array[i],buff);
printf("%d人目の生年月日を入力せよ\n",i+1);
if(fgets(buff,sizeof(buff),stdin)==NULL){break;}
karray[i]=(char*)malloc(strlen(buff)+1);
if(karray[i]!=NULL) strcpy(karray[i],buff);
}
for(j=0;j<i;j++)printf("\n%d人目:%s生年月日:%s\n",j+1,array[j],karray[j]);
for(j=0;j<i;j++){
if(array[j]!=NULL) free(array[j]);
if(array[j]!=NULL) free(karray[j]);
}
}
0834540
NGNGx f(x)
0 〜〜
0,1 〜〜
0,2 〜〜
0,3 〜〜
0,4 〜〜
0835540
NGNG神様〜〜なんてこんなときだけ祈ってもな・・・
おやすみなさい
0836デフォルトの名無しさん
NGNGすまん(1)が明らかになっていたのか。なぜそれを最初に書かん。>>540
0837デフォルトの名無しさん
NGNGstruct KOZOTAI{
char *name;
time_t birthday;
};
0838837
NGNGstruct KOZOTAI{
char *name;
char birthday[20];
};
0839829
NGNG構造体の宣言とかはわからないこともないんです。
でも、mainの中で使うときに、どんなふうにして使えばいいのかわからないんですよ。
さっき上げたプログラムの
array[i]=(char*)malloc(strlen(buff)+1);
ってのは、構造体を使うとどんな風に書けるのか教えていただけませんか?
0840デフォルトの名無しさん
NGNG名前を保持する領域も動的に確保しないといけないの?
0841829
NGNG「動的」とか「静的」って何の事なのでしょうか?
0842デフォルトの名無しさん
NGNGこの場合は動的=mallocとでも思って。
0843829
NGNGたぶん、どっちでもいいと思います。
0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNGchar name[64],
char birthday[10],
}
と定義して
struct data d[256];
と構造体の配列つくったら mallocいらないよ。
0846直リン
NGNG0847845
NGNGstruct data{
char name[64];
char birthday[10];
};
ですた。
0848デフォルトの名無しさん
NGNGじゃあ固定長で
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NAMEBUFSIZ 80
#define BDBUFSIZ 20
struct data{
char name[NAMEBUFSIZ];
char birthday[BDBUFSIZ];
};
int main()
{
struct data *pdata;
int i,ndata;
printf("データ件数を入力せよ > ");
scanf("%d",&ndata); /* 面倒なのでscanfで */
if(!(pdata=malloc(ndata*sizeof(struct data)))){
fprintf(stderr,"メモリー不足!!\n");
return 1;
}
printf("%d人分のデータを入力せよ\n\n",ndata);
0849デフォルトの名無しさん
NGNGfor(i=0;i<ndata;i++){
printf("%d人目の名前を入力せよ > ",i+1);
fgets(pdata[i].name,NAMEBUFSIZ,stdin);
printf("%d人目の生年月日を入力せよ > ",i+1);
fgets(pdata[i].birthday,BDBUFSIZ,stdin);
}
for(i=0;i<ndata;i++)
printf("%d人目 名前:%s 生年月日:%s\n",i,pdata[i].name,pdata[i].birthday);
free(pdata);
return 0;
}
0850829
NGNGとりあえず、自分でがんばってみます。
皆様、ありがとうございました。
0851848
NGNG0852848
NGNG0853829
NGNG>>848様、ありがとうございます!
848様が書かれたのを参考にして、自分で理解しながら少しずつ作っていこうと思います。
本当にありがとうございます。
0854848
NGNG0855デフォルトの名無しさん
NGNG0856782
NGNG下記のように付け加えてみました。ですが、コンパイルするとエラーがでます。
どうしたらいいのですか?
パラメータ 'a' は int * 型として定義されているので intは渡せない(関数 gcd )
パラメータ 'a' は int * 型として定義されているので intは渡せない(関数 main )
/*ユークリッドの互除法によって最大公約数を求める*/
#include <stdio.h>
/*--- 整数値x, yの最大公約数を返却する ---*/
int gcd(int n, int a[])
{
int i, d;
d = a[0];
for (i = 1; i < n && d != 1; i++)
d = gcd(a[i], d);
return d;
}
int main(void)
{
int x, y;
printf("整数を入力せよ:");
scanf("%d", &x);
printf("整数を入力せよ:");
scanf("%d", &y);
printf("最大公約数は%dです。\n", gcd(x, y));
return (0);
}
0857デフォルトの名無しさん
NGNGngcd を勝手に gcd にしているではないか。
int ngcd(int n, int a[]) は int gcd(int x, int y) を使って
配列 a のGCDを求める関数。あなたが呼ぶべきは gcd の方。
0858デフォルトの名無しさん
NGNGですが、2つの数のgcdしか求めることが出来ません。
#include <stdio.h>
int gcd(int x, int y){
if (y == 0) return x;
else return gcd(y, x % y);
}
int ngcd(int n, int a[]){
int i, d;
d = a[0];
for (i = 1; i < n && d != 1; i++)
d = gcd(a[i], d);
return d;
}
int main(void){
int i,x,y;
char s[2];
static int a[100];
printf("整数を入力せよ:");
scanf("%d", &x);
printf("整数を入力せよ:");
scanf("%d", &y);
printf("最大公約数は%dです。\n", ngcd(i, a));
return (0);
}
0859デフォルトの名無しさん
NGNGiは代入してるの?
0860デフォルトの名無しさん
NGNGint
main(void){
static int a[100];
printf("整数を入力せよ:");
scanf("%d", a+0);
printf("整数を入力せよ:");
scanf("%d", a+1);
printf("最大公約数は%dです。\n", ngcd(2, a));
return 0;
}
0861デフォルトの名無しさん
NGNGstatic は要らん
int a[100] でいい
0862デフォルトの名無しさん
NGNG実行例 実行例の様になるようにmainを修正してください!
↓ お願いします!!
Initialize a queue.
> d
No more data.
> e programming
Enqueue: [programming]
> e group 3
Enqueue: [group 3]
> d
Dequeue: [programming]
> e ALGORITHM
Enqueue: [ALGORITHM]
> d
Dequeue: [group 3]
> e practice
Enqueue: [practice]
> d
Dequeue: [ALGORITHM]
> c
Initialize a queue.
> d
No more data
>
0863デフォルトの名無しさん
NGNG#include <stdlib.h>
#define ARRAYSIZE 100
#define max(x,y) ((x)>(y) ? (x) : (y))
int
main(int argc, char **argv)
{
int n,i,a[ARRAYSIZE];
n = argc > 2 ? max(ARRAYSIZE, atoi(argv[1])) : 3;
fprintf(stderr, "整数%d個入力せよ:", n);
for (i=0; i<n; i++) scanf("%d", a+i);
printf("最大公約数は%dです。\n", ngcd(n, a));
return 0;
}
0864デフォルトの名無しさん
NGNG#define min(x,y) ((x)<(y) ? (x) : (y))
n = argc > 2 ? min(ARRAYSIZE, atoi(argv[1])) : 3;
だった。
0865デフォルトの名無しさん
NGNG0866デフォルトの名無しさん
NGNGclock()の事ですか?
0867デフォルトの名無しさん
NGNG>>750
自分で適当にprintf()を入れてみてくれ。
0868デフォルトの名無しさん
NGNGmain()
{
int indata, rem, sum=0;
printf(" ### 整数(>=)入力 ?"); scanf("%d", &indata);
printf(" ### 反転した整数は =>");
if( indata == 0 ){
printf("%d", indata);
}else{
do{
□□□□□□□□□
□□□□□□□□□
}while(indata != 0);
}
}
というので、↓のように数字反転
98765 => 56789
12300 => 321
0 => 0
するプログラムを作りたいのですが、
do-While文の本文を自分で考えて書き込めといわれました。
しかしハッキリいって全く思い付きません。
解説 or ソースのどちらかだけでもいいですので、どうか教えて下さい
0869デフォルトの名無しさん
NGNG0870デフォルトの名無しさん
NGNGsum=0
98765 mod 10 = 5, sum = sum*10 + 5 = 5;
98765 / 10 = 9876
9876 mod 10 = 6, sum = sum * 10 + 6 = 56
9876 / 10 = 987
:
:
:
を繰り返す。
modはあまりを求める(%に該当) 合計はsumに代入する。
で、最後、indata==0になったらsumを表示する。
if(indata==0){printf("ぬるぽ");}
0871デフォルトの名無しさん
NGNGprintf("%d",indata%10);
indata/=10;
でもいいけど、上の変数定義が意味無いので無理につかうとこうなる
0872540
NGNG後はプログラムの宿題だけだ〜〜〜
うわああああん T0T
0873783
NGNG皆さんありがとうございます。何とか理解しました。
BCCで試したのですが、4バイトであるintのアドレスをchar型のポインタに格納して
1バイトずつアクセスできるようにして格納されている値を調べている、
ということですよね?
どうもありがとうございました。
0874デフォルトの名無しさん
NGNGで、f(x)は>>540のexp(1.37*x)と>>541のexp(0.37*x)のどっちなんだ?
0877デフォルトの名無しさん
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=77
0878デフォルトの名無しさん
NGNG今までのレスを統合してみました。ですが、まだ求めることが出来ていません。
一部だけではなく全体を投稿してもらえませんか?理解力がなくてすいません。
#include <stdio.h>
int gcd(int x, int y)
{
if (y == 0) return x;
else return gcd(y, x % y);
}
int ngcd(int n, int a[])
{
int i, d;
d = a[0];
for (i = 1; i < n && d != 1; i++)
d = gcd(a[i], d);
return d;
}
#include <stdlib.h>
#define ARRAYSIZE 100
#define min(x,y) ((x)<(y) ? (x) : (y))
int main(int argc, char **argv)
{
int n,i,a[ARRAYSIZE];
n = argc > 2 ? min(ARRAYSIZE, atoi(argv[1])) : 3;
fprintf(stderr, "整数%d個入力せよ:", n);
for (i=0; i<n; i++) scanf("%d", a+i);
printf("最大公約数は%dです。\n", ngcd(n, a));
return 0;
}
0879デフォルトの名無しさん
NGNG> n = argc > 2 ? min(ARRAYSIZE, atoi(argv[1])) : 3;
n = argc > 1 ? min(ARRAYSIZE, atoi(argv[1])) : 3;
こうしたかったんだろう。
ところで、これで何がいかんの?
0880878
NGNG上記のプログラムだと3つしか求めることしかできないからです。
あと、コンパイル時に マクロ 'min' の重複定義 とでてしまいます。
>879さんはエラーなくコンパイルすることが出来ましたか?
0881デフォルトの名無しさん
NGNG> つーかリトルじゃなかったらビッグにしちゃっていいんじゃないの?
世の中には、PDP エンディアンみたいな変態的な奴もあったからなぁ...。
0882デフォルトの名無しさん
NGNGコマンドライン引数で個数が与えれるようになってる。
% ./a.out 4
整数4個入力せよ:12 24 6 18
最大公約数は6です。
%
手元では警告レベルを最大にしたけど min は怒られなかった。
駄目なら MIN とかにすれば?
0883デフォルトの名無しさん
NGNG回答の近似値(多分間違いはあるだろうから鵜呑みにしない)
#include <stdarg.h>
unsigned int two_gcd(unsigned int a,unsigned int b){
if(b>a)
return two_gcd(a,b);
if(b==0)
return a;
return gcd(b,a % b);
}
unsigned int gcd(unsigend int a1,unsigned int a2,...){
va_list more;
unsigned int result=two_gcd(a1,a2);
if(result==1)
return 1;
va_start(more);
while(more){
result=two_gcd(result,var_arg(more,int));
if(result==1)
return 1;
}
return result;
}
0884デフォルトの名無しさん
NGNG0885878
NGNG0886デフォルトの名無しさん
NGNG長さnの配列のうち、まえからk個と後ろのk+1〜n個目までとを入れ替える問題です。
�@kがn/2以上のとき、�Dから�F、それ以外は�Aから�Cを行う。
�A配列の先頭からk個目までを作業配列までを作業配列に移す。
�B配列のk+1番目から後ろのn番目までを配列の1番目からn-k個目までに入れる。
�C作業配列のk個を配列のn-k+1番目以降にうつす。
�D配列のk+1番目から最後までを作業配列に転送する。
�E配列の先頭からk番目までをn−k個後ろへ転送する。
�F作業配列のn−k個を配列の先頭からn−kまで転送する。
0887878
NGNG(1)数を入力 (2)最大公約数を求める
と表示された後、(1)(2)に従って進み
最大公約数は■です。
となるようなプログラムを欲しいのです。言葉が足りなくてすいません。
0888デフォルトの名無しさん
NGNG(1)i=0〜n について
data1[i] = sorted[i * 2];
data1[n/2 + i] = sorted[i * 2 + 1];
(2)これを0〜n/2とdata1のn/2+1〜n について、再帰的に適用する。
このようなプログラムを作って下さい。
実行例
(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16)
→(1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16)
→(1 5 9 13 3 7 11 15 2 6 10 14 4 8 12 16)
→(1 9 5 13 3 11 7 15 2 10 6 14 4 12 8 16)
0889デフォルトの名無しさん
NGNGintの配列の場合
if (k < n / 2) {
memcpy(work, array, k * sizeof(int));
memmove(array, array + k, (n - k) * sizeof(int));
memcpy(array + n - k, work, k * sizeof(int));
}
else if (k <= n) {
memcpy(work, array + k, (n - k) * sizeof(int));
memmove(array + n - k, array, k * sizeof(int));
memcpy(array, work, (n - k) * sizeof(int));
}
0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNGさらに,そのプログラムでの実現には,配列あるいはポインタを使う.それぞれの場合の利点・欠点を説明せよ
0892デフォルトの名無しさん
NGNGもうちょい具体的に。
求めてるのは多分 case EOF: だと思うけど。
0893デフォルトの名無しさん
NGNG入力に使ってる関数を知りたいよね。
0894デフォルトの名無しさん
NGNG0895デフォルトの名無しさん
NGNGwhile ((c = getchar()) != EOF)
{
switch (c)
{
:
:
}
}
/*終了*/
0896デフォルトの名無しさん
NGNGdata1 sorted が定義されてない
0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNG0900540
NGNGありがとうございます。結局間に合わなかったんだけど。クラスの7割くらいが
まだだしてないみたいなので、遅れても受け取ってもらえるようです。
明日かあさってまで出せそうです。ありがとうございました。
0901デフォルトの名無しさん
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=78
このプログラムです!
実行結果↓ 本当は下の様にしたい
Initialize a queue. Initialize a queue.
>d >d
No more data. No more data.
>e programming >e programming
Enqueue:[programming] Enqueue:[programming]
>e group 3 >e group 3
Enqueue:[group 3] Enqueue:[group 3]
>d >d
Dequeue:[programming] Dequeue:[programming]
>e ALGORITHM >e ALGORITHM
Enqueue:[ALGORITHM] Enqueue:[ALGORITHM]
>d >d
Dequeue:[group 3] Dequeue:[group 3]
>e practice >e practice
Enqueue:[practice] Enqueue:[practice]
>d >d
Dequeue:[ALGORITHM] Dequeue:[ALGORITHM]
>c >c
Initialize a queue. Initialize a queue.
>d >d
No more data. No more data.
>No more data. >
↑--ここでCtrl+D--↑
0902デフォルトの名無しさん
NGNGfgetsの戻り値がEOFかどうかチェックしろ
0903902
NGNG0904デフォルトの名無しさん
NGNG実行結果おかしいのでもう一度
Initialize a queue.
>d
No more data.
>e programming
↑
略
↓
>c
Initialize a queue.
>d
No more data.
>No more data.←Ctrl+D
本当は下の様にしたい
Initialize a queue.
>d
No more data.
↑
略
↓
>d
No more data.
>←Ctrl+D
0905ano
NGNG今画像ファイルを読み込んで(ppm形式)
そのファイルに書かれている輝度の分散やら平均もとめてるんですが
たとえば平均とか求めるときにどうしても0で割らないといけない状況も
あって,もし0ならberakするようにしたんですけどそれではループ自体
ぬけてしまうんです。C言語では普通どのようにかくのですか?
0907デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNG平均を求めるなら0で割らなきゃいけない状況に落とす方が間違い。
0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNGプログラムをC言語で作成してください。お願いいたします。
0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNG注文どおりにバグを入れておきました。
void foo(int* data1, int* sorted, size_t n)
{
int i;
if (n > 1) {
for(i = 0; i < n; i++) {
data1[i] = sorted[i * 2];
data1[n / 2 + i] = sorted[i * 2 + 1];
}
foo(sorted, data1, n / 2);
foo(sorted + n / 2, data1 + n / 2, n / 2);
}
}
0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNG1.〜
2.〜 という感じで。
#include<stdio.h>
main()
{ char a[10];
int n,k,i,j,l,m,h,g;
scanf("%d %d",&n,&k);
for(i=0;i<n+1;i++)
if(i%2==1)
a[i]='*'; else a[i]=' ';
g=0;
if(n%2==0)
g=1;
for(i=0+g;i<n+g;i++)
for(l=0;l<k;l++)
{
h=0;
if(i%2==0)
h=1;
for(j=0+h;j<n+h;j++)
for(m=0;m<k;m++)
printf("%c",a[j]);
printf("\n");
}
}
おかしな出力結果になったら教えて下さい。ではお願いします。
0916デフォルトの名無しさん
NGNG>>673 と >>814 をみれ。
0917デフォルトの名無しさん
NGNG1.パターンが何回黒と白を交換するか(n)、と大きさ(k)を入力する。
n=1であれば、a[]="*";
n=2であれば、a[]="* ";
n=5であれば、a[]="* * *"; となる。
2.gは、nが奇数か、偶数かを判断した結果である。
表示する際、高さをこれで調整している。
3.iは縦幅である。また、lは縦幅の倍率となる。
4.hは、iが奇数か、偶数かを判断した結果である。
表示する際、横幅をこれで調整している。
5.jは横幅である。また、mは横幅の倍率となる。
6.a[j]を表示する。
こんな感じかい?ついでに、n>=10だと(理論的に)危ない。
0918デフォルトの名無しさん
NGNGa[]="* * * ...";
に対し、gやhはどれだけマスをずらすか、である。
g=1ならば、
a[]|g=1 = " * * * ...";
となる。
ごめん、日本語難しいけど、とりあえずこの2つでa[]の表示する位置をずらしてるんだよ!
0919デフォルトの名無しさん
NGNGおお神よ!ありがとうございます!
0920886
NGNG入力した文字列に886の処理を施して、処理後の配列を
画面に表示させるにはどうしたらいいのでしょう。。。
0921デフォルトの名無しさん
NGNGリストとはデータ要素をノードによって順に繋いだデータ構造をいう。
各データ要素が並びの次の要素へのノードだけを持つものを単方向リスト、前後の要素へのノードを双方向リストという。
スタックとはデータ要素を順序を保って格納し、入力の新しいものから順に取り出せるデータ構造(LIFO:Last In First Out)である。
キューとはデータ要素を順序を保って格納し、入力の古いものから順に取り出せるデータ構造(FIFO:First In First Out)である。
C言語などでは、リストはノードによるデータの連結を、ポインタによるアドレス参照をつかって実現する。
リスト内の任意のデータを取得するには、ノードをたどる必要があり時間的コストがかかるという欠点を持つ。
リスト内へのデータ追加や取り出しは、前後の要素のノードを繋ぎ換えるだけで完了するため、短時間で処理を行える。
スタックやキューはリストによって実装することができる。
スタックは、配列により実装することが多い。
配列に順にデータを入力し、最も新しく入力したデータ(または次にデータを格納する位置)へのポインタを保持することでLIFOを実現する。
ランダムなデータへのアクセスはできないが、データの追加、取り出しは、対象データの移動とポインタのインクリメント、デクリメントだけのため時間的コストが非常に少ない。
一般に固定長配列で実装するが、適切なサイズを確保しないとオーバーフローしやすくなるという欠点を持つ。
スタックはリストによる実現も容易だが、データ入出力に関するコストでは固定長配列での実装のほうが有利である。
ただし、リストで実現した場合、動的なデータ領域確保がしやすいため、システムの記憶領域がある限りいくらでもデータを格納することができるという利点を持っている。
キューは、リストにより実装することが多い。
データ要素を入力順に繋いだリストに格納し、リストの先頭と末尾へのポインタを保持することでFIFOを実現する。
配列を使って実装することもあり、その場合、データ入出力位置を示すポインタが配列の先頭と末尾を行きするリング状にすると効率的である。
配列による欠点利点、リストによる欠点利点はスタックの場合と殆ど同じである。
0922デフォルトの名無しさん
NGNG上に出てきているプログラムは再帰関数を利用しているようですが、
私が作りたいプログラムは再帰を使わないやつです。
よろしくお願いします!
0923デフォルトの名無しさん
NGNGmain関数付きでお願いします。
0924デフォルトの名無しさん
NGNG0925デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
int main()
{
int sorted[] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
};
int data1[sizeof sorted / sizeof(int)], *dst, *src;
int i, j, k, n = sizeof sorted / sizeof(int);
for (i = n; i > 1; i >>= 1) {
for (j = 0; j < n; j++)
printf("%d ", sorted[j]);
putchar('\n');
dst = data1;
src = sorted;
for (j = 0; j < n / i; j++) {
for (k = 0; k < i / 2; k++) {
*(dst + k) = *(src + k * 2);
*(dst + i / 2 + k) = *(src + k * 2 + 1);
}
memcpy(src, dst, i * sizeof(int));
dst += i;
src += i;
}
}
return 0;
}
0926887
NGNG最大公約数を求めるための要素数は?
と表示された後、入力された値に従って(たとえば入力が3なら)
一つ目の数は?:■
二つ目の数は?:▲
三つ目の数は?:●
それを演算して最後に、
最大公約数は〜です。
と言うのはどうですか?
0927デフォルトの名無しさん
NGNGn = argc > 1 ? min(ARRAYSIZE, atoi(argv[1])) : 3;
を
fprintf(stderr, "最大公約数を求めるための要素数は? ");
scanf("%d", &n);
にすれば良いだけだろ?
0928デフォルトの名無しさん
NGNGなぜ標準エラーに?
0929デフォルトの名無しさん
NGNG空気嫁
0930デフォルトの名無しさん
NGNGとしたとき、output.txt にプロンプトが必要なことはそう多くない。
0931928
NGNG0932デフォルトの名無しさん
NGNGδA=∫ {(∂/∂x)Lδx+(∂/∂v)Lδv}dt
t1
プログラムにすると・・・・・めんどくせ
0933学生
NGNG----
データ(x_i, y_i) [i=(1,2,・・・,N)] を直線近似する.
直線とそれぞれの点との 距離r_i の距離の和
Σr_i
を最小にする直線を求める方法でプログラミングせよ.
----
直線( ax + by + c = 0 )と点 (x_i, y_i) との距離は
r_i = | a * x_i + b * y_i + c | / sqrt{a^2+b^2}
なので,距離の和は
Σr_i
であり,これが最小になる a, b, c を求めればいいことはわかったのですが,
ここから先がわからないので,ヒントください.
0934デフォルトの名無しさん
NGNG最小二乗法
>>877のleastsquare()を使う
0935学生
NGNG最小自乗法の式の展開は理解できたのですが,
r_i = | a * x_i + b * y_i + c | / sqrt{a^2+b^2}
は絶対値の記号が入っているために,どうやって
偏微分,その後の展開をしたらいいかわかりません.
よろしくおねがいします.
0937デフォルトの名無しさん
NGNG>>940
マルチポスト非常にうざい。
氏ね。
942 名前:デフォルトの名無しさん :03/06/06 23:58
>>940
ttp://pc2.2ch.net/test/read.cgi/tech/1053963794/933-
943 名前:デフォルトの名無しさん :03/06/06 23:59
>>941もマルチポストな罠
944 名前:941 :03/06/07 00:00
>>943
許してくれよ
0938デフォルトの名無しさん
NGNG最小二乗法の結果は距離の和を最小にしない
0939デフォルトの名無しさん
NGNG0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNG線形リスト:線の形のリスト
0942デフォルトの名無しさん
NGNG直線 y = ax + b と点 ( x_i, y_i )を点( 0, b )を中心にarctan(a) (=sとする)度回転させて、考える。
直線 y = b と 点(0, x_i*sin(s) + y_i*cos(s) )の距離の和、つまり
Σ( x_i*sin(s) + y_i*cos(s) - b ) が最小になるような s を求める。でaが求まる?
そしたら s を固定して b を求める。
というやり方で楽にできますか?
0943デフォルトの名無しさん
NGNG0944教えて厨
NGNG0945教えて厨
NGNG#include <stdlib.h>
#include <math.h>
static unsigned long seed ;
#define a 1664525
#define b 1
#define m 4294967296
#define N 100
void usr_srand(unsigned long s)
{
seed = s;
}
double usr_rand(void){
seed = ( a * seed + b ) % m;
return (double)seed / m;
}
0946教えて厨
NGNG{
double z ,v ,r, s ,t ,q ,ave ,bun ;
long l , n , k , i , j , u , sum , p , wa , wb , h[N] ;
usr_srand(137);
u = 0;
wa = 0;
wb = 0;
v =0;
for (i = 0; i < N; i++){
h[i] = 0;
}
for (l =0; l < 10000; l+=100){
for (i = 0; i < N; i++) {
s = usr_rand();
r = usr_rand();
t = usr_rand();
q = usr_rand();
sum = 0;
j = floor(r*N);
p = h[j];
0947教えて厨
NGNGh[j] = h[j] - 1;
}
else{
h[j] = h[j] + 1;
}
for (k = 1 ; k < N; k++){
sum = sum + fabs(h[k]-h[k-1]);
}
if ( sum-u <= 0 ){
u = sum ;
}
if ( sum-u > 0 && q <= exp(-1 / 0.6) ){
u = sum ;
}
if ( sum-u > 0 && q > 1 - exp(-1 / 0.6) ){
h[j] = p ;
u = u ;
}
}
0948教えて厨
NGNGfor (i = 0; i < N; i++){
wa = wa + h[i];
}
ave = (double)wa / N ;
v = v + ave ;
z = v / (l/100 + 1) ;
for (i = 0; i < N; i++){
wb = wb + pow(h[i] - z, 2);
}
bun = (double)wb / N ;
printf("step=%d 分散=%f\n" , l+100 ,bun);
wa = 0;
wb = 0 ;
}
}
これをいじってできるようにしたいのですが。。。
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNGできない。
s= -atan(a);
Σ| x_i * cos(s) + (y_i - b) * sin(s) |
絶対値を取る必要がある。
0951829
NGNG皆様のアドバイスのおかげで、
なんとか金曜日中にレポートを提出することが出来ました。
本当に有難うございました。
0952デフォルトの名無しさん
NGNGΣ| x_i * sin(s) + (y_i - b) * cos(s) |
0953デフォルトの名無しさん
NGNG新スレお願いします。
0954デフォルトの名無しさん
NGNGfor (i = 0; i < N; i++){
wb = wb + pow(h[i] - ave, 2);
}
じゃないの?
0955デフォルトの名無しさん
NGNG何がしたいのか詳しく説明して。
0956デフォルトの名無しさん
NGNGをプログラムにして
0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNG0959デフォルトの名無しさん
NGNG0960デフォルトの名無しさん
NGNG学校名か、学部名か、学科名を教えて下さい。
0961デフォルトの名無しさん
NGNG新スレお願いします。
0962デフォルトの名無しさん
NGNG桁あふれしないようにするには、一体どうすればいいでしょうか?
0963デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNGmail(){long long double x;}
これがコンパイルできるなら long long double を使えば良い。
さもなくば多倍長数を使う。既存なら libmp か libruby など。もしくは自作。
Cを使わなくていいなら bc コマンドなど。
0966デフォルトの名無しさん
NGNGあんたの main を整理してみたがやっぱりやりたいことが分からん。
数学の試験問題程度に明確に書いてくれ。
0967デフォルトの名無しさん
NGNG(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
山崎渉
0968デフォルトの名無しさん
NGNG文字数の制限というのはa[100]なら100文字(99?)までしか入れれないという感じのやつです
どうかよろしくお願いします
0969デフォルトの名無しさん
NGNG一文字ごとに領域確保と解放を繰り返せ(w
0970デフォルトの名無しさん
NGNG読んだ端からファイルに格納していくとか。
想定される最大文字数 (メモリーに入るのか否か) と、そのあとどう言うことしたいんだ ?
0971968
NGNGC言語でとりあえず文字列を文字数制限なく読み込めって感じの課題なので、
読み込んだことが分かるようにそのまま表示しようと思っています
0972デフォルトの名無しさん
NGNG文字の読み込みにはどの関数を使うん?
getchar?
0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG現実的には避けたい方法だな。
0975968
NGNG最近習ったstrlenとmallocなどを使ってやるのかと思ったのですが、無理でしょうか?
0976デフォルトの名無しさん
NGNGじゃあ1文字ごとにmallocしてリストとして繋げばいいだろ。
どうも聞いてる限りでは大した課題じゃないっぽいし。
リスト構造の勉強にもなるし、いい機会じゃないか。
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNGメモリへの格納何もしないプログラム
#include <stdio.h>
int main() {
while( !feof(stdin) )
getchar();
}
読み込みつつ、全部表示するバージョン
#include <stdio.h>
int main() {
while( !feof(stdin) )
putchar( getchar() );
}
0979デフォルトの名無しさん
NGNGけど多分、VCじゃないとコンパイル通らない。
char* hogealloc(void) {
char*str;
chardummy;/* 先頭1文字の格納先*/
scanf("%c", &dummy);/*stdinと関連付ける*/
if( ( str=(char*)calloc( stdin->_cnt+1, 1 ) ) == NULL ) {
fprintf(stderr, "メモリの確保に失敗しました。\n");
exit(1);
}
strncpy(str, stdin->_base, stdin->_cnt);
fflush(stdin);
return str;
}
0980979
NGNG#include <string.h>
#include <malloc.h>
#include <stdlib.h>
です。
0981デフォルトの名無しさん
NGNGおいおい、構造体FILEの実装に依存したコードかくなよ…
VC++じゃないと通らないというか、
VC++の特定のバージョンじゃないと通らないかも知れんぞ。
0982979
NGNGstdin->_cntで表現できない程の文字数は格納できないです。
でもそんな事言ってたら、reallocもsize_t型の変数で領域の大きさ指定するしなぁ。
それじゃ逝きます。さよなら!
0983デフォルトの名無しさん
NGNGgcc -ansi -pedantic -Wall
でワーニングもエラーも出なかったら、どのコンパイラでも
OKと考えていいですか?
0984デフォルトの名無しさん
NGNGどのコンパイラでもコンパイルが通ることだけは期待できる。
が、それがちゃんと動くかどうかは別問題。
0985r
NGNG#include <stdio.h>
#include <stdlib.h>
#define CELL_SIZE 100
typedef struct cell {
char data[ CELL_SIZE + 1 ];
struct cell* next;
}cell_t;
cell_t* CreateCell() { return (cell_t*)calloc( 1, sizeof( cell_t ) ); }
void Cell_Display( const cell_t* cell ) {
while( cell != 0 ) {
fputs( cell -> data, stdout );
cell = cell -> next;
}
}
void Cell_Clear( cell_t* cell ) {
cell_t* target;
while( cell != 0 ) {
cell = ( target = cell ) -> next;
free( target );
}
}
int main(int argc, const char** argv) {
cell_t *head, *tail;
FILE* fp = 1 < argc ? fopen( argv[1], "r" ) : stdin;
tail = head = CreateCell();
while( !feof( fp ) )
fgets( ( tail = tail -> next = CreateCell() ) -> data, CELL_SIZE, fp );
Cell_Display( head );
Cell_Clear( head );
}
0986r
NGNGcell_t* CreateCell() {
cell_t* cell = (cell_t*)calloc( 1, sizeof( cell_t ) );
if( cell == 0 ) exit(-1);
return cell;
}
とでも。
# 未チェック。
0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNGCamelCase と underscore_delimited を混ぜたのは初めて見たかも
0989デフォルトの名無しさん
NGNGexit の直前に限っては free する必要はない。
0990デフォルトの名無しさん
NGNGあらゆるコンパイラがANSI Cに完全準拠しているわけじゃないし、ライブラリの問題もあるし。
0991デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
int main( int argc, const char** argv ) {
FILE* fp;
char* buf;
size_t size;
if( fp = fopen( argv[1], "rb" ), fp == 0 ) { return -1; }
fseek( fp, 0, SEEK_END );
buf = malloc( ( size = ftell( fp ) ) + 1 );
rewind( fp );
fread( buf, size, 1, fp );
buf[size] = '\0';
printf( "[%s]\n", buf );
}
0992デフォルトの名無しさん
NGNGうわー、絶対いっしょに仕事したくないタイプ。
0993デフォルトの名無しさん
NGNGなんで?カンマ演算子とか使ってるから?
0994デフォルトの名無しさん
NGNGfopen は検査して malloc は検査しないのは分からんが。
0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1055056940/l50
0997デフォルトの名無しさん
NGNG下の方のプログラムは一文字余分に表示される。
0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。