プログラミングに関して質問です。


1.コマンドラインからファイル名を読み込みそのファイルの行数を数えるプログラム。

2.キーボードから"stop"と入力するまで繰り返し文字列を読み込み、ファイルに書き込んでゆくプログラム。

3.nの値を受け取ると S(n)=1+...+n の値を計算し結果を表示する関数を用いて、 S(1),...,S(10) の値を計算するプログラム。


上記の3題を宿題に出されたのですが、さっぱりわからなくて、ヤフーの知恵袋でも質問したのですが、簡単すぎて答える気になれないってコメントされてしまいました。

プログラミングが得意な人なら、簡単な問題なのかもしれませんが、私にはさっぱりわかりません。
周りに聞ける人もいなくて困ってます。
どなたか教えてください。
お願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2007/02/02 02:59:55
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:TONTON3 No.1

回答回数212ベストアンサー獲得回数4

ポイント31pt

言語は何でしょうか?BASIC? C? C++ JAVA? Pascal?

Cだとしたら

1 fRead __argc __argv で検索

2 scanf fwrite で検索

3 は配列の使い方の演習でいけるかと

すべてを書いてしまうことも可能ですが悩むのも勉強と思います。

プログラムコードでわからない所を質問するとよいでしょう、がんばてください

id:hiropon05la

検索してもわかりませんでした。

もう少しヒントをくれませんか?

調べてもわからなくて、きょうまでに提出しなきゃいけないのに、本当に困ってます。

助けてください。

お願いします。

2007/02/02 00:34:30

その他の回答3件)

id:TONTON3 No.1

回答回数212ベストアンサー獲得回数4ここでベストアンサー

ポイント31pt

言語は何でしょうか?BASIC? C? C++ JAVA? Pascal?

Cだとしたら

1 fRead __argc __argv で検索

2 scanf fwrite で検索

3 は配列の使い方の演習でいけるかと

すべてを書いてしまうことも可能ですが悩むのも勉強と思います。

プログラムコードでわからない所を質問するとよいでしょう、がんばてください

id:hiropon05la

検索してもわかりませんでした。

もう少しヒントをくれませんか?

調べてもわからなくて、きょうまでに提出しなきゃいけないのに、本当に困ってます。

助けてください。

お願いします。

2007/02/02 00:34:30
id:maq No.2

回答回数81ベストアンサー獲得回数5

ポイント5pt

http://www.jurapun.com/Samples/C/Source.php?File=lc/lc.c

回答ではなく、ヒントになるような回答をしたかったのですが…。

ひとつくらいなら良いでしょう:)

id:Mook No.3

回答回数1314ベストアンサー獲得回数393

ポイント27pt

課題3 の回答例

#include <stdio.h>
#define S(x) ( x * ( x + 1 ) / 2 )

void main( void ) {
    int n;
    for( n = 1 ; n<=10 ; n++ ) printf( "S(%d)=%d\n", n, S(n) );
}

別解で

#include <stdio.h>
int s( int n) { return( n == 1 ? 1 : n + s( n - 1 ) ); }

void main( void ) {
    int n;
    for( n = 1 ; n<=10 ; n++ ) printf( "S(%d)=%d\n", n, s(n) );
}
id:hiropon05la

ありがとうございます。

3が一番わからんかったんで助かりました。

本当にありがとうございます。

感謝です。

1は解決して、今2に取り組んでいるのですが、いまいち分かりません。

2007/02/02 01:53:50
id:yo-kun No.4

回答回数220ベストアンサー獲得回数30

ポイント27pt

全部かなり適当です。

細かいエラー処理などは省いてあります。

1

#include <stdio.h>
#define MAX_LINE_LENGTH 1024

int main(int argc, char* argv[])
{
  int lineCount = 0;
  FILE* pFile ;
  char* pLine ;
  char buffer[MAX_LINE_LENGTH];

  if ( argc < 2 ) 
  {
    puts( "input file name.\n" ) ;
    return 1;
  }
  pFile = fopen( argv[1], "r" ) ;
  if ( pFile == NULL )
  {
    puts( "file open error occuerred.\n" ) ;
    return 1;
  }

  do {
    pLine = fgets( buffer, MAX_LINE_LENGTH, pFile ) ;
    if ( pLine == NULL ) break ;
    ++lineCount ;
  } while ( 1 ) ;

  fclose( pFile ) ;

  printf( "%d\n", lineCount ) ;
  return 0;
}

2

#include <stdio.h>
#include <string.h>
#define MAX_INPUT_LENGTH 1024

int main(int argc, char* argv[])
{
  FILE* pFile ;
  char buffer[MAX_INPUT_LENGTH];

  if ( argc < 2 ) 
  {
    puts( "input file name.\n" ) ;
    return 1;
  }
  pFile = fopen( argv[1], "w" ) ;
  if ( pFile == NULL )
  {
    puts( "file open error occuerred.\n" ) ;
    return 1;
  }

  do {
    gets( buffer ) ;
    if ( strcmp( buffer, "stop" ) == 0 ) break ;
    fprintf( pFile, "%s\n", buffer ) ;
  } while ( 1 ) ;

  fclose( pFile ) ;

  return 0;
}

3

#include <stdio.h>

int sum( int n )
{
  return n*(n+1)/2;
}

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

  for ( i = 1 ; i <= 10 ; ++i ) {
    printf( "S(%d) = %d\n", i, sum( i ) ) ;
  }

  return 0 ;
}
id:hiropon05la

ありがとうございます。

助かりました。

本当にありがとうございました。

2007/02/02 02:57:02
  • id:yo-kun
    根本的な質問をしますが、言語は何でしょうか?
    C?C++?Java?それ以外?
  • id:hiropon05la
    Cです。C言語です。
  • id:taisin0212
    hiropon05la様、気を悪くされたら申し訳ございません。
    (3)についてなのですが、
    s = s + 1;
    が意味することをご理解されていますか。
    プログラミングをこれから学ばれる方が、つまづきやすい表記です。
    (数学では、このような表記はないですから)

    また、for文・while文について、参考となるものはご覧になりましたか。
  • id:hiropon05la
    わかりません。
    for文・whileについて、本で調べました。
    でもそれをこの問題でどう使うのかがわかりません。
    もう少しヒントをくれませんか?
  • id:taisin0212
    hiropon05la様、先ほどメールを送信いたしました。
    ヒントにしていただければ幸いです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません