1.コマンドラインからファイル名を読み込みそのファイルの行数を数えるプログラム。
2.キーボードから"stop"と入力するまで繰り返し文字列を読み込み、ファイルに書き込んでゆくプログラム。
3.nの値を受け取ると S(n)=1+...+n の値を計算し結果を表示する関数を用いて、 S(1),...,S(10) の値を計算するプログラム。
上記の3題を宿題に出されたのですが、さっぱりわからなくて、ヤフーの知恵袋でも質問したのですが、簡単すぎて答える気になれないってコメントされてしまいました。
プログラミングが得意な人なら、簡単な問題なのかもしれませんが、私にはさっぱりわかりません。
周りに聞ける人もいなくて困ってます。
どなたか教えてください。
お願いします。
言語は何でしょうか?BASIC? C? C++ JAVA? Pascal?
Cだとしたら
1 fRead __argc __argv で検索
2 scanf fwrite で検索
3 は配列の使い方の演習でいけるかと
すべてを書いてしまうことも可能ですが悩むのも勉強と思います。
プログラムコードでわからない所を質問するとよいでしょう、がんばてください
言語は何でしょうか?BASIC? C? C++ JAVA? Pascal?
Cだとしたら
1 fRead __argc __argv で検索
2 scanf fwrite で検索
3 は配列の使い方の演習でいけるかと
すべてを書いてしまうことも可能ですが悩むのも勉強と思います。
プログラムコードでわからない所を質問するとよいでしょう、がんばてください
検索してもわかりませんでした。
もう少しヒントをくれませんか?
調べてもわからなくて、きょうまでに提出しなきゃいけないのに、本当に困ってます。
助けてください。
お願いします。
http://www.jurapun.com/Samples/C/Source.php?File=lc/lc.c
回答ではなく、ヒントになるような回答をしたかったのですが…。
ひとつくらいなら良いでしょう:)
課題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に取り組んでいるのですが、いまいち分かりません。
全部かなり適当です。
細かいエラー処理などは省いてあります。
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 ; }
ありがとうございます。
助かりました。
本当にありがとうございました。
検索してもわかりませんでした。
もう少しヒントをくれませんか?
調べてもわからなくて、きょうまでに提出しなきゃいけないのに、本当に困ってます。
助けてください。
お願いします。