1read 100read
2011年10月1期プログラム【C,C++】 ちょっと問題解いて行け 【勉強】 TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
ひろゆき杯プログラミングコンテスト
【.NET】WCF〜Windows通信基盤技術【通信】
新しい言語は要らない
【論理パズル】intelが天才を求めているようです


【C,C++】 ちょっと問題解いて行け 【勉強】


1 :09/10/12 〜 最終レス :11/12/07
他人のソースを読むことは非常に勉強になります。
と言うわけで、初心者〜プロの方まで様々な人が書いたソースを見て、より良いプログラムを作れるようになろうと言う目論見です。
問題は未来アンカーで踏んだ人が空気を読んだ問題を出しましょう。
解答ソースを貼る人用テンプレ
【C言語歴】 (例)4年
【レベル】 (例)初心者、プロ、学校で習った程度 など
【コンセプト】 (例)処理速度重視、可読性重視、容量重視 など
【コメント】 (例)みっくみくにしてやんよ。など、有れば
長すぎるソースはこちらへ
ttp://codepad.org/
宿題は C/C++の宿題片付けます 130代目へ
http://pc12.2ch.net/test/read.cgi/tech/1250204272/
相談は C言語なら俺に聞け(入門篇)Part54などへ
http://pc12.2ch.net/test/read.cgi/tech/1254829314/

2 :
言い出しっぺの法則
【問題】 5個の数を入力すると合計と平均を計算し出力するプログラムを作成してください。
次の問題は>>50

3 :
【C言語歴】 1ヶ月
【レベル】  超初心者
【コンセプト】 ちゃんと動くように書くのが精一杯
【コメント】 先月からC言語を勉強しはじめました。一応講義受けてます・・。
#include<stdio.h>
#define BUF_SIZE (16)
#define COUNT (5)
int main(void){
int i;
double sum = 0;
char buf[BUF_SIZE];
printf("%d回、数を入力してください。\n",COUNT);
for(i=0;i<COUNT;i++){
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%lf",&sum);
sum +=sum;
}
printf("合計は%f、平均は%fです。",sum,sum/COUNT);
return (0);
}

4 :
該当問題をアンカーしたほうがいいですね・・。

5 :
ちょw
>

6 :
霊長類研

7 :
>>2
【C言語歴】 1年 【レベル】 学校で習った 【コンセプト】 普通に
#include <stdio.h>
int main(void)
{
char str[20];
int num1;
int num2;
int num3;
int num4;
int num5;
int sum;
puts( "整数を5回入力して下さい。" );
fgets( str, 20(str), stdin );
sscanf( str, "%d", &num1 );
fgets( str, 22(str), stdin );
sscanf( str, "%d", &num2 );
fgets( str, 24(str), stdin );
sscanf( str, "%d", &num3 );
fgets( str, 26(str), stdin );
sscanf( str, "%d", &num1 );
fgets( str, 28(str), stdin );
sscanf( str, "%d", &num1 );
sum = num1 + num2 + num3 + num4+ num5;
printf( "合計: %d\n", sum );
printf( "平均: %d\n", sum / 5 );
return 0;
}
これでどうですか?

8 :
>7
わざと()にしたのかなアセンブリじゃないんだから[]使わないとだめだよ
20[str]みたいにね、と思ったがfgets(, size_t, )だったなぁ
脳内lintには引っかかったが、脳内コンパイルできなかった

9 :
【C言語歴】 1ヶ月
【レベル】 超初心者
【コンセプト】 なし
【コメント】 なし
#include <stdio.h>
int main(){
int a[5];
scanf("%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4]);
int b=a[0]+a[1]+a[2]+a[3]+a[4];
printf("%d\n%g\n",b,(float)b/5);
return 0;
}

10 :
>>9
bが宣言されてなくない?
あとその書き方だと数が多いと大変

11 :
おっと、b見落としてた

12 :
ageて置きますね(^^;)

13 :
>>2
【C言語歴】 5〜6年
【レベル】 けど初心者
【コンセプト】 stl で書いてみた
【コメント】 プログラムがうまくなりたーい
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
int main()
{
std::vector<int> arr;
std::cout<< "整数を5回入力してね。"<<std::endl;
for( int i = 0; i < 5; ++i)
{
int input_tmp;
std::cin >> input_tmp;
arr.push_back( input_tmp );
}
int sum = std::accumulate(arr.begin(), arr.end(), 0);
std::cout << "Sum:" << sum <<std::endl;
std::cout << "Mean:"<< (double)sum/arr.size() << std::endl;
return 0;
}

14 :
>3
・buf は for の中で宣言しても良いかも。(その方が後で改造しやすい)
・sscanf は「scanできた数」を返すから、それできちんと入力されたかチェックした方が好ましい。
 ※ >3だと空入力とかも1回とカウントされてしまう。
・%lfでsscanfしてるんだから、 printfも %lf で出力した方が好ましい。
>7,9
・個別に書く事は得になし。
>13
・c++なんだからキャストは static_cast の方が好ましい。
 (というか出題は整数限定じゃないのだから、double型にしときゃ良い気が。)
総評:
・初期化を書くクセを突けた方が良いと思われ。
・コンパイルが通るのを確認してから書いた方が良いと思われ。
 今やWindowsでもコンパイラはタダなのだし。

15 :
>・%lfでsscanfしてるんだから、 printfも %lf で出力した方が好ましい。
これは論外。何故論外なのか判らないならprintf()とscanf()のマニュアルペー
ジを読め。
それでも判らないなら、人に物を教えようなどと言う烏滸がましいことは金輪際
止めた方がいい。

16 :
っ C99

17 :
shortだったらどうするんだろう……

18 :
/*
【C言語歴】 22年 ソースにコメントされても、多分返事は無い
【レベル】 プロ
【コンセプト】 可読性重視
【コメント】 C++ は入出力がスマートで便利
*/
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
const int MAX_COUNT = 5;
int main(void) {
  double data[5];
  double total = 0.0;
  int i;
  for(i=0; i<MAX_COUNT; i++) {
    cout << "何かの数:";
    cin >> data[i]; cout << data[i] <<endl;
    total += data[i];
  }
  cout << "合計:" << total <<endl;
  cout << "平均:" << total/MAX_COUNT <<endl;
}

19 :
通常、標準入力はエコーバックされていると言う前提だから、入力直後の出力は冗長だね。
一方、標準出力はバッファリングされている可能性があるからフラッシュしないと折角のプロンプト出力が無駄になる。

20 :
const int MAX_COUNT = 5;



double data[5];
さすがプロ
つーか、配列の意味無し

21 :
>>20
ありがちなミスだなw
というお前さんも問題解いて行ってくれよ?

22 :
>15
失敬。そしてわざわざ指摘をありがとう。(思いっきり勘違いしてますねこりゃ。)
そして>13さんごめんなさい。
>18
先輩、忘れ物です。
つ return 0;
>19
一応どのように読み取ったかを確認できるので、冗長ではあるけど意味はあるかと。
(例えば 1,2 などと入力すると…)

23 :
>>7 コンパイル済み
#include <stdio.h>
int main(void)
{
  char str[20];
  int num1;
  int num2;
  int num3;
  int num4;
  int num5;
  int sum;
  puts( "整数を5回入力して下さい。" );
  fgets( str, 20, stdin );
  sscanf( str, "%d", &num1 );
  fgets( str, 20, stdin );
  sscanf( str, "%d", &num2 );
  fgets( str, 20, stdin );
  sscanf( str, "%d", &num3 );
  fgets( str, 20, stdin );
  sscanf( str, "%d", &num4 );
  fgets( str, 20, stdin );
  sscanf( str, "%d", &num5 );
  sum = num1 + num2 + num3 + num4+ num5;
  printf( "合計: %d\n", sum );
  printf( "平均: %d\n", sum / 5 );
  return 0;
}

24 :
こういうのはイディオムとして覚えておこうよ。
fgets(str, sizeof(str), stdin);

25 :
よう、友達じゃないんだから。

26 :
/*
【C言語歴】 22年 ソースにコメントされても、返事は期待しないように
【レベル】 プロ
【コンセプト】 可読性重視
【コメント】 途中で数字以外を入れるとそこまでで計算を終わる
*/
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
const int MAX_COUNT = 5;
int main(void) {
  double data, sum=0.0;
  int i;
  for(i=0; i<MAX_COUNT; i++) {
//    cout << "何かの数:";
    if(!(cin >> data)) break;
//    cout << data <<endl;
    sum += data;
  }
  cout << "合計:" << sum <<endl;
  cout << "平均:" << sum/i <<endl;
}

27 :
/*
【C言語歴】 22年 ソースにコメントされても、返事は期待しないように
【レベル】 プロ
【コンセプト】 可読性重視
【コメント】 途中で数字以外を入れるとそこまでで計算を終わる
*/
#include <stdio.h>
#define MAX_NUM 5
int main(){
  double data, sum=0.0;
  int i;
  for(i=0; i<MAX_NUM; i++){
//    printf("何かの数:");
    if(scanf("%lf", &data ) != 1) break;
//    printf("%g\n", data);
    sum += data;
  }
  printf( "合計:%g\n", sum);
  printf( "平均:%g\n", sum/i);
  return 0;
}

28 :
/*
【C言語歴】 沢山
【レベル】 プロ
【コンセプト】 即興
【コメント】 >27に準拠、0件にも対応
*/
#include <stdio.h>
static const int MaxNum = 5;
int main()
{
double sumData = 0;
int ic;
for (ic = 0; ic < MaxNum; ++ic) {
double data;
fprintf(stderr, "Input a number:");
if (scanf("%lf", & data) != 1) break;
sumData += data;
}
if (ic) {
printf("Summation:%g\nAverage:%g\n", sumData, sumData / ic);
} else {
printf("There are no numbers.\n");
}
return 0;
}

29 :
// 【C言語歴】 10年くらい
// 【レ ベ ル】 底辺SIerのPG
// 【コンセプト】 C++で。例外処理は省略。
// 【コメント】ベースは>18
#include <iostream>
#include <vector>
#include <numeric>
int main ( void )
{
const int MAX_COUNT = 5;
std::vector<double> buf;
std::cout << MAX_COUNT << "個の数値を入力してください。" << std::endl;
for( int count = 0; count < MAX_COUNT; ) {
double tmp = 0.0;
std::cin >> tmp;
if ( std::cin.fail() ) {
std::cin.clear(); // エラーを消す
std::cin.ignore(); // エラーとなった文字を読み飛ばす
}
else {
buf.push_back( tmp );
++count;
}
}
double sum = std::accumulate( buf.begin(), buf.end() , 0.0);
std::cout << "合計:" << sum << std::endl;
std::cout << "平均:" << (sum / MAX_COUNT) << std::endl;
return 0;
}

30 :
int main( /**/ void /**/ )

31 :
次の問題に行かずに沈みそうなのでage....
ゆ っ く り と い て い っ て ね

32 :
>>24
カッコつけんなボケ

33 :
別に格好悪いわけじゃないからいいじゃん。

34 :
そろそろ次の問題行かないと間が持たないな

35 :
では少し早いですが問題を・・。
【問題】 100個の数字をランダムに並べ替えて出力するプログラムを作成してください。
     ※同じ数は出力しない。毎回違った実行結果を表示する。
アルゴニズムと処理の違いが楽しみです。
次の問題は 一応50レス先の >>85
スレが停滞したらまたその時。。

36 :
>>35
問題訂正・・。
【問題】 1〜100までの数字をランダムに並べ替えて出力するプログラムを作成してください。
     ※同じ数は出力しない。毎回違った実行結果を表示する。

37 :
$ cat a.cpp
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
time_t t;
t = time(0);
srandom(t);
int a[100];
for (int i = 0; i < 100; ++i) a[i] = i;
for (int i = 0; i < 100; ++i) {
int k = i + random() % (100 - i);
printf("%d\n", 1 + a[k]);
a[k] = a[i];
}
return 0;
}
C99ってことで

38 :
乱数は考えるのがめんどくさかったので、 random() でごまかした。
random()の剰余で求める範囲の値を取り出すのは、ほんとはよい習慣ではない。
割り算を使うほうがいい。

39 :
いちおうテンプレ
【C言語歴】 かなり長い
【レベル】 プロ
【コンセプト】 KISS
【コメント】 たたき台ってことで、よろしく。

40 :
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MIN (1)
#define MAX (100)
#define LENGTH (MAX - MIN + 1)
int main()
{
int data[LENGTH];
// データの初期化
for(int i = MIN; i <= MAX; i++)
{
data[i - MIN] = i;
}
// データの並べ替え
srand(time(NULL));
for(int i = 0; i < LENGTH; i++)
{
int temp;
temp = data[i];
int selected_index = rand() % (MAX - i) + i;
data[i] = data[selected_index];
data[selected_index] = temp;
}
// 出力
for(int i = 0; i < LENGTH; i++)
{
printf("%d\n", data[i]);
}
return 0;
}

41 :
>>37
はえー・・・・
さすがプロ・・。
問題作った言い出しっぺが作れてません。
コンパイル通るのに動かないょ。

42 :
【C言語歴】 ほとんど書いたことない
【レベル】 Cは初級
【コンセプト】 変化を考慮
【コメント】 書き方などご指摘がありましたらよろしくお願いします。

43 :
【C言語歴】 6年 【レベル】 仕事で使用 【コンセプト】 擬似乱数 【コメント】 PCは書き込み規制・・・
#include <stdio.h>
#include <string.h>
#include <time.h>
void main(){
 char map[100];
 time_t timer;
 int a, b, p, q, i = 0;
 memset(map, 0x02, sizeof(map)); time(&timer);
 a=timer%100000; p=(timer/7)%1000; q=(timer/3)%1000;
 while(1){
  a=(((a*p+q)/10)%100000); b=a/1000;
  if(0<map[b]){
   printf("%3d ",b); map[b]--; i++;
  }else{
   while(1){
    if(b<99) b++;
    else b = 0;
    if(0<map[b]){
     printf("%3d ", b); map[b]--; i++; break;
    }
   }
  }
  if(i>=200) break;
 }
}

44 :
【C言語歴】 1ヶ月 【レベル】  超初心者 【コンセプト】 ちゃんと動くように書くのが精一杯
【コメント】 先月からC言語を勉強しはじめました。無限ループから抜け出せない。。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_NUM (100)
int main (void){
int rnd[MAX_NUM] = {0};
int i, j, temp;
MORE:
for(i = 0; i < MAX_NUM; ){
temp = 0;
srand((unsigned)time(NULL));
temp = rand () % MAX_NUM;
if (0 < temp && temp < MAX_NUM){
for (j = 0; j = i; j++){
if (rnd[j] != temp){
rnd[i] = temp;
i++;
}else
goto MORE;
}
}else
goto MORE;
}
for ( i = 0; i <= MAX_NUM - 1 ; i++){
printf ("%d\n", rnd[i]);
}
return (0);
}

45 :
100*2で出力になってる…
memsetは1でi>=100でbreak
これだと発生しにくい数が出るけど…

46 :
>>37
目から鱗が・・。
コンパイル通りませんでしたが。
コピペだからでしょうか。
そのアルゴいただきます。

47 :
>37
これは良いお手本。
>40
レベル考えりゃ上出来。叩き台にはむしろこちらが相応しい。
敢えてツッコミ入れるなら、
・稀に「1と1を交換」のような、無駄な操作が発生する辺りは要改善かも。
・並べ替えの部分は↓を先頭に持ってきて、swap処理を固めた方が好ましいかと。
 int selected_index = rand() % (MAX - i) + i;

48 :
>43
・if(i>=100) break; は while の条件に書けば良いような。(効率気にするならdo〜while)
・1で初期化し-1するより、0で初期化し、1代入の方が良い気が。
 (「配列全体を0で初期化」なら char map[100] = {0}; のように書けるので。)
・アルゴリズムは中々凝ってるような。(一部良く分からないけど…)
>44
・まづはgoto使うのを止めれ。ループとかブロック脱出に使うのは絶対ダメ。
・else ケースに括弧を付けるべき。括弧の対応が分かり辛く、フローも追い難い。
ちなみに無限ループに陥るのは、i がMOREにジャンプする度リセットされるから。
かつ内側のforループ内でほぼ確実にMOREにジャンプする。

49 :
この問題じゃ工夫の余地が無いよな。

50 :
>> // データの並べ替え
>> srand(time(NULL));
>> for(int i = 0; i < LENGTH; i++)
>> >40
>> ・稀に「1と1を交換」のような、無駄な操作が発生する辺りは要改善かも。
for(int i = 0; i < LENGTH-1; i++)

51 :
>50
それだけでは不足。
selected_index の範囲も要修正。
>46
>コンパイル通りませんでしたが。
c99対応のコンパイラ(gccなど)が必要。

52 :
良う修正せん。どう修正する。

53 :
>>52
何を?

54 :
>>51

55 :
>>54
どっちを?

56 :
selected_index を修正する?

57 :
>40
>int selected_index = rand() % (MAX - i) + i;
selected_index ⇒ i 〜 MAX-1

58 :
>40
int selected_index = rand() % (LENGTH - i) + i;
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9999.c

59 :
これをtemp省略前の状態にリバース!
http://pc12.2ch.net/test/read.cgi/tech/1255709298/229
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
  int i, k, n, *p, temp;
  srand(time(0));
  scanf("%d", &n);
  p = malloc(n * sizeof(int));
  if(!p) return 1;
  for(i=0; i<n; i++) {
    p[i] = i;
    k = rand() % (i + 1);
    temp = p[i]; p[i] = p[k]; p[k] = temp;
  }
  printf("[");
  for(i=0; i<n; i++) printf(" %d", p[i]);
  printf(" ]\n");
  free(p);
  return 0;
}

60 :
C/C++/STL/MFC/CLI 共通問題
【問題】 10進数を入力して2進数を表示する。
     ※入力は1回のみで、繰返しはしない。数字以外は入力しない。
     ※正数は先頭の0は表示しない。負数は32ビットを表示する、間に空白などは埋めない。
     ※入力にE又は小数点がある場合、浮動小数点数は32ビットで考える。
次の問題は 40 レス先の >>100

61 :
頭の0を取るのは正規表現でも使ってください
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void dmp(unsigned char *b, int len)
{
int i;
for(i = len; --i >= 0; ){
int j;
/* printf(" %02x ", b[i]); */
for(j = 256; (j >>= 1) > 0; ){
printf("%d", (b[i] & j) ? 1 : 0);
}
}
printf("\n");
}

62 :
int main(int ac, char **av)
{
char buf[4096];
int i, f;
printf("input: (123, 0.5, 3.4e-6, etc...) > ");
fgets(buf, sizeof(buf), stdin);
printf(buf);
f = 0;
for(i = 0; i < strlen(buf); i++){
char c = buf[i];
if((c == '.') || (c == 'E') || (c == 'e')){
f = 1;
break;
}
}
if(f){
double d;
sscanf(buf, "%lf", &d);
printf("%.16f\n", d);
dmp((unsigned char *)&d, sizeof(d) / sizeof(char));
}else{
sscanf(buf, "%d", &i);
printf("%d\n", i);
dmp((unsigned char *)&i, sizeof(i) / sizeof(char));
}
return 0;
}

63 :
>>61
リトルエンディアンとビックリエンディアンの判別くらいしないといけないね
>>60
ここの人か
http://pc12.2ch.net/test/read.cgi/tech/1256818218/442

64 :
 >>61
 リトルエンディアンとビックリエンディアンの判別くらいしないといけないね
C++ でコンパイルしてください。ビックリ→ビッグ。ワーニング→ウォーニング
bool is_little_endian(unsigned char *b)
{
  return b[0] ? true : false;
}
void dmp(unsigned char *b, int len, bool fill)
{
  int i, j; bool zero = false;
  if(i=1, is_little_endian( (unsigned char *)&i )){
    for(i = len; --i >= 0; )
      for(j = 256; (j >>= 1) > 0; ) {
        if(b[i] & j) zero = true;
        if(fill || zero) printf("%d", (b[i] & j) ? 1 : 0);
      }
  } else {
    for(i = -1; ++i < len; )
      for(j = 256; (j >>= 1) > 0; ) {
        if(b[i] & j) zero = true;
        if(fill || zero) printf("%d", (b[i] & j) ? 1 : 0);
      }
  }
  printf("\n");
}

65 :
>>60
>     ※入力にE又は小数点がある場合、浮動小数点数は32ビットで考える。
整数はなんとなくわかるが、浮動小数点数の仕様がわからない。
具体例をあげてくれ。
0.0 =>
1.0 =>
0.1 =>
1E2 =>
1E-1 =>
ところで、回答してるやつはちゃんとテストしている?
0 => 0
1 => 1
-1 => 11111111111111111111111111111111 (1が32個)
65535 => 11111111111111 (1が16個)
-65536 => 111111111111110000000000000000 (1が16個と0が16個)
2147483647 => 1111111111111111111111111111111 (1が31個)
-2147483648 => 10000000000000000000000000000000 (1が1個、0が31個)
特にエンディアンがどうこう言ってるやつは、リトルエンディアンとビッグエンディアンの両方でテストしている?

66 :
input: (123, 0.5, 3.4e-6, etc...) > 0.0
0
00000000000000000000000000000000
0
0000000000000000000000000000000000000000000000000000000000000000
input: (123, 0.5, 3.4e-6, etc...) > 1.0
1
00111111100000000000000000000000
1
0011111111110000000000000000000000000000000000000000000000000000
input: (123, 0.5, 3.4e-6, etc...) > 0.1
0.1000000014901161
00111101110011001100110011001101
0.1
0011111110111001100110011001100110011001100110011001100110011010
input: (123, 0.5, 3.4e-6, etc...) > 1E2
100
01000010110010000000000000000000
100
0100000001011001000000000000000000000000000000000000000000000000
input: (123, 0.5, 3.4e-6, etc...) > 1E-1
0.1000000014901161
00111101110011001100110011001101
0.1
0011111110111001100110011001100110011001100110011001100110011010

67 :
>>66
>【問題】 10進数を入力して2進数を表示する。
題意にそえば、10進数の0.5は2進数では0.1になるはずだが。
0.75(decimal)ならば0.11(binary)

68 :
IEEEの仕様があるのは知ってるか?

69 :
>>67
それはただの少数であって浮動小数点数ではないから題意に添わない

70 :
参考資料
ttp://ja.wikipedia.org/wiki/IEEE_754

71 :
>>67
しったか乙

72 :
>>69
基の問題文は、浮動小数点数と明記していないから、67のような捉え方もできると思う。
もっとも、その後の※を読めば浮動小数点数なのだろうとは考えられるけど。

73 :
捕手

74 :
次のようなデータがテキストファイルで1ギガ程度あり、これを数値順にソートしたいです。
どのようにすればいいですか。
文字列 タブ文字1個 数値
・・・・・・・・・・ ・・
・・・・・ ・・
[参考]文字列は可変長です、文字列にタブは含みません。
数値範囲は32ビットunsigned intの整数です。
課題の要点ではないので、ソートはqsort等ライブラリを使用して下さい。
速度の為、malloc, newを使うなら、1024個を1回にとか、まとめてして下さい。

75 :
次のレス番は>100くらい

76 :
> 文字列は可変長です、文字列にタブは含みません。
文字列の長さは固定長の間違いでした。

77 :
> 文字列の長さは固定長
そんなら OS で用意されている sort 使うよw
※"文字列は可変長"でも sort 使うが

78 :
sort -n +1

79 :
題目:宝くじの「還元率計算」
入力:標準ストリーム(テキストファイル)
1行目 1枚の金額 "," 発売総枚数
2行目以降 順位 "," 当選金額 "," 当選本数
最終行 改行
出力:標準ストリーム
タイトル行
入力データ、各行毎の期待値
合計期待値、還元率
ヒント:当選確率*当選金額=期待値(予想配当額)
    期待値/1枚の金額=還元率
CUI/GUIどちらでも可
次スレは>>100あたり

80 :
宝くじって売り切れる訳じゃないんだろ
売れ残った部分に当りくじがあったら
還元率は大幅に下がるんじゃね?

81 :
>>80
あなた、いつ議員に「当選」したんだ?

82 :
[1] 授業単元:
[2] 問題文(含コード&リンク):
一次方程式y=a*x+bにおいて、A[x1,y1]とB[x2,y2]が与えられた時、
方程式の係数a,bを求めよ。
x1 y1: 450 454.4
x2 y2: 452 454.8
y=0.2*x+364.4
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (Visual C++)
 [3.3] 言語: (C++/CLI C/Win32API C++/MFC いづれか)
[4] 期限: ( なし )
[5] その他の制限: ( GUIまたはgetc()で終わること)

83 :
>>82
宿題はスレ違い

84 :
#include <malloc.h>
#define MAXSIZE 20
typedef double WORD;
main(){
WORD (*b)[100];
WORD *a[2];
int i=1,j=1;
b = malloc(sizeof(WORD)*MAXSIZE*2);
a[0] = malloc(sizeof(WORD)*MAXSIZE);
a[1] = malloc(sizeof(WORD)*MAXSIZE);
b[i][j] = 0;
a[i][j] = 0;
/* [と]を使わない方法は?*/
b[i][j] = 0;
a[i][j] = 0;
}

85 :
>>84
b??(i??)??(j??) = 0;
a??(i??)??(j??) = 0;

86 :
b<:i:><:j:> = 0;
a<:i:><:j:> = 0;

87 :
>>86
すげー、ほんとにコンパイル通る。
それなんて名前なの?記号だけなのでググりようがない。

88 :
memset() すりゃいいんでないの?w

89 :
0で初期化したいんならcalloc()でいいだろw
*(*(b + i) + j) = 0;
*(*(a + i) + j) = 0;

90 :
>>87
ダイグラフ

91 :
>>89
WORD (*b)[2]; // まちがえた

92 :
>>90
とんくす
日本語じゃ情報少ないのな。英語だとWikipediaにのってるが

93 :
Trigraph
× トリグラフ
○ トライグラフ
http://dic.yahoo.co.jp/dsearch?p=trigraph&dtype=1

94 :
コンパイラ名とバージョン: (Visual C++)
作業用フォルダの所は空白、ソースと同じフォルダにショートカットは有ります。
ショートカット「Visual Studio 2005」
から cl xxx.cpp するのが面倒な場合はどのようにするのでしょうか。
PATHをずらっと並べるのは無しで.batのみで可能でしょうか?

95 :
>>94
まず、ここは質問スレじゃない。
さらに、それはC/C++の問題ではない。

96 :
C#, C♯, C#相談室 Part55
>>95 返信サンキュこちらで聞いてきます。

97 :
>>2
【C++言語歴】 15時間
【レベル】 超ド素人
【コンセプト】 えっ・・と・・・
【コメント】 参照?ポインタ?構造体?クラス?イミフ
#include <iostream>
using namespace std;
int main() {
double a, b, c, d, e, sum;
cout << "5つの数の合計と平均値を出力します。" << endl;
cin >> a >> b >> c >> d >> e;
sum = a + b + c + d + e;
cout << "合計は" << sum << "で、平均は" << sum/5 << "です。" << endl;
}

98 :
>>2
【レベル】 プロ
#include <iostream>
using namespace std;
struct Average {
  int count;
  double total;
  Average() : count(0), total(0.0) {}
};
int main(){
  Average a;
  double data;
  for(int i=0; i<5; i++){
    cout << "Input Number:";
    cin >> data;
    a.total += data;
    a.count++;
  }
  cout << "total=" << a.total << endl;
  cout << "average=" << a.total/a.count << endl;
}

99 :
次の問題は>>100

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
ひろゆき杯プログラミングコンテスト
【.NET】WCF〜Windows通信基盤技術【通信】
新しい言語は要らない
【論理パズル】intelが天才を求めているようです