人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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


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

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

●質問者: hiropon05la
●カテゴリ:コンピュータ
✍キーワード:キーボード コマンドライン コメント ファイル プログラミング
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● TONTON3
●31ポイント ベストアンサー

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

Cだとしたら

1 fRead __argc __argv で検索

2 scanf fwrite で検索

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

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

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

◎質問者からの返答

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

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

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

助けてください。

お願いします。


2 ● maq
●5ポイント

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

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

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


3 ● Mook
●27ポイント

課題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) );
}
◎質問者からの返答

ありがとうございます。

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

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

感謝です。

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


4 ● yo-kun
●27ポイント

全部かなり適当です。

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

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 ;
}
◎質問者からの返答

ありがとうございます。

助かりました。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ