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

C/C++の宿題を片づけ作戦指令 30代目

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
おはようフェルプス君。
プログラミング能力がないにも関わらず授業を取った学生諸君が困り果てている。彼らは、いずれ単位を落とすだろう。
君の任務は持ち込まれる宿題を解き、質問者の窮状を救ったり足下を掬ったりすることだ。
例によって当局は一切関知しないからそのつもりで。
なおこのスレは1000まで達した後自動的に消滅する。

【注意点】 -------------------------------------------------
・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、全文を書きましょう。

・使用する言語(C/C++)や環境(CUI/ANSIとか
 GUI/Windows32bitAPI など)は必ず書きましょう。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。

・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
------------------------------------------------------------

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10】
0002デフォルトの名無しさんNGNG
29代目: http://pc5.2ch.net/test/read.cgi/tech/1090765027/
28代目: http://pc5.2ch.net/test/read.cgi/tech/1089974839/
27代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
14代目: http://pc5.2ch.net/tech/kako/1067/10671/1067175933.html
13代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
9代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
8代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
7代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
6代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
5代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
宿題手伝いますYO!!: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html
0003デフォルトの名無しさんNGNG
ZCurry
この擦れはム板に珍しくネタが洗練されてるな。
0004デフォルトの名無しさんNGNG
>>1
イイヨ イイヨ
0005デフォルトの名無しさんNGNG
>>1 乙
ウ〜ン、発想はオモシロイんだが、AA がないんだよなぁ…
0006デフォルトの名無しさんNGNG
推奨NGワードってどこにあったっけ?
0007デフォルトの名無しさんNGNG
早速Cの質問です。
「テキストファイルから2つの整数を読み込み、和、差、積、商、余りを表示し、
結果を別のファイルに書き込むプログラムを作れ」というものです。
よろしくおねがいします。
0008デフォルトの名無しさんNGNG
>>7
どんな形式で2つの整数が書いてあるんだ?

たとえば
7 2
とか
7
2
とか色々あるだろ
00097NGNG
>>8
上のような感じで横に並んでるようなのでおねがいします。
0010デフォルトの名無しさんNGNG
>>7
良くわからないけど,こんな感じ?
#include <stdio.h>
int main(int argc, char** argv)
{
FILE* in = fopen(argv[1], "rb");
FILE* out = fopen(argv[2], "wb");
int a, b;
while(fscanf(in, "%d%d", &a, &b) > 0) {
fprintf(stdout, "wa:%d\nsa:%d\nseki:%d\nshou:%lf\namari:%d\n",
a + b, a - b, a * b, (double)a / b, a % b);
fprintf(out, "wa:%d\nsa:%d\nseki:%d\nshou:%lf\namari:%d\n",
a + b, a - b, a * b, (double)a / b, a % b);
}
fclose(in);
fclose(out);
return 0;
}
00117NGNG
>>10
わかりました。
ありがとうございました。
0012デフォルトの名無しさんNGNG
>>1
なかなかいいな。
0013デフォルトの名無しさんNGNG
>>10
printf()系で%lf使うなボケ。
0014デフォルトの名無しさんNGNG
>>13
http://seclan.dll.jp/c99d/c99d08.htm#dt19991115
0015デフォルトの名無しさんNGNG
>>14
そう来ると思ったが、%lfと書くメリットはないな。
0016デフォルトの名無しさんNGNG
>>15
sscanfのときにdoubleなのにうっかり%fにしてしまうミスを防げる。
0017デフォルトの名無しさんNGNG
そもそもうっかりするな
0018デフォルトの名無しさんNGNG
C++での質問です。
テンプレートの例を作るのですが、

#include <iostream>

using namespace std;
//テンプレートの宣言、定義
template <class T>
T max(T x, T y){
return x + y;
}

int main(void){
int a=1, b=3, c;
double d=1.9, e=0.8, f;

//int型での呼び出し
c = max(a, b);

//double型での呼び出し
f = max(d, e);

cout << c << "\n";
cout << f << "\n";

return 0;
}

で、コンパイルができません。
どうしたら、できるのか教えてください。
0019デフォルトの名無しさんNGNG
コンパイラは何でエラーメッセージはどんなだ。

なんで加算するのにmaxなんだ。
0020デフォルトの名無しさんNGNG
>>18
俺んとこではコンパイルできたけど、C++にはmaxって関数が既にあるから
どこかでそのヘッダが組み込まれていて多重定義のエラーになっているんだと思う。
max→Maxだとどうなる?
002113NGNG
>>14
>15に同意。

>>16
printf()系とscanf()系の指定子が共通だと思っている時点で大間違い。
微妙に違うところがたくさんあるのだから別々に覚えればいい。
例えば、"%*d"における'*'の意味はそれぞれ全然違う。

>>17
同意。うっかりミスする香具師に限って、「今度から気をつけます」と言うよな。
#その挙句にまたミスをしたときに「気が付きませんでした」と言うわけだ。
##>16がそうかどうかは知らんが。
0022デフォルトの名無しさんNGNG
>>18
まずはその間違った名前を何とかしろ。

って書こうとしたら既に>20に書かれていた……_/ ̄|○
0023デフォルトの名無しさんNGNG
>>19,>>20,>>22
さん、どうもありがとうございました。
名前を変えたらコンパイルできました。

足し算だったらSUMでしたね。
0024デフォルトの名無しさんNGNG
>足し算だったらSUMでしたね。
・・・・・・まあこの場合、間違ってるとまでは言い切れないが・・・
0025デフォルトの名無しさんNGNG
sum 合計
add(ition) 加算
0026デフォルトの名無しさんNGNG
>>21
学生さんは「俺はうっかりしない」で構わないかもしれませんが、
仕事ではミスは起こりうるものとして防止策、対応策を講じるわけですよ。
難しくて分かりませんかね(´ー`)
0027デフォルトの名無しさんNGNG
話が読めない。

>>26は%lf派なのだろうか
0028デフォルトの名無しさんNGNG
普段から%lf使ってれば間違っても%lfで問題無いということを言いたいらしい
0029デフォルトの名無しさんNGNG
26 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/09 13:19
27 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/09 15:19
28 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/09 15:29
0030デフォルトの名無しさんNGNG
わかんなかったらint 21hでいいんでねーの?
0031デフォルトの名無しさんNGNG
ここでまだちん
0032デフォルトの名無しさんNGNG
宿題まだでつか?
0033デフォルトの名無しさんNGNG
C言語に関する質問です
キーボードから文字列を入力し、配列に保存する
その配列の中の、最初にAまたはBまたはCが出てくる位置(何文字目か)
を返す関数を作成し、その文字の種類によってAならばalpha、Bならばblavo、Cならばcharlie
と表示するプログラムを作れというものです。
よろしくおねがいします
0034デフォルトの名無しさんNGNG
>>33
#include <stdio.h>
#define SIZE 256
int abc(char* buf);
int main(void)
{
char buf[SIZE];
fgets(buf, SIZE, stdin);

switch(buf[abc(buf)]) {
case 'A': printf("alpha\n");
break;
case 'B': printf("blavo\n");
break;
case 'C': printf("charlie\n");
break;
}
return 0;
}
int abc(char* buf)
{
int i = 0;
while(buf[i] && buf[i] != 'A' && buf[i] != 'B' && buf[i] != 'C') { i++; }
return i;
}
0035デフォルトの名無しさんNGNG
わかりました
簡潔なプログラムありがとうございます
0036デフォルトの名無しさんNGNG
Cの質問です
「コマンドラインで指定したファイルを読み、その中に出てくるアルファベットの
各文字の文字数をカウントする。カウントした結果を文字種と文字数をメンバとして
持つ構造体に保存する。カウント結果をソートして、たくさんカウントされたものから
順に文字を表示する。」というものです
なお大文字・小文字は同一視して構いません
よろしくお願いします
0037デフォルトの名無しさんNGNG
>>36
#include <stdio.h>
#include <ctype.h>
#define SIZE 26
struct Character {
char c;
int count;
};
int main(int argc, char** argv)
{
FILE* in = fopen(argv[1], "rb");
struct Character array[SIZE], tmp;
int c, i, j;

for(i = 0; i < SIZE; i++) {
array[i].c = 'a' + i;
array[i].count = 0;
}
while((c = fgetc(in)) != EOF) { if(isalpha(c)) { array[tolower(c) - 'a'].count++; } }
for(i = 1; i < SIZE; i++) {
tmp = array[i];
for(j = i - 1; j >= 0 && array[j].count < tmp.count; j--) { array[j + 1] = array[j]; }
array[j + 1] = tmp;
}
for(i = 0; i < SIZE; i++) { printf("%c %d\n", array[i].c, array[i].count); }
fclose(in);
return 0;
}
0038デフォルトの名無しさんNGNG
>>37
わからないところが解決して助かりました
ありがとうございます
0039デフォルトの名無しさんNGNG
>>791
>メーカー側としても嬉しい流れとも取れるわけで、問題になることは普通ありえないです

ゲーム作成者の意図しない結果を導くセーブデータの改造は、ゲームの著作権(同一性保持権)を侵害して
いて違法、と言う判決がある(通称ときメモ高裁判決: http://www.softic.or.jp/YWG/reports/tokimemo2.html )
ので、「まず問題にならない」とか「普通ありえない」といいきれるほどリスクの無い行為ではないよ。

# まあでも、非営利目的の個人を訴えて来るかどうかは疑わしいけど。
004039NGNG
Σ(゚д゚lll) げ、誤爆したスマソ 
0041デフォルトの名無しさんNGNG
誤爆 乙
0042デフォルトの名無しさんNGNG
Cのリスト構造に関する質問です
0〜9までの数値をリスト構造のデータ構造(数値はdouble型)で保存し、
0〜9までの数値を昇順につながっているようにする
その状態からさらにキーボードより、0〜9までの実数を1つ読み込み、
数値の順序を乱さないようにリスト内に入力された数値をもつリストの要素を1つ追加する
そしてリストに入っているデータをリストの順に表示するというものです
よろしくお願いします
0043デフォルトの名無しさんNGNG
単方向、双方向
どっちですか
0044デフォルトの名無しさんNGNG
・・・あ。昇順/降順だから単方向だし('A`)
0045デフォルトの名無しさんNGNG
#include<stdio.h>

typedef struct list{
double value;
struct list* next;
}LIST;

void print(LIST *l){
if(l->next){
printf("%f\n",l->next->value);
print(l->next);
}
}

0046デフォルトの名無しさんNGNG
void add(LIST *l,double v){
LIST* temp;
if(!l->next || l->next->value>v){
temp=l->next;
l->next=(LIST*)malloc(sizeof(LIST));
l->next->value=v;
l->next->next=temp;
}
else{
add(l->next,v);
}
}

int main(void){
LIST l;
double d;

l.next=NULL;
while(1){
scanf("%lf",&d);
if(d<0)break;
add(&l,d);
print(&l);
}
}
0047デフォルトの名無しさんNGNG
用が終わったら、解放して欲しい・・・
ヒープごと解放されると分かっていても気分が・・・( ´・ω・`)
まぁ良いんだけど・・・
004845NGNG
じゃあ追加
つい GC のある言語の気分で書いてたよw

void listfree(LIST *l){
if(l->next){
listfree(l->next);
free(l->next);
}
}

int main(void){
LIST l;
double d;

l.next=NULL;
while(1){
scanf("%lf",&d);
if(d<0)break;
add(&l,d);
print(&l);
}
listfree(&l);
return(0);
}
0049デフォルトの名無しさんNGNG
>>45,>>46
構造体のポインタの使い方がよくわからなかったのですが
このプログラムを参考にして理解できました
ありがとうございました
0050デフォルトの名無しさんNGNG
そこでD言語ですわ
0051デフォルトの名無しさんNGNG
Cのリスト構造について度々質問です
コマンドラインから指定したファイルを読み込み
ファイル中の各行の文字列をデータとしたリスト構造で、読み込んだ
ファイルを扱えるようにする(リスト構造は双方向を用いる)
読み込んだ後でリストを順方向、逆方向に辿りつつ
データ(各行の文字列)を表示する(両方向とも)
さらにキーボードから指定した行番号の行を削除する
その後再度リストを順方向に辿ってデータを表示するというものです
よろしくおねがいします
0052デフォルトの名無しさんNGNG
>>51
一体それの何処が質問なの?
0053デフォルトの名無しさんNGNG
>>51
何が分からないかを書いてくれ話はそれからだ
0054デフォルトの名無しさんNGNG
所持金は最初500円で、じゃんけんして勝てば100円増え、負けたら100円減って所持金がマイナスになったら終了
というゲームをなるべく簡単なc言語で作ってください。
おねがいします。
005551NGNG
>>53
単方向のリスト構造はなんとかわかるのですが、双方向になると途端に
イメージがつかみにくくなりました。双方向ではどのようにリスト構造を記述
すればよろしいのでしょうか?
疑問点がわかりづらく申し訳ありません・・・
0056デフォルトの名無しさんNGNG
node *p, *q;

p->next = q;
q->prev = p;
0057デフォルトの名無しさんNGNG
>>56
ありがとうございます
これを足がかりになんとか作ってみます・・・
0058デフォルトの名無しさんNGNG
     ┌────┐┌────┐┌────┐
     |Node 1  ||Node 2  .||Node 3  |
NULL─┼・prev   ||   next・┼┼・prev   |
     |   next・┼┼・prev   ||   next・┼─NULL
     └────┘└────┘└────┘
図で描くとこんな感じか?
0059デフォルトの名無しさんNGNG
>>54
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int i, j, money = 500;
srand(time(NULL));

while(money => 0){
printf("所持金 %d円\n[0]グー [1]チョキ [2]パー ", money);
scanf("%d", &i); if(i < 0 || i > 2) i = 0;
j = rand() % 3;
printf("YOU = %s ", i == 0 ? "グー" : (i == 1 ? "チョキ" : "パー"));
printf("COM = %s\n\n", j == 0 ? "グー" : (j == 1 ? "チョキ" : "パー"));

if((i + 1) % 3 == j)
money += 100;
else if((j + 1) % 3 == i)
money -= 100;
}
printf("Game Over\n");
return 0;
}
006059NGNG
while(money => 0)って・・・俺バカバカ!

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int i, j, money = 500;
srand(time(NULL));
while(money >= 0){
printf("所持金 %d円\n[0]グー [1]チョキ [2]パー ", money);
scanf("%d", &i); if(i < 0 || i > 2) i = 0;
j = rand() % 3;
printf("YOU = %s ", i == 0 ? "グー" : (i == 1 ? "チョキ" : "パー"));
printf("COM = %s\n\n", j == 0 ? "グー" : (j == 1 ? "チョキ" : "パー"));
if((i + 1) % 3 == j)
money += 100;
else if((j + 1) % 3 == i)
money -= 100;
}
printf("Game Over\n");
return 0;
}
0061デフォルトの名無しさんNGNG
C言語で計算機のプログラムを作成せよ。補足説明もせよ。
という宿題です。お願いします。
0062デフォルトの名無しさんNGNG
>>61
#include <stdio.h>
int main(void) {
int i,j;
scanf("%d,%d",&i,&j);
printf("%d+%d=%d\n",i,j,i+j);
return 0;
}
0063デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>

int main()
{
    double n1, n2;
    char szTemp[256];
    printf("Input num[1] > ");
    fgets(szTemp, sizeof(szTemp), stdin), n1 = atof(szTemp);
    printf("Input num[2] > ");
    fgets(szTemp, sizeof(szTemp), stdin), n2 = atof(szTemp);
    printf("Input oparator > ");
    fgets(szTemp, sizeof(szTemp), stdin);
    switch(szTemp[0]){
        case '+':
            printf("%f + %f = %f\n", n1, n2, n1 + n2);
            break;
        case '-':
            printf("%f - %f = %f\n", n1, n2, n1 - n2);
            break;
        case '*':
            printf("%f * %f = %f\n", n1, n2, n1 * n2);
            break;
        case '/':
            printf("%f / %f = %f\n", n1, n2, n1 / n2);
            break;
        default:
            puts("Unknown operator!");
            break;
    }
    return;
}
0064デフォルトの名無しさんNGNG
int main
0065デフォルトの名無しさんNGNG
あれ・・・ミスってる。
return; → return 0;

警告出なかったから気づかなかったorz
0066デフォルトの名無しさんNGNG
>>63
ところで、インデントどうやってるの?
0067デフォルトの名無しさんNGNG
&nbsp;[半角スペース]&nbsp;[半角スペース]
0068デフォルトの名無しさんNGNG
>>67
                    ナルホド
006954NGNG
>>59
どうもありがとうございます
0070デフォルトの名無しさんNGNG
>>51
どうしても解らなかったら参照されたし。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=203
007151NGNG
>>70
ありがとうございます
参考にさせていただきます
0072デフォルトの名無しさんNGNG
C++
文字列の前後のスペースを除去する関数
string trim(string);
を作成せよ
0073デフォルトの名無しさんNGNG
>>72
#include <iostream>
#include <string>
#include <cctype>
using std::string;
using std::isspace;
string trim (string str)
{
  unsigned i = 0, j = str.length();
  while (isspace(str[i]))
    i++;
  while (isspace(str[j]))
    j--;
  str.resize(j);
  return string(str.c_str() + i);
}

int main(void)
{
  for (;;)
  {
    string str;
    std::cin >> str;
    std::cout << trim(str) << std::endl;
  }
  return 0;
}
もしisblankがあればisspaceよりもそれを使う方がいい鴨
0074デフォルトの名無しさんNGNG
>>73
ありがとうございました
0075デフォルトの名無しさんNGNG
環境はwindowsXPHome+cygwin+gccで言語はCです
宿題は次の通りです。

円の座標データから、最小二乗法により
円の方程式の係数を求める関数を作れ。
円の方程式は、y=(x-a)^2+(y-b)^2
ただし、引数は次のようにする

x[],y[]・・・円の(x,y)の座標データの入っている配列のポインタ
count・・・座標データの数
a・・・円の方程式のaの値
b・・・円の方程式のbの値

お願いします
0076デフォルトの名無しさんNGNG
C++です
文字列の結合のプログラムがうまく動きません。
エラーが出て終了してしまいます。

#include <iostream>
#include <string>

using namespace std;

int main(void){
char *str="def";
char *str2=(char *)malloc(128);
int na;

//文字列の結合
str2="abc";

strcat(str2 , str);

cout << str2 << "\n";

return 0;
}

どこがおかしいでしょうか?
0077デフォルトの名無しさんNGNG
strcpy(str2, "abc");
strcat(str2, str);
0078デフォルトの名無しさんNGNG
× str2="abc";

○ strcpy(str2, "abc");
0079デフォルトの名無しさんNGNG
ところで、malloc や strcat つかうなら

#include <cstdlib>
#include <cstring>
あたりを入れるべきじゃ?

逆に#include <string> はこのプログラムだと意味ない。
008076NGNG
ありがとうございます。

>>79さん
教科書には<string>とかいてあったのですが、
なくてもできました。

#includeはなんとなくおまじないみたいな感じで使っていたのでよくわかりません。
そのあたりのことについて詳しく紹介しているHPなどありましたら、
教えてください。
0081デフォルトの名無しさんNGNG
そんな教科書捨てちま・・・え無いんだろうな。家ではマトモな本読んだ方がいいぞ。
0082デフォルトの名無しさんNGNG
まぁ、あれだ。
C言語を学んどけ。
0083デフォルトの名無しさんNGNG
C++の前にCはやった方が良い
0084デフォルトの名無しさんNGNG
でも将来のことを考えると、 OOP を十分に習得するまでは C はやらないほうがいい。
0085デフォルトの名無しさんNGNG
誰も >>75 の問題には答えて上げられないのなw
問題がアレな感じもするけど
0086デフォルトの名無しさんNGNG
マジで
>y=(x-a)^2+(y-b)^2
y=なの?
(x-a)^2+(y-b-1/2)^2=b+1/4
0087デフォルトの名無しさんNGNG
>>75
>>86
円にならないだろ?
0088デフォルトの名無しさんNGNG
円にはなると思うけど…。
>(x-a)^2+(y-b-1/2)^2=b+1/4
は、(a, b+1/2)を中心とする半径√(b+1/4)の円。
008975NGNG
>>86-88
すいません
r^2=(x-a)^2+(y-b)^2
でした・・・
0090デフォルトの名無しさんNGNG
座標は
(x[i],y[i])なの?
(x[i],y[j])なの?
0091デフォルトの名無しさんNGNG
まぁマジレスすると

円の方程式を (x-a)^2+(y-b)^2=r^2 とする
誤差 dr を点から円への距離の差分とする。つまり dri = ((xi-a)^2+(yi-b)^2)^0.5 - r
dri^2 = (xi-a)^2+(yi-b)^2 - 2*r*((xi-a)^2+(yi-b)^2)^0.5 + r^2
この二乗の和を求める
S = Σdri^2 = Σ{(xi-a)^2+(yi-b)^2 - 2*r*((xi-a)^2+(yi-b)^2)^0.5 + r^2}
これを a , b , r で微分する
dS/da = -2Σxi + 2na -2rΣ((xi-a)/((xi-a)^2+(yi-b)^2)^0.5)
dS/db = -2Σyi + 2nb -2rΣ((yi-b)/((xi-a)^2+(yi-b)^2)^0.5)
dS/dr = -2Σ((xi-a)^2+(yi-b)^2)^0.5 + 2nr
dS/da = 0 , dS/db = 0 , dS/dr = 0 となる a , b , r が求める円の方程式の係数である。
方程式解くのはがんばれ

009275NGNG
>>90

>>91
サンクス!
今のところさっぱりだけどがんがってみる!
ちなみに式の中のnってなんなんでしょうか?
0093デフォルトの名無しさんNGNG
文字列結合ならアセンブラを使うがよろし
0094デフォルトの名無しさんNGNG
>>92
データ数じゃねぇの?
0095デフォルトの名無しさんNGNG
>>92
nには任意の定数が入ります
0096デフォルトの名無しさんNGNG
数学の宿題のスレではないよここは・・・
0097デフォルトの名無しさんNGNG
いや、俺学生だけど解いてあげるのが勉強になってちょうどいいわ
0098デフォルトの名無しさんNGNG
Cなんですが、実行中のファイルのコピーの仕方がよくわかりません
実行ファイルがa.exeだとして、それを実行すると、そこの一つ上のフォルダに、
その実行ファイルを別名(b.exeとか)にしてコピーしたいのですが、いまいちできません。

ttp://ja5ytd.hp.infoseek.co.jp/copy.html
ここを参考してみたんですが、実行ファイルだと空っぽのファイルしか作れませんでした。
お願いします。
0099デフォルトの名無しさんNGNG
ウイルス作る宿題かい?
0100デフォルトの名無しさんNGNG
いえ、できればそのディレクトリの中を全部上層にコピーしたあと、そのフォルダを削除したいんですが、
実行ファイルのみがうまくいかずに困っています。
0101デフォルトの名無しさんNGNG
>>100
バイナリモードでリード、ライトしてみては?
0102デフォルトの名無しさんNGNG
>>100
もしかして Windows 環境でやってない?

Windows では、たとえ実行時であっても OS が必要ないと思った実行ファイルの一部分は
いつでもメモリ上から捨てられ、ふたたび必要になった時に実行ファイルを読み直すという
動作をするので、実行中のファイルをいじらせてはくれないよ。

もしやるとしたら、全てのセグメント、リソースなどを PRELOAD, FIXED, NONDISCARDABLE
属性にするようにコンパイラに指示する (これによって実行ファイルの全部分が破棄禁止に
なる) か、もしくは二つの実行ファイルを作って交互に切り替えながら実行するしかないよ。
0103デフォルトの名無しさんNGNG
任意の数値を逆に並び替えるアルゴリズムを教えてください
1234→4321
852→258
ってな風に・・・

頭弱くて素でわからん
0104103NGNG
age忘れた
0105103NGNG
漏れが馬鹿すぎた・・・わかりました。すみません。
0106デフォルトの名無しさんNGNG
>>103-105
なかなか面白い奴だな。
0107デフォルトの名無しさんNGNG
何に使うか気になるけど
0108デフォルトの名無しさんNGNG
x+y(式A)、2x+5y(式B)に(x,y)=(10,2)(3.4)(4,1)をそれぞれ
代入するプログラムを作成せよ。ただし変数宣言「(x,y)のみのファイル」
と計算プログラムは別にし、あわせてmakefileも作成せよ。
また、filenema.exe -a の時は式Aのみの計算結果を、
filename -b の時は式Bの計算結果を表示できるようにせよ。

よろしくお願いします。
0109デフォルトの名無しさんNGNG
リンケージを意識させる問題とはいえ、ちょっとなぁ。
0110デフォルトの名無しさんNGNG
>>108
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=303&fi=no
makefileはgcc仕様で。
0111デフォルトの名無しさんNGNG
"pushd"入力することでディレクトリスタックへカレントディレクトを保存し、
"popd"を入力することでディレクトリスタックのトップに保存されている
ディレクトリに移動するプログラムを作成しているのですが、
どうしてもバグが発生してしまします。
プログラムが非常に長くて全部は書けないのですが


/*ディレクトリスタックを実現するための構造体*/
struct dirStack{
char *dirName; //保存されているディレクトリ名
struct dirStack *next; //次のdirStackへのポインタ
};

/*ディレクトリスタックのトップへのポインタ.初期値はNULL*/
static struct dirStack *dirStackTop;

/*pushdが入力されたとき以下の行が実行される*/
dirStackTop=Cmd_pushd(dirStackTop);

0112デフォルトの名無しさんNGNG
/*関数Cmd_pushd*/
struct dirStack *Cmd_pushd (struct dirStack *top){
struct dirStack *newTop;
char curName[256];
/*メモリの確保*/
if ((newTop=(struct dirStack *)malloc(sizeof(struct dirStack)))==NULL){
fprintf(stderr,"memory error!\n");
return;
}

getcwd(curName,sizeof(curName));//カレントディレクトリをcurNameに保存
/*以下の2行でバグ発生*/
newTop->dirName=(char *)malloc(sizeof(strlen(curName)+1));
strcpy(newTop->dirName,curName);

if (top!=NULL){
newTop->next=top;
}
return newTop;
}

ややこしくてすみません…。
0113デフォルトの名無しさんNGNG
バグの内容は?
0114デフォルトの名無しさんNGNG
>>112
newTop->dirName = (char *)malloc(sizeof(strlen(curName)+1));
sizeofいらね。
0115111NGNG
>>114
sizeofとったら上手くいきました。
メモリの割り当てのエラーだったみたいですね…。
どうもありがとうございました!
0116デフォルトの名無しさんNGNG
ちなみに、
sizeof(strlen(curName)+1)
の値っていくつ?
sizeof(size_t)
と一緒?
0117デフォルトの名無しさんNGNG
そうだね、返り血がsize_tだから。
0118デフォルトの名無しさんNGNG
エラーが出てコンパイルできません。
どうしてでしょう。
教えてください。

#include <iostream>
using namespace std;

class JOK{
private:
static int all_sum;
int num;
char *str;
public:
static int all_get_JOK();
JOK(char *asd);
};

int JOK::all_get_JOK(){
return all_sum;
}

JOK::JOK(char *asd){
this->num = all_sum;
all_sum++;
}

int main(){
class JOK *obj = new JOK("nekoneko");
cout << JOK::all_get_JOK() << "\n";

return 0;
}
0119デフォルトの名無しさんNGNG
エラーは

static.obj : error LNK2019: 未解決の外部シンボル "private: static int JOK::all_s
um" (?all_sum@JOK@@0HA) が関数 "public: static int __cdecl JOK::all_get_JOK(void
)" (?all_get_JOK@JOK@@SAHXZ) で参照されました。

です。
0120デフォルトの名無しさんNGNG
>>118
staticなメンバ変数は、宣言とは別に定義されなければならない。
int JOK::all_sum;

すれちがい。
0121デフォルトの名無しさんNGNG
>>118
ありがとうございます。
0122デフォルトの名無しさんNGNG
1から10000000までの数について、ある整数の2乗になっているものを全て示せ。

できるだけ早いコードが良いらしいです。
あらかじめ配列に答えを入れておいてそれを表示するだけ、とかはもちろんダメらしいです。
0123デフォルトの名無しさんNGNG
>>122
#include <stdio.h>
int main(void)
{
for(int i = 1; i < 3163; i++) printf("%d\n", i*i);
}
0124デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>

int main()
{
    int i
    const int max = sqrt(10000000);
    for(i = 1; i < max; i++) printf("%d\n", pow(i, 2));
    return 0;
}
0125124NGNG
訂正
正 i <= max
誤 i < max
0126デフォルトの名無しさんNGNG
なるほど 俺だったら真面目に解いたかも
出題者は >>123 の可能性を考えてないだろうなぁ
0127デフォルトの名無しさんNGNG
>>124
powの結果はキャストしろ。
0128122NGNG
ありがとうございました。なるほど発想を変えてみると良いんですね。でも、次の問題でまた詰まりました。
このシリーズの問題はこれが5問目で最後なのでどうかお願いします

整数(分かりやすいようにコンマが入ってます)
X,000,999 ・ X,001,998 ・ X,002,997 …… X,100,899 ……X,999,000 について
ある整数の2条になっているものを表示せよ。ただし、Xの部分には1-9の数字の時を考える。
0129デフォルトの名無しさんNGNG
>>128
#include <iostream>
#include <algorithm>
#include <vector>
int main(){
  std::vector<long> v;
  for(long i = 1; i * i <= 9999000; i++) v.push_back(i * i);
  for(long i = 0, k = 999; i <= 999; i++, k += 999 ){
    for(long j = 1; j <=9; j++){
      long n = k + j * 1000000;
      if(v.end() != std::find(v.begin(), v.end(), n))
        std::cout << n << std::endl;
    }
  }
  return 0;
}
0130デフォルトの名無しさんNGNG
>>129
longが32bitだとだめね。
__int64とかlong longとか、環境依存の型を使わないとか。
0131130NGNG
>>129
あ、悪い、あってるな。
for()の条件式にi*iなんて普通書かんから勘違いした。
0132デフォルトの名無しさんNGNG
>>128 C バージョン
#include <stdio.h>
#include <math.h>

int main()
{
long x;
long n;
long count = 0;
long amari;
long min;
long max;

for (x = 1; x < 10; x++) {
min = sqrt(x * 1000000) + 1;
max = sqrt((x + 1) * 1000000 - 999);
amari = (x*1000000) % 999;
printf("X = %ld :\n", x);

for (n = min; n <= max; n++) {
if ((n * n) % 999 == amari) {
printf("\t%ld\n", n*n);
count++;
}
}
}

printf("\n%ld found.\n", count);
}
0133デフォルトの名無しさんNGNG
Cでも書いてみた。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long *TBL;
int MAX_INDEX;
int b_search(long n){
  int m, l = 0, r = 3162;
  while(r - l > 1){
    m = (l + r) / 2;
    if(*(TBL + m) == n) return 1;
    if(*(TBL + m) > n) r = m; else l = m;
  }
  return 0;
}
int main(){
  long i, j, k, n;
  MAX_INDEX = sqrt(9999000);
  TBL = malloc(MAX_INDEX * sizeof(long));
  for(i = 0; i * i <= 9999000; i++) *(TBL + i) = i * i;
  for(k = 999; k <= 999000; k += 999){
    for(j = 1; j <= 9; j++){
      n = k + j * 1000000;
      if(b_search(n))  printf("%ld\n", n);
    }
  }
  free(TBL);
  return 0;
}
0134133NGNG
7行目、訂正

× int m, l = 0, r = 3162;
○ int m, l = 0, r = MAX_INDEX - 1;
0135デフォルトの名無しさんNGNG
>>133
やたらコアダンプすると思ったら
> TBL = malloc(MAX_INDEX * sizeof(long));
これ一要素分足りない
0136デフォルトの名無しさんNGNG
配列につっこむもの逆にすればかなり速くなるよ。
0137デフォルトの名無しさんNGNG
これの出力結果って何になる?
0138デフォルトの名無しさんNGNG
1974025
4774225
7958041
9678321
0139デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>

int main(){
    int max, i, j, tmp;
    for(j = 1, max = (int)sqrt(1999000); j <= 9; max = (int)sqrt(++j * 1000000 + 999000))
        for(i = (int)ceil(sqrt(j * 1000000 + 999)); i <= max; i++){
            tmp = (int)pow(i, 2);
            if(tmp / 1000 % 1000 + tmp % 1000 == 999)
                printf("%d\n", tmp);
        }
    return 0;
}

C版 兼 へたくそ版
0140デフォルトの名無しさんNGNG
> if(tmp / 1000 % 1000 + tmp % 1000 == 999)
の判定は tmp % 1000000 が 0 以外で 999 で割り切れるのと等価
0141デフォルトの名無しさんNGNG
今出てる回答って
「あらかじめ配列に答えを入れておいてそれを表示するだけ、
とかはもちろんダメらしいです。」
の条件クリアしてる?
0142デフォルトの名無しさんNGNG
>>141
禁止なのは

#include <stdio.h>

int main()
{
    int ansmap[] = {1974025, 4774225, 7958041, 9678321}, i;
    for(i = 0; i < 4; i++) printf("%d\n", ansmap[i])
    return 0;
}

こんなんじゃないか?
0143デフォルトの名無しさんNGNG
>>141 は慎重派の学生
0144デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>
int main(){
  int i, j, k, m, next;
  next = sqrt(1000999);
  m = next * next;
  for(i = 1000000; i <= 9000000; i += 1000000){
    for(j = 999; j <= 999000; j += 999){
      k = i + j;
      if(k == m){
        printf("%d\n", k);
      }
      else if(k > m){
        next++;
        m = next * next;
      }
    }
  }
  return 0;
}
0145デフォルトの名無しさんNGNG
訂正。
どっちでも答えは一緒だけど、厳密にはこっちが正しい。
#include <stdio.h>
#include <math.h>
int main(){
  int i, j, k, m, next;
  next = sqrt(1000999);
  m = next * next;
  for(i = 1000000; i <= 9000000; i += 1000000){
    for(j = 999; j <= 999000;){
      k = i + j;
      if(k == m){
        printf("%d\n", k);
      }
      else if(k > m){
        next++;
        m = next * next;
        continue;
      }
      j += 999;
    }
  }
  return 0;
}
0146デフォルトの名無しさんNGNG
<empfile.txt>
鈴木太郎,33
佐々木次郎,25

上記ファイルをカンマ区切りで読み込ませようとしているのですが、
そのように表示できません。どう変更したら良いでしょうか。

<目標とする画面表示>
名前:鈴木太郎 年齢:33
名前:佐々木次郎 年齢:25

<現状>
名前:鈴木太郎,33 年齢:0
名前:佐々木次郎,25 年齢:0
0147146NGNG
#include <stdio.h>
#include <stdlib.h>
struct LIST
{
  char name[20];
  int age;
}list[2];
void main(void)
{
  FILE *file_p;
  int i;
  file_p = fopen("empfile.txt", "r");//empfile.txtを読み込み。
  if(file_p == NULL)exit(1);
  i = 0;
  while(fscanf(file_p, "%s,%d", list[i].name, &list[i].age) != EOF)
    i++;
  for(i = 0; i < 2; i++)//構造体の内容を表示。
    printf("名前:%s 年齢:%d\n", list[i].name, list[i].age);
}
0148デフォルトの名無しさんNGNG
>>146
fscanf の %s は 非空白文字全てを読み込むため、
"," 毎読み込まれているようです。

対策としては、
1. ","(カンマ)ではなく" "(スペース)を区切り文字として使う
2. fscanf ではなく、 fgets & strtok 等を使う

例えばこんな感じ。
変更点のみ

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

char buffer[80];

while(!feof(file_p)){
fgets(buffer,80,file_p);
strcpy(list[i].name,strtok(buffer,",") );
list[i].age=atoi(strtok(NULL,","));
i++;
}
0149デフォルトの名無しさんNGNG
>>146
#include <stdio.h>
#include <stdlib.h>
struct LIST
{
char name[20];
int age;
}list[2];
int main(void)
{
FILE *file_p;
int i;
file_p = fopen("empfile.txt", "r");//empfile.txtを読み込み。
if(file_p == NULL)exit(1);
i = 0;
while(fscanf(file_p, " %[^,],%d", list[i].name, &list[i].age) != EOF)
i++;
for(i = 0; i < 2; i++)//構造体の内容を表示。
printf("名前:%s 年齢:%d\n", list[i].name, list[i].age);
return 0;
}

0150デフォルトの名無しさんNGNG
>>148
fgets の返り値を検査しないと EOF の時も strtok に突入しうる悪寒(汗
0151デフォルトの名無しさんNGNG
風邪でもひいたのか?
0152146NGNG
>>148
今まで、fscnaf以外の読み取り関数を避けていたので、
この機会に勉強します。
また、スペースを区切り文字として使う方法でも、成功しました。

ありがとうございます。

>>149
目標通りの表示が得られました。
ありがとうございます。

%[^,] これはどういう意味でしょうか。
はじめて見る書式です。
0153デフォルトの名無しさんNGNG
%[認識するキャラクタの集合]
%[^無視するキャラクタの集合]
0154デフォルトの名無しさんNGNG
>>152
http://www.linux.or.jp/JM/ の 『man on WWW』 のセクション 2,3 で検索すると、
大概の C の関数は載っているので、調べてみる事をおすすめする。
0155146NGNG
>>153
>>154

セクション3 scanf

>変換を示す % 文字

そうでした。まさに変換。
意味するところが飲み込めて来ました。
ありがとうございます。
0156デフォルトの名無しさんNGNG
"%[^,],%[^,],%[^,]"って感じで割りと使うのだけど、ファイルの方が

foo,bar,baz

ならいいけど

hage,,hoge

だと2番目が変換ミス(戻り値が1)になるんだよね。
0157デフォルトの名無しさんNGNG
age
0158デフォルトの名無しさんNGNG
sage
0159デフォルトの名無しさんNGNG
>>157
宿題がほしいのか?
まぁ、焦らずとも夏休み終了間際にはどっとくるでしょ。
0160デフォルトの名無しさんNGNG
多機能(各々に任す)計算機のプログラムを作成せよ。ソースの説明をせよ。
という問題の答えを教えていただきたいです。
0161デフォルトの名無しさんNGNG
言語は?
0162デフォルトの名無しさんNGNG
>>160
マルチ氏ねや
0163デフォルトの名無しさんNGNG
>>162
向こうで誘導されたんだと思われ。
0164160NGNG
C言語です
0165デフォルトの名無しさんNGNG
誘導されたとしても、移動を伝えてなければマルチだよな。
0166デフォルトの名無しさんNGNG
>>165
そうか?誘導された時点で向こうでは誰も答えないだろうから良いと思うんだが。
0167デフォルトの名無しさんNGNG
>>166
その誰も答えないという自信はどこから?
第三者からみて何も告げずにというのは関心できないと感じる
0168デフォルトの名無しさんNGNG
>>167
言い方が悪かった。誰も答えないと確信してる訳じゃない。
ただ、既に他の摺れに誘導された事を知って質問に答えるのは
回答者の酔狂であって、マルチと知って質問に答えるのと対した違いは無いから、
礼儀を尽くすに値しないんじゃないか、と言う事が言いたかった。

>第三者からみて何も告げずにというのは関心できないと感じる
俺はどうでも良いと感じる。
0169デフォルトの名無しさんNGNG
でもまぁ、一言くらい書いてもばちは当たらんな。
つーか、移動元スレだけ見ても移動したかどうかは判らんし。
0170デフォルトの名無しさんNGNG
c:\borland\bcc55\examples\stdlib\cpp1mepo.cpp(5) : warning C4508: 'main' : 関数に戻り値の型が指定されていません。戻り値を void 型と見なします。

できてるつもりなんですが、こんなのがでてしまいます
なぜなんでしょうか?
0171デフォルトの名無しさんNGNG
何が「出来てるつもり」なのか、説明してみろ
0172デフォルトの名無しさんNGNG
#include<iostream.h>
main()
{
cout<<"I am genius\n";
}

という単純なプログラムのはずなんですが
0173デフォルトの名無しさんNGNG
>>172
int main()...
0174デフォルトの名無しさんNGNG
スレ違い…と言おうと思ったが、コンパイラの吐いた警告すら
読めてないところを見るとこいつは日本語が読めないのか。
なら仕方ないな
0175デフォルトの名無しさんNGNG
>>170
void か int で return
0176170と同級生っぽwNGNG
進学校の高2の夏休みの宿題にいきなり

C++!

って。。。

PC持ってない人はどうするんだろうねw
変な冊子渡されたけど意味プーだしw

つか、上で質問してる文盲のやってるプログラムは
その冊子の1題目。

おまえももうちょっとがんばれよw
0177デフォルトの名無しさんNGNG
>>176
古い規格を習わされて御愁傷様。
0178デフォルトの名無しさんNGNG
>>176 ってかなりアフォっぽいっていうかアフォ
0179デフォルトの名無しさんNGNG
俺なんか、昔勝手に質問を他スレにコピペされ、
あらぬマルチ疑いをかけられ、回答して貰えなかった事あったなぁ・・・
0180デフォルトの名無しさんNGNG
そんなのは極希
0181デフォルトの名無しさんNGNG
>>172
cout<<"I am genius\n"; // この行がおかしい
0182デフォルトの名無しさんNGNG
うはあ、高校生マジで来てんの?
0183デフォルトの名無しさんNGNG
using namespace std;
0184デフォルトの名無しさんNGNG
>>183
iostream.h
0185デフォルトの名無しさんNGNG
C++での質問なんですが、
基底クラスで純枠仮想関数を作って、派生クラスでその関数の中身を書くじゃないですか。
それで、基底クラスでその仮想関数を呼ぶ事って出来るんでしょうか?
上にある関数を下から呼び出すことは出来るのでしょうか?
0186デフォルトの名無しさんNGNG
出来なきゃ意味が(ry
それに下にある関数を上からの間違いじゃないのか?
0187デフォルトの名無しさんNGNG
基底と言う言葉から下を連想したのではないだらうか。
0188デフォルトの名無しさんNGNG
あの、初心者なんですがC++のコードって変数宣言するときに
VBみたいに関数のはじめのほうで全部宣言しちまったほうがいいんですか?
{
 int A,B,C,D,E;
 char cA,cB,cC;
 ・・・;・・・;・・・;・・・;・・・;・・・;・・・;
 ・・・;・・・;・・・;・・・;・・・;・・・;・・・;
}

それとも
{
 int A;
 ・・・;
 int B;
 ・・・;
 int C;
 ・・・;
 int D;
 ・・・;
 char cA;
 ・・・;
 ・
 ・
 ・
 (略)
}
こんなふうにそのつど宣言したほうがいいんでしょうか?
どっちのほうが綺麗なコードになりますか?
0189デフォルトの名無しさんNGNG
>>188
C++ では途中で宣言出来る。

どっちがいいかは知らね。
漏れは無駄がなくなるように変数宣言は出来るだけ後回し。
そのほうが変数の意味も分かりやすくなるし。
0190デフォルトの名無しさんNGNG
>>186-187
上下なんて図示上の都合なんだから、どちらが上か下かなんて意味無いだろ
0191デフォルトの名無しさんNGNG
次のようなメンバを持つ構造体の、それぞれのメンバの相対アドレス(先頭のメンバ
のアドレスが0x0000となるように)を昇順で出力するプログラムを作成しましょう。

char c;
short s;
int i;
long l;

ファイル名 : lesson10.c

l : 0x0000
i : 0x0004
s : 0x0008
c : 0x000a

ーーーーーーーーーーーーーーーーーー
これをお願いします 
0192デフォルトの名無しさんNGNG
>>188
まとめて書きたがる香具師に限って関数が長くなる傾向があり、その変数が何者なのか不明になりがち。

それはさておき、君は事前に使う道具を全て揃えてから作業に取り掛かるのと、
必要になる都度道具を用意するのとどっちが好きかね。
0193デフォルトの名無しさんNGNG
>>191
#include <stdio.h>
#include <stdlib.h>
#define offsetof(s, m) ((char *) &(s).(m) - (char *) &(s))
int main(void)
{
struct {
long l;
int i;
short s;
char c;
} foo;
printf("l:%p\ni:%p\ns:%p\nc:%p\n", offsetof(foo, l), offsetof(foo, i), offsetof(foo, s), offsetof(foo, c));
return EXIT_SUCCESS;
}
0194デフォルトの名無しさんNGNG
error C2059: 構文エラー : '('
0195191NGNG
ありがとうございます
でもオレのレベルが低すぎてマクロが理解できません(´・ω・`)ショボーン
マクロ部分を関数内に展開?してくれませんか?ごめんなさい
0196デフォルトの名無しさんNGNG
マクロくらいこの機会に理解したらどうだよ?
0197デフォルトの名無しさんNGNG
昇順だと普通にやると環境依存になりがち
0198デフォルトの名無しさんNGNG
>>195
あー、(m)じゃなくてmのまんまじゃないと>194だった。
ついでによく見たらstddef.hにあるoffsetofマクロと仕様が違ってた。
マクロ定義を外して、
struct {
を
struct Foo {
に、
offsetof(foo, l)
を
offsetof(struct Foo, l)
にすれば通るはずだよ。
0199デフォルトの名無しさんNGNG
#include<stdio.h>
typedef struct mystruct{
char c; short s; int i; long long l;
}MYSTRUCT;
int main(void){
MYSTRUCT ms[2];
int index[4];
char p[]="csil";
char c;
int i,j,temp;
index[0]=((void*)&(ms[0].c))-(void*)&ms[0];
index[1]=((void*)&(ms[0].s))-(void*)&ms[0];
index[2]=((void*)&(ms[0].i))-(void*)&ms[0];
index[3]=((void*)&(ms[0].l))-(void*)&ms[0];
for(i=0;i<4;i++){
for(j=3;j>i;j--){
if(index[j]<index[j-1]){
temp=index[j];
index[j]=index[j-1];
index[j-1]=temp;
c=p[j];
p[j]=p[j-1];
p[j-1]=c;
}
}
}
for(i=0;i<4;i++)printf("%c:%04x\n",p[i],index[i]);
printf("size %04x\n",(void*)&(ms[1])-(void*)&ms[0]);
}
0200199NGNG
仕様に昇順でとあったからソートを入れておいたよ。
バブルソート入れると行数きつきつ。

long だとうちのコンパイラ(cygwin gcc)じゃ int と同じサイズの 4 ビットだから
long long 型 8 ビットにしてみた。double 型でも可。
たぶん出題者の意図はこっち。
構造体の中身の順序をいろいろ変えて試すと面白いと思うよ。
ついでにおまけも入ってるよ。
0201デフォルトの名無しさんNGNG
……………4bitって………


unsignedで0〜15までしか表せないじゃん
0202191NGNG
ありがとうございます
本当に助かりました(´Д⊂グスン
この機会にマクロを勉強してきます
0203188NGNG
必要になる都度道具を用意するタイプなのでそうしようと思イマス
0204デフォルトの名無しさんNGNG
やってしまった。
s/ビット/バイト
何やっているんだろう・・・・・。
0205デフォルトの名無しさんNGNG
まだ夏休みなんだろ。
みんな遊び呆ければいいのに。
0206191NGNG
>199さんの
char p[]="csil";
が理解できません
教えてください
0207デフォルトの名無しさんNGNG
スレ違い
つかそれがマジならそんな宿題やるレベルじゃねーだろ
0208デフォルトの名無しさんNGNG
>>206
可変長の文字列配列の初期化
実質的には
char p[5];
p[0]='c';
p[1]='s';
p[2]='i';
p[3]='l';
p[4]='\0';
といっしょ。
0209191NGNG
( ゚д゚)ハッ!
csilって文字列になにか意味があるって想ってしまいました
早とちりごめんなさい(´;ω;`)ウッ…
0210デフォルトの名無しさんNGNG
GNUとはなにか教えてください
0211デフォルトの名無しさんNGNG
GNU's Not Usable
0212デフォルトの名無しさんNGNG
#include <stdio.h>

main()
{
printf("GNU");
while(1)
printf(" is Not Unix");
}
0213デフォルトの名無しさんNGNG
>>210
がんもどき 煮込んだら 美味かった
ttp://www.sra.co.jp/public/doc/gnu/
0214デフォルトの名無しさんNGNG
なんで G なの?

ANU = ANU's Not Unix
BNU = BNU's Not Unix
CNU = CNU's Not Unix
DNU = DNU's Not Unix

何でもいいじゃん
0215デフォルトの名無しさんNGNG
XINU
XI = G
0216デフォルトの名無しさんNGNG
gnu: 野牛、ヌー
0217デフォルトの名無しさんNGNG
gnuぬヌーン
http://img.esbooks.co.jp/bks/images/i4/30597574.jpg
0218デフォルトの名無しさんNGNG
何故 XI = G なのかワカラン。
バカでスマソ。
0219デフォルトの名無しさんNGNG
>>218
XI(ズィー)とG(ヂー)
英語だと発音違うのにな
0220デフォルトの名無しさんNGNG
6番目のアルファベット
0221デフォルトの名無しさんNGNG
えっとちょっと疑問に思ったので質問なんですが

char Suzi[100];
double Result;
Suzi = "3.28"
Result = atof(Suzi);

こうすると
Result に 3.280000000002 が格納されてしまいます。
なぜ 3.280000000000 ではないのでしょうか?

//Suziの数によって右端が0だったり0じゃなかったりします・・・。
0222デフォルトの名無しさんNGNG
不動小数点数で表される数字は離散的だから
0223デフォルトの名無しさんNGNG
不動・・・orz
0224デフォルトの名無しさんNGNG
>>222
うーん、なにやら奥が深いんですね。
Result に 3.280000000000 というように正しい値が格納されるようにするには
どうすればいいですか?
0225デフォルトの名無しさんNGNG
double Result = 3.28;
0226デフォルトの名無しさんNGNG
>>221

char Suzi[100];
Suzi = "3.28"

これ変じゃないか?
いいの?
0227デフォルトの名無しさんNGNG
>>225
3.28は例なので任意の数字を指定できるようにしたいです。
>>226
すいません";"が抜けてました。
Suzi = "3.28";
です。
0228227NGNG
あー変の意味がわかりました。
char Suzi[] = "3.28";

こう書けば大丈夫でしょうか?
0229デフォルトの名無しさんNGNG
>>227
そういう意味かな
0230226NGNG
>>228
そういう意味です
0231 ◆Z0vd5w812U NGNG
>>224
二進数小数についてを調べるとよい。
で、有限長小数を丸め誤差なしで扱いたいなら文字列で管理する。
あとは、誤差なしで数値管理してくれるライブラリパッケージを使うとか。
0232218NGNG
>>219
なるほど、でもXIならどっちかというと「グィ」?
ん?って事はXINUはギニュー!?(特戦隊)

>>220
XI は 11 だと思います。
G は 7番目だと(ry
0233デフォルトの名無しさんNGNG
>>232
不覚にもギニューはつぼだった
0234デフォルトの名無しさんNGNG
>>232
英語の場合、X は S とか Z の発音する気が。
0235デフォルトの名無しさんNGNG
ASCII文字列の各文字を
小文字を大文字に
大文字を小文字に
どっちでもなければそのまま
に変換するコードをC++でかっこよく書くにはどうしたらいいですか?
<*.h> および <cctype> の類は #include しないで実装するにはどうしたらいいですか?
0236デフォルトの名無しさんNGNG
>>236
かっこよくかww
がんばれ↓
0237236NGNG
自分にレスってどうする on_
0238デフォルトの名無しさんNGNG
こんなのしか思いつきません
これじゃあ全然C++じゃないんだけどなにをどうしたらC++らしくなるのでしょう?

void henkan(char* target)
{
  static const char s = ( 'a' - 'A');
  for(char* t = target; *t; ++t){
    if(*t >= 'a' && *t <= 'z') {
      *t -= s;
    }
    else if(*t >= 'A' && *t <= 'Z') {
      *t += s;
    }
}
0239デフォルトの名無しさんNGNG
センスなさ杉
C++ どころか C すらやめたほうがいいよ
0240デフォルトの名無しさんNGNG
ガーン・・・>>239さんならどのようにしますか?
0241デフォルトの名無しさんNGNG
そもそも
>C++でかっこよく
><*.h> および <cctype> の類は #include しない
これがおかしいわけだが
0242デフォルトの名無しさんNGNG
どこらへんがおかしいのか良くわからないので教えてもらえないでしょうか?
0243デフォルトの名無しさんNGNG
かっこいいかどうかはしらんが、こんなんでどう?

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
struct UpperLower {
  void operator()(char &c){
    if(InRange(c, 'a', 'z'))
      c = c - 'a' + 'A';
    else if(InRange(c, 'A', 'Z'))
      c = c - 'A' + 'a';
  }
  bool InRange(int val, int a, int b){
    return val >= a && val <= b;
  }
};
int main(){
  string s = "absgd7382AHsufeAFDUE";
  cout << s << endl;
  for_each(s.begin(), s.end(), UpperLower());
  cout << s << endl;
  return 0;
}
0244デフォルトの名無しさんNGNG
char
to_upper_or_lower( char c )
{
    const char d = 'A' - 'a';
    char         r = c;

    if( c >= 'a' && c <= 'z' )
    {
        r += d;
    }
    else
    if( c >= 'A' && c <= 'Z' )
    {
        r -= d;
    }

    return r;
}

void
henkan( char* target )
{
    while( *target != '\0' )
    {
        *target = to_upper_or_lower( *target );
        target ++;
    }
}

普通にこれじゃダメなのか?
0245デフォルトの名無しさんNGNG
printf("ぬるぽ ぬるぽ オートラン♪\n");
printf("ヌルポ ヌルポ AutoRun♪ \n");
printf("ぬるぽ ぬるぽ オートラン♪\n");
printf("お前が踏まなきゃ誰が踏む!\n");
0246デフォルトの名無しさんNGNG
かっこよくだとか、ハック的な事を好むのは厨房までにしときなさい
0247デフォルトの名無しさんNGNG
はーい
ありがとうございました。
0248デフォルトの名無しさんNGNG
>>235

普通は以下のようなテーブルを作成して
テーブル参照一発で解決じゃないですか?

{
0x00, 0x01, 0x02, ...
0x10, 0x11, 0x12, ...
...
0x40, 0x61, 0x62, ...
0x70, 0x71, 0x72, ...
0x60, 0x41, 0x42, ...
0x50, 0x51, 0x52, ...
...
};
0249デフォルトの名無しさんNGNG
>>246
ん〜、でも
きれいなソース、読みやすいソースをめざして、
コーディング技術の向上に努めるのはいいことかもしれませんよ。
0250デフォルトの名無しさんNGNG
>>249
オレがいつ
>きれいなソース、読みやすいソースをめざして、
>コーディング技術の向上に努めるのはいいこと
こんな話したよ?
0251デフォルトの名無しさんNGNG
       _
    ミ∠_)
  ∧_∧/ \\
  ( ・∀/)   | | ガッガッガッガッガッガッ 
  (  つつ    | |
   Y  /ノ    人
    / )    <  >_∧∩
  _/し' //. V`Д´)/
  (_フ彡        /  ←>>245
0252デフォルトの名無しさんNGNG
int char_tbl[0xff + 1];
void init(void){
  int i;
  for(i = 0; i <= 0xff; i++) char_tbl[i] = i;
  for(i = 'a'; i <= 'z'; i++) char_tbl[i] += 'A' - 'a';
  for(i = 'A'; i <= 'Z'; i++) char_tbl[i] += 'a' - 'A';
}

void henkan(char *s){
  while(*s){
    *s = char_tbl[*s];
    s++;
  }
}
0253デフォルトの名無しさんNGNG
#include<algorithm>
#include<numeric>
#include<iostream>
#include<string>
#include<functional>
#include<vector>

int main()
{
 string s="This is a test.";

 vector<char> cmap(256);
 fill(cmap.begin()+1, cmap.end( ), 1 );
 partial_sum( cmap.begin( ), cmap.end( ), cmap.begin( ));
 swap_ranges( cmap.begin( )+'A', cmap.begin( )+'Z'+1, cmap.begin( )+'a' );
 transform( s.begin( ), s.end( ), s.begin( ), bind1st( mem_fun1_ref(&vector<char>::operator[]), cmap ));

 cout << s << endl;
}
0254デフォルトの名無しさんNGNG
>>253
そりゃ確かにすごくC++っぽいけれどもw
0255252NGNG
意味も無くクラス化してみたり。

#include <iostream>
class Henkan {
  int char_tbl[0xff + 1];
public:
  Henkan();
  char *operator()(char *s);
};
Henkan::Henkan(){
  for(int i = 0; i <= 0xff; i++) char_tbl[i] = i;
  for(int i = 'a'; i <= 'z'; i++) char_tbl[i] += 'A' - 'a';
  for(int i = 'A'; i <= 'Z'; i++) char_tbl[i] += 'a' - 'A';
}
char *Henkan::operator()(char *s){
  char *p = s;
  do{*p = char_tbl[*p];}while(*p++);
  return s;
}
int main(){
  char s[] = "abcd123EFGH456ijkl789MNOPQR";
  std::cout << Henkan()(s) << std::endl;
  return 0;
}
0256デフォルトの名無しさんNGNG
よし、次は継承とメンバシップで実装してみよう
0257248NGNG
なんでみんなロジックで実装するんだろう。
ちょっと寂しくなってきた。
0258デフォルトの名無しさんNGNG
>>257
宿題に飢えていて、ヒマだからです。
0259デフォルトの名無しさんNGNG
'a' 'b' …… 'z' が数値で順番に並んでいるとは限らないので
(順番に並んでいない文字コードも実際に存在する) 、
完全な移植性を求めるならテーブルでやるしかない

ロケールを考えるともっと大変
0260デフォルトの名無しさんNGNG
>>259
>>(順番に並んでいない文字コードも実際に存在する) 、
マジッスカ?Σ(゚д゚lll)
0261デフォルトの名無しさんNGNG
EBCDIC
0262デフォルトの名無しさんNGNG
ASCIIコードだし
0263デフォルトの名無しさんNGNG
宿題
0〜9までの10個の整数を重複がないよう、
randを用いてランダムに配列a[10]へと格納し配列aの内容を表示せよ。

0264デフォルトの名無しさんNGNG
>>263
#include <iostream>
#include <algorithm>

int
main()
{
    int i;
    int a[ 10 ];

    for( i = 0; i < 10; i ++ )
        a[ i ] = i;

    std::random_shuffle( &a[ 0 ], &a[ 10 ] );

    for( i = 0; i < 10; i ++ )
        std::cout << a[ i ] << " ";

    return 0;
}
0265デフォルトの名無しさんNGNG
>>264
randつかってなーい
0266デフォルトの名無しさんNGNG
rand を用いていないので 0 点
0267デフォルトの名無しさんNGNG
>>265-266
ワロタ
0268デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
int main( void ) {
int a[]={0,1,2,3,4,5,6,7,8,9};
int i;
for ( i = 0; i < 50; i++ ) {
int x = rand() % 10;
int y = rand() % 10;
if ( x != y ) { int t = a[y]; a[y] = a[x]; a[x] = t; };
}
for ( i = 0; i < 10; i++ ) printf( "%d\n", a[i] );
return 0;
}
0269デフォルトの名無しさんNGNG
#include <iostream>
#include <algorithm>

int
main()
{
    int i;
    int a[ 10 ];

    std::fill( &a[ 0 ], &a[ 10 ], -1 );

    for( i = 0; i < 10; ++ i )
    {
        int idx;

        do
        {
            idx = rand() % 10;
        }
        while( a[ idx ] != -1 );

        a[ idx ] = i;
    }

    for( i = 0; i < 10; ++ i )
        std::cout << a[ i ] << " ";

    return 0;
}
0270デフォルトの名無しさんNGNG
>>268
もしだよ仮にありえないかもしれないけど
50回xとyに同じ値が入ったらどうすんの?
0271デフォルトの名無しさんNGNG
>>270

それも一つのランダムじゃないか
0272263NGNG
>>264,268,269さま
ありがとうございました!
0273デフォルトの名無しさんNGNG
>>269
結果が出てくるまでの時間が一定じゃないんですけど・・・
0274デフォルトの名無しさんNGNG
>>273
リスト構造に0から9までの数字を入れておいて、
「先頭のノードをrand()%10番目に挿入」をn回繰り返せば
一定にならんかな?誰かコードヨロ。
0275デフォルトの名無しさんNGNG
バグがあったらスマソ(改行増えるのでfreeは省略)

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

#define NUMBER_COUNT 10
#define SHUFFLE_COUNT 50

struct lst {
  struct lst *next;
  int val;
};

int main(int argc, char **argv)
{
  struct lst *top, *cur;
  int i;

  for(i = 0; i < NUMBER_COUNT; i++){
    struct lst *lp = (struct lst *)malloc(sizeof(lst));
    lp->next = NULL;
    lp->val = i;
    if(i){
      cur->next = lp;
      cur = lp;
    }else{
      top = cur = lp;
    }
  }
0276デフォルトの名無しさんNGNG

  srand((unsigned int)time(NULL));

  for(i = 0; i < SHUFFLE_COUNT; i++){
    int r = rand() % NUMBER_COUNT;
    int j;
    for(j = 0, cur = top; j < r; j++, cur = cur->next) {}
    if(j){
      struct lst *tmp = top;
      top = top->next;
      tmp->next = cur->next;
      cur->next = tmp;
    }
  }

  for(cur = top; cur; cur = cur->next){
    printf("%d\n", cur->val);
  }

  return 0;
}
0277デフォルトの名無しさんNGNG
>>275-276
for(j = 0, cur = top; j < r; j++, cur = cur->next) {}

ここが一定時間にならない ... orz
0278デフォルトの名無しさんNGNG
>>268から
>for ( i = 0; i < 50; i++ ) {
>int x = rand() % 10;
>int y = rand() % 10;
>if ( x != y ) { int t = a[y]; a[y] = a[x]; a[x] = t; };
>}
を以下に変更する。
for ( i = 0; i < 10; i++) {
int x = rand() % 10;
if ( x != i ) { int t = a[i]; a[i] = a[x]; a[x] = t; }
}
こんなもんでいいんじゃない?
0279デフォルトの名無しさんNGNG
計算時間の大小が多少あるけれど。

#define TABLE_MIN 0
#define TABLE_MAX 9
#define TABLE_COUNT (TABLE_MAX - TABLE_MIN + 1)
int main(void)
{
int iIndex;
int iSet;
int iTable[TABLE_COUNT];
int a[TABLE_COUNT];

srand( (unsigned int)time( NULL ) );
for ( iIndex = 0; iIndex < TABLE_COUNT; iIndex++ ) iTable[iIndex] = iIndex + TABLE_MIN;
for ( iSet = 0; iSet < TABLE_COUNT; iSet++ ) {
iIndex = (int)((double)rand() / (double)(RAND_MAX + 1) * (double)(TABLE_COUNT - iSet));
a[iSet] = iTable[iIndex];
for ( ; iIndex + 1 < (TABLE_COUNT - iSet); iIndex++ ) iTable[iIndex] = iTable[iIndex + 1];
}
for ( iIndex = 0; iIndex < TABLE_COUNT; iIndex++ ) printf("a[%d] = %d\n", iIndex, a[iIndex]);
return 0;
}
0280デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM 10

int main()
{
    int iFlg[NUM], a[NUM], i, r;

    srand((unsigned)time(NULL));
    for(i = 0; i < NUM; i++) iFlg[i] = 0; /* 初期化 */
    for(i = 0; i < NUM; i++){
        for(; iFlg[r = rand() * NUM / (RAND_MAX+1)];); /* 空きを検索 */
        iFlg[r] = 1; /* フラグを立てる */
        a[i] = r;
    }
    for(i = 0; i < NUM; i++) printf("%d\n", a[i]);
    return 0;
}
0281280NGNG
うわ、やり方変えたときの跡がある・・

for(; iFlg[r = rand() * NUM / (RAND_MAX+1)];);
↓
while(iFlg[r = rand() * NUM / (RAND_MAX+1)]);
0282デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#define N 10
main(){
  int a[N], i,j;
  for(i = 0; i < N; i++)
    a[i] = i;
  srand(time(NULL));
  for(i = 0; i < N; i++){
    j = rand() % N;
    if(i == j) continue;
    a[i] ^= a[j] ^= a[i] ^= a[j];
  }
  for(i = 0; i < N; i++)
    putchar('0' + a[i]);
  return 0;
}
0283デフォルトの名無しさんNGNG
a[i] ^= a[j] ^= a[i] ^= a[j];
なにやってるの?
って一応聞いてあげる。
0284デフォルトの名無しさんNGNG
>>283
読めないの?そのままじゃないか
0285282NGNG
てかさ、普通に見やすくないこれ?
スワップのときは普通にいいと思うんだけど、世間じゃトリッキーコードとか抜かすやつ多い。
0286デフォルトの名無しさんNGNG
トリッキー云々以前に、
これは未定義だろうが、ぼけ!
って一応突っ込んであげる。
0287デフォルトの名無しさんNGNG
おまいら釣られすぎですよ
0288デフォルトの名無しさんNGNG
って一応注意してあげる。
0289デフォルトの名無しさんNGNG
マジ未定義?
じゃぁ、これでがまんするか。

a[i] ^= a[j]; a[j] ^= a[i]; a[i] ^= a[j];
0290デフォルトの名無しさんNGNG
もし、i == j (ry
0291デフォルトの名無しさんNGNG
if(i == j) continue;
が見えないのかと小一時間(ry
0292デフォルトの名無しさんNGNG
魚が釣りを覚えたのか?
入り乱れてて訳がわからなくなりそうだ。
0293デフォルトの名無しさんNGNG
って一応困ったふりをしてあげる。
0294デフォルトの名無しさんNGNG
一気に糞スレ化
0295デフォルトの名無しさんNGNG
a[i] = a[j] - a[i];
a[j] -= a[i];
a[i] += a[j];

んじゃこれ
0296デフォルトの名無しさんNGNG
>>294
宿題が提出されないから
0297デフォルトの名無しさんNGNG
「<a href="〜">〜</a>」という内容が含まれた文の〜部分を、
それぞれ変数に格納せよ。〜はURLとして妥当であり、関数は
sscanfを用いるものとする。
0298デフォルトの名無しさんNGNG
age
0299デフォルトの名無しさんNGNG
sscanf だけでそのような高度なことが出来るのでしょうか
0300デフォルトの名無しさんNGNG
grep
0301デフォルトの名無しさんNGNG
>>297
できればCでつくってほしー
0302デフォルトの名無しさんNGNG
sscanf(start, "<a href=\"%[^\"]\">%[^<]</a>", url, linked);ではだめ?
0303デフォルトの名無しさんNGNG
ほんとうはこれでは不完全だけどガマンしろ

#include <stdio.h>
#define SIZE 1024
int main( void )
{
char buf[SIZE];
while ( fgets(buf, SIZE,stdin) != NULL ) {
char a[SIZE],b[SIZE];
sscanf( buf, "<a href=\"%[^\"]\">%[^<]</a>", a, b );
printf( "%s\n%s\n", a, b );
}
return 0;
}
0304デフォルトの名無しさんNGNG
2つのテキストファイルを読みこみ
両方に共通する文字列で最も長いものを出力する
プログラムを作成せよ

おながいします
0305デフォルトの名無しさんNGNG
>>304
引数にファイル2つ指定しる。
#include <iostream>
#include <fstream>
#include <string>
#include <set>
int main(int argc, char *argv[])
{
    std::ifstream f1(argv[1]), f2(argv[2]);
    std::set<std::string> v;
    int maxLen = 0;
    std::string s, maxStr;
    for (std::string s; f1 >> s, !f1.eof(); v.insert(s)) ;
    while (f2 >> s, !f2.eof()) {
        std::set<std::string>::const_iterator i = v.find(s);
        if (i != v.end()) {
            if (i->length() > maxLen) {
                maxLen = i->length();
                maxStr = *i;
            }
        }
    }
    std::cout << maxStr;
    return 0;
}
0306304NGNG
>>305
すいません説明不足でした
2つのファイルは両方とも普通の (英文の) 文章が入っています
ですから、問題の趣旨としては、それぞれのファイルの全内容を比較して
一致する最も長い部分探せ、とのことのようです
再度よろしくですm(。_。 )m
0307デフォルトの名無しさんNGNG
diff みたいなのを作れってことでしょ?
0308デフォルトの名無しさんNGNG
>>306
文字単位でなく、単語単位での一致チェック。
#include <iostream>
#include <fstream>
#include <vector>
int main(int argc, char *argv[]) {
    std::ifstream f1(argv[1]), f2(argv[2]);
    std::vector<std::string> v1, v2;
    std::string s;
    while (!f1.fail()) { f1 >> s; v1.push_back(s); if (f1.eof()) break; }
    while (!f2.fail()) { f2 >> s; v2.push_back(s); if (f2.eof()) break; }
    std::vector<std::string>::const_iterator i1s = v1.end(), i1e = v1.end(), i2s, i2e, i;
    int len;
    for (i2s = v2.begin(); i2s != v2.end(); i2s++)
        for (i2e = i2s; i2e != v2.end(); i2e++)
            if ((i = search(v1.begin(), v1.end(), i2s, i2e + 1)) != v1.end())
                if ((len = i2e + 1 - i2s) > i1e - i1s) i1e = (i1s = i) + len;
    for (i = i1s; i != i1e; i++) std::cout << *i << " ";
    std::cout << std::endl;
    return 0;
}
0309デフォルトの名無しさんNGNG
すみません。ちょっと解らない所があって・・・

http://www.tcp-ip.or.jp/~ikken/cpp/txt/o3.C.txt ・・・のサイトなんですが、
グローバルで動的にオブジェクト宣言している”CC”の配列の所なんですが、
コレ以降にあるCircleのメンバ関数を使う時に、なぜ’->’アロー演算子ではなく、
'.'ドット演算子なんでしょうか?
0310デフォルトの名無しさんNGNG
>>309
CC[0] = *(CC)
CC[2] = *(CC+2)

0311デフォルトの名無しさんNGNG
cc->set
(*cc).set
cc[0].set

上の3つは同じ意味
0312デフォルトの名無しさんNGNG
>>304
ttp://lecture.ecc.u-tokyo.ac.jp/~yamaguch/pub/cp2-10/LCS.html
これをしろということ?
0313デフォルトの名無しさんNGNG
>>263
制作者は分かっているのだろうけど、>>268 や >>282 のような置換えの場合、
配列の要素数が奇数の時にランダム性に偏りが生じます。(証明略)
(今回は 要素数 = 10、つまり偶数なので問題ない。)
ソフトを改造して使用する場合は注意してください。
0314309NGNG
310さん、311さん
ありがとうございました☆
理解できました!
0315313NGNG
ごめん、嘘書いた。
入れ替えランダムの場合、要素数 = 3以上の場合ランダム性に偏りが生じる。
0316デフォルトの名無しさんNGNG
>>315
同一の元パターンに対する二要素間の入れ替え操作の繰り返しでは、奇数回入れ替えで生成
できるパターンと偶数回入れ替えで生成できるパターンに共通のものがないって言う話?
0317デフォルトの名無しさんNGNG
>>316
>>282 を例に取らせて頂きます。
要素数 n のうちの 2 要素を入れ替える作業を x 回行う場合、n の x 乗個の答えが生成されるワケですが、(同じ要素同士で入れ替えない場合も1回置換えと数える)
要素数 n の最終的な組み合わせは n! 個しかありません。
そして、n >= 3 の場合、n の x 乗 は n! で割り切れません。
今回の場合、10 の 10 乗 = 10000000000、10! = 3628800 となり
10000000000 / 3628800 = 2755.731922
となり、偏りが生じている事が解ります。
0318313、317NGNG
なお、rand() 関数から 0 〜 9 の乱数を発生させる場合の偏りは今回考慮していません。

// ramd()関数自体の偏りを無くす演算
#define N 10

int i, r;
for (i = 0, r = 0; i < N; i++) r = (r + rand() * N / (RAND_MAX + 1) + i) % N;
0319デフォルトの名無しさんNGNG
>>317
で、それはどういう並びが多くなるの?
「要素数 n のうちの 2 要素を入れ替える作業を x 回行う」作業をn!回行う時は偏りがあるの?

あと、>>318は (rand() * N / (RAND_MAX + 1) ) == 0 だと思うんだけど。
0320デフォルトの名無しさんNGNG
関数y=sin*x(区間0<x<90℃,0<y<1)の原点から数えてyが20%と80%
(つまりy=0.2と0.8)のときのy=sin*xとの交点におけるxの値を
それぞれ求め、以下の式からaの値を求めるプログラムを作成せよ。

y=5x+4xy+2a  よろしくお願いします。



0321デフォルトの名無しさんNGNG
0<χ<90℃


・・・・・摂氏・・・
0322デフォルトの名無しさんNGNG
#include<stdio.h>だけ使って
getcharを用いて、ポインタを使って逆から表示せよ。
まったくわかりませぬ・・・。



0323デフォルトの名無しさんNGNG
>>320
#include<stdio.h>
#include<math.h>
#define PI 3.1415926535897932
int main(void){
double y[2];
double x,a;
int i;
y[0]=0.2;
y[1]=0.8;
for(i=0;i<2;i++){
x=asin(y[i])/PI*180;
a=0.5*(y[i]-5*x-4*x*y[i]);
printf("x=%.6f\ny=%.6f\na=%.6f\n",x,y[i],a);
}
}
たぶん仕様は満たしてるよ。
ところで
y=5x+4xy+2a
に何か数学的若しくは物理的な意味があるのか?
0324デフォルトの名無しさんNGNG
>>322
その問題の仕様が
まったくわかりませぬ・・・。

課題全文掲載汁話はそれからだ。
0325デフォルトの名無しさんNGNG
>>322
多分こんなかんじ?
#include <stdio.h>
int main(){
  char buf[512], *p;
  p = buf;
  fputs("input  > ", stdout);
  while('\n' != (*p++ = getchar()));
  fputs("result > ", stdout);
  for(p -= 2; p >= buf; p--) putchar(*p);
  return 0;
}
0326325NGNG
バッファオーバフローしない様にしました。
#include <stdio.h>
int main(){
  char buf[512], *p;
  int i;
  p = buf;
  fputs("input  > ", stdout);
  for(i = 0; i < sizeof(buf); i++){
    *p = getchar();
    if(*p == '\n' || *p == '\0' || *p == EOF) break;
    p++;
  }
  fputs("result > ", stdout);
  for(--p; p >= buf; p--) putchar(*p);
  return 0;
}
0327デフォルトの名無しさんNGNG
>>325-236 はどうでもいいが、
>>323 の返事が気になる。
0328デフォルトの名無しさんNGNG
322と似たような問題よろしいでしょうか
大文字は小文字に、小文字は大文字に変換して出力せよ。
ただし、関数は2つ以上作成し、英文字以外はそのまま出力
また、標準ヘッダファイルのみで作成せよ。
0329デフォルトの名無しさんNGNG
>>328
>>235
0330デフォルトの名無しさんNGNG
>>328
上の例をちょっと改造することすら出来ないほど無能なのなら今後の身の振り方を考えた方がよい
0331デフォルトの317ではない名無しさんNGNG
>>319
>282 方式三要素の場合:
パターン分布
取りうるパターンは a)123 b)132 c)213 d)231 e)312 f)321 これを用いて初期状態を行列で表すと
(1 0 0 0 0 0) …A

入れ替え操作は
一回目 [0]<->[0] [0]<->[1] [0]<->[2]
二回目 [1]<->[0] [1]<->[1] [1]<->[2]
三回目 [2]<->[0] [2]<->[1] [2]<->[2]
よって全パターン間の置換確率行列は (手計算が間違ってなければ)
     /4 5 5 5 4 4\
     | 5 4 4 4 5 5 |
3^-3* | 5 5 4 5 4 4 | …B
     | 4 4 5 4 5 5 |
     | 5 5 4 4 4 5 |
     \4 4 5 5 5 4/
分布は A*B=(4 5 5 5 4 4)/27 (行列の各要素がそれぞれ a〜f の場合に対応)

3要素では奇数回置換しているので、奇数回置換で生成できるパターンになる可能性が、偶数回
置換で生成できるパターンになる可能性より少しだけ大きい
0332デフォルトの317ではない名無しさんNGNG
>268 方式三要素の場合:
1.パターン分布
取りうるパターンは a)123 b)132 c)213 d)231 e)312 f)321 これを用いて初期状態を行列で表すと
(1 0 0 0 0 0) …A
入れ替え操作は
[0]<->[0]:1 [0]<->[1]:2 [0]<->[2]:2 [1]<->[1]:1 [1]<->[2]:2 [2]<->[2]:1
よって全パターン間の置換確率行列は
    /3 2 2 0 0 2\
    | 2 3 0 2 2 0 |
9^-1* | 2 0 3 2 2 0 | …B
    | 0 2 2 3 0 2 |
    | 0 2 2 0 3 2 |
    \2 0 0 2 2 3/
n回置換での分布は A * B^n。
n=1: 9^-1* (3 2 2 0 0 2)
n=2: 9^-2* (21 12 12 12 12 12)
n=3: 9^-4* (1161 1080 1080 1080 1080 1080)
2.各要素の追跡
前述の入れ替え操作より、それぞれの桁の置換確率行列は (以下行列の括弧省略)
     5 2 2
9^-1* 2 5 2    …C
     2 2 5
よって、例えば a[0] の要素の n 置換後の分布は (1 0 0) * C^n
C^2:          C^4:
    33 24 24       2241 2160 2160
9^-2* 24 33 24   9^-4* 2160 2241 2160 ……
    24 24 33       2160 2160 2241
各要素は元の位置にいる確率が少し高い。置換対象をランダムに選ぶ限り、
偏りは残り続けると予想。
# 置換回数と対象をうまく制限すれば、例えば >282 で j=i+(rand()%(N-i));
# などとすれば置換が原因の偏りを無くすことができる場合もある
0333デフォルトの名無しさんNGNG
>>319
> で、それはどういう並びが多くなるの?

不定です。並び替えの回数によって変化します。
並び替えの回数が少ないほど偏りが大きくなり、並び替えの回数が多いほど偏りが小さくなります。

> 「要素数 n のうちの 2 要素を入れ替える作業を x 回行う」作業をn!回行う時は偏りがあるの?

それは答えの数(パターン)が n の n! 乗になり、結局のところ n >= 3 の場合 n! で割り切れません。

> あと、>>318は (rand() * N / (RAND_MAX + 1) ) == 0 だと思うんだけど。

rand()関数は 0 〜 RAND_MAX までの値を返します。例えば rand() を RAND_MAX に置換えると
(RAND_MAX * N / (RAND_MAX + 1) ) となり N - 1 という値が返ります。(N > 0)
なお、>>318 の式は「// ramd()関数自体の偏りを無くす演算」と書いてありますが、
偏りが小さくなるだけでなくなりはしませんでした。
0334322NGNG
すみません。
322です。
325さんのソースで大体は理解できたんですが
fputsを使わない場合だとどうなるのでしょうか?
0335デフォルトの名無しさんNGNG
-32768〜32767の数値を
入力し、10進文字列に変換し出力するプログラムを作成せよ。
ただし、文字列に変換する部分は関数とすること。
以下のようにして関数部分を作成。

#include<stdio.h>
void inttod(int dec,char*str);
main(){
int num;
char str[7];

printf("input:");
scanf("%d,&num");

inttod(num,str);

printf("resulr:%s\n",str);
}
0336デフォルトの名無しさんNGNG
とりあえず、scanfから勉強してこい
0337335NGNG
あぁすみません
scanf("%d",&num);
でした。
申し訳ありません。
0338デフォルトの名無しさんNGNG
void inttod(int dec,char*str)
{
    int i, n;
    if(dec < 0){
        dec = -dec;
        *str++ = '-';
    }

    for(i = 1, n = 10; dec >= n; i++, n *= 10);
    for(n /= 10; i; i--, n /= 10) *str++ = dec / n % 10 + '0';
    *str = '\0';
    return;
}
0339デフォルトの名無しさんNGNG
void inttod(int dec,char*str){
    sprintf(str, "%d", dec);
    return;
}
0340デフォルトの名無しさんNGNG
xy座標にある関数でない集合の二点A、Bを結んだ直線とy=5との交点を求めよ。
点A=(任意,y<5)、B=(任意,y>5)とする。
0341デフォルトの名無しさんNGNG
↑そんなもの数学の範疇だろう
0342デフォルトの名無しさんNGNG
1の二乗+2の二乗+3の二乗+……+nの二乗が2000を超えるときのnの値と、そのときの合計を求めるプログラムを作りなさい。
while文を使う事。
�@ 1の二乗、2の二乗、……、nの二乗を計算するための変数と、合計を格納する変数を宣言する。
�A 合計が2000以下の間、nの値を1ずつ増やしながらnの二乗を合計に加え、合計が200を超えたら、繰り返しを終了し、そのときの合計とnの値を出力する。

よろしくお願いします
0343デフォルトの名無しさんNGNG
>>342
#include<stdio.h>
int main(){
int n = 1, sum = 0;
while(sum <= 2000){
sum += n * n;
n++;
}
printf("n=%d 合計=%d\n", n-1, sum);
return 0;
}
0344デフォルトの名無しさんNGNG
>>340
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=204
ホレ
0345デフォルトの名無しさんNGNG
>>342
#include <stdio.h>
#define power_n(n) ((n)*(n))
main()
{
int sum = 0, n = 0;
while (sum <= 2000 && ++n) sum += power_n(n);
printf("sum = %d\nn = %d\n", sum, n);
}

sum=2109, n=18
0346342NGNG
>>343
有難うございます。
でも、実行したらnが18になってしまいました。18の二乗は324なんですけど、表示結果は2109となっています。
2000を超えるnの値は45にならないと駄目だと思いますが、訂正してもらえますか?
0347デフォルトの名無しさんNGNG
>>346
釣りですか?
0348342NGNG
すみません。勘違いしてました。どうも有難うございました。
0349デフォルトの名無しさんNGNG
javaのコンパイラをC言語できぼんぬ
0350デフォルトの名無しさんNGNG
>>349
system()
0351デフォルトの名無しさんNGNG
宿題マダー?
0352デフォルトの名無しさんNGNG
四則演算が可能で強い意味で例外安全、例外中立な多倍長演算クラスを作成しなさい
お願いしますm(__)m
0353デフォルトの名無しさんNGNG
>>352
強い意味で例外安全を定義しる。
0354デフォルトの名無しさんNGNG
・例外が起こってもリソースをリークしない。
・例外によって終了してもプログラムの状態が変更されていない。
0355天才プログラマNGNG
もう寝るけどいいか?
0356デフォルトの名無しさんNGNG
>>355
いい。永眠するとなおよい。
0357デフォルトの名無しさんNGNG
>>354
二つ目が分からん。
0358デフォルトの名無しさんNGNG
>>355
落ちろっ!夢のない眠りへ…
0359デフォルトの名無しさんNGNG
二番目は
「例外が発生して制御が呼び出し元に移ったときに、例外を
投げた側の内部状態が呼び出し前と変更されていない。」
といった方が分かりやすくないか?
0360デフォルトの名無しさんNGNG
>>352
実装としては
・掛け算はO(N^2)
・割り算は 0 割のみ例外発生
・割り算はニュートン法にて収束させる
・出力と中間計算の領域確保失敗時に例外発生

このくらいだったら楽じゃない?
0361デフォルトの名無しさんNGNG
内部状態維持ってことは、計算のたびにスナップショットを取っとくの?
個人的にはスナップ、ロールバックと、演算は切り離したいな。
0362デフォルトの名無しさんNGNG
>>361
普通は状態をわざわざ保存してまで強い例外安全を保障しないと思う。
たとえば>>352の例のoperator+=なら、

・最初に例外を投げそうな処理(メモリ確保とか)を行う。
   ここで失敗したら何もしないで例外を外に伝える(例外中立)。
・実際の計算(ここでは例外を投げる可能性があるとする。ない場合はもっと単純)
・例外を投げない処理(代入、delete)のみを使って内部状態を変更(ポインタのswapが非常に有効)

こんな感じかと。
0363デフォルトの名無しさんNGNG
352の爆弾仕様によりいまだれもてをつけず…
0364デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1093076686&res=1

今、とあるサイトでC++を勉強しているのですが、このクラスのメンバ関数addの部分の
elseより下の部分がわかりません。具体的に言うと、lt1やlt2などに何が入って、どのようにして追加されているのかが全然わかりません。
どのようにして動く?のかは理解できたのですが・・・。lt1=lt2やlt2=lt2->nextなどの代入がわかりません。
詳しくご説明をお願いします。
0365デフォルトの名無しさんNGNG
>>364
いやいや、あんたスレ違いだって…ここ宿題スレだしw
0366デフォルトの名無しさんNGNG
宿題で例外安全とはこれ如何にw
0367デフォルトの名無しさんNGNG
やっぱりダメでしょうか?
0368デフォルトの名無しさんNGNG
>>364
デジャヴかな。つい最近そのソース見て「こいつCの癖が抜けてないな」と思った記憶が……
0369シュトラッ仙NGNG
>>364

output 関数のprintf("")を
printf("[%p] [%p] data...%s \n", nt, nt->next, nt->st);
と 書き換えて

リストの保有するデータや List *型の nt , lt1, lt2
がどういう値かを確認してみるのが良いよ
0370デフォルトの名無しさんNGNG
確認してみますね。ありがとうございました。
0371デフォルトの名無しさんNGNG
宿題まだぁ〜あげ。
03721/3NGNG
こんにちは。
今回出題された課題は php の課題なのですが、アルゴリズムが分かれば私はそれで満足ですので
読みやすく慣れ親しんだ C での作成をお願いできればとこのスレに書き込みをさせて頂きました。
さて、課題の方なのですが以下の通りです。

----------------------------------------------------------------

高等数学の定理によって、円周率πは、次のような数列の無限和で求められることが知られています。
π = 4 * ( 1 - 1/3 + 1/5 - 1/7 + 1/9 - ... 無限に続く)

上の式には、第5項までの和しか明記されていないが、数列の第10000項までの和を計算するプログラムを作成せよ。

----------------------------------------------------------------

php を読める方がいらっしゃるかどうかは分かりませんが、私は以下のようにプログミングしました。
03732/3NGNG
// 円周率πの数列の第 num 項まで和を計算

$num = 50;// 項の数
$pi = 0;

echo "円周率πの".$num."項までの和を計算しますね★<br /><br />";

$pi += (1 - 1 / 3 );
$flg = TRUE;

for($i = 3; $i < $num * 2 + 3; $i += 2) {
if($flg) {
$pi += 1 / ($i + 2);
$flg = FALSE;
} else {
$pi -= 1 / ($i + 2);
$flg = TRUE;
}
}

$pi *= 4;

echo $num."項までの和は".$pi."ですょん★";
03743/3NGNG
これでいけると思ったんですがどうもうまくいきません(つ_<
先輩方のお知恵を拝借させて頂ければ幸いでございます。
どうか宜しくお願い致します。
0375デフォルトの名無しさんNGNG
>>374
int num = 50;
double pi = 0;

for(int i = 1; i < num; i += 2) {
pi += 1 / i;
pi -= 1 / (i+1);
}

pi *= 4;
俺ならこう書く。
0376デフォルトの名無しさんNGNG
実行結果が 0 なのですが・・・。
0377デフォルトの名無しさんNGNG
オワッテルナ
0378デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>

int main(void)
{
int num = 100000;
int index = 0;
double pi = 0.0;

while (index < num) {
pi += 4.0 * pow(-1.0, (double)index) / (double)(index * 2 + 1);
index++;
}
printf("pi = %f\n", pi);

return 0;
}
0379デフォルトの名無しさんNGNG
>>378
動きましたありがとうございます。
php にも pow 関数はあるみたいなので課題をクリアできそうです。
どうも助かりましたです。
0380デフォルトの名無しさんNGNG
>>379
元のやつをいかして作ってみた。まだ見てるのかな?
符号の計算程度にpowとか使うと遅くなるよ。

// 円周率πの数列の第 num 項まで和を計算
$num = 50; // 項数
$pi = 0;
echo "円周率πの".$num."項までの和を計算しますね★<br /><br />";
$flg = 4;
$num = $num * 2; // 項数を何度も計算させない
for($i = 1; $i < $num; $i += 2) {
$pi += $flg / $i;
$flg = -$flg;
}
$num /= 2; // 項数を表示用に戻す
echo $num."項までの和は".$pi."ですょん★";
0381379NGNG
>>380
とても勉強になりました。
自分で頭を悩ませて考えてたものをベースに改良して頂いて大変嬉しく思います。
私の元のプログラムよりかなりすっきりしててキレイですね。
しかも php で書いて下さって感激しております。
本当にどうもありがとうございました。
0382デフォルトの名無しさんNGNG
printfで0.0000000012とかを扱う時は

printf("■",)の
■四角の部分は何を書けばよいのですか?
0383デフォルトの名無しさんNGNG
0.0000000012
0384デフォルトの名無しさんNGNG
そこまで精度保証できん
0385デフォルトの名無しさんNGNG
>>384
精度って…有効桁たった2桁だぞw
>>382
%g
って、どう出力したいかによる。0.0000000012と表示したいなら
%.10f
0386ぽろじょあ ◆niBmDfC40k NGNG
( .3.) ヌェー マルェー
0387ぽろじょあ ◆niBmDfC40k NGNG
( .3.) ヌェー マルェー
0388ぽろじょあ ◆niBmDfC40k NGNG
( .3.) マルェー なんでようかんマンは居なくなったんだYO?
0389デフォルトの名無しさんNGNG
宿題:開発が終了するOpenJaneをC++/Win32APIに移植し、メンテナンスせよ。
0390デフォルトの名無しさんNGNG
>>389
メンテナンスせよ。ってところはやってやるから、前半よろしく。
0391デフォルトの名無しさんNGNG
OpenJaneって、Cだったの?
0392デフォルトの名無しさんNGNG
C言語に関する雑談ならこちら

ラウンジでC言語
http://etc3.2ch.net/test/read.cgi/entrance/1093006298/l50
0393デフォルトの名無しさんNGNG
宿題です。
「VBで作ったTest.dllのTest(String型)という関数を、
VCからChar型の引数2つを渡して呼び出すプログラムを作りなさい。」
というものです。
どうかお力をお借しください。
0394デフォルトの名無しさんNGNG
・何で引数の個数が変わるのか
・VCから?VC限定?
WinAPI質問箱とかあったような気がするよ
0395393NGNG
すいません。
質問の仕方が悪かったです。
VB側の関数Testも引き数は2つです。
引き数の数は変わりません。
Testという関数そのものの型を(String型)と書いたつもりでした。
すみません。
strResult=Test(strA,strB)と書くべきでした。
ちなみにDLLの上記関数を呼び出すのはVCです。
VBの方の関数を、VC側でクラスとして定義したいのですが、やり方がわからないのです。
ご教授お願い致します
0396デフォルトの名無しさんNGNG
>>393
この辺が参考にならないかな?
http://homepage2.nifty.com/DSS/VCPP/DLL/dllindex.htm
0397デフォルトの名無しさんNGNG
visual c++ 6.0使用です。

淡色表示にしたメニューの、淡色表示を解除させるにはどうしたらよいのでしょうか?
よろしくお願いします。
0398デフォルトの名無しさんNGNG
以下の問題をお願いします。

「次の記述内容を満足するプログラムをJavaで作成せよ。
10名(A,B,C,D,E,F,G,H,I,J)の成績(0点から100点まで)をコマンド入力の際の
引数として与える。このとき、引数の順番とA,B,C,D,E,F,G,H,I,Jとを対応つける。
平均点を出力した後、A,B,C,D,E,F,G,H,I,Jの順番に表示し、平均点以上○印、
平均点以下は△印、最高点は◎印、最低点は×印で表示せよ。」

実行結果例としては
例)
平均点:70点
A 75点:○
B 65点:△
C 55点:△
D 95点:◎
E 40点:×
 … …

のような表示です。よろしくお願いします 。
0399397NGNG
追加です。
淡色表示にしてあるものは、ポップアップ設定をしてあるのでIDはありません。
0400デフォルトの名無しさんNGNG
>>398
javaは確か専用スレがあるからそこで訊くといい。
0401398NGNG
>>400
わかりました。誘導ありがとうございます!
0402 ◆Z0vd5w812U NGNG
>>397
GetMenuItemInfo()/SetMenuItemInfo()で制御。
0403デフォルトの名無しさんNGNG
>>397
多分こっちの方が向いてると思う。

Win32API質問箱 Build22
http://pc5.2ch.net/test/read.cgi/tech/1092524669/
0404398NGNG
以下の問題をお願いします。

「以下のC++で書かれたプログラムは複素数を表すクラス
complexを作成して複素数の加算(+)、減算(-)、乗算(*)、除
算(/)および代入演算(=)を行っている。プログラム中(1)〜
(5)を記述してプログラムを完成させ、さらに出力結果を求
めよ。ここで、クラスcomplexでは複素数zを極形式z=r(cosθ
+isinθ)(rは絶対値(大きさ)、θは偏角)で表している。クラス
complexのメンバ変数rは複素数の絶対値(大きさ)を表し、th
etaは複素数の偏角(argument)を表す。偏角の単位はラジア
ンである。演算子+,-,*,/,=がクラスcomplexに対してオーバー
ロードされている。必要であれば以下の数学関数を使用せよ。

double aten2(double y, double x):
y/xのアークタンジェント(逆正接)を返す。

double sin(double arg):
引数arg(単位:ラジアン)のサイン(正弦)を返す。

double cos(double arg):
引数arg(単位:ラジアン)のコサイン(余弦)を返す。

double sqrt(double num):
引数numの平方根を返す。引数は負になってはならない。

また、計算の過程で現われる複素数の実部、虚部ともに0に
なることはないとしてプログラムを作成してもよい。
」

スミマセンがよろしくお願いします。
0405398NGNG
以下プログラム

#include <iostream>
#include <cmath>
using namespace std;
class complex {
double r, theta; // r: absolute value,
//theta : argument
public:
complex() { r = 0.0; theta = 0.0; }
complex(double rr, double tt)
{ r = rr; theta = tt; }
void get_r_theta(double &rr, double &tt)
{ rr = r; tt = theta; }
complex operator+(complex ob2);
complex operator-(complex ob2);
complex operator*(complex ob2);
complex operator/(complex ob2);
complex operator=(complex ob2);
};
0406398NGNG
complex complex::operator+(complex ob2)
{
complex temp;
(1)
return temp;
}
complex complex::operator-(complex ob2)
{
complex temp;
(2)
return temp;
}
complex complex::operator*(complex ob2)
{
complex temp;
(3)
return temp;
}
complex complex::operator/(complex ob2)
{
complex temp;
(4)
return temp;
}
complex complex::operator=(complex ob2)
{
(5)
return *this;
}
0407398NGNG
int main()
{
complex c1(1.0, 3.1416*0.33),
c2(2.0, 3.1416*0.2), c3;
double rr, tt;
c3 = c1 + c2;
c3.get_r_theta(rr, tt);
cout << "(c1+c2) r: " << rr
<< ", theta: " << tt << endl;
c3 = c1 - c2;
c3.get_r_theta(rr, tt);
cout << "(c1-c2) r: " << rr
<< ", theta: " << tt << endl;
c3 = c1 * c2;
c3.get_r_theta(rr, tt);
cout << "(c1*c2) r: " << rr
<< ", theta: " << tt << endl;
c3 = c1 / c2;
c3.get_r_theta(rr, tt);
cout << "(c1/c2) r: " << rr
<< ", theta: " << tt << endl;
c3 = c2;
c3.get_r_theta(rr, tt);
cout << "(c3=c2) r: " << rr
<< ", theta: " << tt << endl;
}
0408デフォルトの名無しさんNGNG
なにこの complex クラス
すんごい糞なんだけど
0409デフォルトの名無しさんNGNG
すごい初心者な質問なんですがC++で
const char *str = "***class***";
int length = strlen(str);
char(length);

これの最後の行はどういう意味なんでしょうか?
charのコンストラクタに引数を渡してるのでしょうか
0410デフォルトの名無しさんNGNG
うざい
0411デフォルトの名無しさんNGNG
中間記法を逆ポーランド記法に変換、またその逆を行なうプログラムを作れ。
0412デフォルトの名無しさんNGNG
>>411
俺に命令するな!!
0413デフォルトの名無しさんNGNG
解答例

#include <stdio.h>
int main()
{
  puts("俺に命令するな!");
  return 0;
}
0414デフォルトの名無しさんNGNG
//(1)
double tr, tt, re, im;
ob2.get_r_theta(tr, tt);
re = r * cos(theta) + tr * cos(tt);
im = r * sin(theta) + tr * sin(tt);
temp = complex(sqrt(re * re + im * im), atan2(im, re));
//(2)
double rr, tt, re, im;
ob2.get_r_theta(rr, tt);
re = r * cos(theta) - rr * cos(tt);
im = r * sin(theta) - rr * sin(tt);
temp = complex(sqrt(re * re + im * im), atan2(im, re));
//(3)
double rr, tt;
ob2.get_r_theta(rr, tt);
temp = complex(r * rr, theta + tt);
//(4)
double rr, tt;
ob2.get_r_theta(rr, tt);
temp = complex(r / rr, theta - tt);
//(5)
double rr, tt;
ob2.get_r_theta(rr, tt);
r = rr; theta = tt;
0415デフォルトの名無しさんNGNG
俺が最強だああああああああああああああああああああ
0416デフォルトの名無しさんNGNG
#include <stdio.h>

int main(void)
{
  puts("俺が最強だ");
  while(1) puts("あ");
  return 0;
}
0417デフォルトの名無しさんNGNG
そんな暇な事してるんなら質問に答えてくれ
0418398NGNG
>>414
ありがとうございました!!
0419デフォルトの名無しさんNGNG
>>411
ただ単に、コンソールに出力するだけで良いの?計算はしないのか?
だったら簡単。入力をトークンに切り分けて、次の再帰下降パーサに突っ込めばよい。
逆もまた同じ。逆ポ用のパーサに流し込んでやればよい。

Program → { Expression ";" }
Expression → Term { ("+" | "-") Term output_action() }
Term → num_literal { ("*" | "/" | "%") num_literal output_action() }
0420411NGNG
問題文そのまま載せただけなんだがorz
逆ポーランドの計算はスタック使うだけでできたけど、
1+2*3 ==> 1 2 3 * + の変換は二分木使うらしく、さっぱりなんですが
0421398NGNG
>>414
すみません、図々しいですが出力結果もお願いできますか?
0422デフォルトの名無しさんNGNG
すいません。また基本的な質問なんですがクラス定義内のメンバ関数定義で

public:
virtual viod read( unsigned a,char& b) = 0;

この=0はどういう意味に解釈したら良いんでしょうか?
0423デフォルトの名無しさんNGNG
readは浮気しないって事
0424デフォルトの名無しさんNGNG
すいません。
public:
virtual void read( unsigned a,char& b) = 0;
でした
0425デフォルトの名無しさんNGNG
>>398
標準の<complex>使え
0426デフォルトの名無しさんNGNG
>>424
純粋仮想関数と言う。
そのクラスでは実装しないが、そのクラスを派生したクラスではもれなく実装するようにという通達。
0427424NGNG
ありがとうございます。つか勉強不足ですね(;´Д`)
C++ってどれだけ勉強すればいいのか。。。。。
コード読むこともままならない。。。
0428デフォルトの名無しさんNGNG
良書と言われてるものを一通り読むようになればある程度かな
http://www.1point.jp/~book_2ch/program/cpp.html
ここで色々探して読んでみな
0429424NGNG
どもです。どうもすこし本読んで、だましだましやってくっていうのは
結構難しいですね。。1冊でも完読してみます。今手もとにあるのは英語の訳本
なので日本語が変で読みにくいんですよね。お金ないから買いしぶってたけど
もっといい本さがしてみます。
ありがとうございました
0430デフォルトの名無しさんNGNG
>>411
中間記法→逆ポーランド記法
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=205&fi=no

仕様
・各項は1文字まで(12+3 などはダメ)
・↑をオーバーした場合、1文字目しか表示しない
・仕様可能な演算子は四則演算子のみ
・()は非対応

注意事項
・Cとしてコンパイルすること
・VisualC++以外で動かなくても知らない
・正しくない式を入れた場合の動作は保証しない
・正しい式を入れた場合でもバグがあるかもしれない
・もっとレベルの高い人の答えを待った方が良いかもしれない
0431デフォルトの名無しさんNGNG
x+5y=9においてy=1の時x=4である。
x=4を新たなyの値とするとxの新たな値は-11である。
x=-11を新たなyの値とするとxの新たな値は60である。
x=60を新たなyの値とするとxの新たな値は-291である。

以下この操作を繰り返し、n番目のxの値を求めよ。
0432デフォルトの名無しさんNGNG
>425
それじゃ宿題にならんだろw
0433デフォルトの名無しさんNGNG
#include <stdio.h>
int main(){
  int n = 10;
  int i,x, y=1;
  for(i=1;i<=n;i++){
    x = 9 - 5*y;
    printf("%3d番目 x=%d\n",i,x);
    y = x;
  }
  return 0;
}
0434デフォルトの名無しさんNGNG
入力した数値データーの種類を、変数スコープを利用してカウントUPしなさい。
1、main関数
入力された数値データをもとに、偶数・奇数の判定をし、ユーザー関数sub1(奇数の場合)、sub2(偶数の場合)
を呼び出す。

2、sub1関数
性的変数で呼び出し回数をカウントupし、戻り値として返す。int sub1(void)

3、sub2関数
性的変数で呼び出し、回数をカウントupし、戻り値として返す。int sub2(void)

--------------------------
数値入力==>5
数値入力==>2
数値入力==>10
数値入力==>3
数値入力==>8
数値入力==>-1

sub1:2回(奇数)
sub2:3回(偶数)
---------------------------

えっと・・・・t:b亜lkhがkjdhkdsjんgばえl、mrんdhl
おながいします。
0435デフォルトの名無しさんNGNG
×性的
○静的

あ〜恥かしいですw
0436デフォルトの名無しさんNGNG
>>434
#include <iostream>
int sub1() {
  static int count;
  return count++;
}

int sub2() {
  static int count;
  return count++;
}

int main() {
  int n;
  for (;;) {
    cin >> n;
    if (n < 0)
      break;
    if (n & 1)
      sub1();
    else
      sub2();
  }
  std::cout << "sub1:" << sub1() << "(奇数)" << '\n';
  std::cout << "sub2:" << sub2() << "(偶数)" << std::endl;
  return 0;
}
0437398NGNG
>>425
すみません。しかし、プログラムの内容がほとんど分からないので
出力結果を教えて頂けませんか?お願いします。
0438デフォルトの名無しさんNGNG
 
    
0439デフォルトの名無しさんNGNG
>>436
カウンタ値を読むの時にカウントアップしてちゃなあ
0440デフォルトの名無しさんNGNG
>>436
おいおい。(^^;
0441デフォルトの名無しさんNGNG
C言語初心者ですが、javaのeclipseみたいなc言語用の開発ツールは
どういうものがあり、一番使いやすいものはどれになりますでしょうか?

freeソフトでも有料ソフトでもよいので教えてください。よろしくお願いします
0442デフォルトの名無しさんNGNG
eclipse
0443デフォルトの名無しさんNGNG
>>441
【初心者歓迎】C/C++室 Ver.8【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1091264964/588
0444デフォルトの名無しさんNGNG
Borlandのフリーのコンパイラ使っているのですが現在、
適当な整数型変数(例で36789)に代入して、金種計算をして下のように出力する

\36789

\10000 3
\5000 1
\1000 1
・
・
・
\1 4
というプログラムを作成しているのですが途中からわからなくなってしまいました。


#include<stdio.h>
void main(void)
{
int a=36789;
printf("\\%d\n\n",a);
printf("\\10000 %1d\n",a/10000);

この次からどのように入力すれば良いのかわからないですが
どうすればよいのでしょうか?


0445デフォルトの名無しさんNGNG
>>444
自分の将来を考えた方がいい
0446デフォルトの名無しさんNGNG
>>444
printf("\\10000 %1d\n",a/10000);
a %= 10000;
printf("\\5000 %1d\n",a/5000);
a %= 5000;
0447デフォルトの名無しさんNGNG
>>446
ありがとうございました。m(_ _)m
なんとかできました。
0448デフォルトの名無しさんNGNG
main(){
 何かの処理その1
 printf("AAAAA");←1番目は最初からある
 printf("BBBBB");←2番目はここに追加
 printf("CCCCC");←3番目はここに追加
 printf("DDDDD");←4番目はここに追加
 何かの処理その2
}

二番目以降n番目までのprintf〜を追加し、ソースを作成するプログラムを
作るにはどうすればいいのですか?
0449デフォルトの名無しさんNGNG
>>444
答え書いてもらってるのに「なんとかできた」って…

>>448
もっと具体的に
0450デフォルトの名無しさんNGNG
const char n = 10;
char i;
printf( "main(){\n" );
printf( "\t何かの処理その1\n" );
printf( "\tprintf(\"AAAAA\");\n" );
for ( i = 1; i < n; i++ )
printf( "\tprintf(\"%c%c%c%c%c\");\n", 'A' + i, 'A' + i, 'A' + i, 'A' + i, 'A' + i );
printf( "\t何かの処理その2\n" );
printf( "}\n" );
0451デフォルトの名無しさんNGNG
>>448
マルチすんなどあほ
0452デフォルトの名無しさんNGNG
簡単なチャットプログラムを作る課題なのですが
・OSはサーバ側はLinuxでクライアント側はWindows
・kterm(DOS)で文字列のやり取りをする
・通信は非同期式
・サーバ側のプログラムはあるのでクライアント側のプログラムを作らねばならない

http://www.ops.dti.ne.jp/~allergy/socket/socket.html#event
を参考にしてサーバから受信はできるようになったのですが、
標準入力で読み込んでサーバ側に送信するところの記述が分かりません
分からない部分のソースは>>453です
0453452NGNG
WSAEventSelect(sd, hEvent, FD_READ|FD_CLOSE|FD_WRITE);//多分FD_WRITEを追加

// ソケットへの接続が終了した
if (events.lNetworkEvents & FD_CLOSE)
{
printf( "Sever connection closed\n" );
closesocket(sd);// 通信が終わったらソケットを閉じる
WSACleanup();
WSACloseEvent(hEvent);// イベントクローズ
return 0;
}
// ソケットの受信バッファにデータがある
if (events.lNetworkEvents & FD_READ)
{
recvSize = recv(sd, buf, sizeof(buf), 0);
printf("Received %d bytes\n",recvSize);
printf( "Form Server->%s\n", buf );
}
// ソケットの送信バッファに空きができた
if (events.lNetworkEvents & FD_WRITE)// そもそもここのif文も違うかもしれません
{
//ここが分かりません
}
0454デフォルトの名無しさんNGNG
>>451
マルチって何?To Heart?
0455デフォルトの名無しさんNGNG
>>454
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88&lr=lang_ja
0456デフォルトの名無しさんNGNG
>>452
bufに送りたいデータをフォーマット揃えて、send関数とか使って飛ばすんじゃないの?
0457452NGNG
>>456
sendで送れば良いと思うんですが、プロンプトからの入力の取り込み方が分からないのです。
fegts()やgets()ではうまくいきませんでした。
0458デフォルトの名無しさんNGNG
解答をお願いします。

正整数を1節点に1桁の数を持つ整数リストintlist(ただし逆順)によって表現することにする。(リストの先頭には頭の節点、終端は0で表す)。
型は
typedef struct node{ int element;struct node* next;}* intlist
で表す。例えば、1024と言う数を与えられたとき、
→□□→□(4)□→□(2)□→□(0)□→□(1)□(0)
head   (四角の中には後ろの()の中の値が入ります)
ここで、正整数xを与えられたとき、それを表現した整数リストを返す関数createを書け。
ただし、節点を作るときはmallocを使う。

と言う問題をお願いします。
0459458NGNG
一応ソースは書いたんですが、コンパイルできる環境ではないためにいいのか悪いのか分かりません。
見てもらえますか。

intlist create(int x)
{
intlist head,rear,front;
head = (intlist)malloc(sizeof(struct node));
head->next=0;
rear = head;
while( x != 0 )
{
rear->next = (intlist)malloc(sizeof(struct node));
front = rear->next;
front->element = x % 10;
front->next = 0;
x /= 10;
rear = rear->next;
}
return head;
}
0460デフォルトの名無しさんNGNG
>458
コンパイルできる環境を用意してから出直してこい。
それと重要なことだが、リストではheadに対応する語はrearではなくtailだボケ。
0461シュトラッ仙NGNG
>>458

質問の回答用ソースを貼るスレ の レス番「207」
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=207
0462デフォルトの名無しさんNGNG
perlのプログラム処理を質問したいのですが、どこかにスレッドは
ないでしょうか。
0463デフォルトの名無しさんNGNG
>>462
ラーメン屋でラーメン屋の場所を聞くような事すんなや

Perlについての質問箱 11箱目
ttp://pc5.2ch.net/test/read.cgi/tech/1090889189/l50

Perl言語に詳しい人に質問!
http://pc5.2ch.net/test/read.cgi/tech/1037383722/l50
0464デフォルトの名無しさんNGNG
ありがとうございます。さっそく質問してみます。
0465458NGNG
>>461
ありがとうございました。理解できました。

>>460
分かりにくかったとは思いますが、末尾って意味でrearを使ったわけではないです。
0466デフォルトの名無しさんNGNG
二次元配列を動的にnewしたいんですけど、どうしたらいいでふか

int** a;
a = new int[3][4]; //javaならこんな感じでいけたとおもうんでふけど
0467デフォルトの名無しさんNGNG
  int **a = (int**)new int[3 * 4];
0468466NGNG
>>467
返信ありがとうございます。

int** a;
a = (int**)new int[3*4];
これでも、とおりますかね?
コンパイルは通るんですけど、何か実行時エラーがでちゃうんですけど?
0469デフォルトの名無しさんNGNG
// int i, m. n, **array;
array = (int **)new int*[m];
array[0] = new int[m * n];
for(i = 1; i < m; i++) array[i] = array[0] + i * n;
// 処理
delete[] array[0];
delete[] array;



int *とintのサイズが同じならこれもありかな。
// int i, m, n, **array;
array = (int **)new int[m + m * n];
for(i = 0; i < m; i++) array[i] = (int *)array + m + n * i;
// 処理
delete[] array;

C++詳しくないので間違ってたらスマソ
0470デフォルトの名無しさんNGNG
>>466-469
まとめてどっか行ってくださいな
0471デフォルトの名無しさんNGNG
ん・・・?ああ。そうか。




勝手に「二次元配列を動的に確保しなさい」とか、そんな宿題とか解釈してた。
鬱だ・・・
0472デフォルトの名無しさんNGNG
>C++詳しくないので間違ってたらスマソ
これが2ch
0473デフォルトの名無しさんNGNG
なんだか宿題以外を持ってきたり、
javaとか激しくすれ違いなこと聞いてたり、
おまけにperlの宿題スレを教えてくれだ?
まとめて視界から消えろ
0474デフォルトの名無しさんNGNG
                  ∧        ∧  イライライライラ
                    / ヽ        / ヽ   イライライライラ
                /   ヽ___/   ヽ    イライライライラ
              / ノ(               \
              |  ⌒   ●   /\   ●  |  / ̄ ̄ ̄ ̄ ̄ ̄
         へ    |           /  \     |< 宿題まだー?
       / \\  \        / ̄ ̄ ̄\  /  \______
     /   /\\  .>             ヽ
カンカンカン//  \\/ i i      _      |
 カンカンカン      i | ‖|    / ̄   ヽ    / __
   カンカンカン Σ [ ̄ ̄ ̄ ̄ ̄ヽ        / ̄  /|
   \ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ̄ ̄ヽ_____ /   /  |
     \回回回回回/                /   |
0475デフォルトの名無しさんNGNG
>>466
C++相談室 part34
http://pc5.2ch.net/test/read.cgi/tech/1092018643/
こっちが最適。
0476デフォルトの名無しさんNGNG
【初心者歓迎】C/C++室 Ver.8【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1091264964/

こっちの方が。
初心者歓迎だし、C++ 関係ないし。
0477デフォルトの名無しさんNGNG
「newしたい」と>>466が言っている以上、C++限定であると思うのだが。
0478デフォルトの名無しさんNGNG
>>452
readは?


                            あったっけ?
0479=>>475,477NGNG
>>466
int a[2][3];と書く場合、メモリ上は次のようなレイアウトになっている。
[00][01][02][10][11][12]
この時a+i(0<=i<=3)はint(*)[3]型になっている。そこで、例えばa+1とすると、
コンパイラはsizeof(int[3])だけポインタを進めねばならないことを「知っている」。
よって、[00][01][02][10][11][12]
             ↑a
となる。では、int** a = (int**)new int[2][3];とした場合a[1][1]はどうなるか。
a[1]はa+1と解釈される。問題は+1することによってポインタはどのように進め
られるか。new int[2 * 3];の返す型はint*であるが、ここではint**にキャスト
されているので、今はこうなっている。⇒[0][1][2][3][4][5]
a[1](≒a+1)によってaがsizeof(int*)だけ進められる。これは規格に則った
正常な解釈である。本当はsizeof(int(*)[3])だけ進んでほしいのだが、それは
無茶な話だ。a[1][1]はどうなるかというと、[0]からsizeof(int*)進んだところに
ある値(なんだか予想も付かないが)をポインタ値として解釈した場所(これも
どこだか分からないが)からsizeof(int)だけ進んだ場所の値だ。なぜならa[1][1]
≒*(*(a+1)+1)であるからだ。いったいここはどこだろう?世界の果てだろうか?
こう見てきたように、int** a = (int**)new int[2][3];と書いてもa[1][1]のような
使い方はできない。
「それでも」と、あなたは言うかもしれない。「a[1][1]と書いてもよいようにnewを
使いたい!」では、解答を与えよう。
0480=>>475,477NGNG
これが解答だ。
int m = 2, n = 3;
//初期化
// m個の要素を持ったint*型の配列を容易
int** array = new int*[m];
// それぞれにn個の要素を持ったintの配列
for (int i = 0; i < m; ++i) array[i] = new int[n];
// 処理
for (int i = 0; i < m; ++i)
    for (int j = 0; j < n; ++j)
        array[i][j] = foo();
// 後始末
for (int i = 0; i < m; ++i) delete[] array[i];
delete[] array;
…めんどくさい!あなたはそう叫ぶかもしれないが、これが現実だ。
どうか受け止めてもらいたい。現実は時として厳しい。これも厳しい
現実だ。
最後に1つだけ付け加えておこう。C++としては、std::vector<int>を使う
ことをお勧めする。最後の後始末はこれで必要ない。delete[]を忘れて
自分の書いたコードがメモリをリークするのを恐れて夜眠れなくなること
もない。これで万全だ。では、快適なC++ライフを楽しんでもらおう。
0481デフォルトの名無しさんNGNG
>>479-480
おねがい!本を出して!
0482デフォルトの名無しさんNGNG
>>481
うだうだ書いて、結論は否定だよ。(本としては)ダメじゃん。
0483デフォルトの名無しさんNGNG
vectorってベクトル?ベクター?
0484デフォルトの名無しさんNGNG
>>482
>>479-480は質問に対する解答を示した後、余談としてvectorを挙げている
ように見えるけれど…
0485デフォルトの名無しさんNGNG
intに1234と入力して、
上位二桁と下位二桁を出力するようににプログラムを作ろうと
しているのですが、
#include<stdio.h>
void main(void)
{
int atai=1234;
printf("atai=%d\n\n",atai);
printf("jyoui2keta = %2d\n",atai)
と、入力したところでつまずいてしまいました。
また、printf("jyoui2keta = %2d\n",atai)の部分をコンパイルすると
2桁になって出力されません・・・
どのようにすれば上位二桁を下位二桁を出力できるか教えてくださいm(__)m
0486デフォルトの名無しさんNGNG
#include <stdio.h>

int main(void)
{
int atai=1234;
printf("atai = %d\n\n", atai);
printf("joui2keta = %2d\n\n", atai / 100);
printf("kai2keta = %2d\n\n", atai % 100);

return 0;
}

0487デフォルトの名無しさんNGNG
%.2d
0488デフォルトの名無しさんNGNG
>>486
ありがとうございました。
これですべての入力の宿題終わりました。
(あとは、フローチャートやコーディングや感想かかなきゃですけど・・w)
0489デフォルトの名無しさんNGNG
こんな問題で、どういうフローチャートを書くんだ?
0490デフォルトの名無しさんNGNG
分岐もループも無いのにフローチャートなんて、ありえねぇ。
0491デフォルトの名無しさんNGNG
フローチャートを書く練習だね^^
一本筋のフローチャートになるけど…
0492デフォルトの名無しさんNGNG
ぜひ、487には 489を感想で書いて提出してほしい。
0493デフォルトの名無しさんNGNG
printf の中の動作をフローチャートにすればよろし。
0494デフォルトの名無しさんNGNG
フローチャートの問題は独立してるんじゃないのか?
文章で書かれたことをチャートにおこすとか・・・。
0495デフォルトの名無しさんNGNG
フローチャートって何かの役に立つの?
一回も書いたことないし、書こうとも思わない
0496デフォルトの名無しさんNGNG
複数人で1つのプログラムを組むときにどこを分割するかで役に立つ。(最近はオブジェクト図の方が多い。)
プログラムが分かってない人に説明するときにそこそこ役に立つ。
デバッグするときにたまに役に立つ。
0497デフォルトの名無しさんNGNG
最近はもっぱらシーケンス図とかだね
0498デフォルトの名無しさんNGNG
大学で年寄りの教員はUMLを知らないことがある。
また、UMLは教える内容がわりと多いので半期ほどの授業時間が必要。
0499デフォルトの名無しさんNGNG
それ以前にオブジェクト指向も教えないといけないね
0500488NGNG
一年なんで練習ですねw
0501デフォルトの名無しさんNGNG
UMLでは「アクティビティ図」という、フローチャートみたいなものがある。
0502デフォルトの名無しさんNGNG
>501
だから?
0503デフォルトの名無しさんNGNG
フローチャートを要求してくるDQNな顧客があるのは仕方ない。
そのためにいやいやフローチャートを書くのもわかる。
だったらせめてループ記号くらい使おうよ。ワードにあるのがフローチャート記号の全てじゃないんだから。
0504デフォルトの名無しさんNGNG
txtのなかに書かれている文字列を読み込みソートして新たなfpに書き直したいのですが
どのようにすればよいのでしょうか
txtが以下のようなら
   あいう
   いうえ
   あいう
   うえお
新たに
   あいう 2 /* 出現回数
   いうえ 1
   うえお 1
のようにしたいのですがわかりません
c言語を使用してます。よろしくお願いしますm(_ _)m
0505デフォルトの名無しさんNGNG
単純なのは、「木」でメモリに蓄積していって、最後に吐き出す
0506デフォルトの名無しさんNGNG
>>505
txtがでかすぎてメモリに蓄積すると大変なんですよ(ノД`)シクシク
0507デフォルトの名無しさんNGNG
>>506
でかすぎるって、何100MBもあるの?
0508デフォルトの名無しさんNGNG
>>507
はい、あります(゚Д゚)ノ
0509デフォルトの名無しさんNGNG
・・・本当に宿題ですか?(;´Д`)
0510デフォルトの名無しさんNGNG
夏の課題です(ノД`)シクシク
総検索でがんばります、、、(+д+)マズー
0511シュトラッ仙NGNG
>>504

もう少し詳しく問題内容を聞きたいです。

1.その文字列はどういった内容ですか(具体的に)?
2.改行文字が出現するまでを「1つの文字列」とみなすのですか?
3.使用可能なディスクのサイズはいくらですか?
0512デフォルトの名無しさんNGNG
1.かな全角で書かれたランダムな文字列です
2.1行に5〜10文字程度を1つの文字列とみなし、語句の最後に改行があります
3.特に制限はありません
よろしくお願いしますm(_ _)m
0513デフォルトの名無しさんNGNG
そもそも、1つの文字列ってどれぐらいの長さよ?
0514デフォルトの名無しさんNGNG
>>513
504の例のように1行改行までを1つの文字列とした
かな全角5〜10文字程度の長さです。
0515デフォルトの名無しさんNGNG
>508
とりあえず2GBくらいメモリ積んどけ。
金で解決できる問題ならそれで済ますのも一つの手だ。
0516デフォルトの名無しさんNGNG
#include <stdio.h>

#include <map>
#include <string>
using namespace std;

int main()
{
    map<string, int> counter;
    FILE *fp;
    char str[22];

    fp = fopen("temp.txt", "r");
    while(fgets(str, sizeof(str), fp) != NULL){
        if(str[strlen(str)-1] == '\n') str[strlen(str)-1] = '\0';
        counter[str]++;
    }
    fclose(fp);

    fp = fopen("temp2.txt", "w");
    map<string, int>::iterator itr;
    for(itr = counter.begin(); itr != counter.end(); itr++)
        fprintf(fp, "%s %d\n", itr->first.c_str(), itr->second);
    fclose(fp);
    return 0;
}


C++(VisualC++の拡張使ってないか不安だが)ならこれで十分なんだよな。
………速度とメモリ無視してるけど。
0517癒 ◆xTtI333vNE NGNG
CでSTL使っていいのか?
0518デフォルトの名無しさんNGNG
メモリ内ではなくファイルに書き出す方法のmergesortでどうだろうか。
0519デフォルトの名無しさんNGNG
ファイルを分割してから実行したほうが良いんじゃないの?
後でマージすれば良いし。それくらい考えられないのか?
>>504
0520デフォルトの名無しさんNGNG
>>517
> C++(-略-)なら
  ~~~~    ~~~~
0521デフォルトの名無しさんNGNG
>>515-519
どうもありがとうございますm(_ _)m
さっそくファイル分割してmergesortを試してみまっす!
0522デフォルトの名無しさんNGNG
少し似てる問題なんですが、

最大8文字の英小文字からなる1億個の文字列(全て異なる。未ソート)が書かれたファイルを読み込んで、ある与えられた英小文字列αがあるかどうかを調べる。
もしあった場合には、このファイルを辞書順に並べた場合の何番目にあるか。また、その前後の文字列は何か。
ただしメモリは256MBしかない。
これを実現するプログラムの概要を示せ。

と言う問題で、効率がいいアルゴリズムってどんな感じですかね。
0523デフォルトの名無しさんNGNG
cat -n txt.txt |sed -ne "`awk '/^alpha$/{printf("%d,+2p\n", NR - 1)}' txt.txt`"
0524癒 ◆xTtI333vNE NGNG
>>520

>>504が
>c言語を使用してます。よろしくお願いしますm(_ _)m
って言ってたからなんだけど。。。
まぁ、本人満足してるみたいだからいいか
0525デフォルトの名無しさんNGNG
>>524
"C++(ここは略)ならこれで十分なんだよな。"(でも、Cでやるとな・・・。)

って感じで言ったんだけど。
0526癒 ◆xTtI333vNE NGNG
>>525
漏れの理解力不足スマソ
0527デフォルトの名無しさんNGNG
>>526
こちらこそ、わかりにくい文章でスマソ
0528デフォルトの名無しさんNGNG
>>504
>>521
ファイル分割って言っても、行の途中で分割すると
カウントが正確でなくなるからな。
最後にそこだけケアしとけ。
0529デフォルトの名無しさんNGNG
宿題
2次元配列を用いて標準入力から文字列を入力して表示しなさい。
(入力にはfgetsを用いること)
さらにstrlenを使い文字数をカウントしなさい。
またその文字数は入力した文字列の数と違うことはなぜか?
その原因を突き止め、文字数を用いた方法で解決しなさい。

まったくわかりません(ノ_・、)
お願いします(T人T)
0530デフォルトの名無しさんNGNG
2次配列なのはよく分からないけど、
char buff[1024];
がある時、
fgets(buff, 1024, stdin);
でbuffに標準入力から読み込める。無理に2次配列を使うなら
char buff[30][1024];
fget(buff[i], 1024, stdin); (i = 0 .. 29)
みたいになる、はず。

strlenでは最後の改行文字まで読み込む。そのことは
for(i=0;buff[i];i++)printf("%02X", buff[i]);
で確認できる。(最後に改行の0Cか0Aのどちらかは出てくる)
なので、その分入力した文字列の文字数と異なる。

解決法は…って、何を解決するの?
0531デフォルトの名無しさんNGNG
>>529
#include<stdio.h>
#include<string.h>

int main(void)
{
char test[1][10];
int tmp;

fgets(test[0] ,sizeof(test[0]),stdin);
printf("%s",test[0]);

//解決法?w
tmp=strlen(test[0]);
test[tmp-1]='\0';

printf("%s",test[0]);

return 0;
}

↑のようにやってみたけどさー
エラーはくぜぃ!教えてエロい人!
↓エラー内容

エラー E2277 a.c 14: 左辺値が必要(関数 main )
警告 W8004 a.c 19: 'tmp' に代入した値は使われていない(関数 main )
*** 1 errors in Compile ***
0532デフォルトの名無しさんNGNG
暗にfgetsは良くないと言いたい先生じゃないの?
0533デフォルトの名無しさんNGNG
>>531
test[0][tmp-1]='\0';
0534デフォルトの名無しさんNGNG
>>533
cool
0535デフォルトの名無しさんNGNG
>>531
#include<stdio.h>
#include<string.h>

int main(void)
{
  char test[1][10];
  printf("%s",(fgets(test[0],sizeof(test[0]),stdin), test[0]));
  printf("%s",(test[0][strlen(test[0])-1]='\0', test[0]));
  return 0;
}
0536デフォルトの名無しさんNGNG
宿題お願いします。

課題内容ですが、
・各自でテーマを設定し、プログラミングをする
・C言語を用いて、LinuxもしくはWindowsで動作可能であること
・分岐構文と反復構文を用いること
・プログラム中にタイトルやコメントを十分に入れること
・A4用紙10枚以内

授業が分からないまま課題が出たのでテーマといっても全然思い付きません
高2なのでまだ難しい事は習ってません
何か適切なプログラムがあれば教えて下さい。
0537デフォルトの名無しさんNGNG
>>536
授業ではどの程度のことを学びましたか?
大まかな項目名だけでも書いてください。
0538デフォルトの名無しさんNGNG
>>536
とりあえずこのスレの宿題でよさげなやつでもパクっといたらどうでしょう?
0539536NGNG
>>537
変数・分岐構文・反復構文あたりだけです
授業で習ってない内容が入ってても構わないそうです

>>538
一応一通り目を通しましたが、理解できないものが大部分でした。。
0540デフォルトの名無しさんNGNG
>>535
great!
0541デフォルトの名無しさんNGNG
>>536
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=208
こんなんどうかな?
これ昔俺が宿題用に作ったやつで単純利息で目標金額まで何年かかるかってゆーもの。
ちなみに複利計算っつーのもあるけど
またあとでUPしよう

間違っていたら訂正よろしゅー
0542デフォルトの名無しさんNGNG
あーちゅーかA410枚じゃみじかすぎかw
すまん程度が低くて参考ににならんかったな
0543デフォルトの名無しさんNGNG
#include <stdio.h>
#include <time.h>
#include <math.h>
#define PRIME_MAX 258440
int main(void)
{
unsigned int sosuukouho,sosuu[258440],n,m/*配列の上限は258442個*/;
clock_t start, end;
start = clock();
sosuu[0] = 2;m = 1;sosuukouho=3;
/*このwhile文でPRIME_MAX個の素数を発見する*/
while(m<=PRIME_MAX-1){
for(n=0; n<=m; n++){
if(sosuukouho % sosuu[n] == 0)
break;
if((sosuukouho % sosuu[n] != 0) && (n == m-1)){
sosuu[n+1] = sosuukouho;
m += 1;
}
}
sosuukouho=sosuukouho+2;
}end = clock();
for(sosuukouho=0,sosuukouho<10000;sosuukouho++)
putchar('\a');/*終了を音で知らせる*/
/*ここのコメントは素数を表示する機能をなくすため*/
/*for(n=0;n<=m-1;n++){*/
/*printf("%d番目の素数は%dです\n",n+1,sosuu[n]);}*/
printf("処理にかかった時間: %f秒\n", (double)(end - start) / CLOCKS_PER_SEC);
printf("素数の数は%d個で、最後の素数は%dです。\n",m,sosuu[m-1]);
return 0;
}
>>536プレゼント これでも提出しとけ
0544デフォルトの名無しさんNGNG
セルラオートマトンで森林火災のシミュレーションなんてどう?
0545536NGNG
ありがとうございます
簡単なものでも大丈夫なので十分参考になりました
とりあえずこの二つで頑張ってみます。
0546デフォルトの名無しさんNGNG
Scanf関数の文法説明・アルゴリズム説明をしろ
という宿題がでたのですがよくわかりません・・・
どなたか教えてもらえませんでしょうか?
0547デフォルトの名無しさんNGNG
Scanf 関数なんて関数はありません
0548デフォルトの名無しさんNGNG
なんか将来的に役に立たなさそうな宿題出されてる人が多いな。
0549デフォルトの名無しさんNGNG
>>548
宿題自体じゃなくて、アルゴリズムを"考える"ところに
意味があるんじゃなかろうか。
0550デフォルトの名無しさんNGNG
>>548
baka
0551デフォルトの名無しさんNGNG
>>546
Scanfとはだなつまりえーと、んじゃまず発音から教えるか。
発音はだな ス カ ン エ フ だ!
OK?そうだ勇気を出して口に出して言ってみるんだ!せーのっ
「・・・」 
OKOK恥ずかしがりやなんだな。大丈夫だそんなに恥ずかしくないぞ。
勇気をだして言ってみるんだ!はいっせーのっ!

0552デフォルトの名無しさんNGNG
だっふんだ!
0553デフォルトの名無しさんNGNG
>>551
子音の後ろ f の発音は普通 フ[f] だろ?
そんなんじゃ英語の単位貰えないぜ?
0554デフォルトの名無しさんNGNG
Y=4X+5があり、X=1〜nの時(刻み幅0.1)のYの値を求め、Yのn番目の値を
0.3倍した時の値とその値がXがいくつの時かを求めるプログラムを
おねがいします。
(0.3倍のYの値が無ければ前後二つのYの値とそれに対応する二つのXの値を求めよ)
0555デフォルトの名無しさんNGNG
#include <stdio.h>
double f(double x){return 4*x+5;}
double fi(double y){return (y-5)/4;}
int main()
{
double x,y;
int x1,x2;
int i;
int n;
printf("n >");
scanf("%d",&n);
for(i=1;i<=n*10;i++)
x=i/10.0;
printf("x=%fの時 y=%f\n",x,f(x));
}
y=f(n)*0.3;
x=fi(y);
x1=(int)(x*10);
x2=(int)((x+0.09)*10);
printf("y=%f の時 x=%f",y,x1/10.0);
if(x1!=x2)printf(" , %f",x2/10.0);
printf("\n");
return 0;
}
0556デフォルトの名無しさんNGNG
訂正
printf("y=%f の時 x=%f",f(x1/10.0),x1/10.0);
if(x1!=x2)printf(" , y=%f の時 x=%f",f(x2/10.0),x2/10.0);
0557デフォルトの名無しさんNGNG
>>555.556
釣り・・・だよな。
0558デフォルトの名無しさんNGNG
すげーぜ!

次の宿題まだー?
0559デフォルトの名無しさんNGNG
未解決問題:
>>352 >>411
0560デフォルトの名無しさんNGNG
eibun1.datというファイルがあり、内容は、

角田      熊沢      藤田      岸
松永      安田      渡辺      和田
・・・・・・

のようにTabで区切られた語群です。


「ファイル名」   eibun1.dat
「何行目」     N
「何番目の語」   M

ファイル名とN,M(数字)を入力したときに
M行目のN番目の単語を表示するプログラムを作成してください。
0561デフォルトの名無しさんNGNG
M行目のN番目

↓

N行目のM番目
0562デフォルトの名無しさんNGNG
>>560
それだったらタブ以外に改行文字も入れないと。
0563デフォルトの名無しさんNGNG
お願いします!教えて下さい!
夏休みの宿題として、C++で住所帳を書いています。
で、名前などの編集機能を付けようと頑張っています。
一応、名前で検索をかけて、同じ名前があった場合に、どちらの名前を編集するか選択させるようにしたいのですが、
その部分で困っています。
とりあえず、ダブった名前のあるオブジェクトをさすポインタをオブジェクトの配列に代入していき、
編集するようにしたいんですが、うまくいきません。
*pList2[?] = pList2->Next でやろうとしました。
で、その配列を表示しようとしたら、エラーになります。

どうかお願いします。
0564デフォルトの名無しさんNGNG
>>563
つべこべ言わずにソース晒せ
0565563NGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1094048436&res=1
こんな感じです。
0566デフォルトの名無しさんNGNG
C++なら構造体へのtypedefはいらん
0567デフォルトの名無しさんNGNG
*pList2[?] = pList2->Next
これが見当たらないんだが・・・
0568563NGNG
あっ!
pList[k - 1] = pList1->Next;
下のほ〜にあります!すみません。例えで、書いただけなので。

typedefっていらないんですね☆
ありがとうございます!勉強になります
0569デフォルトの名無しさんNGNG
>>568
pList[?]はAddress_listであって、Address_list*
じゃないですよ
0570デフォルトの名無しさんNGNG
例外が有効なとき、newでNULLが返されたりしないことが多かったような…。
どうだっけ?
0571563NGNG
えっと、Address_list* にすれば、うまくいくのでしょうか?
0572デフォルトの名無しさんNGNG
>>571
Address_list* pList1 = this->Next, *pList[10];
こうやったとしても

pList[k - 1] = pList1->Next;
cout << k++ << ":" << endl;
printf("   [名前] %s\n   [年齢] %s\n   [住所] %s\n   [電話番号] %s\n",
        pList[k - 1].pName, pList[k - 1].pAge, pList[k - 1].pAddress, pList[k - 1].pTelephone_number);
        ↑
最初pList[0]しか代入してないのでpList[1]が未定・・・
0573デフォルトの名無しさんNGNG
あと、ポインタの配列を採用するなら、こうね

printf("   [名前] %s\n   [年齢] %s\n   [住所] %s\n   [電話番号] %s\n",
        pList[k - 1]->pName, pList[k - 1]->pAge, pList[k - 1]->pAddress, pList[k - 1]->pTelephone_number);
0574563NGNG
配列の要素がちゃんとできていなかったため、うまくいかなかったって事ですか?
0575デフォルトの名無しさんNGNG
>>574
×オブジェクトをさすポインタをオブジェクトの配列に代入
○オブジェクトをさすポインタをオブジェクトのポインタの配列に代入

あと、配列の要素も然り
0576563NGNG
オブジェクトをさすポインタをオブジェクトのポインタの配列じゃないと、
代入できないのは理解しました☆
ところで、今僕がやってるやり方ってあんまり良くないんでしょうか?
0577デフォルトの名無しさんNGNG
>>560
これじゃだめ?w
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=307
まぁよゆーのエラーありなんだが
0578デフォルトの名無しさんNGNG
良くないかどうか知らないけど、あとはk++の位置直せば終わりでしょ?
0579563NGNG
すみません。直したんですが、エラー終了してしました。
同じ名前を2つ入力して、検索でその名前を入力したのですが、
2つ目が表示されませんでした。。。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1094053081&res=1
0580デフォルトの名無しさんNGNG
NULLPO
0581563NGNG
NULLPO って何でしょうか? すみません。全然知識がないもので・・・。
0582デフォルトの名無しさんNGNG
>>579
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=210
3箇所修正しました
0583デフォルトの名無しさんNGNG
>>577
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=211
0584563NGNG
582さん、ありがとうございました☆
問題を解決することができました!
0585デフォルトの名無しさんNGNG
また2・3匹釣られてるな
0586デフォルトの名無しさんNGNG
( ・∀・)⊃─[]ガッ
[    ]  (´∀` )←>>580
0587デフォルトの名無しさんNGNG
なぜC++なのにSTLを使わないんですか、そこがいまいちわかりません
0588デフォルトの名無しさんNGNG
STLが信用できません
コンパイラが信用できません
そして何より自分が信用できません
0589デフォルトの名無しさんNGNG
>>588
一番信用できないのがヒューマンエラー
0590デフォルトの名無しさんNGNG
double形配列dataに10人の体重データ{67.2, 43.6, 78.9, 50.1,0.0, 32.9, 44.4, 100.9, 62.5, 0.0}
を初期化し、体重の合計と平均を求めるプログラムを作成しなさい。ただし、未測定者の体重値は0.0としてある。

とりあえず合計を出そうとしましたが答えが0.0になってしまいます。どなたかお願いします。
#include <stdio.h>
int main(void)
{
double data[10] = {67.2, 43.6, 78.9, 50.1, 0.0, 32.9, 44.4, 100.9, 62.5, 0.0};
int i, goukei=0;
for(i=0;i<10;i++);{
goukei += data[i];
}
for(i=0;i<10;i++);{
printf("%f\n", data[10]);
}
printf("体重の合計は%fです。\n", data[10]);
return 0;
}
0591デフォルトの名無しさんNGNG
>>590
1. data が double なのに
goukei が int なのはいかがなものか。
2. data[10] を printf するのはまずい。
有効なのは data[0] から data[9] まで。
3. 最後の printf、合計値が入っているのは data[10] じゃない。
4. for ループの printf もなぜ data[10] …
0592591NGNG
ところでこの問題、
未測定者は平均値の計算に含めないこと、
という意味なんですかね?
まあ、がんばってください。
0593デフォルトの名無しさんNGNG
ファイル「sample.txt」のデータを読み込み、直線補間しなさい。

座標は、x,yともに順番になっています。例えば1つ目の座標は
(x1,y1)=(0.0000E+00,0.5240E+01) となります。
windowsXP,bccを使用しています。よろしくお願いします。

sample.txtの内容
x座標
0.0000E+00 0.1000E-01 0.2000E-01 0.5000E-01 0.1000E+00
0.2000E+00 0.5000E+00 0.1000E+01 0.1500E+01 0.2000E+01
0.3000E+01 0.4000E+01 0.5000E+01 0.6000E+01 0.8000E+01
0.9000E+01 0.1000E+02 0.1100E+02 0.1200E+02 0.1248E+02
0.1469E+02 0.1920E+02 0.2336E+02 0.2635E+02 0.2916E+02
0.3364E+02 0.4053E+02 0.4489E+02 0.4900E+02 0.5427E+02
0.5929E+02 0.6453E+02 0.7056E+02 0.7862E+02 0.1000E+03
0.1138E+03 0.1210E+03 0.1284E+03 0.1440E+03 0.1690E+03
0.2000E+03 0.2250E+03 0.2560E+03 0.3000E+03 0.3480E+03
0.4000E+03 0.5000E+03 0.6000E+03 0.7000E+03 0.8000E+03
0.9000E+03 0.1000E+04 0.5000E+04 0.1000E+05

y座標
0.5240E+01 0.5280E+01 0.5400E+01 0.5650E+01 0.5900E+01
0.6200E+01 0.6620E+01 0.6880E+01 0.6980E+01 0.7000E+01
0.6870E+01 0.6610E+01 0.6290E+01 0.6000E+01 0.5350E+01
0.5050E+01 0.4760E+01 0.4480E+01 0.4310E+01 0.4210E+01
0.3770E+01 0.3000E+01 0.2430E+01 0.2100E+01 0.1830E+01
0.1460E+01 0.1080E+01 0.9170E+00 0.7800E+00 0.6500E+00
0.5600E+00 0.4760E+00 0.4150E+00 0.3430E+00 0.2270E+00
0.1870E+00 0.1650E+00 0.1500E+00 0.1220E+00 0.9200E-01
0.6950E-01 0.5600E-01 0.4500E-01 0.3500E-01 0.2720E-01
0.2130E-01 0.1450E-01 0.1070E-01 0.8200E-02 0.6600E-02
0.5400E-02 0.4550E-02 0.3000E-03 0.9300E-04
0594デフォルトの名無しさんNGNG
>一番信用できないのがヒューマンエラー

エラーを信用するも何もないだろ?(age)
0595デフォルトの名無しさんNGNG
>>590
for文の後に;はいらないですね
0596デフォルトの名無しさんNGNG
for(i=0;i<10;i++){;}
{
printf("%f\n", data[10]);
}
と同じだからコンパイルできるんだよな。
0597デフォルトの名無しさんNGNG
>>590
#include <stdio.h>
int main(void)
{
double data[10] = {67.2, 43.6, 78.9, 50.1, 0.0, 32.9, 44.4, 100.9, 62.5, 0.0};
int i,j=0;
double goukei=0,heikinn;
for(i=0;i<10;i++){
goukei += data[i];
if(data[i]==0.0){
j++;
}
}
for(i=0;i<10;i++){
printf("%f\n", data[i]);
}
heikinn=goukei/(i-j);
printf("体重の合計は%f 平均は %fです。\n", goukei,heikinn);
return 0;
}
0598590NGNG
#include <stdio.h>
int main(void)
{
double data[10] = {67.2, 43.6, 78.9, 50.1, 0.0, 32.9, 44.4, 100.9, 62.5, 0.0}, goukei=0;
int i;
for(i=0;i<10;i++);{
goukei += data[i];
}
for(i=0;i<10;i++);
printf("体重の合計は%fです\n", data[i]);
return 0;
}
こういう事ですか・・・・・?すみませんが全然わかりません
0599590NGNG
>>597
ありがとうございます。助かりました
0600デフォルトの名無しさんNGNG
>>593
直線補間する座標は自分で入力するの?
0601デフォルトの名無しさんNGNG
>>600
座標はテキストファイルに入っているデータです。
「sample.txt」の内容そのまんまです。
0602デフォルトの名無しさんNGNG
すみません。昨日ここに住所帳の事でお願いしに来た者なんですが、
入力したデータをファイルに書き込みできるようにしようと思ったのですが、
どう書いていいのか、全然わかりません。
で、ファイルに保存したデータを住所帳を開く度に使えるようにしたいのですが、
どうすればいいのでしょうか?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1094188282&res=1
お願いします。
0603デフォルトの名無しさんNGNG
visual basic 6 用に書かれたコードを visual c++ 6 用に起こしています。
そこで質問です。

Basic関数でのLEFT関数(ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vblr7/html/vafctleft.asp)
と同様の命令を出す、vc++で使える関数はあるのでしょうか?
よろしくお願いします。
0604デフォルトの名無しさんNGNG
>>603
strncpy()
0605>593NGNG
#include <stdio.h>
#include <stdlib.h>
enum {MAXDATA = 100};
int ndata = 0;
double data_x[MAXDATA], data_y[MAXDATA];
void read_data(FILE *fp)
{
int i;

fscanf(fp, "%*s"); /* "X座標"を読み飛ばす */
for (ndata = 0; ndata < MAXDATA && fscanf(fp, "%lf", &data_x[ndata]); ndata++)
;
fscanf(fp, "%*s"); /* "Y座標"を読み飛ばす */
for (i = 0; i < ndata && fscanf(fp, "%lf", &data_y[i]); i++)
;
}
void print_data(FILE *fp)
{
int i;
for (i = 0; i < ndata; i++)
fprintf(fp, "%f,%f\n", data_x[i], data_y[i]);
}
int main(void)
{
read_data(stdin);print_data(stdout);
return 0;
}
/* 補完は仕様がよくわからんので、データのリードだけ。続きはだれかやってちょ */
0606デフォルトの名無しさんNGNG
>>605
どんな出力がほしいの?
それが解からないと…
0607デフォルトの名無しさんNGNG
>>606
名前欄に>593と書いてあるが。
0608デフォルトの名無しさんNGNG
つまり、データ最小値<x<データ最大値で任意のxの値を入力し、
データから線形補間してxに対応するyの値を出力せよ、
といういう意味でOK?
0609605NGNG
>>605は一応、>>593向けにつくた。(私は>>593ではないです)
x入力してyを出力するのか、入出力が逆か、
補完させるちゅーても、入出力どーすんのかわかんねーので。これ以上は難しいやね。
普通は、xの値からyを推定するって思うが・・・(>>608氏と同じこと)。ってことで、続きよろしくです。
・・・てか>>593氏が返事くれると、続きだれか作ってくれるでしょう・・・。
0610593NGNG
>>608さんの意味でOKです。
>>605さん、ありがとうございます。
0611デフォルトの名無しさんNGNG
593は今なにがもとめられているかわかっていないに一票
0612593NGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=213
0613612NGNG
>>593
間違って名前欄に書いちゃった^^;
0614 NGNG
>>602なんですけど、やっぱり無茶苦茶なソースでやり気がなくなったんでしょうか?
マジでわからなくて、困ってるんですが・・・本当にお願いします。
0615593NGNG
助かりました。本当にありがとうございます。

0616デフォルトの名無しさんNGNG
>>614
うん や り 気 がなくなったんだよ。
0617デフォルトの名無しさんNGNG
>>614
住所録のデータをファイルに書き込むってMySQLつかったりできるといいね^^
0618デフォルトの名無しさんNGNG
やる気☆ですねw
で、MySQLって難しいってか、意味が全然・・・。
他に方法はないでしょうか?
0619デフォルトの名無しさんNGNG
>>618
もちろんありますよ。
たとえば、CVS形式で出力して読み込むだけなら簡単ですね。
名前1,年齢1,住所1,電話番号1
名前2,年齢2,住所2,電話番号2
     ・
     ・
のような形式でファイルに書き込んで、
読み込むときは
「,」でトークンをわけてやるようにすればできるでしょう。


0620デフォルトの名無しさんNGNG
すみません。CVSって何かわからなかったので調べてみたんですが、
難しい内容のような気がするんですが・・・。
解りやすく説明したサイトを知っていれば教えてもらえないでしょうか?
それと、>>619さんならどんな風にソースを書きますか?
0621デフォルトの名無しさんNGNG
>>620
過去ログに似たようなプログラムが何度も出てきたように思います。
詳しくは過去ログにて。
同じことはあまり書きたくない。
(Cのスレだったかな?まぁ宿題・質問スレの過去ログ参照のこと)
0622デフォルトの名無しさんNGNG
確かに、CVSで調べると難しそうな内容ばっかりだな。
CVSではなく、CSVだ。


分かってるならすまん。
0623620NGNG
あはー、やってしまいましたー
しかも、全然気づいてなかったです
0624デフォルトの名無しさんNGNG
C++の宿題がでてるんです。かわりに作ってください;;
CygwinでMeadowを開いて書いています。
作りたいのは簡易,会計処理プログラムです。
仕様コマンドは
 ・Input・Lord・Save・Sort・Search・Delere・Exit
を使ってExitコマンドをするまでは、プログラムは終了しないということです。
本当はもっと細かく仕様が決まっているんです。
作ってくれるという方は[email protected]までメールを下さい。
もちろんタダでとは言いません。
WebMoneyで2000円を払います。お願いします。
0625sageNGNG
マジで払うのかよ?
0626605NGNG
>>623 わしもよくやります<CSVとCVSの間違い

うーん・・・C++は門外漢なんだが。
ttp://cm.bell-labs.com/cm/cs/tpop/csvgetlinec++.c
にCSVライブラリのコードがある。
ttp://cm.bell-labs.com/cm/cs/tpop/code.html
↑の使用条件(参考訳:著作権表示を消さない限り、自由に使ってよい)にしたがって使ってくれい。
和訳は『プログラミング作法』として売ってるんで本屋さんへGo!
0627デフォルトの名無しさんNGNG
>>623
boost::tokenizer
0628デフォルトの名無しさんNGNG
>>623
strtok()
0629619NGNG
ごめんなさい
>>623 != >>620でした
実は>>623 == >>619です

今日は疲れてるのかな…
0630真620NGNG
>>627
>>628
ありがとうございます☆
てか、なんかちょっとおもしろい事になってますね。
0631デフォルトの名無しさんNGNG
http://dictionary.goo.ne.jp/search.php?MT=%A5%A2%A5%DB%CC%D3&kind=jn
http://sylphys.ddo.jp/upld2nd/niji4/src/1094135967939.jpg
0632デフォルトの名無しさんNGNG
>>618

『CVS』Concurrent Versions System
http://e-words.jp/w/CVS.html
主に共同開発のためのシステム

『CSV』Comma Separated Values
http://e-words.jp/w/CSV.html
ファイルタイプ
0633デフォルトの名無しさんNGNG
んで624に釣られたカワイソウな人はいるんですか?
0634624NGNG
まだ一人もメールをくださりません・・・。
0635デフォルトの名無しさんNGNG
>>634
ならメアド公開しろよ。
0636デフォルトの名無しさんNGNG
>>635
>>624
0637デフォルトの名無しさんNGNG
Cなのですが、ある型を宣言し最大値を入力、表示せよという問題です。
#include <stdio.h>
main(){
nt aa;
aa=INT_MAX;
printf("型 = int , 値 = %d\n",aa);
return 0;
}
【結果】
型 = int , 値 = 32767

俺のパソコンは16ビットなのか・・・2147483647と出るのが理想なのですが。
環境はWin2kproでLSI C-86使ってます。
LSIなのがいけないのでしょうか。
0638637NGNG
iが抜けてましたね。
ちなみにsizeof(int)で見てみたらサイズはやはり2バイトでした。
0639デフォルトの名無しさんNGNG
>>637
LSI-Cはそうだね。無料版は制限もきついから早めに乗り換えた方がいいよ。
0640デフォルトの名無しさんNGNG
bcc32でvector使うと、警告がvectorのcppから出てくるんだけど、これを表示させなくしたいのね。
軟化上手い方法ある?
0641637NGNG
>>639
ムァジすか。bccに変えるべきですね・・・・
どうもありがとうございました。
0642デフォルトの名無しさんNGNG
>>640
bcc32 hoge.cpp 1>/dev/null 2>&1
0643デフォルトの名無しさんNGNG
nulじゃないのか
0644デフォルトの名無しさんNGNG
>>640
bccに警告レベルを切り替えるpragmaがあるなら、#include <vector>の前後で変えればいいやん。
0645デフォルトの名無しさんNGNG
>>644
なんでこんなのでるの?警告が出ないような美しいvector.cppは無いのかねぇ?
どこのcpp取ってきても同じかな
0646デフォルトの名無しさんNGNG
//警告が出ないような美しいvector.cpp
#pragma option push -w-
#include <vector>
#pragma option pop
0647デフォルトの名無しさんNGNG
警告って発想がいやらしいよなぁ。
OKかエラーかはっきりしろよっ!って感じ。
0648デフォルトの名無しさんNGNG
さっぱりわかりません。どなたかご教授下さい!お願いします!言語はCです。

15の要素数を持つtokuten配列を用意する。画面より、コマンドを選択し任意のデータを配列へ
挿入しその時のデータ数、全データ(要素数)および平均点を表示するプログラムを作成せよ。
なお、データの挿入位置は配列の先頭とする。また、要素数が15を超えた時はエラー表示をする。
画面例:
挿入データを入力して下さい。
入力データ:60

データ数:3
要素1:60
要素2:70
要素3:80
平均:70
0649デフォルトの名無しさんNGNG
>>648
コマンドって何があんの?下の例を見る限り挿入するデータしか入力してないみたいだが?
0650デフォルトの名無しさんNGNG
>>648
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=216
コマンドは q で入力終了というものを勝手に追加した
0651デフォルトの名無しさんNGNG
2点間の距離を算出するプログラムは以下のとおり

#include <stdio.h>
#include <math.h>
#define DIMENSION 3 /* N次元 */
double kyori(double a[],double b[]){
int i;
double k,k2=0;
for(i=0;i<DIMENSION;i++){
k2+=pow(a[i]-b[i],2);
}
k=sqrt(k2);
return(k);
}
void main(void){
double p1[]={1,2,3},p2[]={9,8,7};
printf("%f\n",kyori(p1,p2));
}

これを基にして点がp1、p2、p3、p4、p5・・・とある場合に
指定した点から近い順に表示するプログラムを作成してください
画面例:
どこから?
p1
近い順
p4
p3
・・・
p2
p5

これってどうなんですか?
0652デフォルトの名無しさんNGNG
何がどうなんですかだよ
0653デフォルトの名無しさんNGNG
どうしようもないです。
0654デフォルトの名無しさんNGNG
>>651
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=217
ダメーポ
0655デフォルトの名無しさんNGNG
VC++6使用です。以下のようにプログラムを組んだのですが、実行をすると最後の行を
実行したときにエラーダイアログが表示されてしまいます。エラー内容は「The value
of ESP was not properly saved across a function call. This is usually a result
of calling a function declared with one calling convention with a function
pointer declared with a different convention. 」
関数ポインタの定義に__stdcallを付けてみましたが、表示されるエラー内容は一緒で
した。どこがオカシイのか、ご教授お願いします。
(DLLに入っている関数を使用するプログラムです)



short num;
short arg_1, arg_2;
typedef short (*FUNC)(short, short);
FUNC num_start;
HINSTANCE hDLL;

hDLL = LoadLibrary("num232.dll");
if(hDLL){
  num_start = (FUNC)GetProcAddress(hDLL, "NumStart");
}
arg_1 = 10; arg_2 = 100;
num = num_start(arg_1, arg_2);
0656デフォルトの名無しさんNGNG
ス レ が  ち が う だ ろ う   が    ー
0657デフォルトの名無しさんNGNG
二年でプログラムをマスターできますか?仕事じゃなく趣味でやりたいのですが 目標はオリジナルのOSを作成する事です
0658デフォルトの名無しさんNGNG
努力次第です。
2年もあればOS程度作れるでしょう。
0659デフォルトの名無しさんNGNG
>>657
既存のOSを模倣したものならできるでしょう。
ただし、新しいアイデアを採り入れたようなものは
いろいろな論文を読んだりして研究しないといけません。
0660デフォルトの名無しさんNGNG
1日10分で2年と1日2時間で2年。
OSというとドライバあたりが気になる所だが。
0661デフォルトの名無しさんNGNG
>>657が途中で挫折するに5万円
0662648NGNG
>>650
遅くなってすみません!本当に助かりました!
ありがとう〜
0663デフォルトの名無しさんNGNG
>>657が途中で挫折するに国家予算
0664648NGNG
下図の販売店A,B,Cの各商品x,y,z,wの売上計算のプログラムをC言語を用いて実現せよ。
各データはプログラム内で設定し、合計を計算せよ。また、プログラム終了時に全データを印字せよ。
売上合計…各販売店の合計、各商品の合計、総合計

        商品
     x  y z w  計
販 A 1234 2345 3456 4321 11356
売 B 2876 2765 4567 3987 14195
店 C 1907 3254 3243 2536 10940
  計  6017 8364 11266 10844 36491

2次元配列を使えばいいとはわかったのですが解けません。
教えてください。お願いします…。
0665648NGNG
図がずれた…。すいません!左から順にx,y,z,w,計です。
0666デフォルトの名無しさんNGNG
>>657がが途中で挫折するに2^63-1(unsigned int int)円
0667666NGNG
思いっきり間違ったし。恥ずかしすぎ。
正しくは、
>>657が途中で挫折するに2^63-1(unsigned long long int)円
0668デフォルトの名無しさんNGNG
ガイシュツかもしれませんが、教えてください。
オブジェクトのアドレスを自動変数にコピーしておき、
そのオブジェクトを破壊(デストラクタ)させた後、
コピーしたアドレスに対してアクセスを行うと、
どうなりますか?

UNIX/gcc
では、オブジェクトがあるかの様に動かす(メソッドをコールする)ことができました。

間違いなく、やってはいけない手法だとは思いますが、
ANSIとかでこの辺の動きって規定されていますか?
こんぱいらや機種依存で動作はことなりますか?
0669デフォルトの名無しさんNGNG
>>665
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=218
ほれ。ちゃーんと改造のよちを残しときましたんでー(^^;
0670デフォルトの名無しさんNGNG
>>668
ここは宿題すれつってんだろーが >657 に一言残して去れ!
0671デフォルトの名無しさんNGNG
仕事でやるわけじゃないから挫折はないですよ 趣味でプログラム組みたいだけですから何十年かかろうがマターリとやれればいいんです
0672デフォルトの名無しさんNGNG
仕事じゃないから挫折するって理屈はないの?
そんなわけで挫折に(地球上の人口)円
0673デフォルトの名無しさんNGNG
趣味"だからこそ"挫折がありそうなもんだが。
0674デフォルトの名無しさんNGNG
確かに。仕事でやる方が挫折がないだろ。
0675デフォルトの名無しさんNGNG
でもでもー うちは ふけいきだから とかいって かいしゃごと ざせt
0676デフォルトの名無しさんNGNG
引数に text1.txt text2.txtなどのファイル名を二つ取り、これらのファイルに共通に含まれる行を表示せよ。

(1)の内容が…   AAA\nBBB\nCCC\nDDD\nEEE\nFFF
(2)の内容が…   XXX\nAAA\nFFF\nYYY\nZZZ
なら、
AAAとFFFが答えとなる。
0677デフォルトの名無しさんNGNG
#include <set>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main( int argc, char* argv[] )
{
if ( argc != 3 ) {
cerr << "usage:\nargv[0] <inputFileA> <inputFileB>" << endl;
}

set<string> stringSet;
string line;
ifstream finA( argv[1] );
ifstream finB( argv[2] );

while ( getline( finA, line ), !finA.eof() ) {
stringSet.insert( line );
}
while ( getline( finB, line ), !finB.eof() ) {
if ( stringSet.find( line ) != stringSet.end() ) cout << line << endl;
}
return 0;
}
0678デフォルトの名無しさんNGNG
#include<stdio.h>

int main(void)
{
system("cat text1.txt >> text2.txt | sort text2.txt | uniq -d");
}

こここここれどうかな>>676
0679デフォルトの名無しさんNGNG
>678 ソートしちゃダメだろ(w

素直に diff 汁!
0680デフォルトの名無しさんNGNG
#include<stdio.h>
int main
{
   int i, j;

   printf("  10 11 12 13 14 15 16 17 18 19 20\n");
   for(i=10=;i<20;j++) {
      printf("%4d",i*j);
     }
  }
  printf("\n");

  return 0;
}

小さい方のループのjの値がループして戻ってくる度に10にリセットされるのはなんででしょうか?10の値がJに入れられるならj++しても帰ってくる度にjの値が10になって一生ループしても不思議じゃないと思うんですが...
0681デフォルトの名無しさんNGNG
个

C言語です
0682デフォルトの名無しさんNGNG
ソースがおかしいから何ともいえない。
ちゃんとコピーしてくれ。

> int main
仮引数リストはどこへ

> for(i=10=;i<20;j++) {
初期化がおかしい

>     }
>  }
括弧が対応していない
0683デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void)
{
int i, j;

printf("  10 11 12 13 14 15 16 17 18 19 20\n");
for(i=10;i<=20;i++) {
printf("\n%2d",i);
   for(j=10;j<=20;j++){
    printf("%4d",i*j);
}
}
printf("\n");
return 0;
}

sumimasen
泡立ててました
0684デフォルトの名無しさんNGNG
>>680
ループして戻ってくる度にはリセットされてないけど?
forループ開始する度にはリセットするけど
0685 NGNG
なんだよ!こいつは!
http://edit4.auctions.yahoo.co.jp/jp/config/review?aID=d51727231&rating=1001
0686デフォルトの名無しさんNGNG
>>685
クリックすると、投票させられるっぽい。
0687デフォルトの名無しさんNGNG
>>684先生御教授ありがとうございます。
0688デフォルトの名無しさんNGNG
#include<stdio.h>

void putd(int a)
{
   printf("%d\n",a);
}

int main(void)
{
   int dt = 500;

   putd(100);
   putd(dt);

   return 0;
}
三行目から六行目は全く意味がないように思うんですが..
aは空っぽで、一体何をしたいんでしょう?
Cの入門書に書いてあったんです。
何のための関数か教えてくたざい。
0689デフォルトの名無しさんNGNG
 ̄
0690デフォルトの名無しさんNGNG
>>688
>三行目から六行目は全く意味がないように思うんですが..
>aは空っぽで、一体何をしたいんでしょう?
迷言だな

マジレスすると、putd は、渡された数値を標準出力に書き出して改行する関数。
基本をしっかりと身に付けられるよう、がんがれよ
0691デフォルトの名無しさんNGNG
>>688
お前ワープは物理的に無理って信じてるだろ
0692デフォルトの名無しさんNGNG
しっかり身に付けてきます。親切にどうもありがとうございました
0693デフォルトの名無しさんNGNG
>>691
ワープは無理だよ。
ホーキングもプラックホールでのワープは「ない」って、言い直したからね。
0694デフォルトの名無しさんNGNG
>>693
無理じゃない。
無理っぽいんだ!
0695デフォルトの名無しさんNGNG
量子の状態を瞬間移動させることには成功したと
どこかの雑誌で読んだ
0696デフォルトの名無しさんNGNG
>>695
http://members.at.infoseek.co.jp/yas1091/R3_temp.swf?inputStr=%83%7D%83W%82%C5%81H
0697デフォルトの名無しさんNGNG
>>696
ワロタ
0698デフォルトの名無しさんNGNG
プラックホールって何?
0699デフォルトの名無しさんNGNG
使い込まれた穴だよ。
想像してごらん・・・

ほら。黒い穴(ブラックホール)がイメージできたろう?
0700デフォルトの名無しさんNGNG
>>699
質問をよく読みましょう。
0701デフォルトの名無しさんNGNG
>>698
Pluck  hole
勇気の 穴
0702デフォルトの名無しさんNGNG
ある程度以上の質量を持った星が寿命を終えて最後に爆発した時、
その反動で星を構成していた物質がギュッと縮まることがある。
そうすると、元の物質よりも密度が高い物質が出来るわけで、
そうなると重力が大きくなって、回りの物をどんどん引き込んで
しまう。当然、そんな所に人間がいたら立っていることも出来ずに
ぺちゃんこになってしまう。そして光すらもその重力にまけてしまう。
つまり、その近くで仮に懐中電灯を付けても光らないわけだ。
そんなものが宇宙にあったら「黒い星(穴)」のように見えるだろう
ということでブラックホールと呼ばれる。
もちろん、実際に黒い色をしているかどうかすら本当は分からないが。
0703デフォルトの名無しさんNGNG
>>699
黒いのはあまり好きじゃない
0704デフォルトの名無しさんNGNG
なるほど。ホーキングは勇者というわけか。
0705デフォルトの名無しさんNGNG
test1.fの中でtest2.cに書かれた関数を呼び出しています。
このような条件でtest1.fをコンパイルしたいのですが、
どのようにコンパイルすれば良いのでしょうか?
当方、Linux環境です。
0706デフォルトの名無しさんNGNG
>>705
拡張子 f って何?
0707デフォルトの名無しさんNGNG
>>705
CやC++でないならスレ違いだよ
C/C++でも宿題でなければスレ違いだけど
0708デフォルトの名無しさんNGNG
>>706
Fortranだろ
0709デフォルトの名無しさんNGNG
>>706
.fはフォートランという言語だそうです。
内容はメイン関数だけみたいです。

>>707
一応、宿題なんですけど。。
別の言語?で書かれた関数も呼び出せることを
学ぶのが目的みたいです。
0710デフォルトの名無しさんNGNG
授業を聞かない705が悪い
0711デフォルトの名無しさんNGNG
組み合わせを求めるプログラムを教えてくらさい。
int c(int a, int b)で
aCbみたいな。
0712デフォルトの名無しさんNGNG
>>711
int c(int a, int b){return a==0||b==a?1:c(a-1, b)+c(a, b-1);}
0713712NGNG
ミス
int c(int a, int b){return b==0||b==a?1:c(a-1, b)+c(a-1, b-1);}
0714デフォルトの名無しさんNGNG
>>712
aに8、bに4を渡すとうちではSegmentation Faultになった。
0715デフォルトの名無しさんNGNG
fortran:test1.f
program test
call ctest()
end


c:test2.c
void ctest_() {
printf("test");
return;
}

$g77 -c test1.f
$gcc -c test2.c
$g77 test1.o test2.o
$./a.out
0716715NGNG
>>705
0717デフォルトの名無しさんNGNG
>>715
できました!!ありがとう御座います!!!
0718‥NGNG
構造体が扱えるのはは配列オンリーなんですか?
0719デフォルトの名無しさんNGNG
>>718
意味不明
0720デフォルトの名無しさんNGNG
>>718
そんな質問の仕方ではあなたがロンリーです
0721デフォルトの名無しさんNGNG
718は
struct N
{
int u, l, p, o
};

N n; // NG
N n[ 10 ]; // OK

ってことが言いたいのか?
0722デフォルトの名無しさんNGNG
むしろ、文から察するに、

struct {
int a[10];
};//OK

struct {
int a;
};//NG

という意味で聞いているように見える。

でも聞きたいことはおそらく、構造体を動的にメモリ確保できるのか
どうかということじゃないかと推測。
0723デフォルトの名無しさんNGNG
>721>722さん達の察する通りです。説明不足でしたあわたててました。

int abara;  ←配列にしてない
int abon[100];
int indo[100];
int mona[100];

これらを構造体にまとめて、例えば
[0]に設定した値を[20]に入れたら、
abara変数の立場はどうなるんでしょうか?
0724デフォルトの名無しさんNGNG
>>721
っていうか ガッ!!
0725デフォルトの名無しさんNGNG
>>723
何言ってんのかよくワカラン
この際長文でもいいからこれでもかってくらい詳しく説明してくれ
0726デフォルトの名無しさんNGNG
>>725
放置しろよ
0727デフォルトの名無しさんNGNG
携帯からなのでかなり時間がかかります。打ちミスも多いと思われ。
出来た頃にスレをアゲますので、マターリしてお待ちください。
0728デフォルトの名無しさんNGNG
↑絶望。放置。図書館かネトカフェからやれやボゲ
0729デフォルトの名無しさんNGNG
>>723
の文章は芸術
0730デフォルトの名無しさんNGNG
標準入力から入力した数値を素因数分解するプログラムをお願いします。

例)
Input number=>100

5^2*2^2

0731730NGNG
>>730は
C言語でお願いします
(TдT)
0732デフォルトの名無しさんNGNG
(TдT)
↑何これ?

因数はすぐ見つかるけど表示はどうすりゃいいのさ
0733デフォルトの名無しさんNGNG
>>731
アルゴリズムは不問?全探索のみ?
0734デフォルトの名無しさんNGNG
>>732さん
顔文字はスルーで
表示は>>731にしめした通りですがわかりにくかったでしょうか。。

>>733さん
アルゴリズムは不問でもよいと思います。
0735デフォルトの名無しさんNGNG
>>730
#include <stdio.h>
#include <string.h>

int main(void) {
int i, j;
int num;

scanf("%d",&num);

if ( num == 1 ) printf("1");
else {
for ( i = 2; num != 1; i++ ) {
for ( j = 0; num % i == 0; j++ )
num = num / i;
if ( j != 0 ) {
printf("%d^%d", i, j);
if ( num != 1 ) printf("*");
}
}
}
printf("\n");

return 0;
}
0736730NGNG
>>735
ダメダメ、例に書いたようにやってくれなくっちゃぁ。
0737デフォルトの名無しさんNGNG
>>736
氏ね
0738デフォルトの名無しさんNGNG
>735は少なくとも>730のように2バイト文字は使ってない罠。
0739デフォルトの名無しさんNGNG
2byte文字で出力する様にするのはできるけど、
そんなに2byte文字が重要なの?
0740デフォルトの名無しさんNGNG
っていうかそれくらい自分でやれよ
0741730NGNG
どうもありがとうございました。
0742デフォルトの名無しさんNGNG
直接選択法わけわかめ
0743デフォルトの名無しさんNGNG
WinAPIについて質問です。
DLL側のcppファイルに
declspec(dllexport) int flag;
を宣言して、
EXE側のヘッダファイルに
declspec(dllimport) int flag;
を宣言して、cppにインクルードしました。
EXE、DLLの両方で共通のフラグを使おうと思ったのですが、
デバッガでトレースすると、EXE側で1に設定したflagが
DLL側の関数に入るとflagの値が0になってしまいました。
フラグのメモリアドレスを見ると、DLLとEXEで異なっていて
別領域が取られているようです。EXE、DLLの両方で共通の
同じフラグを使用するには、どのようにexport,importをすれば
よいのでしょうか?長くなってすいません。
0744デフォルトの名無しさんNGNG
>>743
Win32API質問箱 Build22
http://pc5.2ch.net/test/read.cgi/tech/1092524669/
0745デフォルトの名無しさんNGNG
>>744
よく考えたら宿題ではなかったです。
しかもVisualC++の使い方の質問かもしれない。
とりあえずそちらに質問してみます。
0746デフォルトの名無しさんNGNG
zahyou.txtの内容が

1   0   -1
1   1   0.5
・・・
・・・

(tabで区切られています)

のようになっていて、これが
p1(1,0,-1)
p2(1,1,0.5)
・・・
・・・

という座標を表しています。

このとき入力された基点から近い順に表示し、この結果を
kekka.txtに出力するプログラムを作成してください。

画面例
*基点の座標を入力してください
1
1
0
*基点から近い順に表示します
p2
p1
・・・
・・・

条件 zahyou.txtのデータの読み込みにfscanfを使用すること
0747デフォルトの名無しさんNGNG
>>746
コンパイルしてないのでフォローよろしく
1/2

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define PMAX1000
#define INFILE"zahyou.txt"
#define OUTFILE"kekka.txt"
#define norm(a)sqrt((a)->x*(a)->x+(a)->y*(a)->y+(a)->z*(a)->z)
typedef struct{
double x,y,z;
int n;
}P3D;
P3D base;
int cmp(void* a,void* b){
double na=fabs(norm((P3D*)a)-norm(&base));
double nb=fabs(norm((P3D*)b)-norm(&base));

return (na>nb)?1:(na==nb)?0:-1;
}
0748デフォルトの名無しさんNGNG
>>746
2/2

int main(){
P3D p3d[PMAX];
FILE* fp;
int i,ct=0;
fp=fopen(INFILE,"r");
while(feof(fp)){
fscanf("%lf\t%lf\t%lf",&(p3d[ct].x),&(p3d[ct].y),&(p3d[ct].z));
p3d[ct]=ct+1;
ct++;
}
fclose(fp);
printf("*基点の座標を入力してください\n");
scanf("%lf",&(base.x));
scanf("%lf",&(base.y));
scanf("%lf",&(base.z));
qsort(p3d,ct,sizeof(P3D),cmp);
printf("*基点から近い順に表示します\n");
fp=fopen(OUTFILE,"w");// 使い回ししてごめんな
for(i=0;i<ct;i++){
printf("p%d\n",p3d[i].n);
fprintf(fp,"p%d\n",p3d[i].n);
}
fclose(fp);
return 0;
}
0749デフォルトの名無しさんNGNG
> fscanf("%lf\t%lf\t%lf",&(p3d[ct].x),&(p3d[ct].y),&(p3d[ct].z));
fscanf("%lf %lf %lf",&(p3d[ct].x),&(p3d[ct].y),&(p3d[ct].z));
0750デフォルトの名無しさんNGNG
>>749
>(tabで区切られています)
0751デフォルトの名無しさんNGNG
>>750
それが何か?
0752デフォルトの名無しさんNGNG
>>751
(ごめん)
0753デフォルトの名無しさんNGNG
fscanf("%lf",&(p3d[ct].x));
fscanf("%lf",&(p3d[ct].y));
fscanf("%lf",&(p3d[ct].z));
0754デフォルトの名無しさんNGNG
第一引数 fp 忘れ
0755デフォルトの名無しさんNGNG
   c言語入門です。
   unix solaris環境。
   
問 %sと等価なプログラムをputcharで実現せよ。(ヒント '\0'が文字列の終端)

  意味がわかりません。お願いします。
0756デフォルトの名無しさんNGNG
>>755
%sはプログラムではありません。
〜終了〜
0757デフォルトの名無しさんNGNG
>>755
厳密には>>756が正解だけど、%sというのは文字列s[]を出力するのに
printf("%s", s);
とすることだと思うから、
int i;
for (i = 0; s[i] != '\0'; i++)
putchar(s[i]);
でOK!
putchar()は1文字出力関数で、putchar('a');とputchar('1');は
それぞれaと1を出力する。
0758デフォルトの名無しさんNGNG
>>755
出題者が何も理解してない糞とでも書いとけ
0759デフォルトの名無しさんNGNG
いつもそうなんだけど、
質問者は質問したい内容を正確に書いてくれ
0760755NGNG
759>>
問題がこう書いてあったもので・・・。
出題者が不在でしてどうしようもなく書き込ませてもらいました。
すいませんでした。

>>755-759
ありがとうございます。
0761デフォルトの名無しさんNGNG
>>696
今月号のニュートン立ち読みしてみな
なんか初めのほうにある
小ネタをたくさん紹介してるページに書いてあった
0762デフォルトの名無しさんNGNG
>>749
"%lf%lf%lf"
0763成長した18歳<16歳にはかなわないNGNG
Cの話です。
変数char ss[5000]にいっぱいいっぱいに平仮名片仮名が無作為に選ばれて入れられています。
この中から「ぬるぽ」「ぬるポ」「ぬルぽ」「ぬルポ」「ヌるぽ」「ヌるポ」「ヌルぽ」「ヌルポ」
という連続した小さな文字列を探したいのですが、その作業を関数にしたいんです。
丸投げだと思うようでしたら、せめてヒントでもいただければと思います。
お願いします。
0764デフォルトの名無しさんNGNG
>>763
わざわざ関数を作らなくてもstrstrという関数が用意されているんだけど。
0765エイティンNGNG
strstrは初耳です...しかもひらめきで麥なん作ってまいました...ぬるぽハケーン関数です。
#include <stdio.h>
int nulpo(char ss)
{
  int a,i,c;
  a = strlen(ss);
  c = 0;
   for(i=1;i<=a;i++)
   {
    if(ss[i]==("ぬ"||"ヌ"))
    {  ++i;
     if(ss[i]==("る"||"ル"))
     {  ++i;
      if(ss[i]==("ぽ"||"ぽ"))
      { c=c+1;}
     }
    }
   }
return c;
}

動きますか?
0766エイティンNGNG
strstrは初耳です...しかもひらめきで麥なん作ってまいました...ぬるぽハケーン関数です。
#include <stdio.h>
int nulpo(char ss)
{
  int a,i,c;
  a = strlen(ss);
  c = 0;
   for(i=1;i<=a;i++)
   {
    if(ss[i]==("ぬ"||"ヌ"))
    {  ++i;
     if(ss[i]==("る"||"ル"))
     {  ++i;
      if(ss[i]==("ぽ"||"ぽ"))
      { c=c+1;}
     }
    }
   }
return c;
}

動きますか?
0767デフォルトの名無しさんNGNG
>>766
つっこむ気にもなれん
0768作り直してみましたが、やはり動くかわかりませんNGNG
#include <stdio.h>
int nulpo(char ss);

int main(void)
{
  int a
  char ss[5000];
  gets(ss);
  a = nulpo(ss)
  printf("%d回、ガッ して下さい。",a)
return 0;
}

int nulpo(char ss)
{
  int a,i,c;
  a = strlen(ss);
  c = 0;
   for(i=1;i<=a;i++)
   {
    if(ss[i]==("ぬ"||"ヌ"))
    {  ++i;
     if(ss[i]==("る"||"ル"))
     {  ++i;
      if(ss[i]==("ぽ"||"ポ"))
      { c=c+1;}
     }
    }
   }
return c;
}
0769デフォルトの名無しさんNGNG
>>767に変わって、親切にもつっこんでやる。
1.動くかどうか分からないならまずはコンパイルしろ。そして動かしてみろ。コンパイラがなければフリーのものがあるからインストールしておけ。
2.「if(ss[i]==("ぬ"||"ヌ"))」 この1行だけでも突っ込み所が満載過ぎ。とりあえず2ヶ所に絞った。
2.1.|| 演算子で繋ぐのは条件の真偽だけだ。aが"ぬ"か"ヌ"であることを判断したい場合はif(a=="ぬ"||a=="ヌ")と書け。
2.2.ss[i]の型は分かってるのか?そして"ぬ"や"ヌ"の型は?答えを言ってやると前者がcharで、char*だ。違う型のものを比較して意味があることなんざ殆ど無い。
3.iのインクリメントは++i;としてるのにcのインクリメントをc=c+1;にする理由でもあるのか?というか、そもそも++i;よりi++;の方がメジャーじゃないのか?(後半は主観だが)

おとなしくstrstr使っとけ。
0770デフォルトの名無しさんNGNG
なんつーか、××と○○は紙一重という感じ。
0771デフォルトの名無しさんNGNG
その前にint nulpo(char ss)にワラタ。おい、1文字しか渡さないのか
己は。ただ、一箇所だけ擁護しておく。
>そもそも++i;よりi++;の方がメジャーじゃないのか?
その通り、それは主観だ。ここはC++(特にiterator)に慣れてくると
そうでもなくなる。
0772デフォルトの名無しさんNGNG
ありがとうございました。勉強しときます
0773デフォルトの名無しさんNGNG
time=1000,dt=0.1,nsteps=time/dtを
for(i=0; i<nsteps; i++){}で回しているのですが、
iを均等に回すのではなく、最初と最後だけより細かく(例えば0.01刻みで)、
中間をすっとばす方法を教えてください。
0774デフォルトの名無しさんNGNG
宿題を代わりに片して下さい!

アルファベットで単語、読み方、単語の意味をファイルに書き込み&読み込みが
できる単語登録プログラムを完成せよ。ただし、クラスを使い作成せよ。さらに、
他に上記のような機能に+αする事により、点数をつける。

てな、感じのプログラムをお願いします☆ファイルに書き込む形式は自由で、↑に書いている事以外に
追加したら、点数が高くなるんで、もし、他にこんな機能があれば便利ってのがあれば、追加お願いします!
0775デフォルトの名無しさんNGNG
>>773
double time;
for (time = 0; time < 200; time += 0.01);
for (; time < 800; time += 0.1);
for (; time < 1000; time += 0.01);
#但し加算の精度に注意。

或いはこっちの方が元のに近いかな。
double time;
unsigned it;
double dt = 0.01;
for (it = 0; it < 200 / dt; ++it) time = it * dt;
for (it < 800 / dt; it += 10) time = it * dt;
for (it < 1000 / dt; ++it) time = it * dt;
0776773NGNG
>>775
y=a+5*xという式の場合、
for (it = 0; it < 200 / dt; ++it) {
 a+5*x;}
for (it < 800 / dt; it += 10){
 a+5*x;}
for (it < 1000 / dt; ++it){
 a+5*x;}
でいいんですか?
0777デフォルトの名無しさんNGNG
>>651と>>764とは条件の異なる同種の問題
0778デフォルトの名無しさんNGNG
入力された2つの数字から、四則演算をする関数を作る。但し、自動変数は使用しないで
関数の引数も使わないで作れです。
お願いします
0779デフォルトの名無しさんNGNG
↑あっすいません778はC++です。よろしくおねがいします
0780デフォルトの名無しさんNGNG
関数の引数を使っちゃダメならそもそも出力の仕方が分からん。
0781デフォルトの名無しさんNGNG
>>774 単語の検索機能だけ付けた。
#define DELIM '\t'
struct data{ string tango, yomi, imi; };
class dictionary{
protected: list<data> m_data;
public:
  void add(data &d){ m_data.push_back(d); }
  bool read(const char *file){
  fstream f(file, ios::in);
    if(f.fail()){ return false; } m_data.clear();
    data d;
    while(!f.eof()){
      getline(f, d.tango, DELIM); getline(f, d.yomi, DELIM); getline(f, d.imi, DELIM); m_data.push_back(d);
    }
    f.close(); return true;
  }
  bool write(const char *file){
  fstream f(file, ios::out);
    if(f.fail()){ return false; }
    for(list<data>::iterator i = m_data.begin(); i != m_data.end(); ++i)
      f << i->tango << DELIM << i->yomi << DELIM << i->imi << DELIM;
    f.close(); return true;
  }
  void show(void){
    for(list<data>::iterator i = m_data.begin(); i != m_data.end(); ++i)
      cout << "単語:" << i->tango << "\n" << "読み:" << i->yomi << "\n" << "意味:" << i->imi << "\n" << endl;
  }
  list<data>::iterator find(string tango){
    for(list<data>::iterator i = m_data.begin(); i != m_data.end(); ++i){ if(i->tango == tango){ return i; } }
    return NULL;
  }
};
0782デフォルトの名無しさんNGNG
入力された2つの数字から、四則演算をする関数を作ってください。
但し、自動変数(auto変数)は、一切使用しないで下さい。
 入力した2つの数字に対して、選択した演算の結果が表示されます。
2つの数字のうち、いずれかに0を入力するとプログラムは終了します。
 但し、上記で述べたように、自動変数を使用しないで、作成してください。
出来れば、関数の引数もなくして、
 ret = func1() ;
のような形式で呼び出すようにしてください
ってなもんだいです 。
よく意味が自分もわかんないんですけど、わかりますか?
0783デフォルトの名無しさんNGNG
グローバル変数を使えってことかな?
なんか出題者がダメポ
0784デフォルトの名無しさんNGNG
>>774
こんな感じ。メモ帳だけで作ってコンパイルしてないから
動かない可能性大。適宜修正してちょ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=116&fi=no
0785デフォルトの名無しさんNGNG
#include<stdio.h>

func1( int a, int b, int c )
{

intresult ;// 計算結果−戻り値 *使用不可

/* 0演算は何? */
switch( c )
{
case '1' :// 加算
result = a + b ;
break ;
case '2' :// 減算
result = a - b ;
break ;
case '3' :// 乗算
result = a * b ;
break ;
case '4' :// 除算
result = a / b ;
break ;
case '5' :// 剰余算
result = a % b ;
break ;
}
/* 戻り値をセット */
return( result ) ;

}
0786デフォルトの名無しさんNGNG
>>782 こんな感じかなぁ。なんの意味があるのか。。。
#include <iostream>

int a, b, m;

void func(void)
{
switch(m){
case 0: cout << a << " + " << b << " = " << a + b << endl; break;
case 1: cout << a << " - " << b << " = " << a - b << endl; break;
case 2: cout << a << " * " << b << " = " << a * b << endl; break;
case 3: cout << a << " / " << b << " = " << a / b << endl; break;
};
}
int main(void)
{
cin >> a >> b >> m;
cout << endl;
if(a && b){ func(); }
return 0;
}
0787デフォルトの名無しさんNGNG
#include<stdio.h>
#include<stdlib.h>
/* func1関数プロトタイプ宣言 */
extern int func1( int a, int b, int c ) ;// *必要に応じて変更
void main(void)
{
inta,b ;// 数値 *使用不可
intc ;// getchar()戻り値 *使用不可
intret ;// func()戻り値 *使用不可
for( ; ; )// 無限ループ a,bどちらかに0が入力されたら抜けます
{
printf("数値1を入力してください。:") ;// 数値取り込み
scanf("%d",&a) ;
printf("数値2を入力してください。:") ;// 数値取り込み
scanf("%d",&b) ;
/* ループを抜ける条件(0の入力)の判定 */
if( a == 0 || b == 0)
{
printf("ループを抜けます!\n\n") ;
break ;
}
/* 何の演算をする? */
printf("演算は何? 1:加算 2:減算 3:乗算 4:除算 5:剰余算 ") ;
c = getchar() ;
c = getchar() ;
if( c > 1 && c < 5 )
{printf("1〜5以外の数字は無効です。\n") ;
continue ;}
/* func1()実行 */ // *できれば呼出形式を変更
ret = func1( a, b, c ) ;
0788デフォルトの名無しさんNGNG
/* 戻り値表示 */
switch( c )
{
case '1' :
printf("計算は、加算です。\n") ;
break ;
case '2' :
printf("計算は、減算です。\n") ;
break ;
case '3' :
printf("計算は、乗算です。\n") ;
break ;
case '4' :
printf("計算は、除算です。\n") ;
break ;
case '5' :
printf("計算は、剰余算です。\n") ;
break ;
}
printf("結果は %d です!!!\n\n", ret) ;
を変えるみたいです。すいませんぜんぜんわかんなくて
0789デフォルトの名無しさんNGNG
>>786
わかりますか?
0790デフォルトの名無しさんNGNG
>>761
なるほどぬーとんに載ってたのかthx
0791デフォルトの名無しさんNGNG
>>789
func1( int a, int b, int c )
のパラメータ a, b, cと戻り値格納用変数をグローバルにしる!
0792791NGNG
× 戻り値格納用変数
○ 結果保存用変数
0793デフォルトの名無しさんNGNG
ありがとうございます、変な説明ですいませんでした。
0794デフォルトの名無しさんNGNG
エラーになちゃいました。
回答載せてくれるとすごくたすかるんですが・・
無理ですかね?
0795デフォルトの名無しさんNGNG
今日中に提出なんで誰かおねがいしますorz
0796デフォルトの名無しさんNGNG
だれが、どの問題で、どんなエラーが出てるのか
訳分からん
0797デフォルトの名無しさんNGNG
728です。
0798デフォルトの名無しさんNGNG
>>781>>784
ありがとうございました☆
感謝です!
0799デフォルトの名無しさんNGNG
#include<stdio.h>
#include<stdlib.h>

int r, a, b, c;

void func1()
{
/* 0演算は何? */
switch( c )
{
case '1' :// 加算
r = a + b ;
break ;
case '2' :// 減算
r = a - b ;
break ;
case '3' :// 乗算
r = a * b ;
break ;
case '4' :// 除算
r = a / b ;
break ;
case '5' :// 剰余算
r = a % b ;
break ;
}
}
0800デフォルトの名無しさんNGNG
void main(void)
{
for( ; ; )// 無限ループ a,bどちらかに0が入力されたら抜けます
{
printf("数値1を入力してください。:") ;// 数値取り込み
scanf("%d",&a) ;
printf("数値2を入力してください。:") ;// 数値取り込み
scanf("%d",&b) ;
/* ループを抜ける条件(0の入力)の判定 */
if( a == 0 || b == 0){printf("ループを抜けます!\n\n") ; break ;}
/* 何の演算をする? */
printf("演算は何? 1:加算 2:減算 3:乗算 4:除算 5:剰余算 ") ;
c = getchar() ;
c = getchar() ;
if( c > 1 && c < 5 ){printf("1〜5以外の数字は無効です。\n"); continue ;}
/* func1()実行 */ // *できれば呼出形式を変更
func1() ;
/* 戻り値表示 */
switch( c ){
case '1' : printf("計算は、加算です。\n") ; break ;
case '2' : printf("計算は、減算です。\n") ; break ;
case '3' : printf("計算は、乗算です。\n") ; break ;
case '4' : printf("計算は、除算です。\n") ; break ;
case '5' : printf("計算は、剰余算です。\n") ; break ;
}
printf("結果は %d です!!!\n\n", r) ;

}
}
0801デフォルトの名無しさんNGNG
>>800
これでなるんですか?
0802デフォルトの名無しさんNGNG
>>801
コンパイルしてみなはれ。
0803デフォルトの名無しさんNGNG
main.cpp(32) : error C2065: 'b' : 定義されていない識別子です。
main.cpp(37) : error C2065: 'c' : 定義されていない識別子です。
main.cpp(37) : error C2065: 'getchar' : 定義されていない識別子です。
main.cpp(41) : error C2065: 'func1' : 定義されていない識別子です。
main.cpp(50) : error C2065: 'r' : 定義されていない識別子です。
の実行エラー
main.obj - エラー 8、警告 0
ってでました。
0804デフォルトの名無しさんNGNG
>>803
799-800を全部コピペしてコンパイルしる!
0805デフォルトの名無しさんNGNG
mainとfunc1()をわけないでってコンパイルってことですか?
0806デフォルトの名無しさんNGNG
>>805
まず、799にあるソースを自分の開発環境のエディタにコピペする。
次に、800にあるソースをさっきコピペした799のソースの下にコピペする。
そしてコンパイルしろ。
0807デフォルトの名無しさんNGNG
あ、できました。806ネ申さんありがとうございますた。
いやながながすいませんでした。
これでなんとかなりそうです感謝×2
0808デフォルトの名無しさんNGNG
続き
int main()
{
  try{
    while((cin>>n>>c>>m)&&m) Do();
  }catch(int){
    cerr<<"四則演算エラー"<<endl;
  }
  return 0;
}
0809デフォルトの名無しさんNGNG
失敗した。
>>807
C++じゃなかっけ
#include <iostream>
#define MAKE(x, y, mark) cout<<((x)mark(y))<<endl;

int n,m;
char c;
void Do()
{
  switch(c){
  case '*':
    MAKE(n,m,*) break;
  case '+':
    MAKE(n,m,+) break;
  case '-':
    MAKE(n,m,-) break;
  case '/':
    MAKE(n,m,/) break;
  default :
    throw -1;
  }
}
0810デフォルトの名無しさんNGNG
まだあるんですか?
0811デフォルトの名無しさんNGNG
C++ですよ
0812806NGNG
>>811
多分、>>785のソースを改変して実現しろという事だったんでは?
質問者自体C/C++の違いがよくわかってないと思うので、
>>779の発言の意味は特にないと思う。
0813デフォルトの名無しさんNGNG
そうですねわかってないです。
>>785と>>787と>>788を改変してやってほしかったです。
0814デフォルトの名無しさんNGNG
問 エノン関数を計算して、グラフを描写するプログラムを作ってください。
0815デフォルトの名無しさんNGNG
>>814
エノン関数とは?
http://www.google.co.jp/search?as_q=%E3%82%A8%E3%83%8E%E3%83%B3%E9%96%A2%E6%95%B0&num=100&hl=ja&ie=UTF-8&c2coff=1&btnG=Google+%E6%A4%9C%E7%B4%A2&as_epq=&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=
0816デフォルトの名無しさんNGNG
写像のことだろ。
質問の仕方からしてメンドーになりそうなのでスルー。
0817814NGNG
エノン写像の間違いでした
0818814NGNG
写像のことでした。すいません。
0819デフォルトの名無しさんNGNG
>>818
ちょっと待っててね
0820デフォルトの名無しさんNGNG
4 点の空間座標すべてに接する球体の中心座標を求める関数 Function を作成せよ。
ただし以下の定義を使用する事。

typedef struct {
double dX;
double dY;
double dZ;
} COORDINATES;

// 2 点以上の座標が一致した場合、または 4 点全てが平面上に存在する場合は FALSE を返す。それ以外は TRUE を返す。
// ans ... 中心座標用ポインタ
// quest ... 4 点の空間座標用ポインタ
int Function( COORDINATES *ans, COORDINATES *quest );

int main( void )
{
// 座標定義(値は可変するものとする)
COORDINATES Coord[] = {
{ 15.0, 7.0, 16.0 },
{ 8.0, -9.0, 1.0 },
{ 16.0, 6.0, -8.0 },
{ 24.0, 0.0, 8.0 }
};
// 関数 Function を使用
// 結果を表示
return 0;
}

よろしく御願いします。
0821784NGNG
>>774
コンパイルとかしてチェックして作り直した。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=117&fi=no
0822デフォルトの名無しさんNGNG
>>814
どうぞ。pgm画像に描画しています。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=219
0823デフォルトの名無しさんNGNG
教えて下さい!
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1094724836&res=1

このプログラムで、bool Input(Node* pNode)の所で、わからないのです。
エラーは出ないのですが、永遠とReferecne関数の所で、ポインタがNULLになって?
全然進まなかったんですが、bool Input(Node* pNode)をbool Input(Node*& pNode)
とすることで、問題は解決しました。ですが、なぜ”&”をつける事で、解決したのかが
わかりません。
どなたか教えて下さい!お願いします☆
0824デフォルトの名無しさんNGNG
いやです☆
0825デフォルトの名無しさんNGNG
>>824
マジで教えてもらえませんか?
自分でも調べてみたんですが、本当にわからないんです。
お願いします。
0826デフォルトの名無しさんNGNG
C++で分裂弾のプログラムを作っているのですが
発射した弾を消して3WAY弾を表示させるにはどうすればいいですか?
0827デフォルトの名無しさんNGNG
分裂弾とか3way弾とか言われても解からない
0828デフォルトの名無しさんNGNG
>>827
シューティングゲームで、
まず直線状に弾が飛んでいき、その後何らかの条件(一定時間経過とか)が成立すると、
斜め左・まっすぐ・斜め右の3方向に分かれて弾が飛んでいくということだろう。
たぶん。


>>826
if(分裂条件)
{
  Make3wayBrid(直線弾のx座標, 直線弾のy座標);
  Destroy(直線弾);
}
0829デフォルトの名無しさんNGNG
想像で語るな
0830デフォルトの名無しさんNGNG
ごめん。
0831デフォルトの名無しさんNGNG
すいません
質問の仕方が悪すぎました
キャラクターが現在向いている方向に弾を発射して一定距離進むと
斜め左・真っ直ぐ・斜め右の3方向に分かれて飛んでいくプログラムで
一定距離進んだ弾を消して3方向に弾を飛ばすにはどうすればいいか
というものです
ご迷惑お掛けしました
0832デフォルトの名無しさんNGNG
よっしゃ、予想的中っ!(喜ぶな)
0833デフォルトの名無しさんNGNG
>>831
それなんていう宿題?
0834デフォルトの名無しさんNGNG
それ板違うゲ製へ
もしかしてデータの管理方法もアホなやりかたなんじゃないか
行き当たりばったりで作ってると後で苦労するから
最初に構造とかある程度全体を頭の中に思い浮かべてから
作り始めるといいよ
キャクタの削除とか生成は必ず出てくるものなんだから特にね
0835814NGNG
>>822さん、ありがとうございます。
そして、説明不足でした。ごめんなさい。
C言語でエノン写像を計算して、DOSの画面にグラフを描写するプログラムを
お願いしたかったのです。
0836デフォルトの名無しさんNGNG
>>814
unsigned char** image で格納されてるんだからどうにでもなるだろ
あと、日本でDOSっていうとおっさんはA800hを思い浮かべるけどそっちでいいの?
0837デフォルトの名無しさんNGNG
age
0838デフォルトの名無しさんNGNG
DEF SEG=&HA800
0839デフォルトの名無しさんNGNG
Cで次の仕様を満たす信号発生プログラムを作成したいんですが。
どんなプログラムをくめばいいでしょうか?

基本式V=Asin(2πft)
V=電圧、A=振幅、π=円周率、f=周波数、t=時間

正弦波と方形波を選択可能
周波数と振幅を入力可能(周波数は0〜10M振幅は0〜10)
出力(信号波形データを)ファイルにセーブする(一列目時間二列目電圧値

以上です。
よろしくお願いします。
0840keitaNGNG
ヒストグラムを作るプログラムが完成しません。お願いします。1000 以下の素数が格納されているデータファイル prm1000.dat を読み込み素数の度数分布表を作成したいと思っています。作ったプログラムが下にあるものです。
#include <stdio.h>
#define N 50
int main( int argc, char *argv[] ) {
FILE *fp;
char *datafile;
int i, j, width, prime, count[N];
/* error*/    
if ( argc != 2 ) { printf( "error : Invalid Usage\n" );
exit( 1 );}
datafile = argv[1];
if ( ( fp = fopen( datafile, "r" ) ) == NULL ) {
printf( "error : can't open %s\n", datafile );
exit( 1 );}
/* initialize*/    
for ( i = 0; i < N; i++ ) count[i] = 0;
printf( "Enter the width => " );
scanf( "%d", &width );
/* read and count*/
j = 1;
while ( fscanf( fp, "%d", &prime ) != EOF ){ if ( prime < width * j )
count[j]++;
else
count[++j]++;}
fclose( fp );
putchar( '\n' );
for ( i = 1; i <= j; i++ )
printf( "%5d 〜 %5d : %3d\n", width*(i-1), width*i-1, count[i] );
exit(0); }
作ったプログラムをコンパイル実行するとerror : Invalid Usageと出てしまいます。
このプログラムのどこに何を足したら完成できるか教えてください。お願いします
0841デフォルトの名無しさんNGNG
>>839
よくわからんが、こんな感じ?
int main(){
double V,A,f,t;
//基本式V=Asin(2πft)
//V=電圧、A=振幅、π=円周率、f=周波数、t=時間
A = 1;
f = 10;
for( t = 0; t <= 59; t++)
{
V = A * (sin( 2.0 * M_PI * f * t * (M_PI / 180.0)) * 180.0 / M_PI);
printf("%f,%f\n",t,V);
}
return 0;
}
0842デフォルトの名無しさんNGNG
>>840
そのプログラムはあなたが作ったもの?
そうであれば何故メッセージが出てるのかわかるのでは。
0843デフォルトの名無しさんNGNG
>>840
prgname.exe prm1000.dat
ってすれば・・・
0844デフォルトの名無しさんNGNG
>>841
方形波か正弦波かを選べて
振幅と周波数を入力する画面があって入力するととその信号の計算結果が出て
その結果をファイルにセーブして
発生した信号波形を図に書くのが目的っす
みなおしたらいろいろわかりにくかったかな
V=A*sin(2*π*f*t)
周波数は0〜1000000振幅は0〜10.0
結果は2周期分くらいでるようにすればいいと思うんです。
0845デフォルトの名無しさんNGNG
>V=A*sin(2*π*f*t)
これが勘違いの元。細かいのを作ってるからもうちょっと待ちな。
0846デフォルトの名無しさんNGNG
VBで正五角形を中心を軸に回転させるプログラムを教えてください
0847デフォルトの名無しさんNGNG
スレタイ読め
0848デフォルトの名無しさんNGNG
>>846
カレー専門店で寿司を注文するような事をするな
0849デフォルトの名無しさんNGNG
>>839=844
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=220
実行ファイルの後ろにデータ保存用のファイル名を書けばそこに記録される…はず。
何故か手元のgccでコンパイル通ってくれなかった…。
0850846NGNG
こりゃー一本とられましたわ。
0851デフォルトの名無しさんNGNG
波形はどれにしますか?番号で選んで下さい。
1.方形波
2.正弦波
ってでたあと2を打ってENTERおしても反応しないんですが
どうすればいいのでしょうか・・?
0852デフォルトの名無しさんNGNG
度とラジアンがまったく考慮されてないような
0853デフォルトの名無しさんNGNG
ごめん、
>while(0 < style && style < 3);
ここがミス。
while(style < 1 || 2 < style);
に変更してて。
0854デフォルトの名無しさんNGNG
>>853
おおなおしたらいけました。
あのよろしければ実行ファイルの後ろにデータ保存用のファイル名を書けばそこに記録される
っていうのは具体的にどうするのか教えてもらえないでしょうか?
0855デフォルトの名無しさんNGNG
コンパイル後できた実行ファイルが a.out で、wave.dat に記録したければ
a.out wave.dat
a.out > wave.dat
どちらでも可。
0856デフォルトの名無しさんNGNG
>>854
追記モードは"w"を"a"に
または
a.out >> wave.dat
0857デフォルトの名無しさんNGNG
ふ・・む・・
私の知識不足でごめんなさいよくわからないです・・
コンパイル後実行したあとa.outというファイルができるのでしょうか・・?
0858デフォルトの名無しさんNGNG
>>857
このスレの回答者は主にLinux環境を基準としています。
ですから、a.outというのを自分の環境でのコンパイラの出力した実行ファイル
だと読みかえてください。
0859デフォルトの名無しさんNGNG
なるほど
メモ帳かなにかに結果を記録するにはどうすればいいんでしょうか?
0860デフォルトの名無しさんNGNG
>>859
なんだそりゃ
できたファイルをメモ帖でひらけよ・・・
0861デフォルトの名無しさんNGNG
なるほどー
どうもありがとうございました。
お世話になりました。
いろいろ迷惑かけてすみませんでした。
本当にありがとうございました。
0862デフォルトの名無しさんNGNG
自分の脳みそをちっと使えば分かりそうなもんなのに
何ですぐ人に聞くかな?
0863デフォルトの名無しさんNGNG
よし、やるぞー! ふんっ!ふんっ! はやく質問こないかなー
0864デフォルトの名無しさんNGNG
使い方を知らないからだろ
0865デフォルトの名無しさんNGNG
.NETでDLLを作っているんだけど、下のコードでリンクエラーが生じてまつ。

// DLL
#include <stdio.h>

__declspec(dllexport) int func(void);

int func(void)
{
printf("inside of the DLL");
return 0;
}

//EXE
#include <iostream.h>

extern __declspec(dllimport) int func(void);

int main(void)
{
int a;
a = func();
cout << a << endl;
return 0;
}

DLLはプロジェクトの新規作成→DLL→空のプロジェクトと作成してるんだけど
どうしてもリンクエラー
ource02.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) int __cdecl func(void)" (__imp_?func@@YAHXZ) が関数 _main で参照されました。
Debug/neko101a.exe : fatal error LNK1120: 外部参照 1 が未解決です。
がでるのでつ。
一体どうすれば・・・・。
0866デフォルトの名無しさんNGNG
>>865
それは宿題かね?
0867865NGNG
extern __declspec(dllimport) int __cdecl func(void);
と__cdeclつけたらできまんた。
0868デフォルトの名無しさんNGNG
Cの課題です。

コマンドライン引数で指定された文字列の英大文字を英小文字に、英小文字を英大文字にし
それ以外の文字はそのままで出力するプログラムを作成。
正し、コマンドライン引数が指定されなかった場合はエラーを出力し、二つ以上指定された場合は二つ目以降を無視する。

お願いします。
0869デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(const int argc, char **const argv)
{
    const char *str;
    if(argc == 1)
    {
        fprintf(stderr, "error: an argument is required.");
        exit(1);
    }
    for(str = argv[1]; *str; ++str)
        if(isupper(*str)) putchar(tolower(*str));
        else putchar(toupper(*str));
    return 0;
}
0870デフォルトの名無しさんNGNG
>>868
#include <stdio.h>
#include <ctype.h>

int main( int argc, char** argv ) {
int i;
char* str;

if ( argc < 2 ) {
fprintf( stderr, "えらー");
exit(1);
}
str = argv[1];
while ( *str != '\0' ) {
printf( "%c", islower(*str)?toupper(*str):isupper(*str)?tolower(*str):*str );
str++;
}
printf("\n");
return 0;
}
0871デフォルトの名無しさんNGNG
>>870
hoge.c: 関数 `main' 内:
hoge.c:10: 警告: implicit declaration of function `exit'
hoge.c:5: 警告: unused variable `i'
0872デフォルトの名無しさんNGNG
>>871
stdlib.hをinclude
int i;を削除
0873868NGNG
ありがとうございます
0874デフォルトの名無しさんNGNG
char OutputChar[3];
char SmallChar[] = "ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮ";

これでOutputCharに入っている文字がSmallCharと等しいか
判定するにはどうすればよいでしょう?
文字が等しいか判定するにはstrcmpで良いらしいのですが,
SmallCharの中の1文字と比較する方法がわかりませんでした.
0875デフォルトの名無しさんNGNG
>>874
>>763
0876デフォルトの名無しさんNGNG
>>874
strstr関数をしらべれ
0877デフォルトの名無しさんNGNG
>>874
876の言うようにstrstrを使うか、
strncmpを使う
どうでもいいけど、ヵとヶが足りない
0878デフォルトの名無しさんNGNG
第2バイトから比較してしまう可能性があるからstrstr()は使わないほうが無難。

bool isSmall(const char * OutputChar)
{
char SmallChar[] = "ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮ";

for (const char * psc = SmallChar; psc[0] != '\0'; psc += 2) {
if (OutputChar[0] == psc[0] && OutputChar[1] == psc[1]) {
return true;
}
}
return false;
}
0879デフォルトの名無しさんNGNG
>>874
おいおい、smallcharの1文字っつてるだろ。
==でいんでないのか?
0880デフォルトの名無しさんNGNG
define CHAR_BIT 16
0881デフォルトの名無しさんNGNG
_mbsstr()なら平気じゃない?
0882デフォルトの名無しさんNGNG
こんにちわ、はじめまして。
i=虚数 i*i=-1 π=円周率
ω=2*π*f
Z=(R+i*ω*L)/(1+i*ω*R*C-ω*ω*L*C)

L=0.001  C=0.0001としRについては0.1〜10.0の範囲で変化させ
Zの絶対値が最大になる周波数fを求める
出た結果をdata.txtというメモ帳ファイルにセーブする
(1列目抵抗2列目Zの絶対値3列目fの最大値)

またRが1と2と5の場合について
周波数fとZの絶対値の変化をおなじdate.txtにさっきの結果のあとにセーブする
(1列目R2列目f3列目Z)

というプログラムをCで作るという課題です
ツールはborlandのコンパイラでCpadという開発環境でやっています。

どなたかよろしくお願いします。
0883デフォルトの名無しさんNGNG
fの最大値の求め方がわからねーから僕にはできませんon_
ヒントくれー
0884883NGNG
あっ相加相乗平均でできそーなきがしてきた
0885882NGNG
すみません私にもわからないっす・・
0886883NGNG
ω=(-R*C+sqrt( (R*C)^2+4*R*C ) )/2*R*C

まちがってたらやさしく指摘してね!
でかけるからコード書くのは午後になりそー
0887デフォルトの名無しさんNGNG
ガイキチが同時に2人沸いた
0888デフォルトの名無しさんNGNG
>>887
ガイキチではなく、低能です。
0889882NGNG
すみません・・・低脳です・・
どなたかよろしくお願いします。
0890デフォルトの名無しさんNGNG
C言語でfloat,doubleのオーバーフローの判定をどうすればいいかわかりません。
どんな環境でも判定できるような方法はありますか?
ご存知の方よろしくお願いします。

0891デフォルトの名無しさんNGNG
>882-886
そもそも、最大値を数値計算で求めるのが課題ではなくて?
0892882NGNG
>(1列目抵抗2列目Zの絶対値3列目fの最大値)

の文が間違ってましたただしくは
(1列目 抵抗 2列目 最大になったときのZの絶対値 3列目 Zが最大値になったときのf)

>>891
はい、前半はRを変化させてそれぞれのZが最大値になるfを求めるのが目的です
後半はRが1と2と5の場合においてfを変化させてfとZの絶対値の関係を調べるのが目的です
周波数の最大値も書き忘れました・・・0〜1000000です。
0893デフォルトの名無しさんNGNG
>>890
float.hあたりしらべてYO。
float : FLT_MIN<X<FLT_MAX
double : DBL_MIN<X<DBL_MAX
0894デフォルトの名無しさんNGNG
いやね、886でなんか式かいてるけど、そういう解析的な手法じゃなくて、
数値計算で最大最小問題を解くのが主題じゃないのかなぁと思ったんだけど。
0895デフォルトの名無しさんNGNG
まあ電気回路の演習でプログラミングに重きをおいていないのか、
数値計算(プログラミング演習)で、たまたま電気回路の問題を
解いてるのか、はっきりしないのでそこんとこよろしく
0896882NGNG
>>892
また間違えてた
>(1列目 抵抗 2列目 最大になったときのZの絶対値 3列目 Zが最大値になったときのf)

は(1列目 R 2列目 最大になったときのZの絶対値 3列目 Zが最大値になったときのf)
です。
>>894-895
プログラミングの授業で電気回路の問題がでたのほうだと思います。
メインはプログラムです。
0897デフォルトの名無しさんNGNG
プログラミングの課題に手計算でとけるような問題は出さないだろう
0898デフォルトの名無しさんNGNG
>>897
手計算で解ける問題をプログラムで確認する
という問題なのかもしれない。
0899882NGNG
前半はRを0.1から0.1から0.1ずつ10.0まで変化させて
変化させるごとに周波数0〜1000000まで変えてZの最大値を求めるので
て計算ではつらいかもです。
後半もRが1と2と5のときにfとZの絶対値の関係を求めてグラフにするので
て計算ではつらいかもしれないです。
0900 ◆FIcNi4f8js NGNG
>>897
なんで?
0901883NGNG
じゃじゃじゃじゃーんガイキチ登場
えっとやっぱ周波数の領域があったんですね!
あとだしはだめよ
ということで解析的に解くな!ということか
では今からやってみっかなー
できなかったらごめんねw>>882

0902デフォルトの名無しさんNGNG
>>>882さん
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=221
こんなんできましたが、結果がとってもあやしーですw
ほかの方の検証求む!
0903デフォルトの名無しさんNGNG
俺にはわからんからあげてやろう
0904デフォルトの名無しさんNGNG
>>902
1Hzきざみ?
結果が荒すぎる気がする
0905デフォルトの名無しさんNGNG
レス遅れてすみません。
どうもありがとうございます

結果が5.0でとまってしまっているのは
私だけでしょうか・・・?
0906902NGNG
>結果が5.0でとまってしまっているのは

あー俺もそうだよ。。
その意味で結果がとってもあやしーとかきました。
んで解決方法ですが・・すいませんわかりませんon_
0907デフォルトの名無しさんNGNG
ttp://ime.sakura.ne.jp/cgibin/source/subupload.cgi/ime0005.bmp
c=0.0000001
R=1000
E=5
初期値x(0)=0
で上の画像の方形波3周期分をあたえたときにでる
Vrを求めるのが目的で
x=∫idt
x'=(-1/c*r)*x+(1/r)*e(t)
Vr=(-1/c)*x+e(t)
(x'はxを微分したもの)
この式をオイラー法で解くんですが
周期Tは0.00005と0.001の2つから選べるようにするんです
結果は時刻tとe(t)とVrが出るようにするんですが
どんなプログラムを組めばよろしいでしょうか?
どんなプログラムを書けばよろしいですか
0908デフォルトの名無しさんNGNG
ttp://ch.minidns.net/bbs/src/1095000557295.bmp
リンクをクリックしても画像が表示されませんでしたので変えました。
0909デフォルトの名無しさんNGNG
>>906
いえそんなあやまれても
ありがとうございました

>>882
>>892
>>896
>>899
どなたかこの問題を解いていただけませんでしょうか
よろしくお願いします。
0910デフォルトの名無しさんNGNG
>>906
とても感謝してます
どうもでした。
0911902NGNG
Z=(R+jωL)/(1-ω^2LC+jωRC)

|Z|=sqrt(R^2+(ωL)^2) /sqrt( (1-ω^2LC)^2 +(ωRC)^2 )

んで左辺の分母分子を sqrt(R^2+(ωL)^2) でわる。
そしてむりやり分母に正の項をつくる。
そんでそこに相加相乗平均を使うと
(1-ω^2LC)^2=(ωRC)^2
ってのが分母最小値つまり|Z|の最大値となる。
ってことを利用してやったらさLCで割るってのが効いてくるのか0になりますね。

すいませんどうでもよい解析的手法でした。
0912デフォルトの名無しさんNGNG
さがってしまったので必死にあげ
どなたかよろしくお願いします。
0913デフォルトの名無しさんNGNG
二つの正の整数m,nをキーボードから入力し、
mからnまでの和を求めるプログラムをつくりなさい。
ただし、m<nとすること
というプログラムはどう作れば良いんですか?
0914デフォルトの名無しさんNGNG
>>913

#include <stdio.h>

int main(void){
int i;
int m, n;
int sum = 0;

scanf("%d", &m);
scanf("%d", &n);

for(i=m;i<n+1;i++)
sum += i;

printf("合計 .. %d \n", sum);

return 0;
}

0915デフォルトの名無しさんNGNG
激しく概出
0916デフォルトの名無しさんNGNG
>>913
こっちのほうがm<nをみたすまでループしてbetter

#include <stdio.h>

int main(void){
int i;
int m, n;
int sum = 0;

do{
printf("Input m &n (m<n)\n");
printf("Input m:");scanf("%d", &m);
printf("Input n:");scanf("%d", &n);
}while(m>n);

for(i=m;i<n+1;i++)
sum += i;

printf("合計 .. %d \n", sum);

return 0;
}
0917デフォルトの名無しさんNGNG
#define sum(n,m) (((m)+(n))*((m)-(n)+1)/2)

しゅくだいまだー?
0918907NGNG
>>907-908

どなたかお願いしますー
ぜんぜんわかんないす・・
0919デフォルトの名無しさんNGNG
>>907 画像がねえな
0920デフォルトの名無しさんNGNG
>>908のほうはどうですか?
0921デフォルトの名無しさんNGNG
>>907 わかんねえxがでかくなりすぎる… 後誰かよろしく
#include <stdio.h>
double e(double t,double T,double E)
{
for(;t-T>0;t-=T);
return (t*2>=T)?0:E;
}
#define dt10
int main()
{
double T[]={0.00005,0.001};
double c=0.0000001;
double r=1000;
double E=5;
double x=0;
double t,h,et,Vr;
int ts;// T[ts];

printf("0.00005なら'1' 0.001なら'2' を入力>");
do{
scanf("%d",&ts);
}while(ts!=0&&ts!=1);
h=T[ts]/dt;
for(t=0.0;t<T[ts]*3;t+=h){
et=e(t,T[ts],E);
x+=((-1/c*r)*x+(1/r)*et)*h;
Vr=(-1/c)*x+et;
printf("t=%f , e(t)=%f , Vr=%f\n",t,et,Vr);
}
return 0;
}
0922デフォルトの名無しさんNGNG
エラー E2451 aaa.cpp 22: 未定義のシンボル dt(関数 main() )

というエラーがでたっす
0923デフォルトの名無しさんNGNG
タブが消えたからだな↓こう
#define dt 10
0924デフォルトの名無しさんNGNG
うむむたしかにすごい数になるっすね
どうもありがとうございました。

みなさんでもむずかしいのにどうしよう・・・
0925デフォルトの名無しさんNGNG
まずオイラー法について書かないと>>907
0926デフォルトの名無しさんNGNG
といいいますと・・・?
0927デフォルトの名無しさんNGNG
>>925
中卒プログラマはこれだから(ry
0928デフォルトの名無しさんNGNG
すいませんこのようなプログラムを作ったのですがいろいろいじっても動かないのです。
#include <stdio.h>

void main()
{
FILE *fp;
char str;

fp=fopen("test.txt","r");

if(fp==NULL){
printf("ファイルのオープンに失敗しました。\n");
}
else
{
while (feof(fp)!=0)
{
fscanf(fp,"%s",str);
printf(str);
}
}
}
feofはEOFになると0を返すようなので返さない間ファイルを読んで表示させたいのですが
何も表示されませんでした。
どなたかご教授願います・・
0929デフォルトの名無しさんNGNG
あ、すいません半角スペースは消えてしまうのを忘れていました見づらくて申し訳ありません。
0930デフォルトの名無しさんNGNG
>>927
>>1

>>928
逆。 while(feof(fp)==0){
0931デフォルトの名無しさんNGNG
>>928
char型の値を読み込むときは%cを使え。%sはcharへのポインタを渡す必要がある。
たぶんやりたいのはこうだと思う。
while (feof(fp) != 0)
{
  fscanf(fp, "%c", str);
  printf("%c", str);
}
だけどただ単に1文字ずつ読み込んで表示したいのなら、fscanf/printfよりもfgetc/putcharの方がいい。
0932デフォルトの名無しさんNGNG
930 _| ̄|○名にやってんだ折れ…

>>928
char str[1024];
fscanf(fp, "%.1024s", str);
0933デフォルトの名無しさんNGNG
C言語(RT-Linuxのプログラム)です。

------------------------------------

・・・

pthread_t theThread;

void *thread_code(void *t)
{
・・・
}


main()
{
・・・

pthread_attr_init (&attr);
sched_param.sched_priority = 4;
pthread_attr_setschedparam (&attr, &sched_param);
ret = pthread_create (&theThread, &attr, thread_code, (void *) 0 );

・・・
}

優先度4のスレッド(thread_code 0)を作る部分なのですが、

main の中のこの4行を、優先度、スレッド名、スレッド番号を持つマクロに変換するには
どのようにしたらよいでしょうか?
0934デフォルトの名無しさんNGNG
>>933
attrは作業用変数か?
それだと不可能。
戻り値をマクロに引数として渡すか、マクロをやめて関数にすることを検討するといい。
0935デフォルトの名無しさんNGNG
C言語の質問です
1、2、3の駆動するモーターとスイッチが1つあり
1のモーターだけが3秒間、2のモーターだけが3秒間
モーター1と2が同時に10秒間駆動し、この3つの動きははランダムに行われて
スイッチが押されると1、2は駆動を止めて3が5秒間駆動し、5秒後はまた同じ事が繰り返される
というプログラムをできるだけ簡単に作って下さい
0936デフォルトの名無しさんNGNG
そのモーターとスイッチの制御方法を言え
0937デフォルトの名無しさんNGNG
>935
何のOSで組んでいるのですか?
WindowsやLinuxではあきらかに不向きのようなきが
0938デフォルトの名無しさんNGNG
宿題スレなんだから。実際に繋がってるわけじゃないだろ。
0939デフォルトの名無しさんNGNG
>>937
組込みではOSが無しの場合も良くあるよ。
環境依存だし、もしここに書くなら環境をちゃんと書いてもらわないとダメかもね。
0940935NGNG
スイッチは手動制御だと思います
PICを使ってやるんですが、自分では何がなんやら全く分かりません…
自分の専門学校のパソコンはウインドウズです
0941デフォルトの名無しさんNGNG
>>940
そうか。
二度と来るな。
0942デフォルトの名無しさんNGNG
>>940
氏んでください。
君のPCに入っているOSなんか聞いていません。
PIC使うにしても回路図が解からないとどのポートに出力するのか解かりません。
C使うにしてもどの処理系を使うのか書いてもらえないと実装できません。
PICにもいろいろあります。メジャーなのはPIC16F84とか?
一番の問題はスレ違いということですね。
逝ってよし
0943デフォルトの名無しさんNGNG
まあまあ、そんなこと言うなよ。
0944933NGNG
>>934
レスありがとうございます。
遅れてすみません。
attrが他で使用されないと仮定の上ではどうでしょうか?
0945デフォルトの名無しさんNGNG
新スレ
http://pc5.2ch.net/test/read.cgi/tech/1095075678/
0946デフォルトの名無しさんNGNG
>>945
↑は偽スレです。飛ばないように。
0947デフォルトの名無しさんNGNG
二つの抵抗値をキーボードから入力し、並列接続したときの合成抵抗の値を求めて、
出力するプログラムを作成しなさい。なお、各抵抗値の入力は整数型で行い、
合成抵抗は実数型で小数第二位まで表示するものとする。

と、いう宿題がでたのですが

#include <stdio.h>
void main(void)
{
int i1;
int i2;
float i3=1/(1/i1+1/i2);
  printf("R1を入力してください→");
scanf("%d",&i1);
printf("R2を入力してください→");
scanf("%d",&i2);
printf("合成抵抗は %d です。",i3);
}

と、作ってみたのですがborlandのコンパイラでコンパイルすると
2エラーでてしまいます・・・・何が原因なのでしょうか?
0948デフォルトの名無しさんNGNG
>>935
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=222&fi=no
モーターとスイッチの制御は勝手にやってくれ。
あと、unsigned int mode = 0, i;のiは消してくれ。
0949いつもここからNGNG
>>947
バッカヤロー!ひき殺されてーのか!
i1,i2がまだ入力されてないのにi3計算してんじゃねーぞ!
0950デフォルトの名無しさんNGNG
>>947
エラー名書けや氏ねボケカス
#include <stdio.h>
int main(void)
{
int i1;
int i2;
float i3;
  printf("R1を入力してください→");
scanf("%d",&i1);
printf("R2を入力してください→");
scanf("%d",&i2);
i3=1.0/(1.0/i1+1.0/i2);
printf("合成抵抗は %d です。",i3);
return 0;
}
0951デフォルトの名無しさんNGNG
間違ったじゃねえかこのやろう
printf("合成抵抗は %f です。",i3);
0952いつもここからNGNG
>>948
バカヤロー!
i3はfloatだろうが!
printf("合成抵抗は %f です。",i3);
0953デフォルトの名無しさんNGNG
>>952
どこにレスしてんだおまえは
しかもおせえんだよ
0954デフォルトの名無しさんNGNG
>>947
double から float に変換してんじゃねーよクソボケ
#include <stdio.h>
int main(void)
{
    int i1;
    int i2;
    double i3;
    printf("R1を入力してください→");
    scanf("%d",&i1);
    printf("R2を入力してください→");
    scanf("%d",&i2);
    i3=1.0/(1.0/i1+1.0/i2);
    printf("合成抵抗は %f です。",i3);
    return 0;
}
0955947NGNG
>>950 951 952
ありがとうございました!!
エラー名かきわすれ申し訳ございませんでした・・・

さっそく修正してみたいと思います。

0956954NGNG
>>955
オレにはお礼なしかよチンカス
0957デフォルトの名無しさんNGNG
すいません、>>933>>944ですが、
どなたか回答をいただけないでしょうか・・・?
よろしくお願いします。
0958デフォルトの名無しさんNGNG
>>957
極力マクロを使うな。inlineで十分だろ。デバッグやりにくいし。
マクロにしないと駄目な理由を書いてくれ。
0959デフォルトの名無しさんNGNG
Cだからinline不可でわ?
0960947NGNG
>>956
すいません、入力してるときにカキコマレタようでみてませんでした・・・
0961デフォルトの名無しさんNGNG
>>959
ああ、inlineの使えないCもあったんだった・・・
0962デフォルトの名無しさんNGNG
>>959
ハァ?
0963933NGNG
>>958
では inline を使うとどのようにできるのでしょうか?
すみません・・・
0964デフォルトの名無しさんNGNG
>>963
関数の頭にinlineをつける
0965デフォルトの名無しさんNGNG
>>963
調べたりする気のないヤツはプログラムするな
0966デフォルトの名無しさんNGNG
>>965
禿同
0967933NGNG
>>964-966
少し調べてみました。みなさん、レスありがとうございます。
inline はC++のようですが、Cでも使えるのでしょうか?
そこが心配なのですが・・・

例えば>>933だと

以下のようにnew というinline関数を定義すると

pthread_attr_init (&attr);
sched_param.sched_priority = 4;
pthread_attr_setschedparam (&attr, &sched_param);
ret = pthread_create (&theThread, &attr, thread_code, (void *) 0 );

は、どのように使用すればよいのでしょう?

--------------------------------------------

pthread_t theThread;

inline int new(priority, thread, number)

void *thread_code(void *t)
{
・・・
}

main()
{
・・・
}
0968デフォルトの名無しさんNGNG
>>967
それは調べたなどと言わない。
0969デフォルトの名無しさんNGNG
Cでもinlineは仕様できます。
C99に対応したコンパイラなら。
0970デフォルトの名無しさんNGNG
>>968
厳しいですね・・・(涙)
いろいろと調べてるのですが、なかなか分からなくて・・・
すみません・・・
0971969NGNG
+ 使用
- 仕様
0972デフォルトの名無しさんNGNG
>970
インライン云々の前にふつうの関数がわからんのではないかという疑念を抑えることができない
0973マイク ◆yrBrqfF1Ew NGNG
inlineをつけると「俺はfunctionをinline展開してくれるように切望してる」と
コンパイラに対して意思表示ができる
0974デフォルトの名無しさんNGNG
printfで出力で小数点第二位まで出力したいのですが%.2で正常に出力できますでしょうか?
0975デフォルトの名無しさんNGNG
>>974
試しもしないでできるかどうか聞いているのか?
0976デフォルトの名無しさんNGNG
Cでプログラムしてるんですが
虚数√-1ってどうやってやるんでしょうか
sqrt(-1)だとおかしくなってしまうんですが
0977デフォルトの名無しさんNGNG
あたりまえだろはげ
そもそもiを数値に置き換える必要などない
『虚部』を使えばいいだけ
それ以前にここは宿題すれ
0978デフォルトの名無しさんNGNG
虚数すら知らない奴が虚数を必要とするプログラムをしてるってどんな状況?
0979デフォルトの名無しさんNGNG
すみません
宿題で虚数をつかうのがあったのでここでもいいかと思いました。
iを虚数とすると
Z=X+iY
というのを入力するとこでどうやってあらわせばいいのかこまったので質問しました。
0980デフォルトの名無しさんNGNG
#include <complex.h>
0981デフォルトの名無しさんNGNG
std::complex<nullpo>
0982デフォルトの名無しさんNGNG
どうもありがとうございました
うまくいきました。
0983デフォルトの名無しさんNGNG
>>982
んなばヵな
0984デフォルトの名無しさんNGNG
>>967

これでどう?

--------------------------------------------

pthread_t theThread;

inline int new(int priority, char thread, int number)
{
pthread_attr_init (&attr);
sched_param.sched_priority = priority;
pthread_attr_setschedparam (&attr, &sched_param);
ret = pthread_create (&theThread, &attr, thread, number );
}

void *thread_code(void *t)
{
・・・
}

main()
{
new(4, thread_code, 0)
・・・
}
0985デフォルトの名無しさんNGNG
>>979
sscanf(buff,"Z=%d+i%d",&x,&y);
こんなんちゃうかい

宿題で虚数を使うならその宿題をさらせ
俺は宿題に飢えているんだ
0986デフォルトの名無しさんNGNG
2次元ユークリッド空間で与えられた2つの直線が
共通点を持つかどうか判定するプログラムを書け.

ただし 直線((x1, y1), (x2, y2)) と 直線((x3, y3), (x4, y4))
に対して
x1 y1 x2 y2 x3 y3 x4 y4
というフォーマットで入力する.

入力はすべて整数とする.

お願いします.
0987デフォルトの名無しさんNGNG
>>986
線分((x1, y1), (x2, y2))をA
線分((x3, y3), (x4, y4))をB
として、線分Aと線分Bの延長線上での交点C(x,y)を求め、
x1<x<x2&&y1<y<y2が真であれば線分が交差していると考えられる。
また、AとBが線形独立の場合は交点が無いので注意。
0988デフォルトの名無しさんNGNG
>>986
あ、ごめん、勘違いしていた
線形独立かどうかを判定するプログラムっていうわけか…
(y1-y2)/(x1-x2) != (y3-y4)/(x3-x4)が真になったとき共通点を持つ。
0989デフォルトの名無しさんNGNG
同じことだが、割り算は避けた方が良いとおもう。
(y1-y2)*(x3-x4) != (y3-y4)*(x1-x2)
0990デフォルトの名無しさんNGNG
>>986
簡単なのにプログラム書かなきゃダメなの?
#include <stdio.h>
int linearly_independent( double x1, double y1,
double x2, double y2,
double x3, double y3,
double x4, double y4 ) {
return (y1-y2)*(x3-x4) == (y3-y4)*(x1-x2) ? 0 : 1;
}

int main( void ) {
double x1, y1;
double x2, y2;
double x3, y3;
double x4, y4;

printf( "変数を代入してね(はぁと):" );
scanf( "%lf %lf %lf %lf %lf %lf %lf %lf",
&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4 );

switch (linearly_independent( x1, y1, x2, y2, x3, y3, x4, y4 )) {
case 1:
puts( "共通点を持つ" );
break;
case 0:
puts( "共通点を持たない" );
break;
}

return 0;
}
0991デフォルトの名無しさんNGNG
>>990
入力は整数らしいぞ
double -> int
%ld -> %d
0992デフォルトの名無しさんNGNG
>>985
飢えてるならプログラム教えてるパソコン教室探して通え
0993デフォルトの名無しさんNGNG
>>992
ププ
0994デフォルトの名無しさんNGNG
で、結局次スレはどこ? >>945 は偽スレなの?
0995デフォルトの名無しさんNGNG
いいやん、ここつかったら。

新スレ
http://pc5.2ch.net/test/read.cgi/tech/1095075678/
0996デフォルトの名無しさんNGNG
>>995
そんなネタスレでは質問も回答も無いな
実際に無いわけだが。
0997デフォルトの名無しさんNGNG
ネタスレなのか?前もぼるじょあネタはあったけどちゃんと機能してた気がするけど
0998デフォルトの名無しさんNGNG
妹スレよりよほどまし
0999デフォルトの名無しさんNGNG
よゆーの999
1000デフォルトの名無しさんNGNG
新スレ
http://pc5.2ch.net/test/read.cgi/tech/1095075678/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。