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

C/C++の宿題なら俺にやらせろ!

レス数が1000を超えています。これ以上書き込みはできません。
0001C++房 ◇9ye75cT6NGNG
俺はC++房。
今まで8ヶ月、毎日休まず一生懸命C++を勉強してきた。
わからない宿題若しくは処理があったら俺にやらせてくださいm(_ _)m
ただしソート、2分木など俺が5分以上悩むの問題はお断りだ。
他の手強に聞いてくれ
0002デフォルトの名無しさんNGNG
2
0003C++房 ◆Mjk4PcAe16 NGNG
C++房#::
C++房#2
0004C++房 ◆bK0oO/M0ho NGNG
0005C++房 ◆9J9ye75cT6 NGNG
 
0006デフォルトの名無しさんNGNG
前スレ:C/C++の宿題なら俺にやらせろ!
http://pc3.2ch.net/test/read.cgi/tech/1021862587/
0007 ◆9J9ye75cT6 NGNG
お疲れ
0008お願い・・NGNG
線形探索法の検索の計算量はO(n),
二分探索法はO(log n),
↑
これらは分かるんですが、探索の計算量がO(1)の探索アルゴリズムを
C言語で教えてください、
ちなみにハッシュ法のような複雑な手法を用いないで。。
0009デフォルトの名無しさんNGNG
ここに神の降臨を待つ質問者がいます。
誰かO(1)のアルゴリズムを発明してあげてください。
0010デフォルトの名無しさんNGNG
ハッシュ以外でO(1)なのはあるのか?
0011デフォルトの名無しさんNGNG
配列のインデックスとデータが1対1で対応しているとか。
0012デフォルトの名無しさんNGNG
>>8
ハッシュ以上に簡単な方法ってあるのかな?
検索したいデータの特徴によっては、裏技があるかも
しれないけど。
0013デフォルトの名無しさんNGNG
1.探索法である。
2.計算量は、O(1)である。
3.ハッシュよりも単純である。
00148です。。NGNG
すみません、、
登録されているデータ値は0以上9999
以内の整数です、というのを書き忘れました。
0015デフォルトの名無しさんNGNG
>>14
キーが整数ってこと?
データは?
0016デフォルトの名無しさんNGNG
キーの重複や値の重複があるかどうかを教えてくれ。
0017デフォルトの名無しさんNGNG
int d[10000];
で解決ですね。
0018デフォルトの名無しさんNGNG
キーの種類が1000で整数なら、配列に入れるだけで解決だけど。
(これもハッシュといえばハッシュだけど)
00198です。。NGNG
問題文をそのまま写します。

線形探索法の検索の計算量はO(n),
二分探索法はO(log n)であった、それでは、探索の計算量が0(1)の探索手法
を考え、その探索アルゴリズムをC言語で記述せよ。またこれが、なぜO(1)なのか
説明せよ。
但し、登録されているデータ値は、0以上9999以内の範囲内の整数とする。
答えは簡単なアルゴリズムである。ハッシュのような複雑な手法は用いないこと。


0020デフォルトの名無しさんNGNG
>>19
誰が出題した問題か気になるな。目の前にいたらいちゃもんつけたる。(w
0021デフォルトの名無しさんNGNG
>>19
回答:

int *テーブル = (int*)malloc(テーブルサイズ); // 適当にデータ突っ込んどけや
int result = -1; // 見つかん無かったときは -1 とするよん
for( int i = 0; i<テーブルサイズ; ++i )
 if ( テーブル[i]==検索してる値 ) result = i;
for( int i = テーブルサイズ; i<intで表現可能な最大値; ++i ) i==0;

O(1)な理由:
テーブルサイズに依存せず、比較回数は常にintの最大値、すなわち定数時間である。
0022デフォルトの名無しさんNGNG
まあ 17 や 18 の言っているやり方だろうね。
0023デフォルトの名無しさんNGNG
最適化で削られる気がする。
002421NGNG
あ、mallocの引数の"テーブルサイズ"とfor内の"テーブルサイズ"は何気に別物だけどその辺脳内補完よろしく
00258です。。NGNG
ありがとうございます.
17様、21様のやり方で考えてみます。
0026gccNGNG
2つの時刻の和を表示する
プログラムがわかりません。
一応ここまでできました。

#include <stdio.h>
typedef struct date_time{
int hour;
int minute;
}ST_TIME;
ST_TIME add_time(ST_TIME x,ST_TIME y);
int main(void){
ST_TIME jikoku[2],diff;
int i;
for(i=0;i<2;i++){
printf("jikoku[%d].hour :",i);
scanf("%d",&jikoku[i].hour);
printf("jikoku[%d].minute:",i);
scanf("%d",&jikoku[i].minute);
}
diff=add_time(jikoku[0],jikoku[1]);
printf("時刻の和は、%d:%02d です。\n",diff.hour,diff.minute);
return 0;
}
ST_TIME add_time(ST_TIME x,ST_TIME y){

ここまでできました。
教えて下さい。


0027デフォルトの名無しさんNGNG
ST_TIME add_time(ST_TIME x,ST_TIME y){
ST_TIME sum;
sum.hour = x.hour + y.hour;
sum.minute = x.minute + y.minute;
return sum;
}
0028デフォルトの名無しさんNGNG
sum.minute = x.minute + y.minute;
while (sum.minute >= 60) {
sum.minute -= 60;
sum.hour++;
}
0029デフォルトの名無しさんNGNG
sum.minute = x.minute + y.minute;
sum.hour = x.hour + y.hour + sum.minute / 60;
sum.minute %= 60;
0030デフォルトの名無しさんNGNG
時刻に時刻を足すなんて・・・そもそも意味不明じゃん・・・
時刻に時間を足すんならわかるが・・・・
0031gccNGNG
>28
>29
return sum;
}
って最後につけますか?
0032デフォルトの名無しさんNGNG
ST_TIME add_time(ST_TIME x,ST_TIME y){
ST_TIME sum;
sum.minute = x.minute + y.minute;
sum.hour = x.hour + y.hour + sum.minute / 60;
sum.minute %= 60;
return sum;
}
0033gccNGNG
ST_TIME sum;
のsumって何の事ですか?
0034デフォルトの名無しさんNGNG
Jishohike
0035デフォルトの名無しさんNGNG
summer_time
0036デフォルトの名無しさんNGNG
あぁ、踊りの得意な
0037コンパイラNGNG
2つの時刻の和を表示する
プログラムが何ですが、
60分は1時間
24時間は1日
とします。これはプログラムの
1部なんですが、何処が違って
ますか?教えて下さい。

ST_TIME add_time(ST_TIME x,ST_TIME y){
ST_TIME sum;
sum.hour = x.hour + y.hour;
sum.minute = x.minute + y.minute;
sum.day = sum.hour/24
while(sum.minute >= 60) {
sum.minute -= 60;
sum.hour++;
}
while(sum.hour >= 24) {
sum.hour -= 24;
sum.day++;
}
return sum;
}

0038デフォルトの名無しさんNGNG
>>37
>何処が違ってますか?教えて下さい。

実行してみれば分かるじゃん。

0039コンパイラNGNG
実行したら、日がうまくでません。
0040デフォルトの名無しさんNGNG
>>37
26 と同じ話か?
0041デフォルトの名無しさんNGNG
sum.day = sum.hour/24
0042コンパイラNGNG
同じですが、>26は時刻の合計が 24時間を越えても、
時間の桁上がりが生じなかったのです。
今度は24時間を1日とカウントします。
0043デフォルトの名無しさんNGNG

ST_TIME add_time(ST_TIME x,ST_TIME y){
ST_TIME sum;
sum.minute = x.minute + y.minute;
sum.hour = x.hour + y.hour +sum.minute/60;
sum.day = x.day + y.day + sum.hour/24;
sum.minute %= 60;
sum.hour %= 24;
return sum;
}
0044デフォルトの名無しさんNGNG
>>1
(´-`).。oO(「悩むの問題」ってなんだよ…)
0045コンパイラNGNG
>43
while文などを使ってはできませんか?
0046デフォルトの名無しさんNGNG
>>45
できるよ。
0047デフォルトの名無しさんNGNG
>>45
できるけど、何で必要なの?
使わない方がすっきりしてると思うし。

void norm_time(ST_TIME *t)
{
t->hour += t->minute / 60; t->minute %= 60;
t->day += t->hour / 24; t->hour %= 24;
}

ST_TIME add_time(ST_TIME x,ST_TIME y){
x.minute += y.minute;
x.hour += y.hour;
x.day += y.day;
norm_time(&x);
return x;
}

norm_time() は、引き算とかに流用できる。
0048コンパイラNGNG
>47
確かにそうなのですが、>43のプログラム以外の
プログラムが勉強のために欲しかったのです。
ありがとうございました。
0049デフォルトの名無しさんNGNG
どうせ課題で「whileを使うこと」みたいな条件がでてるんだろ。
0050コンパイラNGNG
>50
でてない。
構造体の課題で、whileを使うかどうかなんて
関係ないでしょ
0051デフォルトの名無しさんNGNG
>>48
常に最適解を求める勉強をしてくれ。
0052デフォルトの名無しさんNGNG
つーか、腕試しなら人に訊くな。
0053デフォルトの名無しさんNGNG
>>50
つーか、結局課題なのかよ。
自分で解けよ。
0054デフォルトの名無しさんNGNG
>>52
腕試しでないと思われ
0055デフォルトの名無しさんNGNG
>>53
解けないから、ここに来てるんだろ
0056デフォルトの名無しさんNGNG
>>53
いや、ここはそのためのスレじゃないのか?
0057デフォルトの名無しさんNGNG
>>56
よく考えたらそうだな。
0058デフォルトの名無しさんNGNG
>>51-57
ここの最適解を(以下略
0059デフォルトの名無しさんNGNG
>>58
任せた。
0060デフォルトの名無しさんNGNG
OnDraw関数のなかで以下のように線画を描画しました。

double kakudo = 0.0;
double pai = 3.14159265;
double rad = pai / 180;
double rad1 = kakudo * rad,
rad2 = (kakudo + 180) * rad;
POINT start, center, end;
double r = 30.0;
center.x = 90;
center.y = 90;
start.x = (int)(r * cos( rad1 )) + center.x;
start.y = (int)(r * sin( rad1 )) + center.y;
end.x = (int)(r * cos( rad2 )) + center.x;
end.y = (int)(r * sin( rad2 )) + center.y;
pDC->MoveTo(start);
pDC->LineTo(end);

メッセージハンドラOnLBUTTONDOWNを用いてkakudoの値を制御し、
線画の再描画を促すようにしたいのですがわかりません。
(線画が画面内で一回左クリックする毎にkakudoの値をインクリメントし、
傾きが増していくといった感じです。)

0061デフォルトの名無しさんNGNG
メッセージハンドラを持つクラスでkakudoをメンバ変数にしたら。
0062デフォルトの名無しさんNGNG
C言語の勉強を始めた者ですが
ファイルを読み込むプログラムで
char string[10] の配列の中に
12_15_____
(_は空白です )
ていうふうに数字(char型)で入っているときに
12と15という数字を二つ取り出す(int型の変数として使いたい)にはどうすれば良いのでしょう??
ちなみに12とか15が124と4みたいに3桁になったり1桁になった時にもちゃんと取り出したいのですが・・・

お願いします!!
0063デフォルトの名無しさんNGNG
sscanf
0064こういうことか?&rlo;?かとこういうこNGNG
>>62
#include<stdio.h>

int main(void)
{
char string[10];
char *p;

string[0]=12; /* *(string+0)=12 */

string[2]=15; /* *(string+2)=15 */

p=string; /* p=&string[0] */

printf("char[0]..%d,char[2]..%d",*p,*p+2);

return 0;
}
006562NGNG
早速レス感謝
言葉足らずでした。なにせC言語がよくわからないもので・・・

実は参考にしたプログラム(ファイルの読み込むプログラム)で
fgets(string, 200, fp);
sscanf( string, "%d", &val );
という感じの部分があるのですが

fgets(string, 200, fp);
というのは
これはfpファイルの一行をstringに入れなさい!みたいな意味ですよね??

sscanf(string, "%d", &val );
それでその後のこれは
読み込んだstringをvalという変数に10進数でいれなさい!みたいな意味ですよね??

これを実行するとあたり前なのかもしれないですが
14_12______
というのがもとのファイルだと
14という数字しか認識されずに12というデータがなくなってしまいます。
12という数字を読み取るにはどうすれば良いのでしょう??
0066デフォルトの名無しさんNGNG
sscanf(string, "%d %d", &val, &val2 );
0067デフォルトの名無しさんNGNG
>>65
人に聞くときは、初心者であろうが、凡人であろうが
実装プログラムを書くのが一般的。
006862,65NGNG
>>66
ありがとうございます!できました!!
この2日間の悩みが解決できました。感謝です

>>67
ご指摘感謝
次回お世話になる時はそうします
0069両津勘吉NGNG
#include <stdio.h>
#include <string.h>
#define TINTERVAL 4500000
int main()
{
int i,j, k;
char *a = "This is a test";
  char *b;
  printf("%s\n", a);
for (k=0; k < 5; k++) {
/* forward */
b =a; /* point to first character */
for (i=0; i <=strlen(a); i++){
if (i > 0) {
/* 必要なだけスペース出力 */
for (j = 0; j < i; j++)
printf(" ");
}
0070両津勘吉@つづきですNGNG
}
if (i < strlen(a)) {
printf("%c\r", *b);
}
else {
printf("\r");
}
fflush(stdout);
b++;
/* sleep(1); 少しポーズする */
for (j=0; j < TINTERNAL; j++) {
}
}
      printf("\n");
return 0;
}

大ピンチになっています。上のプログラムを改良して両津勘吉という名前を
一文字づつ表示するプログラムはなんとかできました。
でもそこは提出しなくていいらしくて、今度はそれを改良して、両津勘吉という文字を、
一文字づつ左に表示して、左端についたら次に右に一文字づつ
表示するプログラムを作りたいのです。

どなたか暇な方がいたらよろしくお願いします。
0071両津勘吉NGNG
出力例

1     吉
2    勘
3   津
4  両
5   津 
6    勘
7     吉

どなたか助けてくださいお願いします

0072両津勘吉NGNG
1        吉
2      勘
3    津
4  両
5    津 
6      勘
7        吉
0073デフォルトの名無しさんNGNG
左端って右端から何文字目って決まっているの?
0074デフォルトの名無しさんNGNG
というか、そもそも、「上のプログラム」が正しく動かないんだが。
Win32Consoleだからなのか?
0075デフォルトの名無しさんNGNG
#include <stdio.h>
#include <string.h>
#include <wchar.h>
#include <locale.h>
#include <windows.h>
int wmain()
{
int k;
wchar_t *a = L"両津勘吉";
int len = wcslen( a );
setlocale(LC_ALL, "jpn");
wprintf(L"%s\n", a);
for (k=-len+1; k < len+1; k++) {
 wchar_t *b = &a[ abs(k)];
 if( k )
   wprintf(L"%*c", abs(k)*2 , L' ');
 wprintf(L"%c%*c\r", *b, (len-abs(k))*2, L' ');
 Sleep(1000);
}
wprintf(L"\n");
return 0;
}

つーか、これでいいのか?
0076両津NGNG
>>75さん




いまCCがうまくいきますた。何とかなりそうですありがとうございます。

0077デフォルトの名無しさんNGNG
CCってカードキャプター?
0078デフォルトの名無しさんNGNG
>>77
そうです。
0079デフォルトの名無しさんNGNG
1.足し算関数を作成しなさい

int hoge( short* a, short b )
引数
short* a 加算先
short b 加算数
戻値0 正常
1 加算でオーバーフロー

…という問題が出されたんですけど、わかりません。
008079NGNG
#include<stdio.h>
#include<stdlib.h>
short *wk;
int hoge( short *a, short b );
int hoge( short *a, short b )
{
int c=0;
printf("%d",wk);
if(abs((long)a+ (long)b)>0x7fffL)return(1);
elsereturn(0);
}
void main(void)
{
short b;
while(!(hoge(wk,b)))
{
rewind(stdin);
printf("input num... >");
scanf("%d",&b);
printf("%d\n",hoge(wk,b));
}
}
なんとかここまでできたんですけど、どなたか助けていただけませんか?
0081デフォルトの名無しさんNGNG
>>79
*a == -30000
b = -30000
だった場合どうするの?
008281NGNG
= が一個抜けた…
0083デフォルトの名無しさんNGNG
>>79
??ただ単に、
int hoge( short *a, short b ) {
int res = *a + (int)b;
if ( res > SHRT_MAX || res < SHRT_MIN ) return 1;
*a = res;
return 0;
}
こういうことじゃないの?
008479NGNG
>>81
abs()で絶対値とってるからオーバーフローになると思います。
008579NGNG
>>83
そうだったんですか…
ありがとうございました。
0086デフォルトの名無しさんNGNG
>>84
80ちゃんと読んでなかった。

アンダーフローの場合は?て聞こうとしたんだけど、
調べてみたらアンダーフローを勘違いしていることが
わかった。

スマン
0087デフォルトの名無しさんNGNG
C++Builder 5で作っているんですが、コマンドプロンプト内に四角の箱を書き
その中に文字を入れるにはどうすればよろしいんでしょうか。。
windows.hを使ったような覚えがあるのですが忘れてしまって
0088デフォルトの名無しさんNGNG
>>87
ちょっと待て。
コンソールウィンドウにテキストボックスを置こうと言うのか?
標準の方法で自分のコンソールウィンドウのハンドルを捕らえるのは無理だが。
普通に標準入力から読むわけには逝かないのか?
0089デフォルトの名無しさんNGNG
VC++6.0なんだけど
#include <vector>
・
・
・
vector<int> vct;
と宣言してもエラーが出るよーっ!
使い方教えて!
0090デフォルトの名無しさんNGNG
using namespace std;
0091デフォルトの名無しさんNGNG
あるいは std::vector<int> vct;

名前空間を知ってね。
009287NGNG
>>88
Borland C++ Compiler 5.5でした・・・
DOSプログラムを作っているのですが、おっしゃる通りコンソールウィンドウ(DOS画面)に
テキストボックスを作ろうとしているのです
なにやらDOSでタイピング練習ソフトを作れという課題でして、悩んでます
0093デフォルトの名無しさんNGNG
>>92
だから・・・。
普通に標準入力から読むわけには逝かないのか?

やってできない事は無いかもしれないが、確実な方法を実装できたらそれは神だぞ。
「コンソールウィンドウのハンドルを捕らえるのは無理」 = 「どのウィンドウに
テキストボックスを作ればいいか判断できない」 わけだから。
0094デフォルトの名無しさんNGNG
あれじゃねーの、
printf("┌───────────┐");
みたいな。
0095デフォルトの名無しさんNGNG
はさみうち法の問題なんですが、以下のプログラム書いたんですが、
汎用的にする改良や、使いやすくするための改良などを考えたいんですが、
どうしたら良いでしょうか?

マクロとか、グローバル変数、乗算などの減少などくらいでしょうか…

#include <stdio.h>
double m = 4.0, n = 8.0, mn = m*n,a0 = ((1 - n*n)*mn),a1 = (3*mn*n - m),
a2 = (-3*mn),a3 = m;
double f( double x );

void main (void)
{
double q0, q1, q2;
int k, i;
k = 31;
q0 = n - 0.5;
q1 = n + 0.5;

if ( f( q0 )*f( q1 ) < 0 ){
for ( i = 1; i <= k; i++ ){
q2 = ( f( q1 )*q0 - f( q0 )*q1 )/( f( q1 ) - f( q0 ) );
printf( "k =%3d x = %12.4le\n", i, q2 );
if ( f( q2 )*f( q1 ) > 0 ){
q0 = q2;
}

009695NGNG
else
q1 = q2;
if ( q2/8.0 >= 0.99 ){
break;
}
}
printf( "真の解との誤差1%%以下を得るのに必要な回数は%dです。\n",i );
}
else
printf( "初期値エラー\n" );
}
double f( double x )
{
double y;
y = a3*x*x*x + a2*x*x + a1*x + a0;
return y;
}
0097デフォルトの名無しさんNGNG
「DOSでタイピング練習ソフトを作れ」と
「それにはテキストボックスが必要」
と考えるにいたる経緯に興味がある。
0098デフォルトの名無しさんNGNG
どう使いやすくしたいのかわからん。
0099デフォルトの名無しさんNGNG
printf("┌───────────┐");
printf("┌ABCDEFGHIJK┐");
printf("┌LMNOPQRSTUV┐");
printf("┌CUTXYZ・・・・・┐");
printf("└───────────┘");
とでもしておけ。
0100デフォルトの名無しさんNGNG
ぱっと見
>>95
変数見づらい。

オブジェクト化するなら
メンバ変数に vector<double> hoge
を使ってf(x)のn次関数を管理か。
hoge[n]でf(x)の係数を格納。
0101デフォルトの名無しさんNGNG
printf("┌───────────┐");
printf("|ABCDEFGHIJK|");
printf("|LMNOPQRSTUV|");
printf("|CUTXYZ・・・・・|");
printf("└───────────┘");
とでもしておけ。
0102デフォルトの名無しさんNGNG
bccにはリソースエディタついてないんですか?
0103超初心者NGNG
>>98
汎用化したいのだろう?

>>95
面白そうなんで組んでみる。
0104デフォルトの名無しさんNGNG
printf("┏━━━━━━━━━━┓\n");
printf("┃A B C D E F G H I J K ┃\n");
printf("┃L M N O P Q R S T U ┃\n");
printf("┃V W X Y Z        .┃\n");
printf("┗━━━━━━━━━━┛\n");

とかこういうことだったりして名w
0105デフォルトの名無しさんNGNG
>>102
誤爆スマソ。
0106デフォルトの名無しさんNGNG
ttp://www.mech.tohoku-gakuin.ac.jp/nken/java/hasGraph.html
>>95
こんなのあった。
0107デフォルトの名無しさんNGNG
>>95-96
勤労感謝の日だって・・・いつだっけ?
0108デフォルトの名無しさんNGNG
煩悩
0109デフォルトの名無しさんNGNG
intのベクタを作って、
10個予約して、
イテレータでベクタの先頭を見て、
イテレータを進めて、
1を入れたら実行時エラー。

vector<int> a;
a.reserve(10);
vector<int>::iterator i = a.begin();
++i;
a.insert(i, 1); // ここでエラー

これってなんかまずいことやってるんですか?
011095NGNG
>>100
変数は、何か単語みたいなの方が良いんでしょうか?
「使いやすさ」という点でそこら辺を考慮してみて、考察したいと思います。

オブジェクト化…(以下略
は、ちょっと良く意味が分からないので、調べてみます。
レスありがとうございました。

>>103
そうです、汎用化したいのです。#Define とか使えそうですかね?

>>106
今から見てみます。わざわざありがとうございます。

>>107
???
0111デフォルトの名無しさんNGNG
a[i]=1;
011295NGNG
>>110
defineか…
0113106NGNG
>>95
#defineではなくて>>100の言う通り、メンバでまとめる方向で。
0114103NGNG
誤 106
正 103
0115106NGNG
誤 103
正 106
011695NGNG
>>113
メンバって構造体とかあの辺でしょうか?
実はまだ習ってないんです。いい機会なんでそこら辺読んで見ます。

乗算ってなるべく回数減らすように、うまく変形したほうが良いんですよね?
pow()ってのがありますが、これはアルゴリズム的にあまり優れてないんでしょうか?
これはlog計算してからというように遠回り(?)してるので、効率的でないと
聞いたことがあります。どうでしょうか?
0117デフォルトの名無しさんNGNG
>>109
a.reserve(10); → a.resize(10);
0118103NGNG
>>113
なかなか2分法・・・手ごわいです。

>pow
えっ・・・、普通にpowで組んでいますが。
そこまで速度は変わるものではないと勝手に思い込んで作っちゃっています。
0119デフォルトの名無しさんNGNG
こういうのか?
ax^3+bx^2+cx+d
((ax+b)x+c)x+d
012095NGNG
>>118
いや、このくらいのプログラミングなら問題ないんですがね…

自分がやってるのは詳しく言うと、
f(x) = mx^3 - 3mnx^2 + (3mn^2 - m)x -mn^3 + mn
って、式があって、mとnは各人違う値が与えられて、
その解の一つの前後0.5で、はさみうちを実行して、真の解に対して1%
以下の誤差になるまで何回計算したらいいのか?

って感じです。
しかし、収束が早いのか1回で求まる。
ニュートン法も1回でした。2次収束でこれだけ速いのか…
012195NGNG
>>119
そうです。そういうことです。乗算の回数はできるだけ減らしたほうが
効率はあがりそうですから。加算に比べて乗算は4,5倍遅いって聞いたことあるので。
0122デフォルトの名無しさんNGNG
>>116
double使ってる時点であんまり関係ないと思う。
再帰的にX^nを求めてやってX^2〜X^nをどこかに
ストックして再利用すれば、計算は減らせるね。
挟み込むべき点を導関数で求めてやる時にも
使えそうだし。
012395NGNG
>>122
そっか〜。では、m,nをintにして、キャストしてみるってのはどうでしょう?
012495NGNG
>>120
間違った…
nの前後ではさみうちだった…

とりあえず風呂入って考えてきます。
0125デフォルトの名無しさんNGNG
>>123
m,nの範囲の想定次第。
012695NGNG
>>125
そうですが、この場合は整数しかみんな与えられませんでしたので。
しかし、汎用性を考えるとやはりdoubleか。
0127デフォルトの名無しさんNGNG
q2 = ( f( q1 )*q0 - f( q0 )*q1 )/( f( q1 ) - f( q0 ) );
はさみうちってこうやるの?
q2 = (q0+q1)/2;
かと思った。
0128103NGNG
>>95
汎用設計は、ほぼ出来たよー。
、て言うかクラスのヘッダー部分だけ('д';)

方程式の計算等はみんなの方が詳しそうだから任せたー。
0129デフォルトの名無しさんNGNG
>>127
if ( f( q2 )*f( q1 ) > 0 ){
  q0 = q2;
}
else
  q1 = q2;
とあるじゃん。
少し違うけど。
0130103NGNG
>>95
長く考えた結果、こんなものしか出来なかったんですが。

class Func{
private:
vector<double>hoge;//係数を格納
double calc(double x);//xで求まる任意の数を計算
public:
Func(vector<double>);
//関数名:GetSol(2分法)
//引数eは誤差
//誤差が不適切だと計算が終わらなかったりするので注意。
//a,bが異符号であるチェックを仕込んでくれ
double GetSol(double a,double, b,double e);
//以下、ニュートン法等色々な関数が並ぶ事になる
//double GetSol(...);
//double GetSol(...);

//operator等仕込むと、更に汎用性が高くなって面白いかも。
};
0131デフォルトの名無しさんNGNG
>>127
それじゃ一回目で終わるだろが。
013295NGNG
>>127
なんすか、それ?平均?

>>130
ありがとうございます。
しかし、見たことないのが一杯…く、くらす?
もしやC++っすか?すみません、Cの課題なんです。
言ってなかったですね。本当に申し訳ないです。
0133デフォルトの名無しさんNGNG
>>95
こんなんどう?作ってたら、いろいろ手が入っちゃった。

int hasami(double (*f)(double), double q0, double q1, double dx, double* x)
{
 int k = 0;
 double q, f_q0, f_q1, f_q;
 f_q0 = f(q0);
 f_q1 = f(q1);
 if (f_q0 * f_q1 < 0) {
  for (;;) {
   k += 1;
   q = (f_q1 * q0 - f_q0 * q1) / (f_q1 - f_q0);
   f_q = f(q);
   // printf( "k =%d x = %12.4le\n", k, q);
   if (f_q * f_q0 < 0 ){
    q1 = q;
    f_q1 = f_q;
   } else if (f_q * f_q0 > 0 ){
    q0 = q;
    f_q0 = f_q;
   } else {
    break;
   }
   if (fabs(q1 - q0) <= dx){
    break;
   }
  }
  *x = q;
 }
 return k;
}
0134133NGNG
>>132
> double m = 4.0, n = 8.0, mn = m*n,a0 = ((1 - n*n)*mn),a1 = (3*mn*n - m),
> a2 = (-3*mn),a3 = m;
Cでコンパイルしたら、ここの部分が通らなかった。
なんで、オレもC++だと思って、C++でしかコンパイル通してない。
0135デフォルトの名無しさんNGNG
>>127
中間値?
0136103NGNG
>>95
ま・・・まじっすか〜。~(°°;)))オロオロ(((;°°)~

しかし、こちらも勉強になりました・・・。
013795NGNG
>>133
なるほど。はさみうち自体を関数にしてしまって、回数を戻すってことですか。

(*f)(double)とdouble* xは何なんでしょうか?後者は真値でしょうか?

>>134
え!?マジっすか?VisualC++でやってるからコンパイルできたんでしょうか?
0138103NGNG
しかし、>>130修正。
コンストラクタはdouble配列で渡すようにした方が汎用性よし。
SetFuncやらを追加して、関数の定義しなおしを定義するように
した方がいい。(その場合、コンストラクタをオーバーロードできて
いい感じかも)

もうぜんぜん関係なかったけど以上です。
0139デフォルトの名無しさんNGNG
>>137
double (*f)(double) 引数 double 戻り値 doubleの関数のポインタ。
double* x はxのポインタ。
将来Cを使い込むのであればポインタは理解しとくといい。
014095NGNG
>>138
本当にすみません…
0141デフォルトの名無しさんNGNG
関数のポインタ f ってのは、
double Func(double a){
}
という関数があるとき
f=Funcと関数を値(アドレス)にできること。
0142103NGNG
>>95
いいって事よ♪
0143139NGNG
x はxのポインタ-->x はdoubleのポインタ
シマツタ
0144デフォルトの名無しさんNGNG
103ってイイ奴だな。
014595NGNG
ってことは、
k = hasami( &f,q0, q1, 0.08,&x);
printf("回数 = %d\n",k);

って感じでいいんでしょうか?
はさみうちを関数にしたほうが汎用性は高いですね。
0146133NGNG
>>145
そんな感じ。
なんでxも表示しないのか気になるけど。
0147デフォルトの名無しさんNGNG
ax + by + cz = d
ex + fy + gz = h
ix + jy + kz = l

という連立方程式について、x,y,zについて解くプログラムを教えてください。
a〜lは任意の文字式です。
0148デフォルトの名無しさんNGNG
行列を勉強してください。
0149デフォルトの名無しさんNGNG
課題
   1234と打ったら4321と表示されるようなプログラムを作成しなさい。
   ただし、123400などの場合は4321とする。

ヒントは10で割った余りを使うらしいんですけど
for文がいまいち理解できてないので分かりません。お願いします。
0150PROBLEM 1: Outdoor Cow Friends [Brian Dean] NGNG
Farmer John has N cows and K adjacent grazing fields in a row.
Every morning, his cows leave the barn in a single-file line in a specified ordering.
FJ leaves N1 contiguous cows at the front of the line in the first field,
and continues with the rest of the fields,
leaving N2 cows at the front of the line in the next field, and so on,
until all of the cows have been deposited into some field.
The cows stay in the fields in which they are deposited and do not move around.

FJ's cows are very sociable, and each cow has a group of friends with
whom she prefers to graze. Define a friendship as an unordered pair
(i,j) such that cow i and cow j (i != j) prefer to graze in the same field.
Here i and j are indices from 1..N indicating the cows' positions in the single-file line leaving the barn.

We say a friendship (i,j) is satisfied if cows i and j end up grazing in the same field.
Pairs are unique in the input. So, if (i,j) is in the input,
it is listed only once, and (j,i) is not listed.

Given a list of friendships, determine the placements of cows FJ should use
in order to maximize the number of friendships that are satisfied.
Your output will be the maximum number of friendships that can be satisfied.

FJ insists that none of his K fields may remain empty and that no field contains only one cow,
since that cow will then feel outcast.

INPUT FORMAT:

* Line 1: Three integers, N, K, 4 <= 2*K <= N <= 150, and F
(1 <= F <= 200), the number of friendships.

* Lines 2..F+1: Each line contains a two integer friendship pair, each
integer is in the range 1..N.
0151デフォルトの名無しさんNGNG
y=x*10+z%10;
z=z/10;
0152デフォルトの名無しさんNGNG
>>149
#include <stdio.h>
main()
{
    char b[256];
    gets(b);
    if((!strcmp(b,"1234"))||(!strcmp(b,"123400など")))
        puts("4321");
return 0;
}
0153デフォルトの名無しさんNGNG
>>149
専修・・・
0154デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>

int main(void)
{
int data[8];
int num_i;
int num_o=0;
int i,x;

printf("8桁の整数を入力してください:");
scanf("%d",&num_i);

for(i=0;i<8;i++)
{
data[i]=num_i%10;
num_i/=10;
}

for(i=0;data[i]==0;i++)
;

for(;i<8;i++)
num_o+=data[i]*pow(10,(7-i));

printf("%d\n",num_o);

return(0);
}
0155デフォルトの名無しさんNGNG
>>149
演習ですか?
0156デフォルトの名無しさんNGNG
>>153
専修の課題です。
0157デフォルトの名無しさんNGNG
専修って、専門って意味?
0158デフォルトの名無しさんNGNG
専修大学ネットワーク情報学部
0159149NGNG
違う大学ですが・・・
0160デフォルトの名無しさんNGNG
あ、専修って大学があるのね。
0161149NGNG
154のプログラムだと8桁以外はうまくいかないんですが。
あと123400などの場合は4321ってのも。
0162デフォルトの名無しさんNGNG
>>161
当たり前だろ。配列数8なんだから…
00のところは条件判断で捨てればいいんじゃないの?
0163デフォルトの名無しさんNGNG
>>162
可変長配列使うって手は?
0164154NGNG
>>161
#include <stdio.h>
#include <math.h>

int main(void)
{
int data[8];
int num_i;
int num_o=0;
int i;
int count=0;
printf("8桁までの整数を入力してください:");
scanf("%d",&num_i);
for(i=0;;i++)
{
data[i]=num_i%10;
count++;
if((num_i/10)<1)
break;
num_i/=10;
}
for(i=0;data[i]==0;i++)
;
for(;i<count;i++)
num_o+=data[i]*pow(10,((count-1)-i));
printf("%d\n",num_o);
return(0);
}
0165JPS ◆M0LaMzf5rY NGNG
8桁までだから、そこはお前が欲しい最大の桁に変えればいいべ。
0166デフォルトの名無しさんNGNG
>>163
それでscanfして勝手に灰列数変えればいいか。マクロ使ったほうが良さそう。
0167149NGNG
たしか配列使わなくてもできるって言ってました。
0168JPS ◆M0LaMzf5rY NGNG
>>167
オレには分かんない。ごめん。
0169103NGNG
>>167

#include <stdio.h>
int main()
{
int x;
printf("整数を入力してください");
scanf("%d",&x);
while(x != 0){
if( x - ( (x / 10) * 10 ) != 0 ){
printf("%d",x - (x / 10) * 10 );
}
x /= 10;
}
printf("\n");
return(0);
}
0170103NGNG
ということで、出かけてきます。
0171149NGNG
>>169
どうもありがとうございます。
0172デフォルトの名無しさんNGNG
>>169>103
余り使ってなくて?良いのか??
0173デフォルトの名無しさんNGNG
#include <stdio.h>
int main()
{
int x, y=0;
printf("整数を入力してください");
scanf("%d",&x);
for(;x != 0;x /= 10)
y=y*10+x%10;
printf("%d\n", y);
return 0;
}
0174デフォルトの名無しさんNGNG
#include <stdio.h>
int main()
{
 int x;
 scanf("%d", &x);
 do {
  printf("%d", x % 10);
  x /= 10;
 } while (x);
 printf("\n");
 return 0;
}
0175デフォルトの名無しさんNGNG
>>169だと
1001とか入れたら11にならん?
0176デフォルトの名無しさんNGNG
>>175
なるな。
0入れたら何も出てこないし。
0177デフォルトの名無しさんNGNG
#include <stdio.h>

int main(void) {
int target, print, zeroFlag=0;

scanf( "%d", &target );
if ( target == 0) {/*めんどかったので特殊扱い*/
printf("0");
}

do {
print = target % 10;

if ( print > 0 && zeroFlag == 0 ) {
zeroFlag = 1;
}

if ( zeroFlag == 1 ) {
printf( "%d", print );
}
} while ( target = target / 10, target > 0 );

printf("\n");

return 0;
}
0178デフォルトの名無しさんNGNG
>>149を作ってみた。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=28
添削などしてもらえませんか?

ソース中のprintfを消すと正常に動作しません。
原因をできたら教えてください。
0179デフォルトの名無しさんNGNG
みんなスマートに書いてるのに
なんでオレはこんなに長ったらしくなるんだろう。
0180103NGNG
あら、間違ってるわ(汗)
逝ってきます。
0181178NGNG
一応)コンパイラはbccです。
0182178NGNG
ソースうぷ板の29,31-32さんThanxです。
確かに値渡のほうが楽です。
ポインタなんて使う必要ないね(この場合)。

でもなんであんなことが起こったんだろう。

やっぱりkを初期化してなかったから k*=10 で何らかの不具合が出たのかな。
0183デフォルトの名無しさんNGNG
>>182
int change_num(int num)
{
  int j,k = 0;

  while (num > 0) {
    j = num % 10;
    num /= 10;
    k = k * 10 + j;
  }
  return k;
}
0184デフォルトの名無しさんNGNG
int change_num(int num) {
int k = 0;
for (; num; num /= 10)
k = k*10 + num%10;
return k;
}
0185takeruNGNG
#include <stdio.h>
#include <string.h>
#define TINTERVAL 4500000
int main()
{
int i,j, k;
char *a = "yaamada takeru";
char *b;
printf("%s\n", a);
for (k=0; k < 5; k++) {
b =a;
for (i=0; i <=strlen(a); i++){
if (i > 0) {
/* 必要なだけスペース出力*/
for (j = 0; j < i; j++)
printf(" ");
}
if (i < strlen(a)) {
printf("%c\r", *b);
}
else {
printf("\r");
}
fflush(stdout);
b++;
0186takeru@つづきNGNG
* sleep(1); 少しポーズする */
for (j=0; j < TINTERVAL; j++) {
}
}
/*行を消去 (一行文のスペース出力) */
printf(" \r");
}
printf("\n");
return 0;
}

上のプログラムを改良して自分の名前を一文字ずつ左に表示して左端についたら
逆に右に一文字ずつ表示するプログラムをつくれ。
ぼくにはこれ以上無理です。どなたかお願いします。
0187デフォルトの名無しさんNGNG
マルチはやめれ。
0188デフォルトの名無しさんNGNG
takeruはこれ以上無理だそうなのでこれ以上助言しても無駄です。
0189takeruNGNG
宿題手伝いますyo!
のほうの819のやつもCCはできてもa.outするとうまくいかない・・・
あきらめたほうがいいっぽいです・・・・
いろいろおしえてくれたみなさま。おれがアホですいません・・。
あと宿題手伝いますYO!の818のひともありがとうございました。
ただ主旨が少し勘違いされてしまいました・・・。

あといっかい出さないと補習だな・・・・・・

0190デフォルトの名無しさんNGNG
>>189
正直なところ補習を受けたほうが長い目で見るとおまえのためだろ。
0191149NGNG
最後に書きこんでから実験のレポートやっててこのスレ見てなかったから
>>169のプログラムで提出しちゃった。
0のときはif文でやっといたけど。
協力してくれたみなさん、ありがとー。
0192デフォルトの名無しさんNGNG
こんな宿題です。
Borland C++ Compailerのbcc32.exeの32のところが
意味する内容を答えなさい。

32ビットてのはわかるんですが、何の32ビットなのか
?であります。よろしこです。
0193デフォルトの名無しさんNGNG
CPUのビット数
0194デフォルトの名無しさんNGNG
>>193
32ビットのCPUに対応するコンパイラですよー
て意味で大丈夫でしょうか?、
0195デフォルトの名無しさんNGNG
CPUの標準的な転送ビット数

なぜ標準的なのかはMMXが64転送できるから
0196デフォルトの名無しさんNGNG
>>195
となると、
CPUに最高32ビットで処理させるコンパイラですよー
て意味ですよね?
0197デフォルトの名無しさんNGNG
>>196
それでよろしい



オソラク...
0198デフォルトの名無しさんNGNG
>>197
どうもありがとうございました!
0199デフォルトの名無しさんNGNG
>>32ビットのCPUに対応するコンパイラですよー
こっちの方が正しいかも。。。
0200デフォルトの名無しさんNGNG
80x86系32bitモード用コンパイラだろ
0201デフォルトの名無しさんNGNG
先生、よくわからないのですが##の使い方教えてください。
どういう時に使うのですか?
0202デフォルトの名無しさんNGNG
>>201
無理して使わなくていいよ。
0203デフォルトの名無しさんNGNG
コメントを見やすくする
/* ################## ATTENTION!! ################## */
0204デフォルトの名無しさんNGNG
で、ちゃんと説明してくれる人はいるんですかね?
0205デフォルトの名無しさんNGNG
>>203では不満なのかね。
0206デフォルトの名無しさんNGNG
##ってマクロで使うやつでしょ。
0207デフォルトの名無しさんNGNG
不満じゃよ。とにかく##が好きなんじゃよ。da##yo好きなんじゃよ。
0208デフォルトの名無しさんNGNG
>>201
##fusianasan[名前]
で書き込みすると、IDの位置と名前の位置が反転するんだよ。
終了。
0209デフォルトの名無しさんNGNG
>>208
fusianasan##[名前]
の間違いじゃないのか?##fusianasan[名前] だとトリップが出てしまうぞ。
0210ゆうじNGNG
現在VC++6.0を使い始めましたがメッセージボックスで『はい』を選んだらプログラムが終了する
ようにしたいのですが、まったくわかりません。どなたかちか力を貸していただけませんで
しょうか。
0211p62ad44.tkyoac00.ap.so-net.ne.jpNGNG
>>201
「書き込みすると」よくわかりません先生。
0212デフォルトの名無しさんNGNG
if(MessageBox(HWND_DESKTOP,"終了しますか?","確認",MB_OKCANCEL)==IDOK)
PostQuitMessage(0);
0213デフォルトの名無しさんNGNG
終了の仕方とメッセージボックスを調べれ。
0214zdd2a43.ahobaka00.ap.so-net.ne.jp NGNG
ANSIはここで聞くな。
終了。
0215ゆうじNGNG
レスありがとうございます。『はい』『いいえ』で『はい』をクリックすると
プログラムが終了するようにしたいのですがその場合はどのように記述すればいいでしょうか?
0216デフォルトの名無しさんNGNG
>>215
MSDN で MessageBox を調べれ。
0217ゆうじNGNG
とってもわかりません。
0218デフォルトの名無しさんNGNG
>>217
あなたが何がわからないのか、とってもわかりません。
0219デフォルトの名無しさんNGNG
if(MessageBox(HWND_DESKTOP,"終了しますか?","確認",MB_YESNO)==IDYES)
PostQuitMessage(0);
0220デフォルトの名無しさんNGNG
いちいち HWND_DESKTOP って書かなくても、NULL でいいと思うの
0221ゆうじNGNG
そこを記述するとerror C2660: 'MessageBoxA' : 関数が不正な 4 個の実引数をともなって呼び出されました。
って出てしまうんですがなぜでしょう?
0222デフォルトの名無しさんNGNG
>>221
・・・メッセージボックスで終了確認の前に、ちゃんと動くプログラムは書けてる?
0223デフォルトの名無しさんNGNG
::Messa〜
ってかけ。理由は知らなくてよい。
0224ゆうじNGNG
メッセージボックス以外のプログラムはまだ書いていないです・・・
0225デフォルトの名無しさんNGNG
>>223
原因はそれじゃない。221 のエラーメッセージを良く見ろ。
0226デフォルトの名無しさんNGNG
多分 210 の求めてるコードじゃないが、210 に書かれてる要件は満たしてる。

#include <windows.h>
int main()
{
for(; ; )
if(MessageBox(HWND_DESKTOP,"終了しますか?","確認",MB_YESNO)==IDYES) break;
return 0;
}
0227ゆうじNGNG
HWND_DESKTOPの部分をとりましたらとりあえず動きますのでありがとうございました。
0228デフォルトの名無しさんNGNG
>>224
猫の 「C言語編」 第1〜57章、次に 「Windows SDK編 第1部」 第1〜8章を見れ。
http://www.kumei.ne.jp/c_lang/
0229デフォルトの名無しさんNGNG
質問1
Stack Overflow 0xC00000FDというエラーが出て困ってます。
原因を考えるに
hairetu[1000][1000]
というようなことをしているのですが、ここが原因と考えて良いのでしょうか?

質問2
そこで、
動的に二次元配列を確保すると良いと書いてあったので

int size = 1000;
int **hairetu,
hairetu = (int **)malloc(sizeof(int *)*size);
for(int i=0;i<size;i++)
   hairetu[i] = (int *)malloc(sizeof(int)*size);
if(image_in=NULL){
fprintf(stderr,"メモリが足りません!\n");
exit(1);
}

というプログラムをネットで見つけたので書いたのですが動きません。
エラーは
error C2040: 'hairetu' : 'int' は 'int ** ' と間接操作のレベルが異なります。
というものです。
このプログラムのバグを教えてください。
また、これで結果としてhairetu[1000][1000]というものが確保できるのでしょうか?

是非、助けてやってください
0230デフォルトの名無しさんNGNG
実際のコードみないとわかんないよ。
これでhairetu[i][j]でアクセスできるけど。
0231229NGNG
すみません。
今全文を投稿しようと思っていたら、エラーの場所に気づきました。
int **hairetu,
じゃなくて
int **hairetu;
ですよね。お騒がせしました。

ところで、この配列の宣言方法は
結果的には
hairetu[1000][1000]
と全く同じ扱いができるってことなのですか??
0232デフォルトの名無しさんNGNG
>>231
全くでもない。関数にこの値を引き渡す時、

void func(int (*)[1000])では受けられない。
void func(int **)で受けること。
0233デフォルトの名無しさんNGNG
>>192 Borland C++ Compailerのbcc32.exeの32のところが意味する..
その課題の期待するところは一体なんなのだろう....
商品名の由来は商品を作った会社の営業にきくのが正しいです。
# ここ、流れるの速いな...
0234 ◆vhNvUwv9iI NGNG
#define VAR(i,j) (i##j)

VAR(x,6) の呼び出しは,(x6) に展開されます。
0235234NGNG
Turbo C++
に在った説明。
0236デフォルトの名無しさんNGNG
>>234
それは調べたんだけど、どうつかったらいいかわからん。
普通に x6 と書けない場面があるのかな。
0237デフォルトの名無しさんNGNG
>>236
ウインドうすのメッセージク落下とかで使われてる。
0238デフォルトの名無しさんNGNG
う〜ん、文字列を繋げるとか・・・か?
0239デフォルトの名無しさんNGNG
"x" "6" でいいし。
0240デフォルトの名無しさんNGNG
どこかのヘッダファイルに

#define   DUMMY    /##/

ってのがあったな。
0241デフォルトの名無しさんNGNG
構造体の変わりに・・・
0242デフォルトの名無しさんNGNG
Q.指定した文字が文字列中に含まれる回数、指定した文字が含まれている文字列中の位置を調べる。
どこが間違ってるかよくわかりません。よろしくお願いします。
1#include<stdio.h>
2 main(){
3 char a[100],b[1];
4 int i,count=0;
0243デフォルトの名無しさんNGNG
5 printf(" Input string >> ");
6 scanf("%s",a);
7 printf(" Input character >> ");
8 scanf("%s",b);
9 for(i=0; a[i]!='\0'; i++){
10 if(a[i]==b[0]){
11 count++;
12 }
13 printf("a_cnt = %d\n",i);
14 printf("a[]= Number of %s = %d\n",b,count);
15 }
16 exit(0);
17 }
0244デフォルトの名無しさんNGNG
間違いと関係あるのかどうかシランが、
bの長さ1しかないのにscanfなんかしていいのか?
0245デフォルトの名無しさんNGNG
#include<stdio.h>
main(){
char a[100], b[1];
int i,count=0;
printf(" Input string >> ");
scanf("%s",a);
printf(" Input character >> ");
scanf("%s",b);
for(i=0; a[i]!='\0'; i++){
if(a[i]==b[0]){
count++;
printf("a_cnt = %d\n",i);
}
}
printf("a[]= Number of %s = %d\n", b, count);
return 0;
}
0246デフォルトの名無しさんNGNG
長さが1だとscanfしてはだめなんですか・・・
知りませんでした。getsでいてみます
0247デフォルトの名無しさんNGNG
fgets使え。
0248デフォルトの名無しさんNGNG
char b;
scanf(" %c",&b);
0249242NGNG
すみませんエラーがこのように出ます。
Input string >> afafe
Input character >> a_cnt = 0
a[]= Number of (null) = 0
a_cnt = 1
a[]= Number of (null) = 0
a_cnt = 2
a[]= Number of (null) = 0
a_cnt = 3
a[]= Number of (null) = 0
a_cnt = 4
a[]= Number of (null) = 0
0250242NGNG
あと、指定した文字が文字列中に含まれる位置を示す関数を作ってみたんですが、
文字の文字列中の最後の位置だけしか返すことしか分かりませんでした。
すべての位置を返すアルゴリズムアドバイスいただけるとうれしいです。
int serchchr(char str[], char c) {
int i, a=0;
for(i=0; str[i]!='\0'; i++) {
if (str[i]==c) {
a=i;
}
}
return a;
}
0251デフォルトの名無しさんNGNG
for (s = str; s = strchr(s, c); )
printf("%d,", s-str);
0252242NGNG
>>251
ありがとうございます。
何をやっているかちょっと分からないので解読したあと組み込んでみます。
0253デフォルトの名無しさんNGNG
身長のデータを次々に入力し平均を算出するプログラムを作成せよ。ただし、
入力データは男女混合なので、平均は、男女別に算出。入力データは、
身長データの前に男ならM、女ならFがあるものとする。
  M178
  F160
   : 
   :
   :
誰かやって下さい。わからんです。
0254デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
void main() {
int msum=0, fsum=0, mcount=0, fcount=0;
char buf[100];
while (gets(buf)) {
if (buf[0] == 'M') { msum += atoi(buf+1); mcount++; }
else if (buf[0] == 'F') { fsum += atoi(buf+1); fcount++; }
}
printf("男平均:%f\n", mcount?(double)msum/mcount:0);
printf("女平均:%f\n", fcount?(double)fsum/fcount:0);
}
0255デフォルトの名無しさんNGNG
ようやく出来たよ・・・。苦労だったな屑ども。
まあお前等如きに敬語使っちまったけど、一度出来ちまえば用なしよ。
さっさと氏ねばーか。検索なんてくだらねーこといってるんじゃねーよ。
チョン
キチガイ
ばーかばーかばーか
うひゃひゃひゃ

俺に利用されて悔しいか?
精々喚いてろチンカスども。
0256デフォルトの名無しさんNGNG
>>255
いちいち悔しがってたら2chねらなんかやってられん。
というか人生ガンバレヨ。その調子だと将来大変だろうが。
0257デフォルトの名無しさんNGNG
がんばれよ。クリスマスまでに彼女できるといいな。
0258デフォルトの名無しさんNGNG
>>255
HTMLのタグが編集できたぐらいでC/C++スレ来んな。
0259デフォルトの名無しさんNGNG
なんか可哀想な人が現れたの?
0260242NGNG
すみません。もうすずめが鳴きそうでかなりあさってる242です。
int str[100],b;
scanf("%s",str) /*文字列strを記憶*/
scanf("%c",b)  /*文字列bを記憶*/
printf("%s %c",str,b) /*str,bを印字*/
これだと、いろいろ調べた結果、str(文字列)、改行の順で記憶するらしくbが記憶されないらしくて困ってます。
gets()使ってみたんですが、コンパイルエラーでました。(gcc使ってます)
fgetsはファイルポインタなしでつくれとのことなのでこれなしでつくりたいです。
誰かほんと困ってますので助けてください!
0261デフォルトの名無しさんNGNG
scanf(" %c",b)
0262デフォルトの名無しさんNGNG
char str[100], b;
scanf(" %c",&b)
0263デフォルトの名無しさんNGNG
配列とポインタの関係をいいだすと、多分2週間ぐらい徹夜するはめ
になるので、黙ってそういうもんだとおもっといたほうがいい。
0264242NGNG
できました!
ほんと感謝します!

>>263
ポインタなんかもやもや感がとれないのでポインタの本図書館で借りてきます。

文字列中に含まれる文字の数と
文字列中の文字の最後の場所を印字するとこまでできました。
あとは>>251さんのを解読して組み込むだけです。

みなさんレスどうもありがとうございました。
0265251NGNG
char *s;
for (s = str; s = strchr(s, c); )
printf("%d,", s-str+1);
printf("\n");
で動くかな。ベタに表示するだけだが。
0266242NGNG
>>251
できました!
わざわざ最後までつきあってくれてほんとありがとうござした。
こころが休まりました。
0267デフォルトの名無しさんNGNG
ようやく出来たよ・・・。苦労だったな屑ども。
まあお前等如きに敬語使っちまったけど、一度出来ちまえば用なしよ。
さっさと氏ねばーか。検索なんてくだらねーこといってるんじゃねーよ。
チョン
キチガイ
ばーかばーかばーか
うひゃひゃひゃ

俺に利用されて悔しいか?
精々喚いてろチンカスども。
0268デフォルトの名無しさんNGNG
がんばれよ。クリスマスまでに彼女できるといいな。
0269デフォルトの名無しさんNGNG
>>267
いちいち悔しがってたら2chねらなんかやってられん。
というか人生ガンバレヨ。その調子だと将来大変だろうが。
0270デフォルトの名無しさんNGNG
>>267
HTMLのタグが編集できたぐらいでC/C++スレ来んな。
0271デフォルトの名無しさんNGNG
なんか可哀想な人が現れたの?
0272教えて厨NGNG
あと30分くらいしたら問題をうpいたします。
神の降臨をお待ちしております。
0273神NGNG
うpしてたもう。
答えてやろうぞ。
0274デフォルトの名無しさんNGNG
神キタ━(・∀・)━!
0275教えて厨NGNG
おながいします。
てか毎週この時間に出現しますので今後ともおながいします。
0276デフォルトの名無しさんNGNG
問題うpしてないじゃん
0277デフォルトの名無しさんNGNG
問題マダァー? 
0278[無知無能の神] NGNG
問題来らば全精力を注いで解くなり
今すぐうpするのじゃああああ
0279デフォルトの名無しさんNGNG
イパーイツレタ
0280デフォルトの名無しさんNGNG
>>279
俺たちの青春をかえせー
0281デフォルトの名無しさんNGNG
無知無能ってよりムチ不能の神だったりしてな
0282デフォルトの名無しさんNGNG
モンテカルロ法を使って、半径1の円の面積を求める
Cプログラムを作らなきゃいけないんですが、だれか教えてください。
ちなみに、モンテカルロ法はわかるのですが、Cで書けません。
お願いします。
0283デフォルトの名無しさんNGNG
Cでかけないってことは、モンテカルロ法を理解してないってことだ。
ただ「使ってる」だけ。
出直して来い。
0284デフォルトの名無しさんNGNG
>>282
> モンテカルロ法はわかるのですが、Cで書けません。
ならば、モンテカルロ法の手順を日本語で書いてみろ。
0285282NGNG
>>284
V=4×(乱数の組のうち、x+y≦1を満たす組の数)/(全組式N)
これでいいですか?
0286デフォルトの名無しさんNGNG
>>285
誰が公式書けって言ったんだか・・・。

手順とは違うぞ。
0287デフォルトの名無しさんNGNG
int main()
{
int i, j = 0;
float x, y;
for (int i = 0; i < 100; i++)
{
x = rnd();
y = rnd();
if (x * x + y * y < 1)
j++;
}
printf("pi = %f\n", 4 * j / i);
}
0288デフォルトの名無しさんNGNG
for i = 1 to N
x = 0〜1のRND
y = 0〜1のRND
if (x^2 + y^2 <= 1) count++;
next
print "pi = "; count / N * 4
0289デフォルトの名無しさんNGNG
>>287
ケコーンを前提にハァハァ
0290デフォルトの名無しさんNGNG
>>289
やめとけ、あんたは不真面目あっちは真面目。釣り合わんよ。
0291デフォルトの名無しさんNGNG
>>287
それじゃだめだ

x = rnd()&255;
y = rnd()&255;
if (x * x + y * y <= 255)

0292デフォルトの名無しさんNGNG
あ、だめだ
実数にする
4.0 * j / i
0293デフォルトの名無しさんNGNG
乱数の下位ビットを使うなよ・・・
0294デフォルトの名無しさんNGNG
ビット切り取るのに 10 進数使うなよ・・・
0295お願いします!NGNG
5匹の鶴の身長を読み込んで、もっとも身長の高い鶴と
もっとも身長の低い鶴の身長を表示するプログラムを作成。なお、鶴の身長はdouble型で表すものとする。

配列をつかって。
0296デフォルトの名無しさんNGNG
宿題きた!!
読み込むデータってファイルから?キーボード(標準入力)から?
0297デフォルトの名無しさんNGNG
double table[5];
int i, j;
for (i=0; i<5; i++)
scanf("%f", table+i);
for (i=0; i<5; i++) {
double tmp = table[i];
for (j=i, k=j; j < 5; j++)
if (table[j] < table[k]) k = j;
table[i] = table[k];
table[k] = tmp;
}
printf("min = %f\n", table[0]);
printf("max = %f\n", table[4]);
0298デフォルトの名無しさんNGNG
int main(){

double hairetsu[5] = {40,30,60,20};
int i ;
double max = 0;
double min = 999;
for( i=0;i < 5;i++){
if( max < hairetsu[i]){
max = hairetsu[i];
}
if(min > hairetsu[i]){
min = hairetsu[i];
}
}
printf("最高身長:%lf",max);
printf("最低身長:%lf",min);
return 0;
}
0299デフォルトの名無しさんNGNG
double max = hairetu[0];
double min = hairetu[0];
0300デフォルトの名無しさんNGNG
ファイルをオープンしてint型の配列をバイナリ保存したいんだけど・・・
どうすればいい??
fprintfではうまくいかなかったよ。
0301デフォルトの名無しさんNGNG
( ´、_ヽ`)・・・
0302デフォルトの名無しさんNGNG
const int SIZE = 10;
int a[ SIZE ] ={ 0,1,2,3,4,5,6,7,8,9 };

FILE *lpFile;
lpFile = fopen( filename , "wb");

if( lpFile == NULL ){
return -1;
}
fwrite( a , sizeof( int ) * SIZE , 1 , lpFile );
( ´、_ヽ`) ?
0303デフォルトの名無しさんNGNG
>>298
あのさ、そのprogではさ、四つだけなんだけど五回ループしているよね?
0304デフォルトの名無しさんNGNG
>300
バイナリデータで保存する時の、 
ファイルオープン時の、パラメータ確認した? 
0305303NGNG
データが4つってことね
0306デフォルトの名無しさんNGNG
C++について質問させてください。
相互に影響しあうオブジェクトって作れないんですか?

クラスAの中からクラスBを呼び出すためには、クラスBを先に作らなくちゃいけないので
クラスBの中でクラスAは呼び出せない・・・と。

あたりまえ?もしくは勘違い?
0307デフォルトの名無しさんNGNG
>>306
何がしたいの?
相互に影響しあう、とか、クラスAの中からクラスBを呼び出す、
ってどういうこと?
0308デフォルトの名無しさんNGNG
>>306
クラスを呼び出すってどういうことだ?
言ってることは良くわからんが、君のやりたいことはたぶん出来る。
0309デフォルトの名無しさんNGNG
>>306
クラスを先行宣言(前方宣言)しておけばいいんじゃない?
0310306NGNG
オブジェクトAとBがあって、Aの変更がBに、Bの変更がAに反映出来るようにしたいんです。
0311デフォルトの名無しさんNGNG
class A;

class B {
class A* a;
};

class A {
int i;
};
みたいな事はできるが、
class A;

class B {
class A a;
};

class A {
int i;
};
はエラーです。
0312306NGNG
C++始めたばっかなので、用語の使い方間違ってるかもしれません
0313デフォルトの名無しさんNGNG
これもエラーか。何とかならんかなあ

class A;

class B {
public:
class A* a;
B() { a = new A; }
void func() { std::cout << "B" << std::endl; }
};

class A {
public:
class B* b;
A() { b = new B; }
void func() { std::cout << "A" << std::endl; }
};

int main()
{
A a;
B b;
a.b->func();
b.a->func();
}
0314306NGNG
>>313
お手数かけてすみません。
クラス分けの時点で間違ってるのかなぁ・・・
とりあえずもう一度考え直してみます。
0315デフォルトの名無しさんNGNG
>>313
正直C++は慣れていないんで、細かい作法は大目にみてくれ。
class A;
class B {
public:
  A* getA();
  B() { a = NULL; }
  void func() { std::cout << "B" << std::endl; }
private:
  class A* a;
};
class A {
public:
  B* getB();
  A() { b = NULL; }
  void func() { std::cout << "A" << std::endl; }
private:
  class B* b;
};
A* B::getA() { if (a == NULL) a = new A; return a; }
B* A::getB() { if (b == NULL) b = new B; return b; }
int main()
{
  A a;
  B b;
  a.getB()->func();
  b.getA()->func();
  return 0;
}
0316デフォルトの名無しさんNGNG
コンストラクタを外に置いてみた。これならサイズが確定しているからnew
できる。しかしなぜか動かない?

class A;

class B {
public:
class A* a;
B();
void func() { std::cout << "B" << std::endl; }
};

class A {
public:
class B* b;
A();
void func() { std::cout << "A" << std::endl; }
};

A::A() { b = new B; }
B::B() { a = new A; }

int main()
{
A a;
B b;
a.b->func();
b.a->func();
}
0317デフォルトの名無しさんNGNG
316です。
このようなプログラムを書くと、aの実体を確保する際にA()が呼ばれ、
その中でbをnewするのでB()が呼ばれ、その中でaをnew・・・・・と
いうように堂々巡りになってスタックオーバーフローしていました。

だからやっぱりこんなおかしなプログラムは書いてはだめぽらしい
です。どなたか感想きぼん。
0318デフォルトの名無しさんNGNG
> A::A() { b = new B; }
> B::B() { a = new A; }
ここでやんないで、あとでセットすれば、簡単にサイクルは作れるけど…
単にサイクルを作りたいだけなの?
0319デフォルトの名無しさんNGNG
>>318
わからん。最初に質問した奴は寝ているらしい。
単に異なるクラス間で情報を共有したいだけなら、staticメンバを使う手もあるな。

class base {
public:
static int i;
};

class A : public base {
public:
void func() { std::cout << i << std::endl; }
};

class B : public base {
public:
void func() { std::cout << i << std::endl; }
};

int base::i;

int main()
{
A a;
B b;

a.i = 111;
b.func();
}
0320デフォルトの名無しさんNGNG
xの階乗を求めるプログラムを作成せよとあります。
一応その階乗を求めるプログラムは作成できたのですがOVERFLOWの時終了することが
できません。整数の最大値がINT_MAXに入っている時、どこでどうやって判断して終了をすればよいのでしょうか?
プログラムです
#include<stdlib.h>
#include<limits.h>
main () {
int i,n,fact;
printf("n=");
scanf("%d",&n);
fact=1;
i=1;
while(i<=n){
fact=fact*i;
i=i+1;
}
}
printf("%d\n",fact);
}
0321デフォルトの名無しさんNGNG
>>320
Cでは残念ながらOVERFLOWを検知することは出来ないんで、
> i=1;
> while(i<=n){
>   fact=fact*i;
>   i=i+1;
> }
for(i = 1, fact = 1; i <= n; i++) {
  if(fact < fact * i) {
    printf("OVERFLOW!!\n");
    break;
  }
  fact *= i;
}
かな?
# for文を使ったのは俺の趣味
0322デフォルトの名無しさんNGNG
INT_MAXを2からズンズン割っていっていけば、
Overflowになるnが割り出せると思うが(w
0323デフォルトの名無しさんNGNG
__asm 使っていいなら至って簡単なのだが。

while(i <= n)
{
 fact = fact * i;
  __asm jno next;
  printf("OVERFLOW!!\n");
  break;
 next:
  i = i + 1;
}
0324デフォルトの名無しさんNGNG
しもた、珍しく来たC++の問題に乗り遅れた…(ノД;)
0325デフォルトの名無しさんNGNG
ひょっとして、テンプレートで、overflowになるnが
静的に割り出せたりする?
0326デフォルトの名無しさんNGNG
ちょっとスレ違いかもしれないけど・・・

javaで、あるアプリケーションを作る課題がでました。
そこで「ユーザインターフェースはメニュー方式の文字インターフェースとしてよい」ってあるのですが、これはCUIでいい、というようにとって大丈夫ですよね?
教師に質問メール送ると返るのが遅いのでここで聞きました。

まぁ俺がいいたいのは、文字で

○○○をする:A
△△△をする:B

のように出力され、Aを入力したら○○○ができる、そんな感じでいいのかな、と。
0327デフォルトの名無しさんNGNG
>>326
超越的にスレ違いだから心配しなくていい。
0328デフォルトの名無しさんNGNG
sleepなるものを使って、カウントを表示するプログラムを作ってみました。

#include <stdio.h>
int main()
{
 int count;
 for(count = 10; count > 0; count--)
  {
    printf("%d\n", count);
    sleep(1);
  }
 printf("Bomb!!\n");
 return 0;
}

こう書くと、10,9,8,7,...ときちんと1秒待ってから表示してくれるのですが
数字を改行しないで表示させようと始めのprintfの所を
printf("%d ", count);
とすると、先に10秒待ってから、10 9 8...と一瞬にして表示され、変になります。
これはどうしてでしょうか?
ただ改行するのとしないのとでは大違いなのですが...。
どうすれば改行せずに1秒待ったら表示して、また1秒待ったら表示して
というようになるのでしょうか?
ちなみに当方、UNIX+gccです。
0329rubyist@カラアゲうまうまNGNG
fflush(stdout)
0330デフォルトの名無しさんNGNG
どうでもいいけど #include <unistd.h> しようよ・・・。
0331デフォルトの名無しさんNGNG
unistd.h・・・uninstaller demon?
0332デフォルトの名無しさんNGNG
>>310
何がしたいのか、よくわからない。

#include <iostream>
#include <stringstream>

int
main()
{
stringbuf strbuf;

ostream ostr(&strbuf);

ostr << "Hello The C++ World" << endl;

cout << strbuf.str() << endl;

return 0;
}

こういうのと同じことをしたいってことか??
0333デフォルトの名無しさんNGNG
    printf("%d\n", count);
fflush(stdout);
    sleep(1);
0334デフォルトの名無しさんNGNG
>>328

printf() が呼ばれるのと画面に出力されるのは、同じタイミングとは限らないんだよ。
これは環境によって違う。

ちみの環境だと、通常の文字はすぐに出力されず、バッファにたまっていく。
で、¥nが出力されたときに、そこまでのバッファの内容が一気に出力される。
0335デフォルトの名無しさんNGNG
unix standard
0336デフォルトの名無しさんNGNG
unistd.h /ju:nistaed do:t eit∫/
■noun (acronym) UNIted STates of Dankan.H
(FOXROAD DICTIONARY)
0337’N& ◆NAel5Y06Iw NGNG
The cows are bored. To amuse themselves, they have started searching
for palindromes in Farmer John's tax forms. Palindromes are numbers
that read the same forwards and backwards, e.g., 1234321 (but not
1231). A palindrome can be as short as 1 digit in length
Each tax form is an N x N (2 <= N <= 20) table of random single digits
(0..9). The cows wish to find paths on the grid such that the sequence
of digits the path traces is a palindrome.
The cows would like to know how many palindromic paths of a given
length L (1 <= L <= 18) exist. Write a program to determine the number
of palindromic paths of length L for a given table of digits. If a
path and its inverse are distinct, count them as two paths. That is,
if traversing a path backwards is not the same as traversing it
forwards, count it as two paths. In the example table above, count
122221 as two paths because it can be traversed either starting on
the 1 in the first row and ending on the 1 in the third row, or
starting on the 1 in the third row and ending on the 1 in the first
row. On the other hand, count `949' only once, as it can only be
traversed starting at 9, going to 4, and returning to the single 9.

0338デフォルトの名無しさんNGNG
>>337
おいおい、the example table above がないと意味が分からんぞ
(といっても推測できるが)
コピペするなら完璧にしろや(゚Д゚)ゴルァ
0339デフォルトの名無しさんNGNG
>>334
>で、¥nが出力されたときに、そこまでのバッファの内容が一気に出力される。

ダウト。\nをバッファに書き込んだからと言ってフラッシュされるとは限らないと
思うが。
0340デフォルトの名無しさんNGNG
>>339
> *ちみの環境だと* 、通常の文字はすぐに出力されず、バッファにたまっていく。
>で、¥nが出力されたときに、そこまでのバッファの内容が一気に出力される。
日本語の読めない奴か?
0341デフォルトの名無しさんNGNG
二次元平面に円を書くプログラムを作成せよ
0342デフォルトの名無しさんNGNG
printf("○");
0343デフォルトの名無しさんNGNG
>>342
なるほど、単純かつ分かりやすい解答だ。
君の答えには私も思わずかつらを脱いだよ。
0344デフォルトの名無しさんNGNG
printf("円");
0345デフォルトの名無しさんNGNG
>>344
漢字の意味からしても「描く」ではなく「書く」だから
こっちの方がより正解に近いのかな。
0346デフォルトの名無しさんNGNG
二次元平面無視してるけどな
0347デフォルトの名無しさんNGNG
ディスプレイが自動的に二次元平面
0348デフォルトの名無しさんNGNG
レイトレして提出しモニタは二次元ですといいながら留年するのが漢
0349デフォルトの名無しさんNGNG
>>348
間違っちゃいないよなぁ。
大体本当の円なんてドットで四角く区切られたディスプレイ上じゃ(以下略
0350デフォルトの名無しさんNGNG
プリンタで印刷しる!
0351デフォルトの名無しさんNGNG
Bresenham's Algorithmで検索汁!
0352デフォルトの名無しさんNGNG
スケジュール管理システムを作れと言う課題が出てるので
誰か作ってくださいです。
0353デフォルトの名無しさんNGNG
因みにc++です。
クラスとか使ってくださいです。
0354デフォルトの名無しさんNGNG
>>353
できれば大文字のCを使ってください。小文字だと君の成績みたいに見えるでしょ。
0355デフォルトの名無しさんNGNG
class schedule
{
public:
schedule();
}

schedule::schedule()
{
printf("管理が終了しました");
}
0356デフォルトの名無しさんNGNG
学校の課題なんだから多分変なアルゴリズムで書くんじゃなくて
三角関数使えってことだろうね
0357デフォルトの名無しさんNGNG
ファイル検索プログラムをつくれって言う宿題なんですけどやってもらえますか?
0358デフォルトの名無しさんNGNG
>>357
OS書けやボケ。
0359デフォルトの名無しさんNGNG
>>357
dir か ls コマンドをsystem関数で呼び出しファイルにリダイレクトして
そのファイルを読み込んで整形
0360デフォルトの名無しさんNGNG
xとyの値のリストを読み込んで、最乗自乗法でy=ax+bのaとbを
求めるプログラムお願いします。
0361デフォルトの名無しさんNGNG
y1=ax1+b
y2=ax2+b
b=(y1+y2-(x1+x2)a)/2
これも誤差を無視した最小自乗法の一種じゃないか!
と主張してくれ
0362デフォルトの名無しさんNGNG
>>361
いやだ。
0363デフォルトの名無しさんNGNG
課題が解けません。どなたか教えてください。m(_ _)m

次の常微分方程式をオイラー法によって解きなさい。
dy/dx=-y (y(0)=1,0<=x<=1,h=0.1) 真値:e^-x
0364デフォルトの名無しさんNGNG
あるDLL内で他のDLLを使用したいのですが
可能なのでしょうか?
可能でしたら使い方はどうすればいいのでしょうか?
0365WarezNGNG
float euler(float x)
{
const float h = 0.1;
a[0] = 1;
for (i = 0; i < 9; i++)
{
a[i+1] = a[i] - h * a[i];
}
return a[(int)x*10];
}
0366デフォルトの名無しさんNGNG
>>364
可能。exeから呼び出すのと全く同じ。
0367おねがいNGNG
50000までの素数を求めるプログラムをCで組んでもらえませんか?
0368デフォルトの名無しさんNGNG
>>367
誰かコテハンがやってたな。Delふさぎこだったっけ?

素数の定義を知ってるならスピードはともかく動く物は書けると思う。

0369367NGNG
うp禿しくキボンヌ
0370デフォルトの名無しさんNGNG
>>369
こっから自分の好きなものを取ってこい

素数 "列挙" アルゴリズムを極めるスレ
http://pc3.2ch.net/test/read.cgi/tech/1018657457/
0371デフォルトの名無しさんNGNG
>>369
死ね。
0372デフォルトの名無しさんNGNG
#include <stdio.h>
#include <limits.h>
static unsigned long next_prime(unsigned long n);
static int is_prime(unsigned long n){
static unsigned long primes[65535] = { 2 };
static int init = 0;
unsigned long *p;

if (!init)
for (init=1, p = primes; *p++ <= 65535;)
*p = next_prime(*(p-1));

for (p = primes; *p * *p <= n; p++)
if (n % *p == 0) return 0;

return 1;
}
static unsigned long next_prime(unsigned long n){
while (!is_prime(++n));
return n;
}
int main(void){
unsigned long i;

for (i = 2; i <= 50000; i = next_prime(i))
printf("%10ld\n", i);

return 0;
}
0373367NGNG
死ねって言われて死ぬアホがいるか(プ
0374デフォルトの名無しさんNGNG
>>373
スレ違い出て行け (プ
0375デフォルトの名無しさんNGNG
教授に、複素数のクラスを作ってこいと言われますた…
この無知に何か助言を頂きたいですm(_ _)m
0376デフォルトの名無しさんNGNG
std::complex朴れ
0377弁士NGNG
JPEGの圧縮プログラムの宿題が出たのですが、プログラムを教えていただけませんか?
0378デフォルトの名無しさんNGNG
素数判定、因数表示プログラムを作りなさい。

整数を入力し、素数かどうか判定を行う
素数の場合、「素数です」と表示
素数でない場合は、その因数を全て表示する
*整数Aを整数Bで割ったとき、余りが0ならBはAの因数(1とA自身は除く)
A%B=0
*素数:因数を持たない整数
ヒント:判定変数
初期値は1、 因数があれば0に更新、
ループ終了後も1のままなら素数
0379デフォルトの名無しさんNGNG
377 マルチ氏ね
0380デフォルトの名無しさんNGNG
4桁の2進数を文字列として標準入寮から入力し、
これを10進数へ変換して表示するプログラムを作成せよ。

無知な私を助けてください。
0381デフォルトの名無しさんNGNG
>>380

#include <stdio.h>
#include <stdlib.h>
int main()
{
char buf[5];
fgets(buf,sizeof buf,stdin);
printf("%ld\n",strtol(buf,NULL,2));
return 0;
}
0382デフォルトの名無しさんNGNG
>>379
マルチポストくらいで怒るな
0383デフォルトの名無しさんNGNG
>>382
よくそんな事が言えるな。
マルチポストが何で敬遠されてるかわかってるか?
0384デフォルトの名無しさんNGNG
>>383
はいはい。
怒ってもいいからいちいち注意するな。
0385デフォルトの名無しさんNGNG
>>384
いや、注意してもらったほうがありがたい。
0386380NGNG
>>381
ありがとうございました。
0387デフォルトの名無しさんNGNG
>>377
マルチうぜーよ。
0388デフォルトの名無しさんNGNG
>>383
何で敬遠されるんですか?

ぐぐって見たのですが、うまく調べることが出来ませんでした。
教えていただけるとありがたいです。
よろしくお願いします。
0389デフォルトの名無しさんNGNG
>>388
おまいは無能クンか。
「マルチポスト 嫌われる」 で検索すれば、しこたま出てくるわ。

とりあえずめぼしいのはこんなところ。
http://www.ippo.ne.jp/netiquette/common/04question/multipost.htm
http://www.so-net.ne.jp/ClubHouse/room/manner2.html#multi
0390389NGNG
追加。
A掲示板とB掲示板にポストして、A掲示板で回答が得られたとしたら、
B掲示板で調べてくれてた人の労力はどーなるん? とか。
0391デフォルトの名無しさんNGNG
>>389
どうもありがとうございます。
とてもよくわかりました。

ところで、388はマルチポストだったわけですが、
お気づきになられましたか?
0392また貴様か!&rlo;!ろり懲はし少 &lro;NGNG
              ヽ \
             / \ \
       ∧_∧/
      (;´Д`)     i i i
      /    ヽ _   i i i--、
     ./| |   | |   ̄ ̄ ̄ |:::::|.
    / \ヽ/| |       ノ__ノ..
   /   \\| |
   / /⌒\ し(メ    .i i i . .
 / /    > ) \  ノノノ
/ /     / /    .\_  ザックザック
し'     (_つ   /:::::/::...   /ヽ
          ; "ノ・ ./∴: / )i iヽ-、_へ    ,ヘ
          '',, : :―― / / i i i iヽ . ̄ ゙― ノ /
    n_    _/;    i  .ノ / /ノ-' ̄ ゙ ― 、__ノ
  _ノ 二二二、_( _Д_ ;)-ヽ_ノ-'>>391
  ゙ー ''~      ∨ ̄∨
0393デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
0394デフォルトの名無しさんNGNG
人、犬、鶏、野菜がボートで向こう岸まで行きたい。ボートは2人までしか乗れない。(例:人、犬、野菜は定員オーバー)
ボートは人しか漕げない。人がいないと犬は鶏を、鶏は野菜を食べてしまう。全員無事に
向こう岸にいく手順を出力するプログラムを教えてください。お願いします。
0395デフォルトの名無しさんNGNG
人、犬、鶏、野菜がそれぞれ 1 インスタンスしか存在しないなら解決不能だが?
0396WarezNGNG
有名な問題じゃん.鶏を連れてかえるんだよ.
0397デフォルトの名無しさんNGNG
人が鶏を食べちゃうんだろ。
0398デフォルトの名無しさんNGNG
最初に人のインスタンスを3つ作ればいいのか・
0399デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void) {
puts(
"1. 鷄をボートに載せて向こう岸に行く\n"
"2. 鷄を置いて戻ってくる\n"
"3. 野菜をボートに載せて、ボートの横で犬を泳がせて向こう岸に行く\n"
"終了"
);
return 0;
}
0400デフォルトの名無しさんNGNG
プログラムを教えてください。だから、ニューロサイエンスするのかなー。
0401デフォルトの名無しさんNGNG
>>399
イイ
0402デフォルトの名無しさんNGNG
ニューロなんか使わなくてよろしい。
バックトラックを使って試行させるだけ。
0403デフォルトの名無しさんNGNG
>>399
鶏を飛ばしておく
0404デフォルトの名無しさんNGNG
渡る前に食っちまえ
0405デフォルトの名無しさんNGNG
ただの総当りでいいのか
真面目に考えて損した
0406デフォルトの名無しさんNGNG
「手順を出力するプログラム」であって「手順を求めるプログラム」じゃないんだろ?
じゃあ、>>399と同じようなので、ただし文字列は
"1. 鷄をボートに載せて向こう岸に行く\n"
"2. 鷄を置いて戻ってくる\n"
"3. 野菜をボートに載せて向こう岸に行く\n"
"4. 野菜を置き、鶏を連れて戻ってくる\n"
"5. 犬を載せて向こう岸に行く\n"
"6. 犬と野菜を置いて戻ってくる\n"
"7. 鶏を載せて向こう岸に行く\n"
"終了"
0407デフォルトの名無しさんNGNG
本当はこの問題を解かなくちゃいけなくて、プログラムを使って解こうと思ったんだけど
プログラムの前に答えがでちゃったのでもういいです。
0408394NGNG
>>406
手順を求めて出力です。間違えました。
0409デフォルトの名無しさんNGNG
つーかなんでこのスレこんなレベルさがってんの?
0410デフォルトの名無しさんNGNG
レベルは高いと思うが?
0411デフォルトの名無しさんNGNG
2chに来てレベルうんぬんぬかすヤシの精神的レベルの方が心配だ
0412394NGNG
>>407
そう気を落とさずにお願いします。似たような問題でこんなのもあります。
宣教師と人食い人種が3人づつ、川の右岸におり、2人乗りのボートがある。
どこにおいても、宣教師の数が人食い人種より少なくなると、宣教師は食べられて
しまう。安全に川の右岸から左岸に渡るにはどうしたらよいか。



0413デフォルトの名無しさんNGNG
人食い人種を頃す
0414デフォルトの名無しさんNGNG
宣教師を船にのせる。人食い人種に河を歩かせる。
3回繰り返す。
0415デフォルトの名無しさんNGNG
SSSHHH
SS HH >SH>
SS HH <H< S
SS H >HH> S
SS H <H< SH
S H >SH> SH
S H <H< SSH
S >HH> SSH
S <H< SSHH
>SH> SSHH
船頭を、人食い人種にまかせる事で、つねに人食い人種が一人足りない状況を作る。
0416デフォルトの名無しさんNGNG
宣教師をもう3人借りてくる
0417デフォルトの名無しさんNGNG
SSSHHH
SS HH >SH>
SS HH <H< S   ← ここで喰われる。
0418デフォルトの名無しさんNGNG
宣教師に船をのせる。
0419デフォルトの名無しさんNGNG
SSSHHH.|< >  .|
SSHH  |→<SH>|
SSHH  |< >← .|SH
SH    .|→<SH>|SH
SH    .|< >← .|SSHH
      |→<SH>|SSHH
      |  .< >|SSSHHH
0420デフォルトの名無しさんNGNG
SSSHHH.|< >  .|
SSHH  |→<SH>|
SSHH  |<SH>←|
SSHH  |→<SH>|
SSHH  |<SH>←|
SSHH  |→<SH>|
SSHH  |<SH>←|
0421デフォルトの名無しさんNGNG
宣教師なんだったら人を食わないように説いてやれや
0422WarezNGNG
>412
1瞬(たとえばboatがついてからまた発つまで)でも人食い人種の方が多い状況があったらだめなのか?
0423デフォルトの名無しさんNGNG
SSSHHH.|<   >|
SSHH  .{<SH>|
SH     |<SH>| SH
       |<SH>| SSHH
       |<   >| SSSHHH
0424デフォルトの名無しさんNGNG
>>422
そうっす。
できれば自分で解かず、プログラムに解かせてください。
0425デフォルトの名無しさんNGNG
SSSH >HH>
SSSH <H<  H
SSS  >HH> H
SSS  <H<  HH
SH   >SS> HH
SH   <SH< SH

自分で解いたほうが楽しい問題ってプログラム面倒くさいなあ。
0426デフォルトの名無しさんNGNG
http://www.vector.co.jp/soft/dl/data/prog/se002453.html
↑これの中の、cannibal.cを読んでみそ。
「宣教師と土人」のプログラムがあるから。

#どうでもいいけどATOK15では「土人」が一発で変換しない。差別用語だからか。
0427デフォルトの名無しさんNGNG
>>424
じゃあ人工知能作るしかないな
こっちでロジック考えてプログラム書いちゃったら
「プログラムが解いた」ということにはならない
0428デフォルトの名無しさんNGNG
C/C++よりLispやPrologのが楽だYO!
0429394NGNG
>>426
ありがとう。助かったよ
0430テストIME2000NGNG
ド人
0431デフォルトの名無しさんNGNG
インド人
0432デフォルトの名無しさんNGNG
淫ド人
0433デフォルトの名無しさんNGNG
4次元ベクトルの内積を求めるプログラムをCで作って下さい。お願いします!
0434デフォルトの名無しさんNGNG
double a[4], b[4];
double inner=0;
int i;
for (i=0; i<4; i++)
inner=a[i]*b[i];
0435takeruNGNG
平面上の点を表す構造体Pointを用いて、三角形の三つの頂点座標を持つ構造体 Triangle
を以下のように定義した。


struct Point{
float X;
float y;

};
struct Triangle
struct Point a,b,c;
);

この定義を用いて、構造体Triangle 型の変数 tri を宣言し、三頂点が(1。0、1。0)、
(5。0、3。0)、(4。0、2。0)になるように初期化するプログラムをつくり、頂点座標を
次のように出力せよ。

出力例

三角形の頂点

(1。0、1。0)、
(5。0、3。0)、
(4。0、2。0)

どなたかお願いします。もうしにそうです。
0436takeruNGNG
>>435を利用して、三角形の面積を計算するプログラムをつくれ。

三角形の面積は(a,b),(c,d),(e,f)ならば、

面積=1/2×{(e-a)(d-b)-(c-a)(f-b)} の絶対値で表される。

頂点は>>435の値を用いよ。絶対値はifを使っても、fabs()を使っても良い。

出力例
三角形の頂点

(1。000000、1。000000)、
(5。000000、3。000000)、
(4。000000、2。000000)、
面積 1。000

どなたかお願いします。
0437デフォルトの名無しさんNGNG
#include <stdio.h>

struct Point{ float X, y; };
struct Triangle { struct Point a, b, c; };

void PutFloat(float f)
{
  char buf[1024], *p;
  sprintf(buf, "%.1f", f);
  for(p = buf; *p; p++)
  {
    if(*p == '.')
      fwrite("。", 1, strlen("。"), stdout);
    else
      fwrite(p, 1, sizeof(*p), stdout);
  }
}

void PutPoint(struct Point *pt)
{
  fwrite("(", 1, strlen("("), stdout);
  PutFloat(pt->X);
  fwrite("、", 1, strlen("、"), stdout);
  PutFloat(pt->y);
  fwrite(")", 1, strlen(")"), stdout);
}
0438デフォルトの名無しさんNGNG
void PutTriangle(struct Triangle *tri)
{
  fwrite("三角形の頂点\n\n", 1, strlen("三角形の頂点\n\n"), stdout);
  PutPoint(&tri->a);
  fwrite("、\n", 1, strlen("、\n"), stdout);
  PutPoint(&tri->b);
  fwrite("、\n", 1, strlen("、\n"), stdout);
  PutPoint(&tri->c);
  fwrite("\n", 1, strlen("\n"), stdout);
}

void PutTriangleArea(struct Triangle *tri)
{
  float area, a = tri->a.X, b = tri->a.y, c = tri->b.X, d = tri->b.y, e = tri->c.X, f = tri->c.y;
  fwrite("面積 ", 1, strlen("面積 "), stdout);
  area = 1.0f / 2.0f * ((e - a) * (d - b) - (c - a) * (f - b));
  PutFloat(area < 0.0f? -area: area);
  fwrite("\n", 1, strlen("\n"), stdout);
}

int main()
{
  struct Triangle tri = { { 1.0f, 1.0f }, { 5.0f, 3.0f }, { 4.0f, 2.0f } };
  PutTriangle(&tri);
  PutTriangleArea(&tri);
  return 0;
}
0439デフォルトの名無しさんNGNG
しまった、抜け。
#include <string.h>
0440デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>
struct Point{
float X;
float y;
};
struct Triangle{
struct Point a,b,c;
};
void p(struct Point p){
printf("(%f %f)\n", p.X, p.y);
}
void main(void) {
struct Triangle tri;
tri.a.X = 1.0; tri.a.y = 1.0;
tri.b.X = 5.0; tri.b.y = 3.0;
tri.c.X = 4.0; tri.c.y = 2.0;
printf("三角形の頂点\n");
p(tri.a); p(tri.b); p(tri.c);
printf("面積%f", fabs(0.5*((tri.c.X - tri.a.X)*(tri.b.y - tri.a.y) -
(tri.b.X - tri.a.X)*(tri.c.y - tri.a.y))));
}
0441デフォルトの名無しさんNGNG
>>440
仕様をよく読めよ。
0442デフォルトの名無しさんNGNG
C言語で画像を
(1) 濃度移動
(2) 濃度変換
(3) 輝度分解能(階調数)
(4) 空間解像度変換
するプログラムをキボンヌ
0443デフォルトの名無しさんNGNG
>>442
画像ソフトを買え。
0444デフォルトの名無しさんNGNG
>>443
gimpってオープンソフトだっけ?
だったらそのソースコードを読む。
0445デフォルトの名無しさんNGNG
オープンソフト........( ゚д゚)
0446デフォルトの名無しさんNGNG
オープンソース?
0447デフォルトの名無しさんNGNG
オーブントースター?
0448デフォルトの名無しさんNGNG
scanf関数で半径rを入力してもらい、
そのrを円を描く関数に渡して円を描くプログラムを…おながいします。
ちなみに、C言語です。。
0449デフォルトの名無しさんNGNG
printf("r=%dの〇",r);
0450448NGNG
>449
そのneta 100くらい見た.死ね.
0451448NGNG
>449
そのneta 100回くらい見た.死ね.
0452デフォルトの名無しさんNGNG
>>448
環境ぐらい書くもんだ。逝ね。
0453デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
double r;

scanf("%lf", &r);
//circle(x, y, r); //適当な関数に置換せよ
return EXIT_SUCCESS;
}
0454448NGNG
>452
SotecのWindows Meです.
0455デフォルトの名無しさんNGNG
#include <stdlib.h>
#define BEGIN do{
#define END }while(1)
#define mymalloc(s) BEGIN m=malloc(s); END
#define BYNARY (((((((
#define x )*2+
void *m;int main(void){mymalloc(BYNARY 1 x 1 x 1 x 1 x 1 x 1 x 1 x 1 );return 0;}
0456デフォルトの名無しさんNGNG
>>450-451
騙るわ、間違えて二重投稿するわ、「すれ立てるまでも」で名前消し忘れるわ、、、もっとしっかりしようぜ?
0457デフォルトの名無しさんNGNG
BYNARY?
0458デフォルトの名無しさんNGNG
#define END }while(1)
本気ですか?
0459デフォルトの名無しさんNGNG
>454
結局コンパイラを書かないあたりネタだな、、、
0460デフォルトの名無しさんNGNG
Bresenham's Algorithmで検索汁!
このマルチポストやろう!
0461デフォルトの名無しさんNGNG
そういえば、

#define BEGIN }
#define END {

これってどうよ?
0462デフォルトの名無しさんNGNG
糞
0463デフォルトの名無しさんNGNG
#define SCREEN_SIZE 100
char screen[SCREEN_SIZE][SCREEN_SIZE];
#define pset(x, y) (screen[x][y] = 1)
void circle(int x0, int y0, int r)
{
 int x, y, dy;
 y = r;
 dy = r - 1;
 for (x = 0; x <= y; x++) {
  pset(x0 + x, y0 + y); pset(x0 - x, y0 + y);
  pset(x0 + x, y0 - y); pset(x0 - x, y0 - y);
  pset(x0 + y, y0 + x); pset(x0 - y, y0 + x);
  pset(x0 + y, y0 - x); pset(x0 - y, y0 - x);
  dy -= x + x + 1;
  if (dy < 0) {
   y--;
   dy += y + y;
  }
 }
}
int main()
{
 int radius, x, y;
 scanf("%d", &radius);
 circle(49, 49, radius);
 for (x = 0; x < SCREEN_SIZE; x++) {
  for (y = 0; y < SCREEN_SIZE; y++) putchar(screen[x][y] ? '*' : ' ');
  putchar('\n');
 }
 return 0;
}
0464デフォルトの名無しさんNGNG
inline void pset1(int x, int y) { screen[x][y] = 1; }
inline void pset2(int x, int y) { screen[y][x] = 1; }
inline void swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; }
inline int abs(int x) { return x >= 0 ? x : -x; }
inline int signum(int x) { if (x > 0) return 1; else if (x < 0) return -1; else return 0; }
void line(int x1, int y1, int x2, int y2)
{
 int x, y, dx = abs(x1 - x2), dy = abs(y1 - y2), d, delta;
 void (*pset)(int, int) = pset1;
 if (dy > dx) {
  swap(&x1, &y1);
  swap(&x2, &y2);
  swap(&dx, &dy);
  pset = pset2;
 }
 if (x1 > x2) {
  swap(&x1, &x2);
  swap(&y1, &y2);
 }
 delta = signum(y2 - y1);
 d = dx / 2;
 for (x = x1, y = y1; x <= x2; x++) {
  pset(x, y);
  d += dy;
  if (d >= dx) {
   d -= dx;
   y += delta;
  }
 }
}
0465デフォルトの名無しさんNGNG
>>463
動くけど、なぜ動くか良く分らない…鬱だ
0466デフォルトの名無しさんNGNG
一連のpset(〜);で、中心点(x0,y0)から、対称な八方向にプロットしている。
x+x,y+yなどは微分値を使用。
xで走査しながら、yで中心点から一定の距離のところを取得(微分値・変化率)。
よくわからん・・・
0467デフォルトの名無しさんNGNG
(1)
  引数に与えられた整数が素数であるかどうかを判定する関数 is_primeを作成し、
  入力された正の整数を素数分解して表示するプログラムを作りなさい。

(2)
  年(西暦)月日を入力し、その日が1月1日から何日目になるかを表示するプログラムを作りなさい。
  ただし、その年がうるう年であるかどうかを判定する関数is_leapを作成して利用しなさい。

  うるう年は西暦の年が4で割り切れる年。
  ただし、その年が100で割り切れて、かつ、400で割り切れない場合はうるう年ではない。


一度に2つもすみませんがよろしくお願いします。
0468デフォルトの名無しさんNGNG
>>467
で、いつからここは丸投げスレになったんだ?

正直、あんた向いてない。今いる学校なり会社なりやめて違う道探した方が良いと思う。
0469デフォルトの名無しさんNGNG
>>468
>で、いつからここは丸投げスレになったんだ?
スレできた当初から。
で、〇投げだめな宿題Cスレ
http://pc3.2ch.net/test/read.cgi/tech/1038024989/l50
0470デフォルトの名無しさんNGNG
>>468
最初から丸投げスレ。
何も出来ないくせに文句だけ言いたがる厨は、
お外に遊びに言ってなさい。
0471C言語暦 3ヶ月NGNG
>>467の(2)を作ってみたよ。
正月を「経過日数1」とした。

今現在は16行制限みたいなんで
4/1000もレスを消費するともったいないので

姉妹スレのソーススレ借りました。

宿題のソースはここにおいてね
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=36
0472C言語暦 3ヶ月NGNG
添削きぼんぬ です。
0473デフォルトの名無しさんNGNG
>>472
良ろしいんじゃないですか?分りやすくて。
ツェラーの公式を使えばもっと短くなるだろうけど、
読んだ人は分らなくなるかも。

あ、文字列定数中の()は、エスケープする必要ない弟子。
0474デフォルトの名無しさんNGNG























0475C言語暦 3ヶ月NGNG
>>473
)で関数が閉じてしまって 「" がありません」になるかと思ってたよ、Thax.

ツェラーの公式って曜日を算出するものじゃないの?
どうやるのか ソースプリーズ?
0476デフォルトの名無しさんNGNG


























0477C言語暦 3ヶ月NGNG
検索したら出てきたよ。
0478デフォルトの名無しさんNGNG
ここが良くまとまっている。
ttp://www.ne.jp/asahi/futohen/sankaku/h102.htm
0479デフォルトの名無しさんNGNG
ax^2+bx+c=0
#defineマクロ文を使用し係数を読みこんで、判定し、
実数解がある時はそれぞれのマクロ文をコールし解を求め〜
判別式もマクロ文で作成すること

 朝から何度も適当にやっても解が合いません
判定式と解を出すのを#defineで作っただけでは駄目ですか
仮引数が無いのが駄目ですか
一回講義を休んで分かりませんその時はIF文を習ってました
教科書はTurboC初級プログラミングです




0480デフォルトの名無しさんNGNG
>>479
書いたソース載せろや。
0481デフォルトの名無しさんNGNG
>>480
禿同。
ほんと厨房は実装プログラム載せないよな。
0482デフォルトの名無しさんNGNG
最短距離を探すプログラムを、POINTERを使って
作ってください。
0483ねたNGNG
ここに打ち込むのはけっこう大変なんですけど…
なんだか画面狭いし…
0484デフォルトの名無しさんNGNG
気合だ
0485479NGNG
#include <stdio.h>
#include<math.h>
#define KAI_0 ((-b+m)/(2.0*a)
#define KAI_1 (-b-m)/(2.0*a))
#define KAI_2 (-b/2.0*a)
/*QR(a,b,c) (-b+sqrt(b*b-a*c*4))/(a*2)*/
#define DD (b*b - 4.0*a*c)

int main(void){

double a,b,c,m,x1,x2;

printf("ax^2+bx+c=0\n");
printf("a=");
scanf("%lf",&a);
printf("b=");
scanf("%lf",&b);
printf("c=");
scanf("%lf",&c);

0486479NGNG
if (DD > 0.0){
printf("a=%.1lf b=%.1lf c=%.1lf\n",a,b,c);
m=sqrt(DD);
printf("x1=%lf\nx2=%lf",KAI_0,KAI_1);
}
else if (DD==0.0){
printf("a=%.1lf b=%.1lf c=%.1lf\n",a,b,c);
printf("x=%lf", KAI_2);
}
else {
printf("解なし");
}
}
試行錯誤の末全てがおかしいんだ
0487デフォルトの名無しさんNGNG
>>486
>else if (DD==0.0){

浮動小数点でこういうことしない。
0488デフォルトの名無しさんNGNG
そうだぞ、
else if (!DD) {
で充分。
0489デフォルトの名無しさんNGNG
>>488
アフォですか?
0490デフォルトの名無しさんNGNG
あ、ごめん、ネタだったのね。
0491デフォルトの名無しさんNGNG
http://24honlinecasino.fc2web.com/

0492デフォルトの名無しさんNGNG
(double)dat==0
では、判定出来ないもの。
abs(dat-0.0)<epsilon
だっけ?
そんな風に判定しないと
0493デフォルトの名無しさんNGNG
fabs(dat) < DBL_EPSILON

-0.0 は必要無いし
0494デフォルトの名無しさんNGNG
C言語でhostコマンド似たような実行をするプログラムって、
どんなプログラムになるんでしょう?
よろしければ、考えてもらえますか?
0495デフォルトの名無しさんNGNG
マルチポストとはなかなか度胸があるな。
0496デフォルトの名無しさんNGNG
HMX-12 萌え
0497デフォルトの名無しさんNGNG
>>463
ブレゼンハムのアルゴリズムだね。

>>464
デジタル微分解析による直線描画。
0498デフォルトの名無しさんNGNG
ふむふむ、
fabs(dat) <DBL_EPSILON
が、プレゼンハムのアルゴリズムで、

デジタル微分解析による直線描画で
hostコマンドと似たようなのものが実装できると

プログラム板は勉強になるなぁ。
0499デフォルトの名無しさんNGNG
>>498
Kitty-Guy が発生しました
0500デフォルトの名無しさんNGNG
6と9を読み違えてみたのね…
突っ込みにくいネタはヤメテ!
0501デフォルトの名無しさんNGNG
>>468
プログラムを学んでいる人の大半はプログラマどころか情報系に就職する
わけでもないのだが
0502デフォルトの名無しさんNGNG
112233334444555555556666をLz78符号化して
112020343440474059510510606136
という結果を得たとき、これを復号化する際
〜106
を10番目の語句+6ではなく、1番目の語句+0+6番目の語句+…と解釈すると
1122333344445551203316612334となります。
辞書の番号が一桁なのか二桁なのかどう区別したらいいのでしょうか?
0503デフォルトの名無しさんNGNG
基地男が発生しました。
0504デフォルトの名無しさんNGNG
>>502
またそのネタかよ…
LZ78は符号化じゃないってば。

符号化の勉強しろよ。エリアス符号とか、SSS符号とか、エントロピー符号化でもイイや。

圧縮スレ行けば?
0505デフォルトの名無しさんNGNG
>>502
宿題なら答えてやるから、宿題の問題文をそのまま示せ。
0506デフォルトの名無しさんNGNG
>>504
エントロピー符号はLZ78に適用出来ないだろ
LZ78自体が表現出来てないんだから
0507デフォルトの名無しさんNGNG
>>506
そのとおりだが、エントロピー符号化の勉強をすれば、
可変長のビット列をバイト指向のストリームに書く方法くらいは
わかるんではないかと思った。
0508デフォルトの名無しさんNGNG
>>506
LZ78,77のようなparsing法は、エントロピー符号化で書けます

1)Eliasのγ、δ符号のように指数部とバイナリ部をエントロピー符号化する
2)記号単位で符号化する(parsing to symbolwise でしらべてみてちょ)
0509デフォルトの名無しさんNGNG
標準入力から無向グラフのデータを与えると、
グラフの辺を全て1度ずつ通る道筋(オイラー路)を出力する
Cのプログラムを書きなさい。
入力の形式は、
・最初の行に頂点の数N
・残りのN行は、それぞれ0番〜N-1番の頂点を表す。
 最初に辺の数が書いてあり、その後に辺で結ばれる相手の頂点の番号が
 並んでいる。区切り記号は1個の空白とする。
・グラフは連結であると仮定してよい。
出力は、頂点の番号をたとえば
12-24-179-3-...
のようにハイフンで結んで標準出力に書き出すこと。

よろしくお願いします。
0510デフォルトの名無しさんNGNG
>>509
これってNP完全じゃないの?
0511デフォルトの名無しさんNGNG
皆さん、そんな難しい用語使わないで下さい。
大学院にも行ってないので理解できません。
0512デフォルトの名無しさんNGNG
>>510
ちがう。ハミルトン路ならNP完全だが、
オイラー路はO(N)で求まるはず。
0513デフォルトの名無しさんNGNG
オイラーはドラマー
0514デフォルトの名無しさんNGNG
必ず1ふでがきできるってこと?
0515デフォルトの名無しさんNGNG
>>512
ケーリーだ。ケーリー。
0516デフォルトの名無しさんNGNG
>>514
できるかどうかはデータによる。
できるとしたら、解がどのくらいの計算量で求まるかという話。
0517467NGNG
どなたか>>467の(1)の問題わかる方いませんか?
関数が出てきてから理解できなくなってきたんでお願いします。
0518デフォルトの名無しさんNGNG
>>509
再帰関数
0519デフォルトの名無しさんNGNG
>>517
2以上の整数で割れたら割って、を続けて行けば?
0520デフォルトの名無しさんNGNG
>>517
#include <stdio.h>
int is_prime( int x ) { /* x が素数なら 0、素数でなければ一番小さい素因数を返す */
int n, i;
if ( x < 2 ) return 0;
if ( x % 2 == 0 ) return 2;
n = x/2;
for ( i = 3; i < n; i+=2 )
if ( x % i == 0 ) return i;
return 0;
}
int main( void ) {
int n, d;
fputs( "正の整数を入力してください: ", stdout );
scanf( "%d", &n );
if ( n < 1 ) {
printf( "%d は正の整数ではありません。\n", n );
exit( 1 );
} else if ( n == 1 ) {
puts( "1" );
exit( 0 );
}
while ( (d = is_prime(n)) != 0 ) {
printf( "%d, ", d );
n /= d;
}
printf( "%d\n", n );
return 0;
}
0521デフォルトの名無しさんNGNG
int is_prime(int n){
for(i=2; i<n; i++)
if(n%i==0){
printf("%d ",i);
n/=i;
i--;
}
}
0522467NGNG
できました。
どうもありがとうございました〜。
0523デフォルトの名無しさんNGNG
ちっ、遅かったか
bool is_prime(int n, std::vector<int> &factor=std::vector<int>()) {
factor.clear() ;
for(int i=2;i*i<=n;i++) while(!(n%i)) factor.push_back(i),n/=i ;
if(n!=1) factor.push_back(n) ;
return factor.size()==1 ;
}
0524デフォルトの名無しさんNGNG
■問題1
FileName = "test.csv"; を開いて 配列 TextData に 1行ずつ格納する プログラムを書け。

■問題2
問1の配列を逆順にする プログラムを書け。

■問題3
test.csv は タブ(\t)区切りフォーマットである。
<table> タグを利用し、CSVファイルの中身を全て表示するプログラムを書け。

C++
0525デフォルトの名無しさんNGNG
>>524
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
void readFromStream(std::istream &is,std::vector<std::string> &result)
{
 std::string temp;
 while(std::getline(is,temp)) {
  result.push_back(temp);
 }
}
void writeToStream(std::ostream &os,const std::vector<std::string> csv)
{
 os << "<table>" << std::endl;
 for(std::size_t i = 0;i < csv.size();i++) {
  os << "\t<tr>";
  std::string line = csv[i];
  std::istringstream iss(line);
  
  std::string temp;
  while(std::getline(iss,temp,'\t')){
   os << "<td>" << temp << "</td>";
  }
  os << "</tr>" << std::endl;
 }
 os << "</table>" << std::endl;
}
0526デフォルトの名無しさんNGNG
続き
int main(int argc,char **argv)
{
 std::string fileName = "test.csv";
 std::ifstream ifs(fileName.c_str());
 if(!ifs.is_open()) return 1;
 
 std::vector<std::string> csv;
 readFromStream(ifs,csv); //読み込んで
 
 std::reverse(csv.begin(),csv.end()); //逆順にして
 
 writeToStream(std::cout,csv); //とりあえず標準出力に書き出してみる
 return 0;
}
0527デフォルトの名無しさんNGNG
とりあえず1と2だけ。
1:
std::list< std::string > TextData[1];
std::ifstream ifs(FileName);
std::string tmp;
while( std::getline(ifs,tmp) )
TextData[0].push_back(tmp);

2:
TextData[0].reverse();
0528デフォルトの名無しさんNGNG
VC++をつかってじゃんけんのゲームを作ってます。ダイアログベース。グー チョキ パーのボタンをそれぞれ配置して、結果に応じて絵が出るようにしたいでつ。
どう記述すればいいか教えてください。
0529528NGNG
で、5回負けたらゲームオーバー、5回買ったら勝利ってことにしたいです。
絵が出るというのは、北斗ののびたみたいにアニメチックにしたいです
053046NGNG
.NET flame workでコンパイルするときどうするんでつか?
0531デフォルトの名無しさんNGNG
>>530 それが宿題なんですね。
0532デフォルトの名無しさんNGNG
>>527
ワラタヨ
0533デフォルトの名無しさんNGNG
[課題](C言語)
標準入力で入力された文字列を暗号化するプログラムを作成しなさい。
0534デフォルトの名無しさんNGNG
void NullEncrypt(FILE *in, FILE *out)
{
int ch;
while(ch = fgetch(in), ch != EOF )
 fputch( ch , out );
}
int main() { NullEncrypt( stdin, stdout); return 0;}
0535デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void) {
int c;
while ( (c = fgetc(stdin)) != EOF )
putchar( c-1 );
return 0;
}
0536デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
int main(int artc, char *argv[])
{ int i, c;
 char *p;
 if (argc < 2) {
  fprintf(stderr, "usage: %s keyword...\n", argv[0]);
  return EXIT_FAILURE;
 }
 i = 1;
 p = argv[1];
 while ((c = getchar()) != EOF) {
  if (! *p) {
   if (++i >= argc) {
    i = 1;
   }
   p = argv[i];
  }
  putchar(c ^ *p++);
 }
 return 0;
}
0537デフォルトの名無しさんNGNG
* ビジュネール暗号 */

#include <stdio.h>

int encrypt(int code, char *keywords[])
{
 if (keywords[0] == NULL) {
  int c = getchar();
  if (c != EOF)
   putchar(c ^ code);
  return c;
 } else {
  char *p;
  for (p = keywords[0]; *p; p++)
   if (encrypt(code ^ *p, keywords + 1) == EOF)
    return EOF;
  return 0;
 }
}

int main(int argc, char *argv[])
{
 while (encrypt(0, argv + 1) != EOF)
  ;
 return 0;
}
0538デフォルトの名無しさんNGNG
得点を入力してそれの
平均点と標準偏差と偏差値得点を出力するプログラムを作成せよ。
負の数値を入力したら実行は終了するものとせよ
0539デフォルトの名無しさんNGNG
>>538
単純すぎてつまらない。
0540tekeruNGNG
なんとかまにあったっす。
協力してくれた方々感謝します。
0541533NGNG
ご協力ありがとうございました。
また来るかもしれないんでよろしくお願いします。
0542デフォルトの名無しさんNGNG
>>540
だれ?
0543デフォルトの名無しさんNGNG
動画を再生するソフト作ってください
0544デフォルトの名無しさんNGNG
多分スレ違いだから安心していい。
0545デフォルトの名無しさんNGNG
コンソールからの入力で、実数が入力されたときはdouble型の変数に、
整数が入力されたときにはint型の変数に代入させたい。
とりあえず、

#include <stdio.h>
int main( void ){
char buf[100]=" ";
int idata;
double ddata;
char sdata[100];
while( buf[0] != '\n' ){
printf("?");
fgets(buf , sizeof( buf ) , stdin );
if( sscanf( buf , "%d" , &idata ) == 1 )
printf("int型 : %d\n",idata );
else if( sscanf( buf , "%lf" , &ddata ) == 1 )
printf("double型 : %f\n",ddata );
}
return 0;
}

みたいなコードを書いて見たのだけれども、実行してみると、

?10[Enter]
int型
?10.0[Enter]
int型
になっちゃう。(RedHad Linux,gcc)
下の10.0の入力の時に、double型ってなってくれればうれしいのだけれども
0546教えて厨NGNG
[0,1]区間の乱数を十分多く発生させ
[0,0.1],[0.1,0.2],・・・・[0.9,1]区間にいくつ乱数があるかカウントせよ

次に乱数の初期値を変えて、同じ処理をせよ


-----------------------------------
誰か、やってくれませんか?
0547教えて厨NGNG
age
0548デフォルトの名無しさんNGNG
>>545
C 標準では、文字列が何を表すかを判定する方法は無い。
さしあたり strchr() で、小数点を意味するドットがあるかどうかを
探してみろ。
0549デフォルトの名無しさんNGNG
>>545
doubleとintで取ってから、値を比べて同じならintを使ったら?

>>546
[0,0.1)とかじゃなくていいのか?
0550546NGNG
>>549
いいです。
0551デフォルトの名無しさんNGNG
>>549
"10.0" を int にするのか?
あと [0,0.1) って何?

>>546
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
const unsigned int rand_initial = 12345; // ここに乱数の初期値を設定
const unsigned int rand_number = 10000; // ここに乱数を出す数を設定
unsigned int i, cnt[10] = { 0 };
srand(rand_initial);
for(i = 0; i < rand_number; i++)
cnt[(unsigned int)(rand() * 10.0 / RAND_MAX)]++;
for(i = 0; i < 10; i++)
printf("%1.1f 〜 %1.1f の出現数: %u\n", i / 10.0, (i + 1) / 10.0, cnt[i]);
getchar();
return 0;
}
0552デフォルトの名無しさんNGNG
>>551
数学的には 10.0 = 10 だからおかしくないだろ?

[0, 0.1) ってのは、0以上0.1未満の範囲。
0553546NGNG
サンクスコ
0554デフォルトの名無しさんNGNG
>>552
10.0 は有効桁数が設定してあると考えた場合に = 10 にはならないだろ。
「有効桁数が設定してある」 という話を持ち出すべきでないと言うなら、
「数学的には」 という話も持ち出すべきではない。

まあ、545 が明確なルールを設定していないので無意味な議論だが。
0555549NGNG
>>551
545のプログラムがトライ&エラーって感じだったので
10.0はint扱いでいいのかなって思ったんだけど、
あー、そういう仕様の解釈の方がまっとうかもな。
0556デフォルトの名無しさんNGNG
>>554
>「有効桁数が設定してある」 という話を持ち出すべきでないと言うなら、
>「数学的には」 という話も持ち出すべきではない。
なんでやねん…

10 = 10.0 = 10.00 = 10.000
は、有効数字が何桁だろうが、有効数字という概念を仮定しようがしまいが
常に成り立つ。
0557デフォルトの名無しさんNGNG
>10 = 10.0 = 10.00 = 10.000
>は、有効数字が何桁だろうが、有効数字という概念を仮定しようがしまいが
>常に成り立つ。

もうちょっと有効数字について勉強してくれ
0558デフォルトの名無しさんNGNG
>>557
ハァ?
負け惜しみはもういいよアフォ。
0559デフォルトの名無しさんNGNG
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/s/shannon.html
ここの
if (i>3]&=bit0[cell[i].len&7];
の行、コンパイルエラーになるんだけど、誰かおしえてー
0560デフォルトの名無しさんNGNG
実数⊃整数だから、10も10.0も実数だと思えばいいんじゃないの。

つーか、整数って実数の特殊例でしょ。
0561デフォルトの名無しさんNGNG
たとえば有効数字4桁のとき、10.001と10.002は区別できない。
どちらも10.00という同じ物として扱われる。

そう考えると、10.0は10と同一視するしかない。
0562デフォルトの名無しさんNGNG
>整数って実数の特殊例
それは考え方次第

>そう考えると、10.0は10と同一視するしかない。
いくらなんでも論理展開が無茶苦茶
0563デフォルトの名無しさんNGNG
"10.0" と "10" が別のデータである事は厳然とした事実だ。
あと、554 の最後の行をちゃんと読んでくれ。

それと、556 はおそらく有効数字と言う言葉の解釈が間違ってるから、
本当に調べ直した方がいいぞ。
0564549NGNG
>>563
数学の話を急にCの仕様の話に戻すのはズルイ、と思います。
無意味な議論には禿働。
0565デフォルトの名無しさんNGNG
別のデータって…

「内部表現が違うから」というなら、内部表現を決める前にそんなことを
いうのはおかしい。

プログラマのクセかもしれんが、10は整数で、10.0は浮動小数点数で表さな
きゃならないと決めてかかってるんじゃないか?

概念的には(つまり外部仕様としては)整数は実数の一種なんだから、
厳密に10.0として入力されたら、整数の10だと思って問題なかろう。
0566デフォルトの名無しさんNGNG
>>563
>おそらく有効数字と言う言葉の解釈が間違ってるから、
>本当に調べ直した方がいいぞ。

うん。調べなおした。間違ってなかった。
0567デフォルトの名無しさんNGNG
有効数字と有効桁数の区別がつかない悲惨な 566 が居るスレはここですか?
0568デフォルトの名無しさんNGNG
厳密でない10.0が何か知らんが
「概念的に整数は実数の一種」というのは中学校の先生が
言っていたのかな?中学校ではよくそう教えるからな
0569デフォルトの名無しさんNGNG
>>567
ヤレヤレ…
有効数字は「桁数」で表します。
「有効数字2桁」とかね。
0570デフォルトの名無しさんNGNG
国際的エロリスト

エロカイダ 同時多発エロ おっぱいが高層ビルに激突

http://tv2.2ch.net/test/read.cgi/eva/1038360362/l50



0571デフォルトの名無しさんNGNG
>>568
数⊃複素数⊃実数⊃有理数⊃整数
と大学院(数学専攻)で教わりましたが何か?
0572デフォルトの名無しさんNGNG
>>567=>>568=スーパーDQN
0573546NGNG
そんなの高校で習うよ
0574デフォルトの名無しさんNGNG
へー、整数は実数じゃないんだ。
整数は複素数なの?
0575デフォルトの名無しさんNGNG
hage
0576デフォルトの名無しさんNGNG
[0,1]区間の乱数を十分多く発生させ
[0,0.1],[0.1,0.2]…[0.9,1]区間に幾つ乱数があるかカウントせよ
次に乱数の初期値を変えて同じ処理をせよ。
どういうことが判るか?

わかりましぇーん
救済キヴォンヴ
0577568NGNG
別に間違っているなどとは言っておらん
定義しだいだ、と言ってるだけだ
0578デフォルトの名無しさんNGNG
ヽ(´ー`)ノ
0579デフォルトの名無しさんNGNG
>>577
みぐるしいからもうやめれ。
実数に含まれない整数って何だよ(ワラ
0580デフォルトの名無しさんNGNG
>>576
ネタだとしたら、2 点。
0581デフォルトの名無しさんNGNG
「作ればあるもーん。定義すればあるもーん。」だろ(w
0582579NGNG
>>579
構成的手法では再定義することによって初めて
含まれるようにできるだろ?そういう話
0583デフォルトの名無しさんNGNG
>>582
おいおい。ムズカシイ用語使って煙に巻いたつもりかしらんが、
実数なんていう非加算無限のものに構成的手法が適用できる
わけねーだろ。
0584デフォルトの名無しさんNGNG
s/非加算/非可算/
0585デフォルトの名無しさんNGNG
>>583
その辺は勉強してくれ
デデキントの切断とかコーシー列の同値類とか
0586デフォルトの名無しさんNGNG
>>585
うん。したよ。
自然演繹など、構成論的な手法によって構築できる
公理系は可算無限の対象しか含まないものだけ。

だいたい、constructiveってことはintuitionistic
なんだから、「実数全体の集合」なんてものを扱わない。
0587デフォルトの名無しさんNGNG
ようするに10.0を10とみなしても良いってことダロ?
0588デフォルトの名無しさんNGNG
>>587
そんな事は 546 に訊いてくれ。
ちなみに C/C++ の定数の話だったらマズイ。
0589デフォルトの名無しさんNGNG
しまった「構成的」はconstructiveの訳語か、まずった
0590デフォルトの名無しさんNGNG
>ちなみに C/C++ の定数の話だったらマズイ。

数学の話を急にCの仕様の話に戻すのはズルイ、と思います。

まあ、[0, 1.0)という中学校の表記法を知らなかった奴だから、
無理もないんだが。
0591589NGNG
いやそういうわけでもないな。問題なし
0592デフォルトの名無しさんNGNG
有効数字が「桁数で表すものじゃない」と思っていて、
整数は実数じゃないと思っていて、
[0, 0.1)という表記法を知らなくて、
constructiveという言葉を知らないくせに
構成的手法という言葉を使ってごまかそうと試みる
厨房のいるスレはここですか?
0593デフォルトの名無しさんNGNG
>>835
アフォですか?
0594デフォルトの名無しさんNGNG
おいおい有効数字の話はよそでやってくれ。
やるんだったら実装レベルの話しをしてくれ。
入力された文字列から小数点検索して処理すれば
いいだけのはなしだろ。入力データをdouble と
文字列で持たせてやればたいていのことができる。
0595デフォルトの名無しさんNGNG
[0, 0.1)
これどういう意味なんだ?
ポインタ本にも書いてあったけど意味わからん
0596デフォルトの名無しさんNGNG
半開区間だっけな?
閉区間  [0,1] 0 <= n<= 1
半開区間 [0,1) 0 <= n< 1
開区間  (0,1) 0 < n < 1
0597デフォルトの名無しさんNGNG
>>595
>>552
0598デフォルトの名無しさんNGNG
中学校からやり直せ。
0599デフォルトの名無しさんNGNG
>>594
過ぎた話を蒸し返すのはやめてくれ。
0600デフォルトの名無しさんNGNG
括弧の付け間違いで煽られるのか・・・。

書いたヤツがよっぽど高圧的な物言いをしたのか・・・?
0601デフォルトの名無しさんNGNG
区間の表記って中学でやったのか?
最近の中学が進んでいるのか
昔の中学が進んでいたのか
俺の中学だけが遅れていたのか
どれなんだろう
ちなみに、俺は高校でやった記憶があるのだが
0602デフォルトの名無しさんNGNG
for文の式

for( ;(ima %= 12)!= i; printf("%d時\t",++ima));

というのがあるんですが、「%=」の意味はなんですか?
0603デフォルトの名無しさんNGNG
>>602
余りを代入。
0604デフォルトの名無しさんNGNG
ima = ima % 12の略
imaを12で割った余りをimaに代入っていう意味
0605デフォルトの名無しさんNGNG
Windows98,VC++6.0で
改行入りのデータをファイルに書き込みたいんだけど
\nの前に\rが入るのを防げませんか?
0606デフォルトの名無しさんNGNG
>>603-604
ありがとうございました
0607483-485NGNG
>>605
ファイルを"wb"モードでfopenしろ。
0608デフォルトの名無しさんNGNG
>>607
wb・・・
成る程、バイナリモードで開くんですね。
多謝!
勉強し直してきます。
0609デフォルトの名無しさんNGNG
cの質問です。
データ1、データにを取り込んでそれぞれの平均値、最大値、最小値を求めるプログラムを作成しろとのことです。
ヒントプログラムがあるので書いておきます。

#include <stdio.h>
main() {
double ×××必要な変数を定義します.
int i;
FILE *fp1;
fp1=fopen("data4.txt","r");
for(i=0;i<3000;i++){
ファイルから読み込んでデータを代入していく処理を追加します
}
最大値,最小値を求める処理を追加します.
平均を求める処理を追加します.
printf("データ1の最大値=%f\n",data1max);
printf("データ1の最小値=%f\n",data1min);
printf("データ1の平均=%f\n",data1ave);
printf("データ2の最大値=%f\n",data2max);
printf("データ2の最小値=%f\n",data2min);
printf("データ2の平均=%f\n",data2ave);
fclose(fp1);
}

それでは、よろしくお願いいたします。
0610JPS ◆M0LaMzf5rY NGNG
>>609
最大値、最小値処理するのはfor文の中でしょ?
てかどっかの本にまるまる載ってそう・・・
0611デフォルトの名無しさんNGNG
ヒントではなく、答えなのでは、と思いつつも
データ1とデータ2の仕様(data4.txtの中身)が分からないと
答えようがありません
0612609NGNG
こういった中身のものが無数に広がっています。

13.160653,-44.018177
6.428124,-36.433974
12.031670,-26.586817
9.300368,-74.639087
11.545353,-55.847211
5.894994,-4.096887
12.608508,-66.110320
8.221066,-9.025639
0613609NGNG
612の数字が(data4.txt)の中身です。
0614デフォルトの名無しさんNGNG
>>612
左がデータ1で右がデータ2なの?
はっきり書けよ。
0615609NGNG
すみません。
左がデータ1、右がデータ2です。

共に3000個あります。
0616JPS ◆M0LaMzf5rY NGNG
あ、どういうこと?
右と左をいっこずつ比べるの?
っていうかforいらなくねー?
0617609NGNG
データ1ならデータ1同士を、データ2なら2同士をくらべるみたいです。
0618デフォルトの名無しさんNGNG
double max1,max2,min1,min2,sum1,sum2;
くらい宣言しておくか?
0619デフォルトの名無しさんNGNG
>618
多分、こうしたいのでは
double data1[3000], data2[3000], buf ; /* 宣言 */
fscanf(fp1,"%lf,%lf",data1+i,data2+i) ; /* forの中身 */
0620619NGNG
で、その後に、最大・最小・平均値を求めると…
0621JPS ◆M0LaMzf5rY NGNG
#include <stdio.h>
int main(void)
{
double max_1 = 0,max_2 = 0,min_1 = 0,min_2 = 0,ave_1 = 0,ave_2 = 0;
char buf[256];
FILE *fp1,*fp2;

fp1=fopen("in_data.txt","r");
fp2=fopen("out_data.txt","w");

while(fgets(buf,sizeof(buf),fp1) != EOF)
{

↓あとはたのんだ!
0622619NGNG
bufは要らなかった…
0623JPS ◆M0LaMzf5rY NGNG
strtodでできんの?カンマのとこどう区別したらいいんでつか?
0624デフォルトの名無しさんNGNG
C言語についてちょっと質問です。
乱数を使って6面体や8面体などの色々なサイコロを表現しようと思います。
様々な多面体のサイコロを考えるので、汎用性を持たせるために
乱数の部分を以下のような関数にしました。
int ran(int n)
{
 srand((unsigned)time(NULL));
 return (rand() % n);
}
とりあえず、まず6面体のサイコロを10回振ったことを考えようと思い、
これをmain文の中で
 for(i = 0; i < 10; i++)
  printf("%d", ran(6));
と呼び出して、結果を表示させるようにすると
結果は6666…のようになります。
これでは1回サイコロを振った結果をただ単に
10回表示させたようにしか見えません。
ループ用変数iを関数ranの引数として追加してやって、
srandのところを、
srand((unsigned)time(NULL) + i);
とすればうまくいくことは分かるのですが、
この方法はあまり使いたくありません。
他に正しい結果を得るにはどうしたらよいでしょうか?
0625デフォルトの名無しさんNGNG
>>624
srandはプログラムの最初に一回だけ呼んでやれば
ranの中には必要ないです
0626デフォルトの名無しさんNGNG
>>624
コンピュータの実行速度が速いので、同じtime()のsrand()が何度も実行
されてしまうことが原因。

srand()をran()の外に出して最初に一回だけ実行するようにしてご覧。
0627デフォルトの名無しさんNGNG
毎回同じ値で乱数を初期化してるからだろ。
srand()をmain()に漏ってけ。
0628デフォルトの名無しさんNGNG
>>625-627
ケコーン(w
0629デフォルトの名無しさんNGNG
int main(void)
{
  struct STATINFO MinMax[2];
  double in_dbl[2];
  char buf[256];
  int cnt, errcnt, i, at1st = 1;
  FILE *iFP = fopen(DATA_FILE, "r");
  if(!iFP)
  {
    perror("データファイルが見つかりません");
    fputs(DATA_FILE, stderr);
    return -1;
  }
  printf("ファイル %s の処理を開始します。\n", DATA_FILE);
  for(cnt = errcnt = 0; fgets(buf, sizeof(buf), iFP); cnt++)
  {
    if(sscanf(buf, "%lf,%lf", &in_dbl[0], &in_dbl[1]) != 2)
    {
      perror("データが不正です");
      fprintf(stderr, "%d 行目: %s", cnt, buf);
      errcnt++;
    }
    else if(at1st)
    {
      for(i = 0; i < 2; i++)
        MinMax[i].max = MinMax[i].min = MinMax[i].sum = in_dbl[i];
      at1st = 0;
    }
0630624NGNG
>625-627
すばやいご解答ありがとうございました。
srandは一回だけでよかったんですね。
mainのfor文の前に持ってきたらランダムな数字が表示されるようになりました。
0631デフォルトの名無しさんNGNG
    else for(i = 0; i < 2; i++)
    {
      if(MinMax[i].max < in_dbl[i])
        MinMax[i].max = in_dbl[i];
      else if(MinMax[i].min > in_dbl[i])
        MinMax[i].min = in_dbl[i];
      MinMax[i].sum += in_dbl[i];
    }
  }
  if(ferror(iFP))
  {
    perror("データファイルの読み込み中にエラーが発生しました");
    fputs(DATA_FILE, stderr);
  }
  fclose(iFP);
  printf("ファイル %s の処理が完了しました。\n", DATA_FILE);
  printf("%d 件のデータを読み込みました。\n", cnt);
  errcnt && printf("%d 件のエラーデータがありました。\n", errcnt);
  if(cnt - errcnt) for(i = 0; i < 2; i++)
  {
    printf("データ %d の最大値 = %lf\n", i, MinMax[i].max);
    printf("データ %d の最小値 = %lf\n", i, MinMax[i].min);
    printf("データ %d の平均 = %lf\n", i, MinMax[i].sum / (cnt - errcnt));
  }
  return 0;
}
0632デフォルトの名無しさんNGNG
#define DATA_FILE "data4.txt"
struct STATINFO { double min, max, sum; };

こんなん。
0633デフォルトの名無しさんNGNG
しまった、2 は定数化できるなあ。
あと、構造体の変数名が微妙なのを直すの忘れた。

まー動くから勘弁して。
0634デフォルトの名無しさんNGNG
宿題やってたら手が冷えた
0635デフォルトの名無しさんNGNG
ヒントに従えばこうでしょ?

#include <stdio.h>
int main() {
double data1[3000], data2[3000] ;
double data1max, data1min, data1ave, data2max, data2min, data2ave ;
int i;
FILE *fp1;
fp1=fopen("data4.txt","r");
for ( i = 0 ; i < 3000 ; i++ ) {
  fscanf ( fp, "%lf,%lf", data1 + i, data2 + i ) ;
}

for ( i = 0 ; i < 3000 ; i++ ) {
最大値,最小値を求める処理を追加します.
平均を求める前処理を追加します.
}
平均を求める処理を追加します.
printf ( "データ1の最大値=%f\n", data1max ) ;
printf ( "データ1の最小値=%f\n", data1min ) ;
printf ( "データ1の平均=%f\n", data1ave ) ;
printf ( "データ2の最大値=%f\n", data2max ) ;
printf ( "データ2の最小値=%f\n", data2min ) ;
printf ( "データ2の平均=%f\n", data2ave ) ;
fclose ( fp1 ) ;
}
0636デフォルトの名無しさんNGNG
> double data1[3000], data2[3000] ;

アフォですか?
0637636NGNG
ごめん。

> for(i=0;i<3000;i++){
> ファイルから読み込んでデータを代入していく処理を追加します
> }
> 最大値,最小値を求める処理を追加します.
> 平均を求める処理を追加します.

分かれてたのね。
・・・出題者はアフォですか?
0638デフォルトの名無しさんNGNG
for ( i = 0 ; i < 3000 ; i++ ) {
data1max<*(data1+i)?data1max=*(data1+i):(data1min>*(data1+i)?data1min=*(data1+i):void);
data2max<*(data2+i)?data2max=*(data2+i):(data2min>*(data2+i)?data2min=*(data2+i):void);
}
atteru?
0639638NGNG
平均値の前処理忘れた。
0640デフォルトの名無しさんNGNG
#include <stdio.h>
int main() {
double data1[3000], data2[3000] ;
double data1max, data1min, data1ave, data2max, data2min, data2ave ;
int i;
FILE *fp1;
fp1=fopen("data4.txt","r");
for ( i = 0 ; i < 3000 ; i++ ) {
  fscanf ( fp1, "%lf,%lf", data1 + i, data2 + i ) ;
}
data1max = data1min = data1ave = data1[0];
data2max = data2min = data2ave = data2[1];
for ( i = 1 ; i < 3000 ; i++ ) {
  if(data1max < data1[i]) data1max = data1[i]; else if(data1min > data1[i]) data1min = data1[i];
  data1ave += data1[i];
  if(data2max < data2[i]) data2max = data2[i]; else if(data2min > data2[i]) data2min = data2[i];
  data2ave += data2[i];
}
data1ave /= 3000;
data2ave /= 3000;
printf ( "データ1の最大値=%f\n", data1max ) ;
printf ( "データ1の最小値=%f\n", data1min ) ;
printf ( "データ1の平均=%f\n", data1ave ) ;
printf ( "データ2の最大値=%f\n", data2max ) ;
printf ( "データ2の最小値=%f\n", data2min ) ;
printf ( "データ2の平均=%f\n", data2ave ) ;
fclose ( fp1 ) ;
}
0641デフォルトの名無しさんNGNG
>>640
data2max = data2min = data2ave = data2[1]; /* data2[1]が素敵♪ */
0642640NGNG
クソだなあ・・・。
エラーチェックまるで無いし、ファイル読み終わってもすぐに閉じないし。
ローカルに巨大配列もかなり痛い。

こういう教えられ方されてると、仕事でも平気でこういうコード書いたりしそう。
0643640NGNG
>>641
   ||
 ∧||∧
(  ⌒ ヽ トゥ トゥ トゥマシェリ マ シェーリー
 ∪ 。ノ    トゥ トゥ トゥマシェリ マ シェーリー
  ∪∪
0644640NGNG
>>629-632 でいいやん・・・。
したら、こんなどうしようもない間違えしないし。
それとも、バッファ 2 時限にして、double 型でループカウンタ作ればヨカタか?
0645デフォルトの名無しさんNGNG
微妙なバグを残してある所が本当に良いと思って
素敵♪って書いたんですけどね
でも、何でタイムスタンプ(01:47)が遅い漏れ(>>641)の方が先で
タイムスタンプ(01:46)が早い(>>642)の方が後なのだろうか?
0646デフォルトの名無しさんNGNG
ちょっと時空を超えただけだ、気にするな。
0647デフォルトの名無しさんNGNG
タイムスタンプってどこで拾うんだろう・・・
0648デフォルトの名無しさんNGNG
生暖かい場所で拾う。
0649デフォルトの名無しさんNGNG
ちなみに生暖かい温かさは、
プールの中でおしっこを漏らしたときの温度です。
0650デフォルトの名無しさんNGNG
いいえ、感動で流す涙の温度です。
0651デフォルトの名無しさんNGNG
fork()を理解するために、以下のようなプログラムを作成しました。
#include <stdio.h>
#include <unistd.h>
int main()
{
if(fork())
printf("親です\n");
else
printf("子です\n");
return 0;
}
これを実行したら結果は
親です
子です
となるか、
子です
親です
となって、終了するだろうと予想しました。
しかし、実際は
子です親です

となって、メッセージが2つ表示された後に、
2回改行されてしまいます。これはなぜでしょうか?
環境はUNIX+gccです。
0652デフォルトの名無しさんNGNG
>>651
親も子も一緒に動いているのに
なんでお行儀良く、片方の出力が完了した後、もう片方が出力される
と思えるのかな?
0653651NGNG
>>652
一緒に動いているとは言っても、厳密には
CPUは同時に1つのプロセスの処理までしかできない、
そこでCPUスケジューラーによってどれか一つプロセスが
選ばれて、実行されている、そして短時間に何回も
そのプロセスを切り替えることにより、
まるで一緒に動いているかのように見せかけていると聞きます。
その辺はあまり分からないのですが、
もしプログラムの一文単位でプロセスが切り替えられるのなら、
と思って、初め、651のような予想をたてました。
でも652さんのおっしゃることから推測するとそれは違うみたいですね…。
文の途中でもどこか特殊な所ではプロセスが切り替えられているのでしょうか?
例えばそれが\nの直前では常に切り替わる、
とかだと納得がいくのですが…。
0654デフォルトの名無しさんNGNG
/*問題
 一画素に付き、rgb各8bitの画像データ(320*240)がある。
 任意の閾値(0〜255)を入力すると、それ以上の輝度値を持つ画素のみの画像を
 作成するプログラムを作成せよ。 */

#include<stdio.h>
#include<stdlib.h>
main()
{

unsigned char *img1,*img2;
FILE *fp1;
FILE *fp2;

int x=256,y=256,z=256,i=0,j=0,k=0,l,m,n=0,o=0;
int W[320][240][3],t=0,d=0,A[54];

0655デフォルトの名無しさんNGNG
m=54+320*240*3;
img1=malloc(m);
img2=malloc(m);


while(x>=256){
printf("青の閾値(0〜255)=\n");
scanf("%d",&x);
}
while(y>=256){
printf("緑の閾値(0〜255)=\n");
scanf("%d",&y);
}
while(z>=256){
printf("赤の閾値(0〜255)=\n");
scanf("%d",&z);
}

fp1=fopen("Red1.bmp","rb");
fp2=fopen("AAA.bmp","wb");


0656デフォルトの名無しさんNGNG
fread(img1,m,1,fp1);

for(i=0;i<=319;i++){
for(j=0;j<=239;j++){
for(k=0;k<=2;k++){

W[i][j][k]=(int)*(img1+t+k+54);
}
t=t+3;
k=0;
}
t=t+240;
j=0;
}

for(o=0;o<=53;o++){

A[o]=(int)*(img1+o);
}

for(i=0;i<=319;i++){
for(j=0;j<=239;j++){
for(k=0;k<=2;k++){

if(k==0){
if(W[i][j][k]<x){
W[i][j][k]=0;
}
}
0657デフォルトの名無しさんNGNG
else if(k==1){
if(W[i][j][k]<y){
W[i][j][k]=0;
}
}
else{
if(W[i][j][k]<z){
W[i][j][k]=0;
}
}
}

k=0;
}

j=0;
}

0658デフォルトの名無しさんNGNG
for(i=0;i<=319;i++){
for(j=0;j<=239;j++){
for(k=0;k<=2;k++){

*(img2+t+k+54)=(unsigned char)W[i][j][k];
}
t=t+3;
k=0;
}
t=t+240;
j=0;
}
for(o=0;o<=53;o++){

*(img2+o)=(unsigned char)A[o];
}

fwrite(img2,m,1,fp2);

free(img1);
free(img2);
fclose(fp1);
fclose(fp2);
}

て宿題なんだけど、これコンパイルしても上手く動かない…。
どこが悪いか教えていただけないでしょうか
0659デフォルトの名無しさんNGNG
>>653
君の予想はノンプリエンプティブなマルチタスクでのみ当てはまる。
そういうシステムではプロセスは勝手に切り替わらないで、特定の場所でのみ切り替わる。

プリエンプティブなマルチタスクOSではほとんどいつでもどこでも切り替わる。
切り替わるのはCPUの命令単位でプログラムの1文字じゃない。
切り替えるタイミングは要するに時間で決まるので、切り替わる場所は不定。
逆に切り替えられない場所が特殊な場所は有る。

詳しく知りたければアセンブラ勉強しなさい。
0660デフォルトの名無しさんNGNG
>>659
アセンブラか?
0661デフォルトの名無しさんNGNG
>>660
加藤茶以外はなかなかつけませんが・・・
0662名無しの学生サソNGNG
swap (type, a, b) でtype型の a と b の値を交換する関数マクロを作成せよ。

という問題がわかりません。どなたかヒントを…
0663デフォルトの名無しさんNGNG
>>662
#define swap(type,a,b) {type t;t=a;a=b;b=t;}
0664デフォルトの名無しさんNGNG
正確には
#define swap(type,a,b) do{type t, t=a, a=b, b=t;}while(0)
0665662NGNG
>664
なるほど!関数マクロで{}が使えるんですね!気が付かなかった…
どうもありがとうございました。
0666662NGNG
訂正
×気が付かなかった
○知らなかった
0667デフォルトの名無しさんNGNG
関数はマクロじゃないしマクロは関数じゃない。
0668デフォルトの名無しさんNGNG
>>667
俺もオモタ。
0669デフォルトの名無しさんNGNG
パラメータ付きのマクロを関数マクロという。
0670デフォルトの名無しさんNGNG
この場合パラメータの有無は関係ないけどな。
0671デフォルトの名無しさんNGNG
>>669
岩ねーよ(w
0672デフォルトの名無しさんNGNG
普通は関数型マクロというな。
0673デフォルトの名無しさんNGNG
>>671
キティはだまってろ
0674デフォルトの名無しさんNGNG
「関数マクロ」(w
こいつらアフォだ。
0675デフォルトの名無しさんNGNG
関数マクロなんて聞いたことないYO!
いかにもDQNっぽいな。
0676デフォルトの名無しさんNGNG
規格だと、標準ライブラリ
関数が同時にマクロとしても定義してあっても良いことになっている。
たとえば、getcharやgetcはたいてい関数定義とマクロ定義の両方が
ある。

それとごっちゃにしてるんでは?
引数のあるマクロは「引数つきマクロ」だよ。
0677デフォルトの名無しさんNGNG
google
「関数マクロ C言語」 318件
「関数型マクロ C言語」 38件
「引数つきマクロ C言語」 23件
(ププッ
0678654NGNG
俺の問題分かる人おらんのかな?
0679デフォルトの名無しさんNGNG
>>678
読む気がしない。
やってることを言葉で説明してみ
0680デフォルトの名無しさんNGNG
>>674-676
だぁーーーーっはっはっはっは!!!
D Q N 決 定 だ な (プー
0681デフォルトの名無しさんNGNG
>>654
まず輝度から調べなおせ。
“任意の閾値(0〜255)を入力するとそれ以上の輝度値”と
言われてるのに、三色の閾値を要求しているのは明らかな勉強不足による無知
(ヒント Y=0.3*R+0.59*G+0.11*B)
0682デフォルトの名無しさんNGNG
つかそれ以前に、

int W[320][240][3]

は、やめてくれよ。
0683654NGNG
int W[320][240][3]は問題でつか?
0684デフォルトの名無しさんNGNG
>>683
コンパイラ(環境)によっては通るんだろうけどなぁ。。。
いきなりスタックを200KB強とるプログラムってのはいかがなもんかと。
0685超初心者NGNG
ダイアログベースで作成しています。ファイルをコピーするアプリケーションで
コピー元コピー先をボタンをクリックしファイルダイアログボックスを表示させ
、スタティックテキストにファイルまでのパスを表示するというものです。そし
て、もう一つのボタンがありクリックすると、ファイルのコピーを開始するとい
うものです。
但し、以下の場合はメッセージボックスを
表示する。
1.コピー元ファイル名が指定されていない。
2.指定のコピー元ファイルが存在しない。
3.コピー先ファイル名が指定されていない。
4.コピー先ファイルが既に存在する。

4の場合は、問い合わせメッセージの表示とし
ユーザが上書きOKを選択した場合のみ、
コピー実行されるようにする。


という感じです。よろしくお願いします。
0686デフォルトの名無しさんNGNG
何をよろしくお願いするんだ?
0687超初心者NGNG
ソースの方よろしくおねがいします。
0688デフォルトの名無しさんNGNG
ルーク!!ソースを使え!!
0689デフォルトの名無しさんNGNG
( ゚д゚)ポカーン
0690デフォルトの名無しさんNGNG
「関数マクロ C言語」 318件
これってほとんど「関数、マクロ」に引っかかってるけど…
0691デフォルトの名無しさんNGNG
ところで「関数マクロ」って英語でなんていうの?
0692デフォルトの名無しさんNGNG
functional macro
0693デフォルトの名無しさんNGNG
>>691
function-like macro
日本語では「関数型マクロ」あるいは「関数形式マクロ」だろうな。

「関数マクロ」は俺も聞いたことない。つーか、なんか変。
0694デフォルトの名無しさんNGNG
なんも冠つけないでただ「マクロ」と呼んでるんだが・・・
ひょっとして俺だけか?
0695デフォルトの名無しさんNGNG
>>693
#define N 100
みたいなのは?
0696デフォルトの名無しさんNGNG
>>695
は?
0697デフォルトの名無しさんNGNG
>>693じゃなくて>>694ですた。
#define swap(x, y) (...)
が「マクロ」なら、
#define N 100
はなんと呼ぶの?
0698デフォルトの名無しさんNGNG
どっちもマクロでしょ
0699デフォルトの名無しさんNGNG
MSDN では単にマクロと呼んでいるな。
0700デフォルトの名無しさんNGNG
>>654
> それ以上の輝度値を持つ画素のみの画像を作成

その輝度に満たないピクセルを、最低輝度の灰色でべったり埋めればいいのか?
全部を白ピクセルで埋めても仕様的に問題なさそうだ。
0701デフォルトの名無しさんNGNG
(char)w[240][300][3];奈良?
0702デフォルトの名無しさんNGNG
いずれにせよ外部のデータを扱う時は malloc() なり new なりにしなさい。
0703デフォルトの名無しさんNGNG
int getchar();int putchar(int);int main(){char k[]="A52A2245332A252B435B2222A2"
"B2A2A23A2C32A3B5B2222A52B43532A2352C23A52A2246D2A3533B35K2A4D22A3224A45D2C25B"
"2A32A5D2C25D4A26C4A1",*p=k;int i,c,b=1;while(*p){c=0;for(i=0;i<8;i++){if(*p==
'0'){if(!*++p)break;b=!b;}c=(c<<1)+b;if((*p)--=='A')*p='0';if(*p >= 'A')b=!b;}
if(c)putchar(c);}getchar();return 0;}

このプログラムが「オマエモナー」を出力するようにkの初期値を書き換えてください。
0704デフォルトの名無しさんNGNG
A52A224:ト
5332A2:ロ
52B435:イ
B2222:の
。。。
「〜木馬」ですか?
0705デフォルトの名無しさんNGNG
char k[]="A52B2A2252A5A252B34535C52A2B226D2A2";
0706デフォルトの名無しさんNGNG
char k[]="A6B3C26B25A2B2A2A23A2C32A3B6B3A2B5B23B25D2A45G226C2A3";
0707デフォルトの名無しさんNGNG
char k[]="A5E5A5B2A32A5F3B5B3B3A5B2A4B5E3C5B23A4A5A6E2A3C53A36C222A4A3A3A2A6C22B2C2252A2A2A262232"
0708デフォルトの名無しさんNGNG
みんなつまんね〜な
0709デフォルトの名無しさんNGNG
char k[]="A5B2A3A25B4325B22A3A5B24C5B2A32A5B4325B22B36B25A5B22A3";
0710デフォルトの名無しさんNGNG
トロイ=とろいウィルスの事


本気で信じてた時期があった・・・
0711デフォルトの名無しさんNGNG
ファイル内の日本語を検索するプログラムを教えてください。
対象ファイル、検索文字列はプログラム内に書き、検索文字列の存在確認はあるかないかだけを
表示するものでお願いします。
0712711NGNG
C言語でお願いします。
0713デフォルトの名無しさんNGNG
>>1
トリップはc++で。
0714714NGNG
Warning: illegal pointer combination (param)
ってエラーが出るんですが何を直せばいいんでしょうか。
C言語のファイルの入出力をやっています。構造体?
というかポインターに問題があるってこと?

0715デフォルトの名無しさんNGNG
Did you free?
0716?NGNG
あなたは自由でしたか?
あなたはタダでしたか?
0717デフォルトの名無しさんNGNG
>>716
その場合は Were you free?
0718デフォルトの名無しさんNGNG
>>714
間違ったポインタを渡してる。
0719714NGNG
ですよね・・。(param)はパラメーター違反ってことは
{}とかがあってないか根本的に間違ってるか。
0720デフォルトの名無しさんNGNG
>>719
たぶん後者。
つーかマルチやめい。
0721714NGNG
はーい。
0722超初心者NGNG
ダイアログベースで作成しています。ファイルをコピーするアプリケーションで
コピー元コピー先をボタンをクリックしファイルダイアログボックスを表示させ
、スタティックテキストにファイルまでのパスを表示するというものです。そし
て、もう一つのボタンがありクリックすると、ファイルのコピーを開始するとい
うものです。
但し、以下の場合はメッセージボックスを
表示する。
1.コピー元ファイル名が指定されていない。
2.指定のコピー元ファイルが存在しない。
3.コピー先ファイル名が指定されていない。
4.コピー先ファイルが既に存在する。

4の場合は、問い合わせメッセージの表示とし
ユーザが上書きOKを選択した場合のみ、
コピー実行されるようにする。


です。よろしくお願いします。

0723デフォルトの名無しさんNGNG
ぽかーn
0724デフォルトの名無しさんNGNG
>>722
CやC++以前に日本語の練習がだいぶ必要。
0725デフォルトの名無しさんNGNG
行列
( 0 1 )
( 1 1 )
のn乗の計算が出来るプログラムを作りたいのですが・・・
まるっきりわかりません よろしくお願いします・・・


0726デフォルトの名無しさんNGNG
どこまで出来るの?
行列の乗算するプログラムは作れるのか?
0727デフォルトの名無しさんNGNG
>>725
進級できるといいな
0728デフォルトの名無しさんNGNG
行列の普通の掛け算は出来るのですが
n乗はわかりません・・・
0729デフォルトの名無しさんNGNG
>>725

|0 1|n  |fib(n) fib(n+1)|
|1 1| == |fib(n) fib(n+1)|

ここに、fib(n)はフィボナッチ数列のn番目の数値を表す
0730デフォルトの名無しさんNGNG
>>729
|0 1|n  |fib(n-1) fib(n) |
|1 1| == |fib(n)  fib(n+1)|
と違う?
0731デフォルトの名無しさんNGNG
>>703
うちの環境では、gCnCXg[Bという文字しか表示されなかったぞ。
コンパイルに何かオプションでもつけなきゃならんの?
gcc使ってるんだけど。
0732デフォルトの名無しさんNGNG
>>730
そうだわゴメソ。
0733デフォルトの名無しさんNGNG
>>722

ス レ チ ガ イ
0734デフォルトの名無しさんNGNG
>>731
Shit-JIS だから。nkfしる!!
0735デフォルトの名無しさんNGNG
703 のコード自体は文字コードに依存していない。
char k[] の初期値によっては EUC の出力もできる。
0736超初心者NGNG
>>733 どうしてスレ違いなんですか?こういう宿題が出てるんですが
わからないんで皆さんのお力を借りようと思っているんです。
0737デフォルトの名無しさんNGNG
次の各プログラムを作成せよ。
ただし、各関数は並記する書式にしたがって呼び出されるものとし、
それに合わせて関数の戻り値および引数を設定することとする。
ただし、配列のデータを引数として与える際には、
関数側ではポインタによる表記と配列による表記のいずれか一方で記述すれば良いこととする。

半径rの円の円周の長さlおよび面積sを算出する関数 circle() を定義し、
半径10.0[cm]の円についてそれぞれの値を求める。ただし、π=3.1415926536とする。
書式:void circle(double r, double *1, double *s)

他にも同じような問題がいくつかあるので
参考にするためにできるだけ簡単な構文で作ってもらえると助かります。
どなたか、お願いします。
0738デフォルトの名無しさんNGNG
>>736
どの言語かもわかりません。
0739デフォルトの名無しさんNGNG
>>737
円周とか円の面積って中学生あたりだっけ?

どこがわかんねーのよ
0740超初心者NGNG
>>738 すいませんVC++です。
0741デフォルトの名無しさんNGNG
>>739
ポインタを習い、その演習としての問題なんですが
ポインタ自体の使い方、書式などがさっぱりです。
0742デフォルトの名無しさんNGNG
>>741
まず教科書を読み直せ。

void circle(double r, double *l, double *s)
{
    *l = 円周の計算;
    *s = 面積の計算;
}

0743デフォルトの名無しさんNGNG
> double *1

・・・何だって?
0744デフォルトの名無しさんNGNG
>>743
それは突っ込むのもアホくさいので無視した。
0745デフォルトの名無しさんNGNG
#include <stdio.h>
#define PI 3.1415926536
void circle(double, double *, double *);
int main(){
double r=10.0,l,s;
circle(r,&l,&s);
printf("l=%lf s=%lf\n",l,s);
return 0;
}
void circle(double r, double *l, double *s){
*s = r*r*PI;
*l = 2*r*PI;
}
0746デフォルトの名無しさんNGNG
ポインタを使えばまるで関数から
複数の値が返ってきたように考えることができるってやつだっけか?
0747デフォルトの名無しさんNGNG
今の流行は、

double *1

です。
0748デフォルトの名無しさんNGNG
もらったレスから以下のように考えたんですが正しい答えが出ません。
どこがまずいんでしょうか?
とりあえず、流行のdouble *1は直しました。

#include <stdio.h>
void circle(double r, double *l, double *s)
{
*l = 2 * r * 3.1415926536;
*s = r * r * 3.1415926536;
}
int main()
{
double r, l, s;
printf("r: ");
scanf("%f", &r);
circle(r, &l, &s);
printf("l = %f, s = %f\n", l, s);
return 0;
}
0749デフォルトの名無しさんNGNG
scanf("%lf", &r);
0750デフォルトの名無しさんNGNG
>>748
マジックナンバーをばらまくな。
0751デフォルトの名無しさんNGNG
doubleはlfで取らなきゃ。
0752デフォルトの名無しさんNGNG
>>750
いや、それよか東芝でないというなら社名10択ぐらいで挙げてほしい。
0753デフォルトの名無しさんNGNG
>>752
家電メーカー?
SONY 松下 日立 三洋 …だめぽ
0754デフォルトの名無しさんNGNG
現在の教育指導要項にしたがってπ=3で計算(略
0755デフォルトの名無しさんNGNG
(略しちゃだめ
0756デフォルトの名無しさんNGNG
おかげで、正しい答えが出ました。
有難うございます。
0757デフォルトの名無しさんNGNG
きいてよ。
これとおなじ名前のスレで2chで初めて1000とったよ。
0758デフォルトの名無しさんNGNG
>>757
オメ
0759デフォルトの名無しさんNGNG
>>757
(ノ゚ο゚)ノ おーパチパチ
0760デフォルトの名無しさんNGNG
そいつぁよかった。sage
0761デフォルトの名無しさんNGNG
>>757
市ね
0762デフォルトの名無しさんNGNG
やっふーい!
ありがとう!
でも2Getは一度もないんだな。
0763デフォルトの名無しさんNGNG
int disp(void)
int sakujo(struct temp dt[],int su)
void ichiran(struct temp dt[],int su)
この3つの関数のプロトコル宣言の書き方を教えてください。
で通じるのでしょうか?
お願いします(´Д⊂)
0764デフォルトの名無しさんNGNG
>>763
プロトコル宣言じゃなくてプロトタイプ宣言だろ。
最後に ; (セミコロン)を付けるだけだぞ。
0765デフォルトの名無しさんNGNG
>>764
ありがとございます。
C言語わけわかんなくなってきたyp
0766デフォルトの名無しさんNGNG
include <stdio.h>
#include <string.h>
struct temp{
char na[20];
int yu1;
int yu2;
char addr[40];
}data[50];
int disp(void);
int tuika(struct temp dt[],int su);
int sakujo(struct temp dt[],int su);
void ichiran(struct temp dt[],int su);
void main(void)
{
int cnt;
int no;
do{
no = disp();
switch (no){
case 1: cnt = tuika(data,cnt);
break;
case 2: cnt = sakujo(data,cnt);
break;
case 3: ichiran(data,cnt);
break;
}
}while(no != 4);
}
0767デフォルトの名無しさんNGNG
int disp(void)
{
int bango,i;
char menu[4][18] = {"1:データ追加","2:データ削除","3:データ一覧表示","4:終了"};
printf("<<処理メニュー>>\n");
for(i = 0;i < 4;i++)
printf("%s\n",menu[i]);
while(1){
printf("\n処理番号ーー>");
scanf("%d",&bango);
if(bango >= 1 && bango <= 4)break;
printf("入力エラー!!再入力して下さい。\n");
}
return bango;
}
int tuika(struct temp dt[],int su)
{
char ans;
do{
printf("氏名ーー>");
scanf("%s",dt[su].na);
printf("郵便番号ーー>");
scanf("%d-%d",&dt[su].yu1,&dt[su].yu2);
printf("住所ーー>");
scanf("%s",dt[su].addr);
su++;
printf("データの追加を続けますか?(y/n)");
rewind(stdin);
scanf("%C",&ans);
}while(ans == 'y' || ans =='Y');
return su;
}
0768デフォルトの名無しさんNGNG
int sakujo(struct temp dt[],int su)
{
int i,j;
char name[20];
char ans;
do{
printf("削除するデータの氏名ーー>");
scanf("%s",name);
for(i = 0;i < su;i++){
if(strcmp(name,dt[i].na) = 0)break;
}
if(i < su){
for(j = i + 1;j < su;j++)
dt[j-1] = dt[j];
su--;
}
else
printf("その氏名のデータはありません。\n");
printf("データの削除を続けますか?(y/n)");
rewind(stdin);
scanf("%c",&ans);
}while(ans == 'y' || ans =='Y');
return su;
}
0769デフォルトの名無しさんNGNG
void ichiran(struct temp dt[],int su)
{
int i;
printf("<<データ一覧>>\n\n");
printf("番号 氏名     郵便番号 住  所\n");
for(i = 0;i <= su;i++)
printf(" %2d %-18s %03-%04d %-28s\n",i + 1,temp[i].na,temp[i].yu1,temp[i].yu2,temp[i].addr);
rewind(stdin);
getchar();
}おてあげ ∩(・∀・)∩
0770デフォルトの名無しさんNGNG
(main関数内)
int cnt; → int cnt = 0;

(tuika関数内)
scanf("%C",&ans); → scanf("%c",&ans);

(sakujo関数内)
if(strcmp(name,dt[i].na) = 0)break; → if(strcmp(name,dt[i].na) == 0)break;

(ichiran関数内)
for(i = 0;i <= su;i++) → for(i = 0;i < su;i++)

printf(" %2d %-18s %03-%04d %-28s\n",i + 1,temp[i].na,temp[i].yu1,temp[i].yu2,temp[i].addr);
→
printf(" %2d %-18s %03d-%04d %-28s\n",i + 1,dt[i].na,dt[i].yu1,dt[i].yu2,dt[i].addr);
0771デフォルトの名無しさんNGNG
#include <iostream>
#include <list>
#include <string>
#include <algorithm>

using namespace std;

class personal_data {
  public:
    void input() {
      char dummy;
      cout << "氏名ーー>"; cin >> name;
      cout << "郵便番号ーー>"; cin >> zip_main >> dummy >> zip_branch;
      cout << "住所ーー>"; cin >> address;
    }
    void output(size_t record_no) {
      cout.width(4); cout<< record_no << " ";
      cout.width(18); cout.setf(ios::left, ios::adjustfield); cout << name << " ";
      cout.width(3); cout.fill('0'); cout << zip_main << '-';
      cout.width(3); cout.fill('0'); cout << zip_branch << " ";
      cout.width(18); cout.fill(' '); cout.setf(ios::left, ios::adjustfield); cout << address << endl;
      cout.setf(ios::internal);
    }
    inline bool operator==(const string &s) {
      return name == s;
    }
  private:
    string name;
    int zip_main, zip_branch;
    string address;
};
0772デフォルトの名無しさんNGNG
class manager
{
  public:
    void run() {
      while(execute_menu());
    }
  private:
    list<personal_data> DataList;
    bool execute_menu() {
      int menu_no;
      cout << "<<処理メニュー>>" << endl;
      cout << "1:データ追加、2:データ削除、3:データ一覧表示、4:終了" << endl;
      cout << "処理番号ーー>"; cin >> menu_no;
      switch(menu_no)
      {
        case 1: add(); break;
        case 2: remove(); break;
        case 3: show(); break;
        case 4: return false;
        default: cout << "入力エラー!!再入力して下さい。" << endl; break;
      }
      return true;
    }
0773デフォルトの名無しさんNGNG
    void add() {
      char answer;
      do
      {
        personal_data new_data;
        new_data.input();
        DataList.push_back(new_data);
        cout << "データの追加を続けますか?(y/n)"; cin >> answer;
      } while(answer == 'y' || answer =='Y');
    }
    void remove() {
      char answer;
      string target_name;
      do
      {
        cout << "削除するデータの氏名ーー>"; cin >> target_name;
        list<personal_data>::iterator itr = find(DataList.begin(), DataList.end(), target_name);
        if(itr == DataList.end())
          cout << "その氏名のデータはありません。" << endl;
        else
          DataList.erase(itr);
        cout << "データの削除を続けますか?(y/n)"; cin >> answer;
      } while(answer == 'y' || answer =='Y');
    }
0774デフォルトの名無しさんNGNG
    void show() {
      cout << "<<データ一覧>>" << endl;
      cout << "番号 氏名        郵便番号 住  所" << endl;
      list<personal_data>::iterator itr;
      size_t record_no = 0;
      for(itr = DataList.begin(); itr != DataList.end(); itr++)
        itr->output(++record_no);
    }
};

int main(void) {
  manager DataManager;
  DataManager.run();
  return 0;
}
0775デフォルトの名無しさんNGNG
何だ!?ソース荒らしか?
07767CNGNG
C++で
ダイアログベースでグーチョキパー3つのボタンを配置してジャンケンするプログラムを作りたい。
おながいします。
07777CNGNG
ちなみに形だけはいっちょまえにつくりますた。
0778デフォルトの名無しさんNGNG
ワケ ワカ ラン
0779デフォルトの名無しさんNGNG
マジなのかネタなのかわからねぇ。
しまいにゃメール欄に「マジです」とかいてネタ
投稿するぞ。
07807CNGNG
まじです
0781デフォルトの名無しさんNGNG
DirectX SDKのDebug版とRetail版の違いは何ですか?
0782771-774NGNG
>>775
766-769 に回答しただけなんだが・・・。
0783デフォルトの名無しさんNGNG
ある文法にしたがったソースを読み込み、そのプログラムを解析する
プログラムを作るというもんだいなんですが。
ようはコンパイラを作る課題の第1歩なんですけど
例えば
A=12;
をよみこんだら
A 変数
= 代入文
12 数値
なんて表示されるものです。
このプログラムは出来たのですが、次の問題に
前問(上の問題)から字句解析機能を関数として作成し前問と同じ
プログラムを作成せよ。ただし変数表の管理にハッシュテーブルライブラリーを
つかうこと。
となっています。
ハッシュテーブルをどこでどうつかうかわからないんですが。。。
分かる方、ご指導おねがいします
0784783NGNG
あ、上のはC言語でです。
おねがいします
0785デフォルトの名無しさんNGNG
ただし変数表の管理にハッシュテーブルライブラリーをつかうこと。
て書いてあるじゃない。
変数名(例えば A)をハッシュテーブルに入れていけってことじゃないの?
0786783NGNG
その場合ハッシュ値はどんなのがいいんでしょう。。。?
前にやった例だと入れるものが数字だったので
その数値をある数でわってあまりをaとすると
hash[a]のとこにいれてくってかんじだったんですが
この場合は変数はアルファベットですよね。
hash[A]なんてするわけにはいかないし。。。
どうすればいいんでしょう?
0787デフォルトの名無しさんNGNG
文字列のハッシュ関数のサンプルなんて腐る程あると思うが。
つーかハッシュテーブルについてどう習った?
0788デフォルトの名無しさんNGNG
文字も内部データ的には整数。
例えば、
printf( "%d\n", 'A' );
とかしてみたら、A という文字に対応する整数が表示される。
だから文字列の場合、一番簡単な例でいくと、
全ての文字(に対応する整数)を足した数をハッシュ値にすればいい。
0789783NGNG
いきなり問題をやらされた感じです。。。
上に書いたような数値の例で。
文字列の例調べてみます
0790デフォルトの名無しさんNGNG
C言語の問題です。
「2次方程式 ax^2+bx+c=0 において,実数 a,b,c を代入し,その解を求めるプログラムを作成せよ」
という問題なのですが,注意点として

計算機の中では実数は倍精度で処理すると有効数字として15桁程度の精度を持つが,
それ以下の桁では誤差が生じる。その場合,2つの実数の差の絶対値を取り,
それが十分小さければ2つの実数は同じ値であると考える。

と書かれていたのですが,虚数解を求めるところでどうすれば誤差が生じないのか分かりません。
アドバイスお願いします。
0791783NGNG
>788
あ、なるほど!
もしかして例えば変数Dだったら
hash[D-A]=変数
ってすればいいんですかね!?
0792デフォルトの名無しさんNGNG
>>783
別に A を引く必要はない。そのままの値を使いな。
0793783NGNG
あ、正確には
hash[(int)'A'-'D']
ですね。

>792
そのままの値、ということは配列の最初のほうには
何も入らないと云う事ですよね?
宣言を
char hash[(int)'Z']
にしてやればいいのかな
0794デフォルトの名無しさんNGNG
>>791
 とりあえず変数名が文字列だとしたら、ハッシュキーの作成は
unsigned int makeHashKey( char *str )
{
unsigned int hash = 7743;
int i;
for( i = 0 ; str[i] != '\0' ; i++ ){
 hash = ( hash << 3 ) ^ hash ^ str[i];
}
return ( hash % cHASHTABLESIZE );
}

って感じが良いと思うよ。
0795デフォルトの名無しさんNGNG
>>793
いや....ある値で割って余りをとるんでしょ?
例えば、割り切れる数だったら 0 になるじゃない?
0796783NGNG
う。。。またわからんくなってきた。。。

えーと、この場合ハッシュ関数はどうなるのでしょう?
割る数はハッシュサイズですよね?
てかハッシュサイズはどうなるんだ。
そいや数字もつかえるからA〜Zと1〜9の組み合わせ。。。
割られる数は。。。?

>794
forのループでが何を意味してるかわからないのですが
そこではなにをしてるのでしょう?
あと7743ってなんすか?
0797デフォルトの名無しさんNGNG
>>783
教科書とかにハッシュ法は載ってないのか?
一度じっくり本を読め。
0798デフォルトの名無しさんNGNG
しつもーん!
>>783にあるハッシュテーブルライブラリはどこに行きましたか?
ハッシュ関数とか用意されてないんですか?
ハッシュテーブルライブラリなら文字列をキーとして値を入力できそうですが?

0799794NGNG
>>796
 ハッシュキーを作成する関数=ハッシュ関数じゃないのかな。

 7743は適当な定数。短い変数名文字列が、ハッシュテーブルの
前半に集中するのを防ぐために適当に入れただけ。名無しさんとかって
したんだけど、本当は適当に大きな素因数の方が良いのかも。

 forループの中では適当な計算をしている。ハッシュ関数は同じ
入力が与えられたら同じキーを発行したら良いから、適当にキーが
バラけて、かつ速い計算が良い。
 文字列の文字全てをキーに使う為のforループで、中で行っている
計算はxor。andならキーが0に収束するし、orなら1に収束するから
xorが向いている。シフトしているのは文字だけじゃなくてその文字が
文字列のどの場所に出てくるかによってもキーが変わるように。
 シフトしていない部分とのxorも求めているのは、長い文字列で最初の
方の文字がシフトによって消されないため。

 漏れもハッシュの演習を学校でやった事があったけど、実際に数千個の
英単語を入れてキーをグラフにしてみたらちゃんとバラけてた。
0800783NGNG
教科書は入門書しかないんで役にたたないす。。。

ネットで調べてみたところ、例えば
Abcって変数ならAとbとcをそれぞれコードにしてくっつけて
それを割った値をキーにすればいいんですよね?

でもその前にこの場合のハッシュサイズはどうなるんでしょう?
0801デフォルトの名無しさんNGNG
> xor

それって何か意味のある動作をするか?
0802801NGNG
ごめん、シフトもするのね。
0803783NGNG
>799
うぅ。。。なんかむずすぎて全然わからん。。。
800みたいなやりかたじゃだめすかね?
ABCの文字コードが65、66、67なら
656667と言う数字をハッシュサイズで割り、そのあまりを
添字にもつ配列にいれる。

ハッシュサイズがわからんと思ったけど調べてると
別に割る数はハッシュサイズでなく適当でいいと書いてるとこも
ありましたがそれでいいのかなぁ?
0804783NGNG
あらかじめハッシュサイズを手動で(100とか)きめといて
(65+66+67)/100をハッシュ値にするのが簡単そうですが
これじゃだめすかね。。。?
0805デフォルトの名無しさんNGNG
いいから 783 は 798 の質問に答えてくれよ
0806デフォルトの名無しさんNGNG
>>804
(65+66+67)%100 ね。
別にそれでいいんじゃないかなぁ?
そんなに高度なのは求められてないんでしょ。
0807783NGNG
>805
あ、ハッシュテーブルライブラリーは別の問題でつくったんですよ。
でもそのままではつかえないのでそれを参考に考えるんだと
思います。
ちょっと問題はしょって書いたし書方わるかったかな。。。
0808デフォルトの名無しさんNGNG
(´-`).。oO(流用できないようなものをライブラリーと呼ぶのか。。。)
0809デフォルトの名無しさんNGNG
(´Д⊂ヽ仕様がない
0810デフォルトの名無しさんNGNG
>>806
それは最後の文字しか意味を持たないじゃん。
0811デフォルトの名無しさんNGNG
>>810
んなこたーない
0812デフォルトの名無しさんNGNG
ハッシュ関数の意味判ってんねぇんだな。
あれでいいと思うんなら下手な計算せずに先頭一文字だけそのまま使っとけば?
0813810NGNG
>>811
わりっす。>803とごっちゃにしちまった。
0814デフォルトの名無しさんNGNG
char型のアルファベットの文字列をint型に直す関数ってありますか?
atoiだと文字型の数字しかint型になおらないですよね?
0815デフォルトの名無しさんNGNG
char c= 'A';
int i= (int)c;
0816デフォルトの名無しさんNGNG
>>815
文字じゃなくて文字列ですよ。
0817デフォルトの名無しさんNGNG
文字列を直したいんです。
ABCとかいう文字列をなんか一発で。。。
そういうのが無ければ普通に書けばいいんですが
一発で変換みたいなのがあればらくだなと
0818デフォルトの名無しさんNGNG
文字列を?
0819デフォルトの名無しさんNGNG
ABCが数値としていくつになればいいの?
0820デフォルトの名無しさんNGNG
>>817
書けるんだったら書いてみてくれ。
0821デフォルトの名無しさんNGNG
123
0822デフォルトの名無しさんNGNG
>>819
2748です。
0823デフォルトの名無しさんNGNG
つーかchar[]そのものが多倍長整数なんだが。
0824つまりNGNG
”ABC"='A' * 0x10000 + 'B' * 0x100 + 'C'
0825デフォルトの名無しさんNGNG
function書くしかないんじゃない。
0826デフォルトの名無しさんNGNG
MD5つかえ
0827デフォルトの名無しさんNGNG
>>822
バカモノ。
なにがABCとかいう文字列だ。
16進数字じゃねぇのか?

>>824
それで本当に2748になるのか?
0828デフォルトの名無しさんNGNG
char *c="ABC";
int i;
memcpy(&i,c,sizeof(int));
0829デフォルトの名無しさんNGNG
>>790
誰かこれもお願いできませんか?
実数解の場合は分かったんだけど,虚数解の場合がどうしても分からない。
ちなみに実数の場合は
  D = b*b -4.0*a*c;
if(D > 0.0) { /* 実数解 (D > 0) */
x1 = (fabs(b) + sqrt(D)) / (2.0 * a);
if ( b >= 0.0 ) {
x1 = -x1;
}
x2 = c / (a * x1);
printf("x1 = %15.15f, x2 = %15.15f\n", x1, x2);
}
みたいな感じでやりました。
0830デフォルトの名無しさんNGNG
さて本物のレスがないのは釣りだったのだろうか?
0831814NGNG
結局普通に自分で書きました(^^;
アルファベットを文字コードにして足して行っただけですが。
ちなみに僕は817しかかいてないですよ
0832デフォルトの名無しさんNGNG
足してどーすんだよ
0833デフォルトの名無しさんNGNG
質問!
MS-DOS上でTurboC++使って制御の勉強をやってます。
プログラム→Rs-232C(1)→データ処理→Rs-232C(2)→データ処理
→計算など
と制御させると全体の周期が0.5秒くらいなんです。
そのうち、Rs-232C(1)とRs-232C(2)での外部処理で0.2秒ずつ食われます。
Rs-232Cでコマンドを送った後、データが返ってくるまで
他の処理をさせたいのですが、DOSでは無理ですか?
割り込み処理などでなんとかなるもんですか?
0834デフォルトの名無しさんNGNG
>>833
データ送受信を割込みで処理すれば割込みが有るまで好きなことが出来る罠。
0835デフォルトの名無しさんNGNG
「はじめて読む486」を参考にしてマルチタスクを実装する。
0836833NGNG
レス感謝です。
>>834
その手法を考えて実装してみます。
どこか参考になるHPなどないかなぁ。
(TurboというかBorlandのヘルプはすでに読みましたけど・・・)

>>835
それ持ってます。途中まで読んで休止状態です(w
0837790NGNG
>>835
俺へのレスですよね?
>>486以降を読んでも誤差を考慮した虚数解については書かれて無いんですけど・・・
0838デフォルトの名無しさんNGNG
>835は>833だと思われ。
0839デフォルトの名無しさんNGNG
>837はネタだと思われ
0840790NGNG
>>838
あ,そうでしたか。同じ2次方程式の問題だったから勘違いしてしまいますた。
ネタじゃないです。マジで誰かお願いします。
0841デフォルトの名無しさんNGNG
>>840
よーわからんが、この辺はどうだ?
http://cl.rc.kyushu-u.ac.jp/Literacy/PP/H14/adp/program/equation.html
0842790NGNG
>>841
ん〜。ここで>>829に書いてある実数解のを見つけたんですけど,虚数解のはなかったんですよね。
0843デフォルトの名無しさんNGNG
>>842
大体虚数をどう表す気だ。 doubleは実数しか表せないんだぞ?
それさえ判れば自明じゃないのか?
0844790NGNG
>>843
今はreal,imagをdoubleで宣言して,

real = -(b / (2.0*a));
imag = sqrt(fabs (D)) / (2.0*a);
printf("x1 = %15.15f + %15.15fi (虚数解)\n", real, imag);
printf("x2 = %15.15f - %15.15fi (虚数解)\n", real, imag);

のようにやってるんですけど,>>841のページを見ると実数の場合,

if(d >= 0){ /* 判別式が正のとき、解を計算 */
x1 = (-b + sqrt(d)) / (2.0 * a);
x2 = (-b - sqrt(d)) / (2.0 * a);
printf("x1 = %27.20e(%27.20e)\n",x1,a*x1*x1+b*x1+c);
printf("x2 = %27.20e(%27.20e)\n",x2,a*x2*x2+b*x2+c);
}
では桁落ちするらしく,
if(d >= 0){ /* 判別式が正のとき、解を計算 */
x1 = (fabs(b) + sqrt(d)) / (2.0 * a); /* 修正箇所 */
if ( b >= 0.0 ) {
x1 = -x1;
}
x2 = c / (a * x1); /* 修正箇所 */
printf("x1 = %27.20e(%27.20e)\n",x1,a*x1*x1+b*x1+c);
printf("x2 = %27.20e(%27.20e)\n",x2,a*x2*x2+b*x2+c);
}
のように修正すると書かれてたので,虚数解の場合も修正しないとまずいのでは?
と思ったのですが違うのでしょうか?
0845790NGNG
>>844
追加
Dもdoubleで宣言し,↓のようにしています。
D=b*b -4.0*a*c
0846デフォルトの名無しさんNGNG
毎度お馴染み TURBO C++ です。
#include <iostream.h>
#include <complex.h>

int main(void)
{
double x = 3.1, y = 4.2;
complex z = complex(x,y);
cout << "z = "<< z << "\n";
cout << " and imaginary real part = " << imag(z) << "\n";
cout << "z has complex conjugate = " << conj(z) << " \n";
return 0;
}
0847デフォルトの名無しさんNGNG
>>846
Cの問題なので却下。
0848デフォルトの名無しさんNGNG
引き篭もり
0849デフォルトの名無しさんNGNG
double _Complex z;
0850デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>

main()
{
int c=0,temp=0;


while((c=getchar())!='a'){
if(c==' ') temp=c;
else{
if(temp==' ') {
putchar(temp);
temp='a';
}
putchar(c);
}
}

return 0;
}

上のプログラムは,某本の二つ以上の空白を一つの空白に置き換えながら,入力を出力しなさいという問題の答えです。
このプログラムの改善点などありますでしょうか?
0851デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>

main()
{
int c=0,temp=0;


while((c=getchar())!='a'){
if(c==' ') temp=c;
else{
if(temp==' ') {
putchar(temp);
temp='a';
}
putchar(c);
}
}

return 0;
}

上のプログラムは,某本の二つ以上の空白を一つの空白に置き換えながら,入力を出力しなさいという問題の答えです。
このプログラムの改善点などありますでしょうか?
0852デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>

main()
{
  int c=0,temp=0;


  while((c=getchar())!='a'){
   if(c==' ') temp=c;
   else{
    if(temp==' ') {
     putchar(temp);
     temp='a';
    }
    putchar(c);
   }
  }

  return 0;
}

上のプログラムは,某本の二つ以上の空白を一つの空白に置き換えながら,入力を出力しなさいという問題の答えです。
このプログラムの改善点などありますでしょうか?
0853デフォルトの名無しさんNGNG
ワラタ
0854JPS ◆M0LaMzf5rY NGNG
>>852
#include <stdio.h>

int main(void)
{
int ch;

while ( (ch = getchar() ) != EOF )
{
putchar( ch );

while ( ch == ' ' )
ch = getchar();
}

return 0;
}
0855デフォルトの名無しさんNGNG
>>854
それだと,
aa a a   a   a
が
aa
になってしまいます
aa a a a a
とならなくてはいけないので
0856デフォルトの名無しさんNGNG
int ch, last_char_was_space = 0;

while ((ch = getchar()) != EOF)
{
if (! last_char_was_space || ch != ' ')
putchar(ch);

last_char_was_space = (ch == ' ');
}
0857デフォルトの名無しさんNGNG
last_char_was_space = (ch == ' ');

の部分はどういう処理で?
chに' 'を入れる必要性は?
0858JPS ◆M0LaMzf5rY NGNG
>>857
入れてるんでなくて、比較してんの
0859デフォルトの名無しさんNGNG
>last_char_was_space
長ぇよ!w
0860デフォルトの名無しさんNGNG
>>858
いや・・じらさないで早く挿入れて!
0861デフォルトの名無しさんNGNG
>>846
これなに?
0862デフォルトの名無しさんNGNG
>>858
chがスペースなら1,でないなら0っすか
で,if文で調べると
こんな高等な技術があったとは

>>859
あほな僕でもわかるようにと,考えてくださったのでしょう
0863JPS ◆M0LaMzf5rY NGNG
>>862
がんがれ。オレも初めてこの使い方をみた時は正直あせったよ。
0864西門 ◆J1DLkSnXwI NGNG
呼んだ?
0865デフォルトの名無しさんNGNG
#include <iostream>
#include <iterator>
#include <algorithm>

bool space_seq(char f,char s){return (f==' ')&&(s==' ');}
main(){
std::cin.unsetf(std::ios::skipws);
std::unique_copy(std::istream_iterator<char>(std::cin),std::istream_iterator<char>(),std::ostream_iterator<char>(std::cout),space_seq);
}
0866デフォルトの名無しさんNGNG
for(;;)
{
char* c=new char[100];
c=NULL;
}
0867デフォルトの名無しさんNGNG
for(;;)
{
char* c=new char[100];
c=NULLPO;
}
0868デフォルトの名無しさんNGNG
>>865
キタ
0869宿題教えて!NGNG
#include<iostream.h>
/*行列を表すクラス*/
template <class T=int,int a=3> class Matrix {
T x[a];
public :
Matrix();
T &set(int row,int col){return x[(row-1)+(col-1)*a];}
//+演算子
friend Matrix<T,a> operator+(Matrix<T,a> &n,Matrix<T,a> &m){
int i;
Matrix<T,a> ret;
for(i=0; i<a*a; i++){ret.x[i] = n.x[i]+m.x[i];}
return ret;
}
void show();
};
//コンストラクタ
template<class T,int a> Matrix<T,a>::Matrix(){
int i;
for(i=0; i<a*a; i++) x[i] = 0;}
//表示関数
template<class T,int a>void Matrix<T,a>::show(){
int i;
for(i=0; i<a*a; i++){cout << x[i] << " " ;if(i%a == 2)cout << "\n";}
}
0870宿題教えて!NGNG
int main(){
int length=3;
Matrix<int ,3> a,b,c;//3行3列の行列
int bNumber[9] = {6,5,4,3,2,1,9,8,7};
int i;
for(i=0; i<length*length; i++){a.set(i%length+1,i/length+1) = (i+1)*10;//i*10をセットする}
for(i=0; i<length*length; i++){b.set(i%length+1,i/length+1) = bNumber[i];//あらかじめ用意されたbNumberを入れる}
c.show();
c = a + b;//ここが実行されない
c.show();
return 0;
}
/*C++ですが、行列のクラスをテンプレートで実現して、
+ - * の演算子とinverse関数を実現せよ!とか云って来るんですよ
だから・・・お願いします。教えてください。
+のとこだけでよいので・・・
相談スレでスレ違いだったのでこっちに聞きます
マルチですが、相談すれは無視してください。
*/
0871デフォルトの名無しさんNGNG
マルチうざー
0872宿題教えて!NGNG
マルチっていうかスレ違いって云われて
こっちに誘導されますた

>>871
分かるならおしえて!
0873デフォルトの名無しさんNGNG
実行されないってどういうことよ?
0874デフォルトの名無しさんNGNG
>>869-870
T x[a];
でa(=3)個分しか用意してないのにa*a個にアクセスしようとしているお前に乾杯
0875デフォルトの名無しさんNGNG
friend...
You and I are friend?
0876宿題教えて!NGNG
>>874
あ・・・
ほんとだ
スマソ
0877宿題教えて!NGNG
できた〜〜
いちおーjavaプログラマのつもりだったのに
情けないです・・・
修行してきます
0878デフォルトの名無しさんNGNG
>>875
×You and I are friend?
○Are you my friend?
0879デフォルトの名無しさんNGNG
int ch, last_ch = 0;

while ((ch = getchar()) != EOF)
{
 if (ch == ' ' && last_ch != ' ')
  putchar(ch);
 last_ch = ch;
}
0880デフォルトの名無しさんNGNG
おもいっきり間違えた…。

while ((ch = getchar()) != EOF)
{
 if (ch != ' ' || ch != last_ch)
  putchar(ch);
 last_ch = ch;
}
0881デフォルトの名無しさんNGNG
全然ダメだ…。

while ((ch = getchar()) != EOF)
{
 if (ch != ' ' || (ch == ' ' && ch != last_ch) )
  putchar(ch);
 last_ch = ch;
}

つーか複雑になってきたので意味無し。
0882デフォルトの名無しさんNGNG
何したいのさ
0883デフォルトの名無しさんNGNG
つーか JPS、前に 「漏れに聞け」 スレで全く同じの扱ったろう。
もう ungetc() を忘れたのか?
0884デフォルトの名無しさんNGNG
>>881
if(ch != ' ' || lash_ch != ' ')
0885デフォルトの名無しさんNGNG
>>883
JPSのカキコは全部釣りだって気づいてないのか?
0886デフォルトの名無しさんNGNG
reiterate me.
0887デフォルトの名無しさんNGNG
(´-`).。oO(VBスレで釣りだって喚いてた人かな…
0888デフォルトの名無しさんNGNG
>>487
遅レスに便乗質問なんですけど,

>>else if (DD==0.0){
>浮動小数点でこういうことしない。

とあるのですが,この場合はどう処理するのが正しいのでしょうか?

http://www.google.co.jp/search?q=cache:http://www.cpnet.co.jp/gfan/techdoc/Geometry/numerr.htmに
2つの浮動小数点数を、「==」で比較してはならない。「等しい」と判定されなければならない場面で、誤差により、
等しくならないことはしばしばである。この場合、2つの浮動小数点数の差を取り、
その絶対値が、誤差限界より小さい時には、等しいものと判定するようにする。

とあったのですが,どう書いたらよいのか分かりません。お願いします。
0889デフォルトの名無しさんNGNG
if (fabs(DD) <= EPSILON)
0890888NGNG
>>889
EPSILONって「十分小さい値」って意味ですかね?
入門用の本にはのって無いんですが。
0891888NGNG
if(D == 0.0)をif (fabs(DD) <= EPSILON)に置き換えたら,

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
niji.c:
エラー E2451 niji.c 41: 未定義のシンボル DD(関数 main )
エラー E2451 niji.c 41: 未定義のシンボル EPSILON(関数 main )
警告 W8070 niji.c 61: 関数は値を返すべき(関数 main )

っていうエラーが返ってきちゃったんですけど,なにか定義しなくちゃいけないんでしょうか?
0892デフォルトの名無しさんNGNG
いや、それは自分で定義するもんじゃないの。
fabsって見た感じ、絶対値返すっぽいし。
0893デフォルトの名無しさんNGNG
探すか,創る。つか、それぐらい作れ
0894888NGNG
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_core_why_floating_point_numbers_may_lose_precision.asp
に書いてあるように,

#define EPSILON 0.0001

を追加し,if (fabs(DD)→if (fabs(D)にしたらできました。

実際問題,判別式として分ける場合,EPSILONはどの程度の値として定義すればいいのでしょうか?
0.0001よりもだいぶ小さい値になってるのもあるようなのですが…。
0895デフォルトの名無しさんNGNG
>>894
> #define EPSILON 0.0001

そんな事するなするな。
<float.h> の DBL_EPSILON や FLT_EPSILON を使え。
0896デフォルトの名無しさんNGNG
> DBL_EPSILON や FLT_EPSILON

まあ、もともとこんな定数用意してるぐらいだったら、標準で判定関数かマクロか
用意してくれてもいいじゃんとは思うけどナー。
0897888NGNG
#include <float.h>
if(fabs(D) <= DBL_EPSILON)
記述の方法は↑で良いのでしょうか?
microsoftのページに
2.2204460492503131e-016 として定義された double 用の定数 DBL_EPSILONとあったのですが,
DBL_EPSILONは「どんな場合にも適したdouble用のEPSILONの値」という認識で間違ってませんか?
0898デフォルトの名無しさんNGNG
判別式が負だったら解なし、解を二つ求めて等しくなったら重解ってことにすりゃいいじゃん。
0899デフォルトの名無しさんNGNG
>>898
その場合でも
|x1-x2|<=DBL_EPSILONにする必要がありそうな
0900デフォルトの名無しさんNGNG
>>899
非常に近いけど重解じゃありません、でいいんじゃん?
0901デフォルトの名無しさんNGNG
fabs() 呼ぶのと、-DBL_EPSILON 〜 DBL_EPSILON の範囲でチェックするのとでは
どっちが速いんだろうな?
0902デフォルトの名無しさんNGNG
微妙だが、FPU持っててインラインに展開されるとか、signビットのクリアに
なるようならfabs()のほうが速いかもしれん。
0903optionNGNG
要素数が n である配列 a から key と一致する全要素の添え字を、配列 idx の先頭から
順に格納し、一致した要素数を返す以下の関数を作成せよ。

int seachidx(int a[], int n, int key, int idx[]);

誰か完成させてくださいませんか?
0904 ◆F52DmOxJlc NGNG
>>903
これでいいのか?

int seachidx(int a[], int n, int key, int idx[]) {
 int i, j;
 j = 0;
 for (i = 0; i < n; i ++) {
  if (a[i] == key) {
   idx[j] = a[i];
   j ++;
  }
 }
 return j;
}
0905デフォルトの名無しさんNGNG
>>903
丸なげ?
0906デフォルトの名無しさんNGNG
0から1の実数をパラメータとして白黒階調画像を表示するPGを作りたい
んですけどアドバイスもらえませんか?
0907optionNGNG
>◆F52DmOxJlcさん
ありがとうございました。
今コンパイル出来ませんが(都合により)後日コンパイルしてみます。
本当に助かりました。
0908 ◆F52DmOxJlc NGNG
>>907
インデントに全角スペース使ってるからコピペはするなよ。

>>906
画像関係は経験ないのでわからない。すまん。
0909デフォルトの名無しさんNGNG
>>906
256倍して表示汁。
0910デフォルトの名無しさんNGNG
>>903 C++なら一行。
int seachidx(int a[], int n, int key, int idx[]) {
return std::remove_copy_if(a, a+n, idx, std::bind2nd(std::not_equal_to<int>(), key)) - idx;
}
0911西門 ◆J1DLkSnXwI NGNG
>>906
よくわからんが、
「1つ1つの画素の輝度が[0,1]の実数で表されている画像を、
白黒2値の表示装置で表示したい」という意味なら、ディザリング
するのがよろしかろう。

#include <stdlib.h>

void dither(double input[], char output[], unsigned size,
  double contrast, double brightness)
{
 unsigned i;

 for (i = 0; i < size; i++) {
  double d = rand() * 2.0 / (RAND_MAX + 1) - 0.5;

  output[i] = (input[i] + d * contrast > brightness);
 }
}
0912デフォルトの名無しさんNGNG
>>909
>906の言う「0から1の実数」が、「0以上1以下の実数」のことだったら
256倍すると256諧調に収まらないので、
255倍の方がいいかも。
0913910NGNG
しまった!添え字を入れるのか・・・
0914906NGNG
たくさんの方ありがとうございます。
912さんの言われると通り0以上1以下の値を持った
2次元配列の値をパラメータとしてそのパラメータを
突っ込めば白黒階調画像が表示できるようなPGという意味でした。
説明不足ですみません。
0915906NGNG
255倍というナイスアイディアありがとうございました。
ぐぐりました所いい感じのソースが見つかりました。
またなにかありましたらよろしくお願いします。

0916デフォルトの名無しさんNGNG
0917デフォルトの名無しさんNGNG
>>905
ここは、そういうスレじゃないのか?
0918デフォルトの名無しさんNGNG
>>917
そうか、ここはOKなんだな。>1にもとくに書いてないし。
0919デフォルトの名無しさんNGNG
宿題スレは丸投げ上等だからな。
よくわからん質問。マルチは不定だが。
0920デフォルトの名無しさんNGNG
こんな宿題がでました。
typedef struct{
int y;/*西暦年*/
int m;/*月(1〜12)*/
int d;/*日(1〜31)*/
}YMD;
上の構造体が与えられているとする。
日付xのn日後の日付を返す以下の関数を作成せよ。
YMD after(YMD x, int n);
日付xのn日前の日付を返す以下の関数を作成せよ。
YMD before(YMD x, int n);
。。。ヒント。。。
★日にち★
▼1〜27▼ 日にちに+1
▼28(2月) うるう年か?▼YES 日にち+1,NO 月+1、日にち+1
▼29 2月?▼YES 月+1、日にち=1,NO 日にち+1
▼30 4,6,9,11月?▼YES 月+1、日にち=1,NO 日にち+1
▼31 12月?▼YES 年+1、月=1、日にち=1,NO  月+1、日にち=1
うるう年は
int isleap(int year)
{
return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
}

で求める。
ちなみに西暦は深く考えなくていいです。1735年(?)以前がどうとかあった
気がしましたが。
丸投げ上等らしいので、誰かソース提供して欲すぃのですが・・・。
だめかなぁ・・・。
0921デフォルトの名無しさんNGNG
static long
jday(YMD x)
{
    int y = x.y, m = x.m;
    long d = x.d;
    if ((m -= 3) < 0) {m += 12; y--;}
    d += (long)y * 365 + y / 4 - y / 100 + y / 400;
    return d + (m * 153 + 2) / 5;
}
0922デフォルトの名無しさんNGNG
static YMD
toYMD(long d)
{
    int y, m;
    --d;
    y = d / (365 * 400 + 97) * 400; d %= 365 * 400 + 97;
    y += (d / (365 * 4 + 3)) * 4; d %= 365 * 4 + 3;
    y += d / 365; d %= 365;
    m = (d / 153) * 5; d %= 153;
    m += (d / 61) * 2; d %= 61;
    m += d / 31; d %= 31;
    ++d;
    if ((m += 3) > 12) {m -= 12; ++y;}
    {YMD x = {y, m, d}; return x;}
}
0923デフォルトの名無しさんNGNG
YMD after(YMD x, int n)
{
    return toYMD(jday(x) + n);
}

YMD before(YMD x, int n)
{
    return after(x, -n);
}
0924 ◆F52DmOxJlc NGNG
ヒントが出てるんならそれに沿って回答した方が先生も喜ぶかな。

YMD after(YMD x, int n) {
 int i;
 for (i = 0; i < n; i ++) {
  if (x.d < 28) {
   x.d ++;
  } else if (x.d == 28) {
   if (x.m == 2 && isleap(x.y)) {
    x.m ++;
    x.d = 1;
   } else {
    x.d ++;
   }
  } else if (x.d == 29) {
   if (x.m == 2) {
    x.m ++;
    x.d = 1;
   } else {
    x.d ++;
   }
0925 ◆F52DmOxJlc NGNG
  } else if (x.d == 30) {
   if (x.m == 4 || x.m == 6 || x.m == 9 || x.m == 11) {
    x.m ++;
    x.d = 1;
   } else {
    x.d ++;
   }
  } else {
   if (x.m == 12) {
    x.y ++;
    x.m = 1;
    x.d = 1;
   } else {
    x.m ++;
    x.d = 1;
   }
 }
 return x;
}

before() は after() を改造すればできるよね。
0926920NGNG
おぉ!!こんなにソースが!!
有難いです。ここにいる方々には感謝してもしきれません。
本当にありがとうございました。
>◆F52DmOxJlc さん
あなたの事は神と呼ばせて下さい!!
神(^^)/ありがとう!!
0927 ◆F52DmOxJlc NGNG
>>926
インデントに全角スペース使ってるからコピペはするなよ。
しかも動作確認してないから間違ってたら適当に修正しておくれ。
//この程度で神はカンベンw
0928デフォルトの名無しさんNGNG
いやー、JPSも成長したなあ。
人にいろいろ教えてあげるようになったとは。
0929デフォルトの名無しさんNGNG
配列にデータを入力し、二乗の和と平均を表示するプログラムを作りなさい。
ただし、入力、二乗の和、合計のための関数を作って利用しなさい。

#include <stdio.h>
void input(double a[], int n);
double sum2(double sum2[],int n);
double sum(double sum[], int n);

int main(int argc, char* argv[])
{
double y[1000];
int n;
printf("いくつ入力するか決めてください:");
scanf("%d",&n);
input(y,n);
printf("二乗の和は%fです。\n",sum2(y,n));
printf("平均値は%fです。\n",sum(y,n)/n);
return 0;
}

void input(double a[], int n) {
int k;

for(k = 0; k < n; k++) {
printf("%d個目の数字を入力してください:", k+1);
scanf("%lf", &a[k]);
}
}
0930デフォルトの名無しさんNGNG
馴れ合いはカンベンw
0931929NGNG
double sum2(double sum2[], int n)
{
int i;
double x = 0;
for (i = 0; i < n; i++) {
x += sum2[i]*sum2[i];
}
return x;
}

double sum(double sum[], int n)
{
int i;
double x = 0;
for (i = 0; i < n; i++) {
x += sum[i];
}
return x ;
}

作ってみたんですけど不安なのでおかしいところとか言ってくれませんか?
0932デフォルトの名無しさんNGNG
すまん、>>922は間違ってた。百年単位の閏年の処理を抜かしてたのと、4年単
位のところでなぜか3を足してた。

static YMD
toYMD(long d)
{
    int y, m;
    --d;
    y = d / (365 * 400 + 97) * 400; d %= 365 * 400 + 97;
    y += (d / (365 * 100 + 24)) * 100; d %= 365 * 100 + 24;
    y += (d / (365 * 4 + 1)) * 4; d %= 365 * 4 + 1;
    y += d / 365; d %= 365;
    m = (d / 153) * 5; d %= 153;
    m += (d / 61) * 2; d %= 61;
    m += d / 31; d %= 31;
    ++d;
    if ((m += 3) > 12) {m -= 12; ++y;}
    {YMD x = {y, m, d}; return x;}
}
0933920NGNG
修正ありが�dです。
学校行ったらさっそく試してみますね。
0934デフォルトの名無しさんNGNG
>>932
たびたびすまん。2000/2/29が間違ってた。

>     y += (d / (365 * 100 + 24)) * 100; d %= 365 * 100 + 24;
ここをこうしる。
    if (d == 365 * 400 + 96) {
        y += 3;
        d = 365 * 100 + 24;
    }
    else {
        y += (d / (365 * 100 + 24)) * 100; d %= 365 * 100 + 24;
    }
0935デフォルトの名無しさんNGNG
>>929
それでいい。
0936デフォルトの名無しさんNGNG
>>934
禿しく鬱。

static YMD
toYMD(long d)
{
    int y, m, i;
    --d;
    y = d / (365 * 400 + 97) * 400; d %= 365 * 400 + 97;
    if (d == 365 * 400 + 96) {
        y += 399;
        d = 365;
    }
    else {
        y += (d / (365 * 100 + 24)) * 100; d %= 365 * 100 + 24;
        y += (d / (365 * 4 + 1)) * 4; d %= 365 * 4 + 1;
        if (d == 365 * 4) {y += 3; d = 365;}
        else {y += d / 365; d %= 365;}
    }
    m = (d / 153) * 5; d %= 153;
    m += (d / 61) * 2; d %= 61;
    m += d / 31; d %= 31;
    ++d;
    if ((m += 3) > 12) {m -= 12; ++y;}
    {YMD x = {y, m, d}; return x;}
}
0937デフォルトの名無しさんNGNG
N×L行列と、L×M行列の積を求めるプログラムですが、
N、L、Mをmain関数の中で与えたいのですが、
どのようにしたらよろしいのでしょうか?
#include <stdio.h>
#include <stdlib.h>
#define N 3
#define L 5
#define M 4
typedef double matNL[N][L];
typedef double matLM[L][M];
typedef double matNM[N][M];
void multiply(matNM c, matNL a, matLM b)
{
int i, j, k;
double s;
for (i = 0; i < N; i++)
for (j = 0; j < M; j++) {
s = 0;
for (k = 0; k < L; k++) s += a[i][k] * b[k][j];
c[i][j] = s;
}
}

void matprint(int nrow, int ncol, double *a)
{
int i, j;
for (i = 0; i < nrow; i++) {
for (j = 0; j < ncol; j++) printf("%8.1f", *a++);
printf("\n");
}
}
0938937NGNG


int main(void)
{
int i, j;
static matNL a;
static matLM b;
static matNM c;
for (i = 0; i < N; i++)
for (j = 0; j < L; j++)
a[i][j] = rand() / (RAND_MAX / 10 + 1);
for (i = 0; i < L; i++)
for (j = 0; j < M; j++)
b[i][j] = rand() / (RAND_MAX / 10 + 1);
printf("A\n"); matprint(N, L, (double *)a);
printf("B\n"); matprint(L, M, (double *)b);
multiply(c, a, b);
printf("AB\n"); matprint(N, M, (double *)c);
return (0);
}
0939デフォルトの名無しさんNGNG
>>937
malloc/freeって知ってる?
0940937NGNG
>>939
malloc/freeは少しだけ使ったことあります。。
mallocでa[N][L]、b[L][M]、c[N][M]を確保して、
やろうと思ったのですが、
multiply()を定義する部分で、
()内をどうしたらよいのかわかりませんでした。
0941デフォルトの名無しさんNGNG
void
multiply(double *c, double *a, double *b, int l, int n, int m)
{
  int i, j, k;
  double s;
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      s = 0;
      for (k = 0; k < l; k++)
        s += a[i*l+k] * b[k*m+j];
      c[i*m+j] = s;
    }
  }
}
0942937NGNG
>>941
ありがとうございます。
ちょっと、やってみます。
0943ぼるじょあ ◆yBEncckFOU NGNG
すみません。C言語のMAKEファイルの宿題が出たんですが
さっぱりわからないんですがどこかに使い方の解説のサイトは無いでしょうか?
すれ違い?
0944デフォルトの名無しさんNGNG
C言語初心者です。
19の47乗を143で割った余りを求めたかったので
C言語で以下のような記述をしました。

printf("%d\n", (int)pow(19, 47) % 143);

すると表示される結果は-24となります。
正の数を正の数で割ったので、あまりがマイナスになることはありません。
実際に合同式を用いて手作業で計算すると、
答えは24になりました。
どうしてC言語を用いて計算するとマイナスになるのでしょうか?
環境はCygwin+gccです。
0945デフォルトの名無しさんNGNG
区間[0,1),[1,2),[2,3)に含まれるデータの個数を
配列を用いてカウントするプログラムを作成せよ。
ただし、個数のカウントに条件分岐をしようしてはいけない。

データ型の変換について習ったんでそれを使うんでしょうが、
条件分岐を使わないでどう組むのか全く分かりません。
助言お願いします。
0946デフォルトの名無しさんNGNG
>>943
「MAKEファイル」でぐぐっただけだがこんなんはどうよ。
http://www-clim.kugi.kyoto-u.ac.jp/yasunaga/make.html
0947デフォルトの名無しさんNGNG
>>944
19の47乗は61桁ほどになり、通常の処理系ではintでもdoubleでも正確に
表せないからどちらにしろ答えは無意味。
0948デフォルトの名無しさんNGNG
>>944
19の47乗は10進で61桁の数になる。
浮動小数点数の有効桁数は17桁くらいだから、
正確な計算は全く期待できない。
0949デフォルトの名無しさんNGNG
>>945
その3つの区間の数値は、小数点以下を切り捨てるとそれぞれ
0, 1, 2になる。これを配列の添え字に使う。
0950デフォルトの名無しさんNGNG
>>944
> 実際に合同式を用いて手作業で計算すると、
最初からそっちでプログラムしろ。
0951937NGNG
>>939,941
ありがとうございました。
無事解決できました。
0952デフォルトの名無しさんNGNG
>>944
前スレに似たような質問があったような気がするが。
0953デフォルトの名無しさんNGNG
unsigned long int modpow(unsigned long int a,unsigned long int k,unsigned long int m){
unsigned long int b;
for(b = 1; k > 0; a = a * a % m, k >>= 1)
if(k & 1) b = b * a % m;
return b;
}
0954デフォルトの名無しさんNGNG
>>953
ビット演算がよく分かりません。
それはどういうアルゴリズムで、
どのぐらいの大きさまで計算できるんですか?
0955デフォルトの名無しさんNGNG
>>947
(゚Д゚)ハァ?
0956デフォルトの名無しさんNGNG
>>954
処理系に依存するっスよ
0957デフォルトの名無しさんNGNG
>>955
その(゚Д゚)ハァ?の意味がわからない。どこかおかしいか?
0958デフォルトの名無しさんNGNG
>>955
新しいため息のつきかた・・・
0959デフォルトの名無しさんNGNG
リストに関するプログラム例として英語の文書ファイルに現れる単語リスト
を作成するプログラムを考えることにする。

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

struct CELL{
char word[32];
struct CELL *next;
};

int main(){
struct CELL *words, *p;
char newword[32];

words = NULL;
while(scanf("%s",newword)== 1){
for(p=words; p!=NULL; p=p->next)
if(strcmp(newword, p->word)==0)break;
if(p==NULL){
p=(struct CELL *)malloc(sizeof(struct CELL));
strcpy(p->word,newword);
p->next=words;
words = p;
}
}
for(p=words; p!=NULL; p=p->next)printf("%s\n", p->word);
}
0960デフォルトの名無しさんNGNG
>>959の例プログラムを単語リストがアルファベット順になるように
機能拡張してください。よろしくお願いします。
0961943NGNG
>>946
有難うございました。当方初心者なものでこれでも
難しいです。MAKEする上でコンパイルについて簡単に書かれて
いるものってないでしょうか。
0962デフォルトの名無しさんNGNG
スプレットシートのコード教えて
0963デフォルトの名無しさんNGNG
>>961
>>946のページはgoogleで出た中で一通り書いてある所を選
んだだけだから、もっと単純なところも出て来るよ。
0964デフォルトの名無しさんNGNG
>>960
〜略〜
int main(){
struct CELL *words, *p, *prev;
char newword[32];

words = NULL;
while(scanf("%s",newword)== 1){
prev=NULL;
for(p=words; p!=NULL; p=p->next){
if(strcmp(newword, p->word)<0)break;
prev=p;
}
p=(struct CELL *)malloc(sizeof(struct CELL));
strcpy(p->word,newword);
if(p==NULL || prev==NULL){
p->next=words;
words = p;
} else {
p->next=prev->next;
prev->next=p;
}
}
for(p=words; p!=NULL; p=p->next)printf("%s\n", p->word);
}
0965デフォルトの名無しさんNGNG
>>964
どうもありがとうございます!
これで、レポートは間に合いそうです。
0966デフォルトの名無しさんNGNG
>>954
(m-1)*(m-1) が桁溢れしなければ計算できるよ。
m が大きい場合はかけ算も同じように二進展開して計算するといい。
0967943NGNG
>>963
もう少し探してみます。どうもです。
0968デフォルトの名無しさんNGNG
最後の伸びが悪いな。
宿題こいやこいや〜。
0969デフォルトの名無しさんNGNG
Amazon で注文したあずまんが大王が先ほど届いたので、これから読もうと思います。
応援してください。
0970デフォルトの名無しさんNGNG
引き篭もりは篭れ!
0971デフォルトの名無しさんNGNG
>>969
やめとけ、今の君には刺激が強すぎる。
0972デフォルトの名無しさんNGNG
鼻血出ますた
0973デフォルトの名無しさんNGNG
入力されたタブを,次のタブストップまでのスペースをうめる適当な数の空白で置き換える
プログラムを書け。
タブストップの位置は,例えばn文字ごとというように固定して考えよ。

という問題なんですが,文章の意味をもう少し判りやすく説明してください。
0974デフォルトの名無しさんNGNG
「タブストップ」の意味はわかっているのか?
0975デフォルトの名無しさんNGNG
>>973
出題者にきけよ
0976デフォルトの名無しさんNGNG
日本語を噛み砕けというのは C/C++ の話じゃないと思うが・・・。

例えば 「タブ幅=4」 と設定された時に、

"a[\t]bc[\t]def[\t]ghij[\t]klmno[\t]pqrstu という文字列を、
"a   bc  def ghij    klmno   pqrstu" に展開しろという事だろ。
0977 NGNG
>>974
ただの\tじゃないんですか?
[\t]がタブストップ?
0978デフォルトの名無しさんNGNG
>>977
その通り。
[\t] は単に見やすく書いただけ
0979デフォルトの名無しさんNGNG
>>976
そういうことですか
\tの時に,
if(c[cnt]=='\t'){
printf(" ");
printf(" ");
printf(" ");
printf(" ");
}

という風に,表示するのをスペースにするものだと思っていました
文字列自体を変換するってことですか

いろいろとありがとうでした
0980デフォルトの名無しさんNGNG
>if(c[cnt]=='\t'){
>printf(" ");
>printf(" ");
>printf(" ");
>printf(" ");
>}
これだと条件が足りない。
ab[\t]cd
のとき、
abの後ろに、半角スペースが ’2個 ’ だから。
0981デフォルトの名無しさんNGNG
新スレ逝くの?
0982デフォルトの名無しさんNGNG
ねえ逝っちゃうよ?逝っていいの?ぬるぽ(((;゚∀゚)))ガクガクブルブル
0983デフォルトの名無しさんNGNG
>>976
アニキ
そのプログラムできませんでした・・・
教えて・・・
0984デフォルトの名無しさんNGNG
s1=strtok(" ",s);//hankaku'space'kugiri
space_of_long = 4-strlen(s1);
put(s1);
space_of_long bun space put...
?
0985デフォルトの名無しさんNGNG
TpTab
0986デフォルトの名無しさんNGNG
int main(void)
{
  const int tab_stop = 4;
  char buf[] = "a\tbc\tdef\tghij\tklmno\tpqrstu\t";
  char *p = buf;
  int col = 0;
  printf("\"%s\"\n", buf);
  putchar('\"');
  while(*p)
  {
    if(*p == '\t')
      do putchar(' '); while(col = (col + 1) % tab_stop);
    else
      putchar(*p), col++;
    p++;
  }
  putchar('\"');
  return 0;
}

strtok() だと最後のタブ文字が捕捉できないにょ
0987デフォルトの名無しさんNGNG
英小文字を英大文字に出力が作りたくて
以下のように組んだんですが、大文字がうまく変換されません。
どこがまずいでしょうか?

#include<stdio.h>

void change(char *a)
{
while (*a != '\0'){
if (0x61 <= *a <= 0x7a)
*a -= 32;

a++;
}
}

main()
{
char a[100];

printf("input words\n");
scanf("%s", a);

printf("%s\n", a);

change(a);
printf("%s\n", a);

return 0;
}
0988デフォルトの名無しさんNGNG
よくわからんが toupper() を使え。
0989デフォルトの名無しさんNGNG
>>987
よくわかるが toupper() を使え
0990デフォルトの名無しさんNGNG
#include <stdio.h>
#include <ctype.h>
int main(void)
{
  char buf[100], *p = buf;
  puts("input words");
  fgets(buf, sizeof(buf), stdin);
  fputs(buf, stdout);
  while(*p = toupper(*p)) p++;
  fputs(buf, stdout);
  return 0;
}
0991デフォルトの名無しさんNGNG
レス、有難うございます。

書き忘れていたんですが
ASCIIコードを使って変換しろということでした、すみません。

前述したプログラムを実行すると
英大文字も小文字と同様 -32されているようなので

if (0x61 <= *a <= 0x7a)

これがまずいのかなと考えてるんですが・・?
0992デフォルトの名無しさんNGNG
> ASCIIコードを使って変換しろ

その課題出した香具師、砲撃していいよ・・・
0993デフォルトの名無しさんNGNG
if (0x61 <= *a <= 0x7a)
↓
if (0x61 <= (unsigned char)*a <= 0x7a)
0994デフォルトの名無しさんNGNG
>>991
> if (0x61 <= *a <= 0x7a)

そういう書き方はできないよ。
if (0x61 <= *a && *a <= 0x7a)
0995デフォルトの名無しさんNGNG
a++している場所が悪 よく考えて
0996bloomNGNG

http://www.agemasukudasai.com/bloom/
0997デフォルトの名無しさんNGNG
>>991
激しく( ゚Д゚)マズーです
if (0x61 <= *a && *a <= 0x7a)
としなさい

<=は左結合演算子なので左から順に評価されます
0x61 <= *a <= 0x7a とすると
まず 0x61 <= *a が評価され
この時点で大文字も小文字も真になります
言い切れませんが真は大抵 1 なので
0x61 <= *a が 1 に置き換わり
その後に右の <= が評価されるので
1 <= 0x7a が評価されることになり
これも真となります。
結局 if (0x61 <= *a <= 0x7a) だと
大文字小文字どころか
0x61 <= *a が成り立てば
全部通ってしまいます
0998デフォルトの名無しさんNGNG
if ('A' <= *a && *a <= 'Z')
    *a = (*a - 'A') + 'a';
よく読んでないけど、こうすべきだと思ったのは俺だけか
0999デフォルトの名無しさんNGNG
次スレ立つまで書き込み禁止
漏れ立てられないからだれかヨロシク

>>993
おいおい
1000デフォルトの名無しさんNGNG


お前等C/C++なんて糞言語やってないでDelphiしろ! デルファイ!
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。