C/C++の宿題を片付けます 100at TECH
C/C++の宿題を片付けます 100 - 暇つぶし2ch313:デフォルトの名無しさん
07/11/27 17:59:13
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 
 メイン関数において、キーボードから正の整数の個数(100以内)を入力し、次いで実
際の数値を配列に入力する。そしてメイン関数はサブ関数に、入力した個数と配列を引数とし
て渡す。
 サブ関数は、これらの配列から、まず1番目に大きい数を見つけて、それを別途設けた配列
の先頭の要素に格納し、次に2番目に大きい数を見つけてこれをこの配列の先頭から数えて
2番目の要素に格納し、という処理を最後の数に至るまで繰り返す。これにより新しい配列に
は大きい数から順に並んでいることになるので、これを引数を利用してメイン関数に渡す。(す
なわちサブ関数は引数を3つ持つことになる。1つはデータの個数を示す変数、1つは入力デ
ータを格納する配列、残りの1つはサブ関数で計算した結果を格納する配列である)
 最後にメイン関数はサブ関数で計算された新配列の値を若い方の要素から順に(即ち大き
い数から順に)画面に表示する。またこの数列の中央値を表示する(中央値に小数が含まれ
る場合は、その小数を切り捨てた整数を表示することとする)。


[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio .NET 2003
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 12月3日
[5] その他の制限:
現在、関数・ポインターについて学んでるところです。
よろしくお願いします。         

314:デフォルトの名無し
07/11/27 18:03:09
以前236でプログラムをお願いしたものです。
ポインタではなく配列でお願いしたいのですが、もう一度お願いできないでしょうか。
できればmainもお願いします。

[1] 授業単元: プログラム演習
[2] 問題文:入力された「対象文字列(s)」の中から、「検索文字列(t)」を検索し、
該当した「対象文字列」の添字を戻り値とする関数「search(s,t)」を作成しなさい。
ただし、「対象文字列」が「検索文字列」を含まない場合には「-1」を戻り値とする。

なお、関数「search(s,t)」は別ファイルに分け(main関数とそれ以外の関数)、
分割コンパイルできるように作成しなさい。
このとき、main関数以外の関数宣言が記述されたヘッダファイルを作成し、
main関数のソースファイルにて利用すること。

引数 char s[] 対象文字列
char t[]  検索文字列
  (例) 以下の値で動作した場合は、「3」を返す。
       文字列s = “aababcbaa”
       文字列t = “abc”
入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:11月27日まで
[5] その他の制限: なし


315:デフォルトの名無し
07/11/27 18:04:22
[1] 授業単元: プログラム演習
[2] 問題文:入力された正の2整数の最大公約数と最小公倍数を算出する。                   
・キーボードからの入力が空の場合は処理を終了する。
・キーボードからの最大入力桁数は4バイトとする。
・キーボードからの入力が4バイトを超える場合は処理を終了する。
・キーボードからの入力が正の整数に変換できない場合は処理を終了する
エラーメッセージ
未入力 :入力されていません、桁あふれ:4文字以下で入力してください、数値以外:半角数字以外入力できません、ゼロ入力:0は入力できません
文字列を正数に変換する関数はatoiを使用。
引数 char data[] 文字列
戻り値 : 正数 エラー値 -1 未入力 -2 桁あふれ -3 数値以外-4 ゼロ入力
最大公約数を算出の関数名はgcdでユークリッドの互除法を使用。
引数 int data1 データ1 int data2 データ2
戻り値 : 最大公約数

最小公倍数を算出する関数名はlcm。最小公倍数を算出する際、最大公約数の関数を使用する。
引数 int data1 データ1 int data2 データ2
戻り値 : 最小公倍数
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 11・28まで
[5] その他の制限: なし


316:デフォルトの名無しさん
07/11/27 18:06:06
>>310
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
int i=0,l,c[256]={0};
char buf[256];
double h=0,p;
scanf("%s",buf);
l=strlen(buf);
for(i=0;i<l;i++)
c[buf[i]]++;
for(i=0;i<256;i++)
if(c[i]>0) {
p=(double)c[i]/l;
printf("\"%c\" %lf\n",i,p);
h-=p*log(p);
}
printf("H = %lf\n",h);
return 0;
}

317:デフォルトの名無し
07/11/27 18:14:32
[1] 授業単元: プログラミング
[2] 問題文:
入力された整数0~9のn個の文字列に対応したヒストグラムを出力するプログラムを作成せよ。
例:(n個の整数文字列=0050011050)
数値0が6個、1が2個、5が2個の場合、以下のように出力する。

   <出力例>
     a[0] = 6 ******
     a[1] = 2 **
     a[2] = 0
     a[3] = 0
     a[4] = 0
     a[5] = 5 **
     a[6] = 0
     a[7] = 0
     a[8] = 0
     a[9] = 0
ただしキーボードからの入力は最大128バイトとし、それを超える場合129バイト以降のデータはカウントしない。
入力データは半角数字のみとし、全角数字の入力は考えない。

文字列カウント関数 count
引数 char inputdata[] 入力データ
   int outputdata[] 出力データ

算出結果をヒストグラムで描写する関数名 hist
引数 int outputdata[]
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C言語
[4] 期限: 11月28日まで
[5] その他の制限: なし


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch