C/C++の宿題を片付けます 118代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/11/16(日) 23:57:04【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題を片付けます 117代目
http://pc11.2ch.net/test/read.cgi/tech/1225320579/
0002デフォルトの名無しさん
2008/11/17(月) 00:00:03[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8043.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2008年11月18日10:40まで
よろしくお願いします。
0003デフォルトの名無しさん
2008/11/17(月) 00:41:02void mainでも構わんよ。あとはコンパイラがどう解釈するかで違ってくるし。
内面的には、int mainとして解釈して、これは最適化とはいえないが
自動的に処理されているものもあるし。
0004デフォルトの名無しさん
2008/11/17(月) 00:46:560005デフォルトの名無しさん
2008/11/17(月) 02:35:48#include <iostream>
#define foe if(false); else for
using namespace std;
int main()
{
cout << "何人のテストの点数を入力しますか?" << endl;
int n;
cin >> n;
int *score = new int[n];
cout << "人数分の点数を入力してください。" << endl;
for(int i = 0; i < n; i++)
cin >> score[i];
double sum = 0;
for(int i = 0; i < n; i++)
sum += score[i];
cout << "平均点は" << sum/n << "です。" << endl;
}
0006デフォルトの名無しさん
2008/11/17(月) 02:47:03Kadai2.cpp
#include <iostream>
using namespace std;
#include "shell.h"
int main()
{
double r;
cout << "半径を入力してください。: ";
cin >> r;
cout << "半径は" << r << "です。" <<endl;
cout << "体積は" << volume(r) - volume(r - 1)<< "です。" <<endl;
cout << "円周率を" << PI << "で計算しました。" <<endl;
}
0007デフォルトの名無しさん
2008/11/17(月) 02:47:57shell.cpp
double volume(double r)
{
return r*r*r*4.0/3.0*PI;
}
shell.h
0008デフォルトの名無しさん
2008/11/17(月) 02:48:39#define PI 3.1416
double volume(double r);
0009デフォルトの名無しさん
2008/11/17(月) 13:14:25[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8045.txt
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 11月19日(水)まで
[5] その他の制限:特になし
よろしくお願いします
0010デフォルトの名無しさん
2008/11/17(月) 13:35:14課題1-1, 1-2 は前スレ>>885
同じ学校かww
0011デフォルトの名無しさん
2008/11/17(月) 14:24:09[2] 問題文(含コード&リンク):
二つの正の整数値width(幅),height(高さ)を読み込む。
長方形を描くときに,ふちだけ*文字を出力するようにする。長方形の中央部は,スペース
文字を使ってあける。もしwidth が5,height が4 であれば,次のように出力される。
*****
* *
* *
*****
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ:VC 6.0
[3.3] 言語:C
よろしくお願いします。
0012デフォルトの名無しさん
2008/11/17(月) 14:24:58課題2 リングバッファ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8046.txt
0013デフォルトの名無しさん
2008/11/17(月) 14:40:43#include <stdio.h>
int main()
{
int width, height, i, j;
printf("幅?:");
scanf("%d", &width);
printf("高さ?:");
scanf("%d", &height);
for(i = 0; i < height; i++){
for(j = 0; j < width; j++)
if(i == 0 || i == height - 1 || j == 0 || j == width - 1)
printf("*");
else
printf(" ");
printf("\n");
}
return 0;
}
0014デフォルトの名無しさん
2008/11/17(月) 15:17:16[2] 問題文:
姓,名,年齢,郵便番号,電話番号の各データをメンバとする構造体配列を下記
のように宣言し,その構造体配列にキーボードからデータを逐次入力して,最大100 名
のデータを格納できるようにしなさい。但し,入力の終了は,姓入力の際にnull と入力
することによって判定しなさい。また,入力が終了した時点で,格納された複数名のデ
ータをすべて出力するようにしなさい。
#define MAXREC 100
struct namelist {
char last_name[21], first_name[21];
int age;
char zip[9], tel[13];
} meibo[MAXREC];
▼出力例
Last name(終了はnull 入力)> Tanaka
First name > Tarou
Age > 49
Zip code > 123-4567
Telephone > 0120-1234567
Last name(終了はnull 入力)> null
Name : Tanaka Tarou
Age : 22
Zip code : 123-4567
Telephone: 8899-1234567
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2008年11月18日 24:00
C言語の、基本的な関数のみでお願いします。
0015りょyu
2008/11/17(月) 15:25:48研修生です。eclipse,Tomcatを使用しています。
自分は編集ページ担当で、
自分のぺージでは、編集元の情報を表示させてから内容を書き換えて、
データベースに更新する部分をやっています。
上に書いたソースは社員情報ページのボタンで、
社員Id(employeeID)を送ってるらしいんですけど、
これを自分の担当ページでこの社員Idをもとに情報をデータベースから取り出し
担当画面に表示させたいのですが分かりません。
質問が大雑把ですが、大まかにどういう流れで作業を行えばいいか教えてください。
0016デフォルトの名無しさん
2008/11/17(月) 16:06:54#include <stdio.h>
#include <string.h>
#define MAXREC 100
int main(int argc, char *argv[])
{
struct namelist {
char last_name[21], first_name[21];
int age;
char zip[9], tel[13];
} meibo[MAXREC];
int i, count;
for (i = 0; i < MAXREC; i++) {
printf("Last name > "); scanf("%s", meibo[i].last_name);
if (strcmp(meibo[i].last_name, "null") == 0) {
break;
}
printf("First name > (終了は null 入力)"); scanf("%s", meibo[i].first_name);
printf("Age > "); scanf("%d", &meibo[i].age);
printf("Zip code > "); scanf("%s", meibo[i].zip);
printf("Telephone > "); scanf("%s", meibo[i].tel);
}
count = i;
for (i = 0; i < count; i++) {
printf("Name: %s %s\n", meibo[i].last_name, meibo[i].first_name);
printf("Age: %d\n", meibo[i].age);
printf("Zip code: %s\n", meibo[i].zip);
printf("Telephone: %s\n", meibo[i].tel);
}
return 0;
}
001716
2008/11/17(月) 16:11:26- printf("Last name > "); scanf("%s", meibo[i].last_name);
+ printf("Last name > (終了は null 入力)"); scanf("%s", meibo[i].last_name);
- printf("First name > (終了は null 入力)"); scanf("%s", meibo[i].first_name);
+ printf("First name > "); scanf("%s", meibo[i].first_name);
0018デフォルトの名無しさん
2008/11/17(月) 16:20:15> 質問が大雑把ですが、大まかにどういう流れで作業を行えばいいか教えてください。
大まかにいうと、まずスレ違いだから正しいスレを探す
0019デフォルトの名無しさん
2008/11/17(月) 18:28:39[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8047.c
strcpy(), strcat(), strcmp(), strlen()を使わずに、↑のリンクにあるプログラムと
同じ処理をするプログラムを書け。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年11月18日まで
[5] その他の制限:
習った範囲はCの基礎から制御文、データ型、変数、配列と文字列くらいです。
よろしくお願いします。
0020デフォルトの名無しさん
2008/11/17(月) 19:12:09http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8048.txt
0021デフォルトの名無しさん
2008/11/17(月) 19:14:54[2] 問題文(含コード&リンク):
二階常微分方程式 y''=xy'+y を初期条件(x0,y0)=(0,1), y'=1のもとでルンゲクッタ法によりx=1.0まで10等分して求めよ。
(上の式を次のように1階連立常微分方程式に変換して求めればよい。y1'=y2, y2'=xy2+y1)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年11月19日まで
[5] その他の制限: double function (double , double*, int)
double rungekutta(double , double)
double function (double x , double *yp , int j )
double rungekutta(double x , double *yp ,double h)
を利用するとよい。 と言っていました。
よろしくお願いします^^
0022デフォルトの名無しさん
2008/11/17(月) 19:34:14[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
0度から360度までのSin(x)の値を文字コード*を使ってグラフを表示するプログラムをC言語で作成せよ。
実行結果の例をアップローダーに貼り付けました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8012.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005
[3.3] 言語: C
[4] 期限: 2008年11月21日
[5] その他の制限: ファイルの入出力まで習いました。
よろしくお願いします。
0024デフォルトの名無しさん
2008/11/17(月) 19:58:16配列は習ったの?
0025デフォルトの名無しさん
2008/11/17(月) 20:29:09ありがとうございました!!
0026デフォルトの名無しさん
2008/11/17(月) 20:46:22ってどうする?
0027 ◆vfu2FjSsg6
2008/11/17(月) 20:49:06[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8049.txt
↑のリンクにあるリストのNoの数字を入力すると、その行の各値を出力する
プログラムの作成。
例:
No-->31
a=0
b=48
c=35.42
d=-74
e=55
f=24.37
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語: C
[4] 期限: 2008年11月22日まで
よろしくお願いします。
0028デフォルトの名無しさん
2008/11/17(月) 20:49:14[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
6 個の要素をもつ整数配列data を初期化して(例えばint data[6]={14,9,7,12,8,10};)
宣言する。これはサイコロを何回か振ったとき,「1が出た回数」,「2が出た回数」,…
「6が出た回数」だとする。それぞれの目が出た回数を,for 文を使っ
て,*で表しなさい。上記の配列の初期値であれば,次のように出力されればよい。
1 **************
2 *********
3 *******
4 ************
5 ********
6 **********
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語C
[4] 期限:11/14
よろしくお願いします。
0029デフォルトの名無しさん
2008/11/17(月) 21:10:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8050.txt
データファイルはコマンドライン引数であたえる仕様
0030#
2008/11/17(月) 21:39:44早い回答ありがとうございます!!
助かりました。
0031デフォルトの名無しさん
2008/11/17(月) 21:46:56int main(void)
{
int i, j;
int data[6] = {14, 9, 7, 12, 8, 10};
for (j = 0; j < 6; j++) {
printf("%d ", j + 1);
for (i = 0; i < data[j]; i++) {
printf("*");
}
printf("\n");
}
return 0;
}
0032デフォルトの名無しさん
2008/11/17(月) 21:47:490033デフォルトの名無しさん
2008/11/17(月) 21:51:43迅速な回答ありがとうございます!
助かりました!
0034デフォルトの名無しさん
2008/11/17(月) 22:20:28[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8051.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年11月20日まで
[5] その他の制限:
出来る部分まではやってみたのですがどうしてもうまくいきません。
お願いします。
0035デフォルトの名無しさん
2008/11/17(月) 23:50:12{
}
0036デフォルトの名無しさん
2008/11/18(火) 00:16:05quineとかでぐぐれば色々でてくるとおもうが
文字列出力にprintfしかつかえないっつうんならこんなんか
処理系によってはうまくいかんかもしれんが
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8052.txt
色々省いてもっと短いのもあるけど
0037デフォルトの名無しさん
2008/11/18(火) 00:43:54[2] 問題文(含コード&リンク): �@)円周率πの近似式
4(-1)^n/(2n+1){(1/2)^(2n+1)+(1/3)^(2n+1)}
(nは0〜100) を用いて小数第8桁まで正しい値(3.14159265)を
出力するプログラムを作れ。
�A)さらにその出力された数値γに対し次の不当式を満たす最小の自然数Nを
求めるプログラムを作れ。
#π^2/6-1/k^2#<γ
(##は絶対値記号、kは1〜Nまで)
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11月21日17時
[5] その他の制限:for文、break文あたりまでやったのですがいまいち使い方が理解できません・・・
配列と数学関数は使用禁止です。お手数ですがよろしくお願いします。
0038デフォルトの名無しさん
2008/11/18(火) 01:36:35#include <stdio.h>
int main (void)
{
int i;
double pi, sum, gam, a, b, c;
a = 1.0; b = 0.5; c = 1.0/3.0;
sum = b + c;
for(i=1; i<=100; i++){
pi = 4.0 * (sum += (a*=-1) / (2*i + 1) * ((b*=0.5*0.5) + (c*=1.0/9.0)));
}
printf("π≒%.8f\n", pi);
printf("γ:");
scanf("%lf", &gam);
i = 1; sum = 0.0;
while(1){
a = pi*pi/6 - (sum += (1.0/(double)i)*(1.0/(double)i));
if(a < 0)
a *= -1.0;
if(a < gam)
break;
i++;
}
printf("N = %d\n", i);
return 0;
}
[2] 問題文(含コード&リンク):
「2進数⇔10進数」変換プログラムを作りなさい。
また「16進数⇔10進数」変換ができるようにプログラムを拡張しなさい。
さらに「x進数⇔10進数」変換ができるようにプログラムを拡張しなさい。
Ex:10進モード(decimal):54(10)→110110(2)
[3] 環境
OS:WindowsXP
コンパイラ:Visual C
言語:C
[4] 期限: 今月30日まで
[5] その他の制限: whileを習い終わって、今は関数と引数について
0041デフォルトの名無しさん
2008/11/18(火) 06:29:30どちらか一方を入力して、例えば2進数を10進数に、16進数を10進数と、n進数を
10進数にするだけでなく、10進数を任意のn進数にもするってこと?
出来れば、もう少し具体的な実行例を書いてもらいたい。
・10進数→n進数,2進数,16進数
・n進数,2進数,16進数→10進数
の両方を実行できるプログラムということです。
「拡張しなさい」と書かれているので、
「10進数⇔2進数」かつ「10進数⇔16進数」を実行できるプログラムのことだと私は考えてます。
なので、はじめに例えば「x進数のnをy進数に変換する」といったテキストを表示させ、
「x= 」「n= 」「y= 」と順に入力させて、変換させたのを表示するといった感じに考えています。
よろしくお願いします。
0043デフォルトの名無しさん
2008/11/18(火) 07:42:5737進数以上可だとだと数字セットをどうするかの問題があるぞ
0044デフォルトの名無しさん
2008/11/18(火) 08:20:49[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8053.txt
[3] 環境
[3.1] OS: Unix(Soralis)
[3.2] gcc 3.4.3
[3.3] 言語:C
[4] 期限: 11月21日12:00
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
よろしくお願いします
004544
2008/11/18(火) 08:27:10課題1のみでお願いします
なるほど、確かにそうですね。
問題文が不十分なのは恐縮ですが、zまでの36進数でお願いします。
0047デフォルトの名無しさん
2008/11/18(火) 10:54:52[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 直角三角形の直角をはさむ辺の長さをx とy とすると,斜辺z の長さはx2 + y2
という計算式で求めることができる。(ピタゴラスの定理,三平方の定理,などと呼ばれる)
Ι\z
yΙ_\
x
実数x とy をキーボードから読み込み,z を求めるプログラムを作成しなさい。
その際,ファイルmath.h にある,次のライブラリ関数を利用してプログラムを作成すること。
●平方根(ルート)を求める関数 double sqrt( double x)
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ:VC 6.0等
[3.3] 言語 :C
お願いします。
0048デフォルトの名無しさん
2008/11/18(火) 11:03:40#include <math.h>
int main(void) {
double x,y,z;l
scanf("%lf %lf",x,y);
z=sqrt(x*x+y*y);
printf("%lf",z);
return 0;
}
0049デフォルトの名無しさん
2008/11/18(火) 11:05:470050デフォルトの名無しさん
2008/11/18(火) 11:10:21kill( pid, SIGKILL);
0051デフォルトの名無しさん
2008/11/18(火) 11:16:130052デフォルトの名無しさん
2008/11/18(火) 11:33:40kill はシステムコールだから直接呼べるよ
Linux だと以下をインクルードせよとある
man -s 2 kill で調べてごらん
#include <sys/types.h>
#include <signal.h>
0053デフォルトの名無しさん
2008/11/18(火) 11:47:290054デフォルトの名無しさん
2008/11/18(火) 11:48:36親切な回答ありがとうございました!
0055デフォルトの名無しさん
2008/11/18(火) 11:56:24環境を書けよ
0056デフォルトの名無しさん
2008/11/18(火) 13:43:40[1] 授業単元:アルゴリズム(ダミーセル)
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8054.c
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 2008年11月25日13:00まで
[5] その他の制限:なし
0057デフォルトの名無しさん
2008/11/18(火) 13:44:45書き忘れてしまいました
宜しくお願いします
0058デフォルトの名無しさん
2008/11/18(火) 16:58:42[2] 問題文(含コード&リンク) �@http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8056.txt
�Ahttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8055.txt
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: V stadio
[3.3] 言語: C
[4] 期限:2008 11月20日まで
�@�Aそれぞれ穴埋めに違いですがお願いします
0059デフォルトの名無しさん
2008/11/18(火) 17:18:100060デフォルトの名無しさん
2008/11/18(火) 17:26:580061デフォルトの名無しさん
2008/11/18(火) 18:21:42[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8057.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8058.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8059.txt
[3] 環境
[3.1] OS: Windows
[3.2] VC 6.0
[3.3] 言語: C++
[4] 期限: 2008/11/19 17:00
[5] その他の制限: プログラミング�Tの範囲でなるべく単純なプログラムでおねがいします。
0063デフォルトの名無しさん
2008/11/18(火) 18:47:08プログラミングIの範囲って、同じ授業受けてないとわかるわけないだろw
006461
2008/11/18(火) 18:55:01すいません。配列/ポインタまで習いました。
0065デフォルトの名無しさん
2008/11/18(火) 19:15:56習ったのは次のことですので、これらのみを用いて作っていただきたいです。
・printf ・scanf ・四則演算 ・配列
・if ・while ・for ・関数と引数(習い始めたばかり)
よろしくお願いします。
0067デフォルトの名無しさん
2008/11/18(火) 20:05:03心配しなくても、バレるよ
0068デフォルトの名無しさん
2008/11/18(火) 20:34:41n進数を指定して、入力したn進数を10進数に変換するのみ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8060.c
0069デフォルトの名無しさん
2008/11/18(火) 20:35:52http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8061.c
0071デフォルトの名無しさん
2008/11/18(火) 21:31:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8063.c
10進数を基数を指定してn進数に変換、2^31以上、不の値は考慮せず
0072デフォルトの名無しさん
2008/11/18(火) 21:49:20[2] 問題文:半角文字でできた文字列をキーボードから読み込んで、
逆転させた文字列をつなげて回文を作り、表示させなさい。
例:Personを入力してPersonnosrePを返す。
[3] 環境
[3.1] WindowsXP
[3.2] VisualC++
[3.3] 言語:C++
[4] 期限: 明日まで
[5] 条件は文字の配列を利用することです。(サイズは100)
文字列用のライブラリ関数はstrcpy、strlen、strcat、strcmp、strstrは習いました。
あとは条件分岐とループぐらいしかやってないと思います。
1文字目に3文字目をコピーは m[0] = m[2]のように行うらしいですが…
期限ぎりぎりまで粘りましたが、どうしても分かりません。よろしくお願いします。
0073デフォルトの名無しさん
2008/11/18(火) 21:59:23[2] 問題文(含コード&リンク):
“Izumi”,”Kanto”,”Kudo”,”Sato”,”Sugawara”,”Matsuda”,”Wada”の
7個の文字列の長さ(文字数)をカウントして,文字列とともに表示せよ.ただし,
ポインタを使用して処理すること.
Char *name[] = { “Izumi”, ”Kanto”, ”Kudo”, ”Sato”, ”Sugawara”,
”Matsuda”, ”Wada”, NULL};
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年11月20日10:30まで
[5] その他の制限:
0074デフォルトの名無しさん
2008/11/18(火) 22:03:52[2] 問題文(含コード&リンク):
#include<stdio.h>
int main(void)
{
int a;
int i;
int n;
printf("ニュウリョク 初期値");
scanf("%d",&a);
printf("ニュウリョク 個数");
scanf("%d",&n);
/*a=2;*/
for (i=1; i<=n; i++)
{a=2*a;
printf("%d ",a);
}
}
/*
以上が
漸化式an+1=2anの数列の初期値aの物をn個表示させる式です。
これを
{an+1=2an-bn
{bn+1=2bn-an
の式にした物を表示させるプログラムをお願いします。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:
[5] その他の制限:
ありがとうございました。
しかしまだ「#include <stdio.h>」で始まるものしか習っていなく、
#defineや#include <stdlib.h>などは使えません。
これらを使わずに作っていただけませんか?
0076デフォルトの名無しさん
2008/11/18(火) 22:46:58bnも自分で初項を決める?
0077デフォルトの名無しさん
2008/11/18(火) 22:49:40>>75文字列を入力する際に、scanfを使うことに?
バッファオーバーランのこともあるが、一定の範囲内、条件下で
良ければ、簡単に作り直せるが。
0078デフォルトの名無しさん
2008/11/18(火) 22:56:26bnも初項を決めるものでお願いします。
0079デフォルトの名無しさん
2008/11/18(火) 23:08:58なるほど。そういう返し方があったか
0080デフォルトの名無しさん
2008/11/18(火) 23:15:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8064.c
基数を指定したn進数を10進数に変換
0081デフォルトの名無しさん
2008/11/18(火) 23:23:58http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8066.c
10進数をn進数に変換
0082デフォルトの名無しさん
2008/11/18(火) 23:36:22[2] 問題文(含コード&リンク):
指定した回数(整数)の加算を行い、平均(float)を
返す関数を作成する。
[3] 環境
[3.1]OS:WindowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4] 期限:2008年11月20日18:00
[5] その他の制限:
よろしくお願いします
0083デフォルトの名無しさん
2008/11/19(水) 00:22:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8067.c
008437
2008/11/19(水) 00:38:28ありがとうございます!
0085デフォルトの名無しさん
2008/11/19(水) 00:52:14あり?なんか、またURLが間違ってた・・・すまそ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8065.c
0086デフォルトの名無しさん
2008/11/19(水) 00:55:09#include <stdio.h>
int main()
{
char *name[] = {"Izumi","Kanto","Kudo","Sato","Sugawara","Matsuda","Wada",NULL};
char **p,*q;
for(p = name; *p; p++){
for(q = *p; *q; q++);
printf("%s(%d)\n", *p, (int)(q-*p));
}
return 0;
}
0087デフォルトの名無しさん
2008/11/19(水) 01:05:24#include <stdio.h>
int main()
{
char s[100] = "Person";
int i,j;
for(i=0; s[i]; i++);
for(j = i - 1; j >= 0; j--, i++) s[i] = s[j];
puts(s);
return 0;
}
0088デフォルトの名無しさん
2008/11/19(水) 01:08:37ま、いっか。
0089デフォルトの名無しさん
2008/11/19(水) 01:17:53私は年月日を与えて、何曜日かを求めるプログラムを2通り作りました。
1つはツェラーの公式をつかったもの。
もう1つは1753年1月1日が月曜日だということから、その日からの何日経過したかということから求めるもの。
この2つが正しいことを示すには、適当に年月日を与えて等しくなるということを言うしかないのでしょうか。
それだと完璧には示せないような気がします。
どなたかお願いします。
0090デフォルトの名無しさん
2008/11/19(水) 01:22:49曜日一覧は Excel使えばすぐ作れる。
0091デフォルトの名無しさん
2008/11/19(水) 01:29:12もっと簡単にできることはないでしょうか。
0092デフォルトの名無しさん
2008/11/19(水) 01:40:441970年1月1日から、経過した日数をぉ〜、シリアル値として
整数で管理している仕組みがあーりまーす。書式設定で、日数を
年月日表示にしてくれまーす。
よって、それ以前の日付に関しては、管理してくーれませーん
余談ですがー、現在使われているグレゴチャン暦はー、
1582年10月15日を金曜日として、使われ始めますたー
導入した日は、各国で違いまーす
0093デフォルトの名無しさん
2008/11/19(水) 01:43:03C言語のあるライブラリのことでしたー。エクセルは1900年1月1日でーす。
0094デフォルトの名無しさん
2008/11/19(水) 01:45:18ありがとうございます。
大変助かりました。
0095デフォルトの名無しさん
2008/11/19(水) 01:55:09/* 問1 */
#include <stdio.h>
#include <string.h>
int main()
{
char buf[1024], *p;
printf("文字列を入力してください。 ");
fgets(buf, sizeof(buf), stdin);
printf("反転文字列は\"");
p = &buf[strlen(buf) - 2];
while(buf <= p) putchar(*p--);
puts("\"です。");
return 0;
}
/* 問2 */
#include <stdio.h>
#include <ctype.h>
int main(){
char buf[1000], *p;
int cnt['Z'-'A'+1] = {0}, i;
printf("文字列を入力してください。 ");
fgets(buf, sizeof(buf), stdin);
for(p = buf; *p; p++) if(isalpha(*p)) cnt[toupper(*p) - 'A']++;
puts("アルファベットの数");
for(i=0; i<sizeof(cnt)/sizeof(cnt[0]); i++) if(cnt[i] > 0) printf("%c or %c --> %d\n", i + 'A', i + 'a', cnt[i]);
return 0;
}
0096デフォルトの名無しさん
2008/11/19(水) 01:56:03/* 問3 */
#include <stdio.h>
#include <string.h>
int main(){
char buf[10000], c, *p;
int pos[10000];
int i = 0;
printf("文字列を入力してください: ");
fgets(buf, sizeof(buf), stdin);
buf[strlen(buf) - 1] = '\0';
printf("検索文字を入力してください: ");
c = getchar();
for(p = buf; *p; p++) if(*p == c) pos[i++] = (int)(p - buf) + 1;
if(i==0){
puts("\nそんな文字は入っていない!");
}else{
int j;
printf("文字列\"%s\"に\"%c\"は\n", buf, c);
for(j = 0; j < i; j++)printf("%d番目\n", pos[j]);
puts("にあります。");
}
return 0;
}
0097デフォルトの名無しさん
2008/11/19(水) 01:56:490098デフォルトの名無しさん
2008/11/19(水) 01:58:49[2] 問題文(含コード&リンク):
フィボナッチ数列 F[n+2] = F[n+1] + F[n] (n≧0 F[0]=0 F[1]=1)
の n = 1 から 20 までの和を計算し、結果を出力するプログラムを作ってください。
[3] 環境:
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc 最新のバージョン
[3.3] 言語: C
[4] 期限:明日
[5] その他の制限:配列で解く。和の計算はfor文を使う
#include <stdio.h>
main(){
int i, fibo [20], sum = 0;
フィボナッチ数列を配列に入れる;
和を計算する;
printfで和を出力する;
}
↑が当てはめるテンプレです。よろしくお願いします
0099デフォルトの名無しさん
2008/11/19(水) 02:08:31#include <stdio.h>
int main(void) {
int i, fibo [20], sum = 0;
fibo[0]=1; fibo[1]=1;
for(i=2; i<20; i++) fibo[i]=fibo[i-2]+fibo[i-1];
for(i=0; i<20; i++) sum+=fibo[i];
printf("sum : %d\n",sum);
return 0;
}
0100デフォルトの名無しさん
2008/11/19(水) 02:09:440101デフォルトの名無しさん
2008/11/19(水) 02:11:02main(){
int i, fibo[20], sum = 0;
fibo[0] = 1;fibo[1] = 1;
for(i=2; i<20; i++) fibo[i] = fibo[i-1] + fibo[i-2];
for(i=0; i<20; i++) sum += fibo[i];
printf("%d\n", sum);
}
0102デフォルトの名無しさん
2008/11/19(水) 02:23:53なるほど・・・
それだとF[0]のからF[20]まで足してるんじゃ?
初心者ながら疑問に思いました
できたら回答をお願いします
0103デフォルトの名無しさん
2008/11/19(水) 02:31:190 〜 19 を使って、 n=1〜20を格納している。
つまり>>101 では、 n=1 の値を fib[0] に、 n=2 の値をfib[1]に入れている。
0104デフォルトの名無しさん
2008/11/19(水) 02:35:24sum+=fibo[i];
printf("fibo[%d] : %d / sum : %d\n",i,fibo[i],sum);
}
内面的な部分を見たいなら、こんな感じで実行結果を見てみては?
0105デフォルトの名無しさん
2008/11/19(水) 02:47:20てことは>>101のF[1]=1
ってのは自分で数列のF[2]の値だからそれは自分で計算したってことでいいんですよね?
たしかに教授はサイズは20以上でもいいとか言ってたけど・・・そのせいかな
0107デフォルトの名無しさん
2008/11/19(水) 02:51:35添え字と、先頭から何番目かを求めるのに混乱していない?
f[0]は1番目、f[1]は2番目、f[19]は20番目。0オリジンって言うんだが
そういうのに慣れるべし。
宣言したとき、f[20]ではf[19]まで。要素の数は20個だけど
20番目はf[19]で。くどいがそういうこと。
0108デフォルトの名無しさん
2008/11/19(水) 02:55:15main(){
int i, fibo[20], sum = 0;
fibo[0] = 1;fibo[1] = 1; ←ここ
for(i=2; i<20; i++) fibo[i] = fibo[i-1] + fibo[i-2];
for(i=0; i<20; i++) sum += fibo[i];
printf("%d\n", sum);
}
気になったのはこの fibo[1] = 1 は自分で計算したのかなと思ったんです
うっす。教科書読んで勉強します
0109デフォルトの名無しさん
2008/11/19(水) 02:56:37>てことは>>101のF[1]=1
>ってのは自分で数列のF[2]の値だからそれは自分で計算したってことでいいんですよね?
そゆこと。
0110デフォルトの名無しさん
2008/11/19(水) 02:57:53了解です
長々と迷惑をかけ申し訳ないです
どうもありがとうございました
0111デフォルトの名無しさん
2008/11/19(水) 02:59:20> 自分で計算
というか、初期値を代入してあるのだが、まぁそういうことだ。
0112デフォルトの名無しさん
2008/11/19(水) 03:03:46> (n≧0 F[0]=0 F[1]=1)
> n = 1 から 20 までの和を計算し
この条件があるわけだし
まぁ、そういことか・・・答えている自分も見落としてたが
結局n=0は0だし、かといってそのnが添え字のことを意味していたら
F[20]ではF[19]までだし・・・まぁ、解決したから良いか。
0113デフォルトの名無しさん
2008/11/19(水) 03:04:30int i,a=0,b=1,s=0;
for(i=0;i++<20;b=a-b,s+=a)a+=b;
printf("%d\n",s);
}
フィボナッチ数列の計算に配列は必要ないんだぜ。
0114113
2008/11/19(水) 03:06:180115デフォルトの名無しさん
2008/11/19(水) 03:06:33int i, fibo[21], sum = 0;
fibo[0] = 0; fibo[1] = 1;
for(i=2; i<=20; i++) fibo[i] = fibo[i-1] + fibo[i-2];
for(i=1; i<=20; i++) sum += fibo[i];
printf("%d\n", sum);
0116デフォルトの名無しさん
2008/11/19(水) 03:08:21なるほど・・・・教授め20なんて書きやがって。
21で提出してやります。ありがとうございました
0117デフォルトの名無しさん
2008/11/19(水) 03:09:27ってか、最初の0は抜きに、1,1,2から始まる形で20項目までなら、
上にあるコードの結果の合計に加え、もう1項分先の値が加えられるが・・・
0118デフォルトの名無しさん
2008/11/19(水) 03:12:22この条件から、n=0 は 0 でしょ。
で、F[] と fibo[] を一致させろとは書いてない。
適当に出題しただけかもしれないけど。
0119デフォルトの名無しさん
2008/11/19(水) 03:14:04最後あたりに
「やっぱF[30]あたりでもいいよ」
とか適当なこと言ってたなぁ・・・。
0120デフォルトの名無しさん
2008/11/19(水) 03:25:5420厳守と思わせないフリを入れてるところとか、21と言わず、30くらいでもいいよというところとか。
何も言わずに20としか書いてなかったらそれを変えることが許されないように思うからな。
0121デフォルトの名無しさん
2008/11/19(水) 03:31:28fibo[20]なら、それに従え、以上w
0122デフォルトの名無しさん
2008/11/19(水) 03:34:04もう三時www寝なきゃww
ありでした
0123デフォルトの名無しさん
2008/11/19(水) 03:49:250124デフォルトの名無しさん
2008/11/19(水) 04:07:54[2] 文字列を読み込み、その長さを表示するプログラムをかけ
ただしstrlen関数は使わない
[4] 期限: 明日の夜までに
[5] 文字列は習ったばかり、繰り返し、条件などはならっています。
fgets関数を使うらしいのですが、いまいち意味がわかりません。
0125デフォルトの名無しさん
2008/11/19(水) 04:19:04#include <stdio.h>
#define MAX 1024
int main(void)
{
char str[MAX];
int cnt;
printf("Input > ");
fgets(str,MAX,stdin);
for(cnt=0; cnt<MAX; cnt++) if(str[cnt]=='\n') break;
printf("%d文字\n",cnt);
return 0;
}
0126デフォルトの名無しさん
2008/11/19(水) 04:25:09ただ#define はわかりません。
あと書き忘れていましたが
100文字以内と仮定していいらしいので
fgets(s,100,stdin);となると思います。
0127デフォルトの名無しさん
2008/11/19(水) 04:26:31んじゃ、MAXを消して、替わりにMAXを100に置き換えて終了。
0128デフォルトの名無しさん
2008/11/19(水) 04:33:01main(){
char s[100];
int cnt /*文字数かつ制御変数*/
printf("input>");
fgets(s,100,stdin);
for(cnt=0;cnt<100;cnt++){
if(s[cnt]=='\n') break(このbreak 終わりという意味だと思うのですが
まだならっていません。)
printf("%d文字",cnt);
}
breakの変わりにwhileを使うのでしょうか?
0129デフォルトの名無しさん
2008/11/19(水) 04:35:16#include <stdio.h>
main(void) {
char str[101];
int cnt;
printf("Input > ");
fgets(str,101,stdin);
for(cnt=0; cnt<101 && str[cnt]!='\n'; cnt++) ;
printf("%d文字\n",cnt);
}
0130デフォルトの名無しさん
2008/11/19(水) 04:39:12本当にすいませんでした。
自分の頭の悪さにうんざりします。
ありがとうございました。
ありがとうございました。
しかし「const」「char」というのもまだ習っていません。
もう1度上記の2つを使わずに作っていただけませんか?
お願いします。
0132デフォルトの名無しさん
2008/11/19(水) 05:13:27constは外しても良いけど、char無しで
どうやって英数字が含まれる数値を表せと・・・
わざわざ、ifはちょっと効率が悪いんで、
スイッチを使って A なら 10、Bなら11とか・・・?
ASCIIコードを使うのもありだが・・・
0133デフォルトの名無しさん
2008/11/19(水) 05:23:12http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8069.c
0134デフォルトの名無しさん
2008/11/19(水) 07:30:13後になって気づいたけど、fgetsの性質上、例えばs[10]とした場合
9文字でも最後の1文字に\0(空文字)が入り、改行コードが
s[10]の中に入らないので、カウントは最大の10文字を数えてしまう。
10文字以上入力しても、配列に入るのは9文字+空文字。
10文字以上入力しても、仕様からして正しくカウントしないが。
長くなったが、とりあえず、まだ見てたらfor文の条件を
for(cnt=0; cnt<10 && str[cnt]!='\n' && str[cnt]!='\0'; cnt++) ;
で。
0135デフォルトの名無しさん
2008/11/19(水) 07:40:010136デフォルトの名無しさん
2008/11/19(水) 08:27:15[2] 問題文(含コード&リンク): 2個の多項式を入力してその和を求め次数の大きい順に出力する
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual stadio2008
[3.3] 言語: C
[4] 期限:2008年11月26日13:00まで
0137デフォルトの名無しさん
2008/11/19(水) 08:27:49[2] 問題文(含コード&リンク): 2個の多項式を入力してその和を求め次数の大きい順に出力する
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual stadio2008
[3.3] 言語: C
[4] 期限:2008年11月26日13:00まで
0138デフォルトの名無しさん
2008/11/19(水) 08:30:24[2] 問題文(含コード&リンク):二個の多項式を入力してその和を求め、次数の大きい順に出力する
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual stadio2008
[3.3] 言語: C
[4] 期限: 2008年 11月27日13:00まで
0139デフォルトの名無しさん
2008/11/19(水) 08:36:15>>138
ミスです^^;
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8070.txt
↑は前スレで回答してもらったものですがこれを問題文のように変える問です
お願いします
014072
2008/11/19(水) 10:48:45忙しい中どうもありがとうございます。
scanfでキーボードから文字列を読み込んで、putsを使わず
途中経過を表示させずに結果だけ表示させられませんかね?
たとえば「Person」と打ち込んで「PersonnosreP」とだけ表示させるプログラムが作りたいのですが。
#include<string.h>は使えます。補助する関数?は使っても使わなくてもいいです。
ご迷惑でなければもう一度お願いできないでしょうか。
0141デフォルトの名無しさん
2008/11/19(水) 10:53:280142デフォルトの名無しさん
2008/11/19(水) 10:58:54よろしかったでしょうか?
0143デフォルトの名無しさん
2008/11/19(水) 11:05:11後世に残る名作に仕上げてくれ
0144デフォルトの名無しさん
2008/11/19(水) 11:09:19[問題]
"Izumi","Kanto","Kudo","Sato","Sugawara","Matsuda","Wada"という7つの文字列の長さをカウントし、文字列とともに表示せよ。
[プログラム]
#include<stdio.h>
int main(){
char *name[] = {"Izumi", "Kanto", "Kudo", "Sato", "Sugawara", "Matsuda", "Wada", NULL};
int namelen[7] = {0, 0, 0, 0, 0, 0, 0};
int i = 0, j = 0;
while(*(name + i)){
while(*(*(name + i) + j) != '\0'){
*(namelen + i) += 1;
j++;
}
i++;
}
for(i = 0; i < 7; i++){
printf("文字列「%s」は%d文字です。\n", *(name + i), *(namelen + i));
}
return 0;
}
「楽勝♪」と思ったのですが、文字列の長さがどうも誤って表示されます。
この方向でよいと思うのですが…。
0145デフォルトの名無しさん
2008/11/19(水) 11:17:340146デフォルトの名無しさん
2008/11/19(水) 11:47:330147help me
2008/11/19(水) 18:06:03[2]問題1 キーボードから数値を何回も読み込み、常に過去五回分の数値の平均値と
合計値を表示し続け、負の実数を入力すると停止するプログラムを作成せよ。データの型は実数とする。
(なんかはじめの六回目の入力までは変な値が出力されてもいいらしいです。)
問題2 main()関数で使用しているローカル変数の値を、ユーザー定義関数内で書き換えるプログラムを、
ポインタを使用して作成せよ。printf等で出力すること。
[3] 環境
[3.1] OS Linux
[3.3] 言語:C
[4] 期限: ([11月22日まで]
二つも質問してすみません。よろしくお願いします。
0148デフォルトの名無しさん
2008/11/19(水) 18:06:24[2] 問題文(含コード&リンク):
(1)main関数の中で、要素数5個の配列変数を宣言する。この5個の要素に対して、
次のような計算をして、その結果をもとの要素に戻すような関数calc()をポインタを用いて書きなさい。
1個めの要素に対しては、値を3増やす
2個めの要素に対しては、値を4倍する
3個めの要素に対しては、値を5減らす
4個めの要素に対しては、値を7で割る
5個めの要素に対しては、今までの4つの要素の元の値の総和を入れる
(2)コマンドラインから、N個の数(数値)を入力して、個数とそれらの平均値を
出力するプログラムを作成しなさい。
[3] 環境
[3.1] OS:Linux
[3.2] XEmacs
[3.3] 言語:C++のみ
[4] 期限:早急にお願いします
[5] その他の制限:プログラミングを受業で習い始めて半年のレベルです。
よろしくお願いします。
0149デフォルトの名無しさん
2008/11/19(水) 18:09:140150デフォルトの名無しさん
2008/11/19(水) 18:12:24[2] 問題文(含コード&リンク):
任意のフォルダを定期的に(例えば、20秒おきなど)チェックし、
フォルダ内にファイルが増えていたら、そのファイル名とファイル
が作成された日時をログファイル(Log.txt)に書き込むプログラム
を作成せよ
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語: C
[4] 期限: 2008年11月23日まで
よろしくお願い致します。
0151デフォルトの名無しさん
2008/11/19(水) 18:12:480152デフォルトの名無しさん
2008/11/19(水) 18:14:11使わないでお願いします
0153デフォルトの名無しさん
2008/11/19(水) 18:23:28(1)
#include<iostream>
const int DATA_NUM=5;
void calc(double data[DATA_NUM]){
data[4]=data[0]+data[1]+data[2]+data[3];
data[0]+=3;
data[1]*=4;
data[2]-=5;
data[3]/=7;
}
int main(void){
double data[DATA_NUM]={1.0, 2.0, 3.0, 4.0, 5.0};
for(int i=0;i<DATA_NUM;i++) std::cout << data[i] << std::endl;
calc(data);
for(int i=0;i<DATA_NUM;i++) std::cout << data[i] << std::endl;
return 0;
}
0154デフォルトの名無しさん
2008/11/19(水) 18:31:51(2)
#include<iostream>
int main(void){
int N=0;
double value, average=0.0;
std::cout << "Input N : ";
std::cin >> N;
for(int i=0;i<N;i++){
std::cout << "Input data[" << i << "] : ";
if(!(std::cin >> value)){
std::cerr << "\nERROR : Unknown input.\n";
return 1;
}
average=(average*i+value)/(i+1);
}
std::cout << "N=" << N << " average=" << average << std::endl;
return 0;
}
0155デフォルトの名無しさん
2008/11/19(水) 18:32:00問題1
#include <stdio.h>
int main(void)
{
double v[5] = {0.0};
int i = 0, j;
double sum;
while (1) {
printf("input: "); scanf("%lf", &v[i%5]);
if (v[i%5] < 0) {
break;
}
sum = 0.0;
for (j = 0; j < 5; j++) {
sum += v[j];
}
printf("sum: %f\n", sum);
printf("average: %f\n", sum / 5);
i++;
}
return 0;
}
0156デフォルトの名無しさん
2008/11/19(水) 18:34:34問題2 はこんなのでいいのか?
#include <stdio.h>
void inc(int *a)
{
(*a)++;
}
int main(void)
{
int i = 1;
printf("i = %d\n", i);
inc(&i);
printf("i = %d\n", i);
return 0;
}
0158デフォルトの名無しさん
2008/11/19(水) 18:43:05最初の方のエラーの内容を張ってみてよ
C++-- っておちだろうけど
0159デフォルトの名無しさん
2008/11/19(水) 18:44:40いえ、もう>>155, >156で解決したので大丈夫です
>>153さんもどうもありがとうございまsちあ
0161デフォルトの名無しさん
2008/11/19(水) 19:52:480162デフォルトの名無しさん
2008/11/19(水) 20:04:58もう一度お願いします
0163デフォルトの名無しさん
2008/11/19(水) 21:09:27あたまわりいな。
地べたに頭こすりつけて>>158にあやまれ、と思わんでもないが。
0164デフォルトの名無しさん
2008/11/19(水) 21:36:20すみませんでした。
でも本当に困ってるのでお願いします。
0165デフォルトの名無しさん
2008/11/19(水) 21:50:11[2] 問題文(含コード&リンク):
ユークリッドの互除法を用いて最大公約数を求めるプログラムを作成する。
ただし,最大公約数を見つける部位は関数を用いる(例 kouyaku(int x, int y)など)
また,2数はどちらが大きな場合でも対応できるようにする。
例えば 入力を 24,30 とする場合も 30,24とする場合も どちらも 最大公約数 6 と表示できること。
main関数では 2つの数を入力すること および kouyaku()関数に2つの数を渡して
最大公約数を計算させ,最終結果を表示させる内容を行う。
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年11月26日12:00まで
[5] その他の制限:関数は習い始めたばかりです。よろしくお願いします。
0166デフォルトの名無しさん
2008/11/19(水) 21:51:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8071.txt
0167デフォルトの名無しさん
2008/11/19(水) 22:11:20int kouyaku(int x, int y)
{
int t;
do {
if(x<y){
t=x; x=y;y=t;
}
x -= y;
}while(x);
return y;
}
0168デフォルトの名無しさん
2008/11/19(水) 22:15:27int kouyaku(int x, int y)
{
int t;
do {
if(x<y){
t=x; x=y;y=t;
}
x -= y;
}while(x);
return y;
}
int main()
{
int x,y,yakusuu;
puts("x入力");scanf("%d",&x);
puts("y入力");scanf("%d",&y);
yakusuu = kouyaku(x, y);
printf("x = %d, y = %dの最大公約数は%d\n",x,y,yakusuu);
return 0;
}
[2] 問題文(含コード&リンク):
void main()
{
int i,j,data[5][4];
for (j=0;j<=3;j++){
data[4][j]=0;
}
for (i=0;i<=3;i++){
data[i][3]=0;
for (j=0;j<=2;j++){
printf("data[%d][%d]=",i,j);
scanf("%d",&data[i][j]);
data[i][3]+=data[i][j];
data[4][i]+=data[i][j];
data[4][3]+=data[i][j];
}
}
for(i=0;i<=4;i++){
for(j=0;j<=3;j++){
printf("%4d",data[i][j]);
}
printf("\n");
}
}
右下の合計と平均の文字は要りません
国語 数学 英語 |合計 |平均
75 35 40 | |
69 75 82 | |
57 48 36 | |
30 60 50 | |
-------------------------------------
合計 |
平均 |
[3] 環境:ポケコンに打つんでよく分かりません
[4] 期限:12月1日
[5] その他の制限:特になし
お願いします
0171デフォルトの名無しさん
2008/11/19(水) 23:36:030172デフォルトの名無しさん
2008/11/20(木) 07:31:10今日中なんですが
『三つの数値を入力(繰り返し入力)し、小さい順に表示する』
0173デフォルトの名無しさん
2008/11/20(木) 08:04:32>>1
0174デフォルトの名無しさん
2008/11/20(木) 08:38:21[2]三つの数値を入力(繰り返し入力)し、小さい順に表示する
[3]
[3.1]XP
[3.2]C言語
[4]今日まで(^∈^;)
テンプレ見て直してみました
[2] 問題文(含コード&リンク):
例をもとに指定した生徒の3科目の平均点を表示するプログラムを作成せよ
実行例
生徒IDを入力してください: 2 ↓
平均点は65.3点
例は>>176です。
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年11月24日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
配列の初期化、2次元配列は習いました。
お願いします。
#include <stdio.h>
int main(void) {
int data[ ][5] = { { 82, 98,41, 86,70},
{ 42, 99,92, 69,62},
{ 84, 54,63,100,70}};
int subject, student, sum;
double ave;
for (subject=0; subject<=2; subject++) {
switch (subject) {
case 0: printf("国語\n"); break;
case 1: printf("数学\n"); break;
case 2: printf("英語\n");
}
sum = 0;
for (student=0; student<=4; student++) {
printf("生徒%dの点数は%d点\n",student,data[subject][student]);
sum += data[subject][student];
}
ave = sum / 5.0;
printf("科目平均は%.1f点\n", ave);
}
return 0;
}
0177デフォルトの名無しさん
2008/11/20(木) 09:46:06[2] 問題文(含コード&リンク):
コマンドライン引数で与えられた数字の列を足し算するプログラムsumを作れ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年11月21日まで
[5] その他の制限:文字列をint型に直すのにはatoi()関数を使う。
よろしくおねがいします。
0178デフォルトの名無しさん
2008/11/20(木) 10:16:31#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
int i, sum;
sum = 0;
for(i = 1; i < argc; i++) sum += atoi(argv[i]);
printf("sum = %d\n", sum);
return 0;
}
0179デフォルトの名無しさん
2008/11/20(木) 10:54:28C++と書いたのですが、ただのCでお願いします。
本当に困ってます。
0180デフォルトの名無しさん
2008/11/20(木) 11:03:22/*(1)*/
#include <stdio.h>
void calc(int *p){
int a[5];
a[0] = p[0] + 3; a[1] = p[1] * 4;
a[2] = p[2] - 5; a[3] = p[3] / 7;
a[4] = p[0] + p[1] + p[2] + p[3];
}
int main(void){
int i;
int a[5] = {11,12,13,14,15};
calc(a);
for(i = 0; i < 5; i++) printf("a[%d] = %d\n", i, a[i]);
}
/*(2)*/
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[]){
int i, sum;
sum = 0;
for(i = 1; i < argc; i++) sum += atoi(argv[i]);
printf("個数: %d, 平均値: %lg\n", argc - 1,
(double)sum / (argc - 1));
}
0181デフォルトの名無しさん
2008/11/20(木) 11:04:27void calc(int *p){
int a[5];
a[0] = p[0] + 3; a[1] = p[1] * 4;
a[2] = p[2] - 5; a[3] = p[3] / 7;
a[4] = p[0] + p[1] + p[2] + p[3];
p[0] = a[0]; p[1] = a[1];
p[2] = a[2]; p[3] = a[3];
p[4] = a[4];
}
0182デフォルトの名無しさん
2008/11/20(木) 11:14:07#include <stdlib.h>
#include <stdio.h>
int compare(const void *a, const void *b){
if (*(double*)a < *(double*)b) return -1;
if (*(double*)a > *(double*)b) return 1;
return 0;
}
int main(void){
int i;
double a[3];
i = 0;
printf("%d個目の数値: ", i + 1);
scanf("%lf", &a[i]);
i++;
printf("%d個目の数値: ", i + 1);
scanf("%lf", &a[i]);
i++;
printf("%d個目の数値: ", i + 1);
scanf("%lf", &a[i]);
i++;
qsort(a, 3, sizeof(double), compare);
for(i = 0; i < 3; i++) printf("%lg\n", a[i]);
return 0;
}
0183デフォルトの名無しさん
2008/11/20(木) 11:55:070184デフォルトの名無しさん
2008/11/20(木) 14:42:39[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8072.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:Cygwin
[3.3] 言語: C
[4] 22日まで
[5] その他の制限: まだまだ序の口レベルらしいです。
よろしくお願いします。
0185デフォルトの名無しさん
2008/11/20(木) 15:19:55[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8073.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年11月20日23:59
[5] その他の制限:
よろしくお願いします
0187デフォルトの名無しさん
2008/11/20(木) 18:22:54第1問
#include <stdio.h>
int main(void)
int *p;
printf("%p\n", p);
p = p+1;
printf("%p\n", p);
return 0;
}
第2問
#include <stdio.h>
void func(int sec, int *hh, int *mm, int *ss)
{
*hh = sec / 3600;
*mm = (sec % 3600)/60;
*ss = sec % 60;
}
int main(void)
{
int hh, mm, ss;
int sec = 3800;
func(sec, &h, &m, &s);
printf("%d秒 = %2d時間%2d分%2d秒\n", sec, h, m, s);
return 0;
}
0188デフォルトの名無しさん
2008/11/20(木) 18:27:55[2] 構造体の配列 構造体のデータを得点で昇順に並び変えてください
[3] 環境
[3.1] Windows vista
[3.2] マイクロソフトヴィジュアルスタジオ
[3.3] 言語: C/
[4] 期限: ([2008年11月21日17;00まで]
[5] プリプロセッサ 、ファイル処理、操作 供用体 データ変換型 記憶クラス
は習っていません。
よろしくお願いいたします。
0189188
2008/11/20(木) 18:28:51# include<stdio.h>
struct tmp{
char name[20];
int bangou;
int ten;
};
void main(void)
{
{
struct tmp data[10]={{"山田",50113,87};
{"浜名",30211,60};
{"飯田",56231,58};
{"岡田",50215,30};
{"今田",60987,89};
{"原田",57892,75};
{"有田",53901,55};
{"清原",53098,72};
{"神山",56221,71};
{"上原",12345,100};
}}
0190デフォルトの名無しさん
2008/11/20(木) 18:29:40func(sec, &h, &m, &s);
printf("%d秒 = %2d時間%2d分%2d秒\n", sec, h, m, s);
は、正しくは
func(sec, &hh, &mm, &ss);
printf("%d秒 = %2d時間%2d分%2d秒\n", sec, hh, mm, ss);
ね。
>>184
第3問
#include <stdio.h>
#define N 10
int main(void)
{
int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *pa = a;
int i;
int sum = 0;
for (i = 0; i < N; i++) {
sum += *pa;
pa++;
}
printf("sum = %d\n", sum);
return 0;
}
0191デフォルトの名無しさん
2008/11/20(木) 18:31:23第4問
#include <stdio.h>
#include <math.h>
#define YPSILON 1e-5
int eq(double a, double b, double c, double *x, double *y)
{
double d = b*b - 4*a*c;
if (fabs(d) < YPSILON) {
*x = *y = (-b+sqrt(d))/(2*a);
return 1;
}
if (d < 0) {
return 0;
}
else {
*x = (-b+sqrt(d))/(2*a);
*y = (-b-sqrt(d))/(2*a);
return 2;
}
}
int main(void)
{
double x, y;
int r;
r = eq(1.0, -4.0, 3.0, &x, &y);
printf("%g, %g\n", x, y);
return 0;
}
0192デフォルトの名無しさん
2008/11/20(木) 18:43:12#include <stdio.h>
#include <stdlib.h>
struct tmp{
char name[20];
int bangou;
int ten;
};
int comp(const void *a, const void *b)
{
struct tmp *x = (struct tmp *)a;
struct tmp *y = (struct tmp *)b;
if (x->ten > y->ten) return 1;
else if (x->ten < y->ten) return -1;
else return 0;
}
int main(void)
{
int i;
struct tmp data[10]={{"山田",50113,87}, {"浜名",30211,60}, {"飯田",56231,58}, {"岡田",50215,30},
{"今田",60987,89}, {"原田",57892,75}, {"有田",53901,55}, {"清原",53098,72},
{"神山",56221,71}, {"上原",12345,100}};
qsort(data, 10, sizeof(data[0]), comp);
for (i = 0; i < 10; ++i) printf("%s %8d %3d\n", data[i].name, data[i].bangou, data[i].ten);
return 0;
}
0193188
2008/11/20(木) 19:32:01この恩は忘れません!
0194デフォルトの名無しさん
2008/11/20(木) 20:24:09そんなに長くなるのですか・・・
できれば>>139を少し改良して短くできるものに変えれませんか?
各々の多項式で前と同じようリスト構造を作って2つのリスト構造を先頭から見ながら、別の構造リストを作っていくみたいな・・・
なんて言えばいいんだろう^^;あとから条件みたいなの出してすいません
0195デフォルトの名無しさん
2008/11/20(木) 20:44:34[2]
(1)
2つの実数値xとyの差の絶対値を計算して結果を返す関数 sabun(x, y) を作成し、
main 関数から呼び出すプログラムを作りなさい。なお、関数sabunでは、実数値x
とyを引数とし、その差の絶対値を戻り値として返す。また、実数値xとyは、main
関数中でキーボードから読み込む
(2)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8074.txt
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限:明日
お願いします
0196デフォルトの名無しさん
2008/11/20(木) 20:52:24毎回名前の付け方や解き方が変わったり、
基本的なことが全然わかってなければ答えは一つ。
0197デフォルトの名無しさん
2008/11/20(木) 21:39:45#include <stdio.h>
int sabun ( int x, int y )
{
return (x>y)?(x-y):(y-x) ;
}
void main(void)
{
int x, y ;
printf ( "xの値を入力してください->" ) ;
scanf ( "%d", &x ) ;
printf ( "yの値を入力してください->" ) ;
scanf ( "%d", &y ) ;
printf ( "%dと%dの差の絶対値は%d\n", x, y, sabun(x,y) ) ;
}
0198デフォルトの名無しさん
2008/11/20(木) 21:43:14(1)
#include <stdio.h>
double subun(double x, double y)
{
return x > y ? x-y : y-x;
}
int main(void)
{
double x, y;
printf("x = "); scanf("%lf", &x);
printf("y = "); scanf("%lf", &y);
printf("subun(%f, %f) = %f\n", x, y, subun(x, y));
return 0;
}
(2)
#include <stdio.h>
int gokei(int n)
{
return n > 1 ? n+gokei(n-1) : 1;
}
int main(void)
{
int n = 100;
printf("gokei(%d) = %d\n", n, gokei(n));
return 0;
}
0200デフォルトの名無しさん
2008/11/20(木) 23:50:16[2] 問題文:
forを使って100以下の素数を求めて表示するプログラムを作れ
[3] 環境
[3.1] WinXP
[3.2] 不明
[3.3] C言語
おねがいします
0201デフォルトの名無しさん
2008/11/21(金) 00:00:32#include <stdio.h>
int main(void)
{
int i, j;
for (i = 2; i <= 100; i++) {
for (j = 2; j < i; j++) {
if (i%j == 0) break;
}
if (i == j) {
printf("%dは素数\n", i);
}
}
return 0;
}
0202デフォルトの名無しさん
2008/11/21(金) 00:08:30ありがとうございます
0203デフォルトの名無しさん
2008/11/21(金) 01:00:12[2] 年月を与えて,その月のカレンダーを表示するプログラム
mycalを作成せよ。:
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: cc -o
[3.3] 言語: C言語
[4] 期限:明後日
[5] その他の制限:isleapyearとdayofweekを使用
この関数は作ってあります
お願いします
0204デフォルトの名無しさん
2008/11/21(金) 01:04:11できるわけねーだろwwwwwwwwwwwwwww
0205デフォルトの名無しさん
2008/11/21(金) 01:24:28[2] 問題文(含コード&リンク):
関数mainにおいて,下記のような文字列を定義する.
char *name[] = {"Wada", "Kanto", "Matsuda", "Kudo", "Sato", "Iizumi", "Sugawara", NULL};
上記の文字列をアルファベット順に並べ替える関数を作成し,その結果を表示するプログラムを作成せよ.
ヒント:文字列の比較のために関数strcmpを使用する.
#include <string.h>
int strcmp(const char *str1,const char *str2);
【戻り値】str1 > str2 ならば正値(1)
str1 = str2 ならば0
str1 < str2 ならば負値(-1)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc(できればVisual C++でも動くように)
[3.3] 言語:C
[4] 期限:2008年11月27日10:30まで
[5] その他の制限:まだ初歩の段階です。やっとポインタの基礎を習い終わったところです。
0206デフォルトの名無しさん
2008/11/21(金) 01:36:17#include<stdio.h>
#include<string.h>
void sort_name(char **name) {
char **i, **j, *tmp;
for (i = name; *i; i ++) {
for (j = i + 1; *j; j ++) {
if (strcmp(*i, *j) > 0) {
tmp = *i; *i = *j; *j = tmp;
}
}
}
}
int main() {
char *name[] = {"Wada", "Kanto", "Matsuda", "Kudo", "Sato", "Iizumi", "Sugawara", NULL};
char **p;
sort_name(name);
for (p = name; *p; p ++) {
printf("%s\n", *p);
}
return 0;
}
0207デフォルトの名無しさん
2008/11/21(金) 01:54:05[1] 授業単元: プログラミング�U
[2] 問題文(含コード&リンク):
以下のデータを配列を初期化した後に入れ、各行各列の最大値をそれぞれ求めよ。
データ
1.1 2.4 0.9 2.3 1.9 1.0
2.2 0.7 0.3 1.8 1.7 0.2
0.8 0.4 2.5 1.5 0.9 2.4
0.9 1.6 1.7 1.6 0.4 1.4
[3] 環境
[3.1] OS: windows XP
[3.2] コンパイラ名とバージョン:borland bcc38?
[3.3] 言語: C言語
[4] 期限: 2008年11月21日12:00
[5] その他の制限:特にありません。ただ、ド素人同然の知識しかありません。
0208デフォルトの名無しさん
2008/11/21(金) 02:07:17[2] 問題文: 二つの整数m,nを入力し
a*m+b*n=gcd(m,n)
のa,bを求めるプログラム
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:11月21日08:00まで]
[5] その他の制限:特になし
よろしくお願いします。
0209デフォルトの名無しさん
2008/11/21(金) 02:15:37a, b が一意に定まらないんだけど一体どうしろと?
関係式吐けばいいのか?
0210デフォルトの名無しさん
2008/11/21(金) 02:35:2612と18を入力した際に
12a+18b=gcd(12,18)
a=-1 b=1 といった感じになるのですが…
0211デフォルトの名無しさん
2008/11/21(金) 02:42:42a=-4, b=3は解ではないと?
0212デフォルトの名無しさん
2008/11/21(金) 02:44:42一個適当に吐けばいいのかな?
無限個あるから列挙は無理なんでどうしたらいいかな
0213デフォルトの名無しさん
2008/11/21(金) 02:48:29それも解です。
でも出来るだけ最小値で出してもらえたら嬉しいです。
後付けみたいな頼みごとですみません;
0214デフォルトの名無しさん
2008/11/21(金) 03:06:33なんか他にも条件があるような気がする
0215デフォルトの名無しさん
2008/11/21(金) 03:24:13a,bを最小化する評価関数は何? |a|+|b|とかa^2+b^2とか
そして問題ではa,bについて整数であるとは書いていないが実数なのか整数に制約されているのか
0216デフォルトの名無しさん
2008/11/21(金) 03:25:080217デフォルトの名無しさん
2008/11/21(金) 03:51:43評価関数…
そういうのががいてないのですが。
r= n mod m とする
r= n - m「n/m」
¬r * r + ¬m * m = gcd(r,n) とする
¬r(n - m「n/m」) + ¬m * m = gcd(m,n)
(¬m -「n/m」¬r) m + ¬r = gcd(m,n)
このとき
(¬m -「n/m」¬r) = a
¬r = b
「」内の少数は切り捨て
謎のメモが残ってました。役に立つでしょうか?
整数に制約されてます。(0≦m<n)
>>216
あ。ほんとですね;
0218デフォルトの名無しさん
2008/11/21(金) 04:08:52void swap (int *a, int *b)
{
int t = *a;
*a = *b;
*b = t;
}
int gcd(int x, int y)
{
if (x < y) swap(&x, &y);
x %= y;
if (x == 0) return y;
else return gcd(y, x);
}
int main()
{
int x, y, g, a;
scanf("%d %d", &x, &y);
g = gcd(x, y);
printf("a = ");
scanf("%d", &a);
printf(" b = %f\n", (g - (double)x * a) / y);
return 0;
}
とりあえず適当に作ったよ
スペース区切りで gcd(m, n)の引き数を入力
そのあとa の値を入力する形で
0219デフォルトの名無しさん
2008/11/21(金) 04:20:36m,nは(0≦m<n)で整数のみですが、
a,bは実数でした;
0220デフォルトの名無しさん
2008/11/21(金) 13:57:51[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8075.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C/C++/どちらでも可
[4] 期限: 明後日まで
[5] その他の制限: 特に無し
このプログラムをコンパイルしたら、a,b,c,dが定義されていない識別子です。って怒られたんですが
どこにどうやってa,b,c,dを宣言すればいいか教えてください。よろしくお願いします。
0221デフォルトの名無しさん
2008/11/21(金) 14:03:08を
double t=0.0; double a=2.0,b=0.0,c=0.0,d=0.5;
したら動くかもね
確認して無いけど
0222デフォルトの名無しさん
2008/11/21(金) 14:03:52t=0.0; a=2.0,b=0.0,c=0.0,d=0.5;
を
t=0.0; double a=2.0,b=0.0,c=0.0,d=0.5;
だった
0223220
2008/11/21(金) 14:06:56これからやってみます!
0224220
2008/11/21(金) 14:11:320225デフォルトの名無しさん
2008/11/21(金) 14:19:15とかいてあるけどそのソースの拡張子は
.cと.cppのどっちなんだ?
.cなら
output=fopen("planet.data","w");
より上の行に
double a, b, c, d ;
0226220
2008/11/21(金) 14:28:49やってみます!
0227220
2008/11/21(金) 14:33:53って13個ぐらい出てきました。あと、
kenkyuu.obj : error LNK2019: 未解決の外部シンボル _runge が関数 _main で参照され
ました。
kenkyuu.obj : error LNK2019: 未解決の外部シンボル _g2 が関数 _main で参照されま
した。
kenkyuu.obj : error LNK2019: 未解決の外部シンボル _f2 が関数 _main で参照されま
した。
kenkyuu.obj : error LNK2019: 未解決の外部シンボル _g1 が関数 _main で参照されま
した。
kenkyuu.obj : error LNK2019: 未解決の外部シンボル _f1 が関数 _main で参照されま
した。
kenkyuu.exe : fatal error LNK1120: 外部参照 5 が未解決です。ってのも出てきました。
0228デフォルトの名無しさん
2008/11/21(金) 14:40:07f1関数とか呼び出してるんだけど無いから無理と言われてる
実際無いので当然無理
0229デフォルトの名無しさん
2008/11/21(金) 14:41:47とりあえず問題文を「全部」晒すんだ
話はそれからだ
0230220
2008/11/21(金) 14:42:530232220
2008/11/21(金) 14:49:09問題文ってか出力結果が、
惑星の運動
初期時間:t= 0.000の時,x= 2.000 y=0.000000,v_x= 0.000 v_y= 0.500
計算結果:t= 50.000の時、x= 1.659,y= 0.771,v_x= -0.421v_y= 0.407
ってなるようなプログラムを作れってことです(先ほどうpしたプログラムを少し変えて)。
0233220
2008/11/21(金) 14:55:53できそうですか?
0234デフォルトの名無しさん
2008/11/21(金) 15:24:18やっぱり条件あった。
小出しにすると解いてもらえないよ。
0235デフォルトの名無しさん
2008/11/21(金) 15:37:14int main(void)
{
int data[][5] = {
{82,98,41,86,70},
{42,99,92,69,62},
{84,54,63,100,70},
};
int subject,student,sum;
double ave;
int id;
printf("生徒IDを入力してください:");
scanf("%d",&id);
if(id < 0 || id > 4){
printf("IDが不正");
return -1;
}
for(subject=0,sum=0;subject<=2;subject++){
sum += data[subject][id];
}
ave = sum / 3.0;
printf("平均点は%.1f点\n",ave);
return 0;
}
大変助かりました。
本当に有難う御座いました。
0237220
2008/11/21(金) 15:53:36誰か教えてください。エラーが出てた初期化の部分はできました。
0238デフォルトの名無しさん
2008/11/21(金) 15:57:10[2] 問題文(含コード&リンク):
・入力された文字の種類を判別して表示するプログラムを作成せよ
-数字
-アルファベット大文字
-アルファベット小文字
-それ以外
・それぞれの文字コードが連続していることを利用
実行例
文字を入力: 5 ↓
数字です
文字を入力: J ↓
アルファベット大文字です
文字を入力: + ↓
その他の文字です
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年11月24日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
配列の初期化、2次元配列、文字コード、文字データ(char型)
getchar、putcharは習いました。
お願いします。
0239デフォルトの名無しさん
2008/11/21(金) 15:57:42関数の中身を書かなければ動きませんが、
情報が少なすぎて書ける人間はいないでしょう
諦めてください
0240220
2008/11/21(金) 16:00:480241デフォルトの名無しさん
2008/11/21(金) 16:13:05int main(void)
{
int c;
printf("文字入力:");
c = getchar();
if(c > 0x2f && c < 0x3a){
printf("数値\n");
}
else if(c > 0x40 && c < 0x5b){
printf("アルファベット大文字\n");
}
else if(c > 0x60 && c < 0x7b){
printf("アルファベット小文字\n");
}
else{
printf("その他\n");
}
return 0;
}
0242デフォルトの名無しさん
2008/11/21(金) 16:15:10大変助かりました。
本当に有難う御座いました。
0243デフォルトの名無しさん
2008/11/21(金) 16:24:04[2] 問題文(含コード&リンク):
・入力された文字がアルファベット大文字ならば小文字に、小文字ならば大文字に変換するプログラムを作成せよ
-大文字:0x41(A)〜0x5A(Z)
-小文字:0x61(a)〜0x7A(z)
・それぞれの文字コードの差が一定な事を利用
実行例
文字を入力: J ↓
j
文字を入力: t ↓
T
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年11月24日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
配列の初期化、2次元配列、文字コード、文字データ(char型)
getchar、putcharは習いました。
お願いします。
0244デフォルトの名無しさん
2008/11/21(金) 16:31:14int main(void)
{
int c;
printf("文字入力:");
c = getchar();
if(c > 0x40 && c < 0x5b){
c += 0x20;
}
else if(c > 0x60 && c < 0x7b){
c -= 0x20;
}
else{
printf("アルファベットではない\n");
}
printf("%c\n",c);
return 0;
}
0245デフォルトの名無しさん
2008/11/21(金) 16:32:34大変助かりました。
本当に有難う御座いました。
0246デフォルトの名無しさん
2008/11/21(金) 16:53:200247デフォルトの名無しさん
2008/11/21(金) 17:04:40同じ授業を受けてない限り、原理的に不可能というのはわかる?
0248デフォルトの名無しさん
2008/11/21(金) 17:36:23[1] 授業単元:プログラミング演習�T
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8076.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: 不明
[3.3] 言語: C
[4] 期限:2008年11月24日まで
[5] その他の制限:学校の授業で習い始めて3ヶ月です。標準ライブラリは無しで。
一応自力で頑張ったところ、この様になったのですが↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8077.txt
このままだとx万を超えないようにしたいのに結果は超えたものとなってしまうのです・・
是非よろしくお願いします
0249デフォルトの名無しさん
2008/11/21(金) 17:43:23#include<stdio.h>
int main(void)
{
int a,b=10000, c = 10000,d=0,e;
printf("返すべき元利合計(万円);");
scanf("%d",&a);
a *=10000;
for(;;){
b *= 1.1;
if(a < b) break;
c = b;
d++;
}
printf("最大年数;%d\n",d);
printf("返却金額;%d\n",c);
return 0;
}
しかい本当にint でいいのか?これ
0250デフォルトの名無しさん
2008/11/21(金) 18:14:410251デフォルトの名無しさん
2008/11/21(金) 18:16:170252デフォルトの名無しさん
2008/11/21(金) 18:49:00環境:Windows
コンパイラ:gccかVC++
言語:c++
期限:まあ適当に
"IUnko.h"
class IUnko{
public:
virtual ~IUnko() =0;
virtual operator int() =0;
virtual IUnko& operator++() =0;
virtual IUnko operator++(int) =0;
};
IUnko::~IUnko() {};
"Unko.h"
#inlude "IUnko.h"
class CUnko : public IUnko{
private:
int mVal;
public:
operator int() { return mVal; };
CUnko& operator++(){ mVal++; return *this; };
CUnko operator++(int){ CUnko tmp = *this; mVal++; return tmp; };
};
これがダメな理由を教えてください。
演算子のオーバーロードは抽象クラスには書けないですか?
0253デフォルトの名無しさん
2008/11/21(金) 19:38:541.戻り型がIUnkoとなっている operator++(int) は作成不能
2.継承クラスCUnkoで戻り型がCUnkoに化けている
名前欄ミスしました
0255デフォルトの名無しさん
2008/11/21(金) 20:26:10うーん、こう変更すればOKですか?
virtual IUnko& operator++(int) =0;
CUnko& operator++(int){ static CUnko tmp = *this; mVal++; return tmp; };
0256デフォルトの名無しさん
2008/11/21(金) 20:43:28オレは>>248じゃないが全部doubleでやったほうがいいと思うぞ
int b;
で
b *= 1.1;
とかは無謀すぎる
0257デフォルトの名無しさん
2008/11/21(金) 23:58:030258デフォルトの名無しさん
2008/11/21(金) 23:59:53bが10なら
0259デフォルトの名無しさん
2008/11/22(土) 00:00:15|
∩___∩ |
| ノ _, ,_ ヽ (( | プラプラ
/ ● ● | (=)
| ( _●_) ミ _ (⌒) J ))
彡、 |∪| ノ >>257
⊂⌒ヽ / ヽノ ヽ /⌒つ
\ ヽ / ヽ /
\_,,ノ |、_ノ
0260257
2008/11/22(土) 00:56:070262デフォルトの名無しさん
2008/11/22(土) 02:37:52>>248のに合わせて全部intにしてみたんだけど
複利計算の途中で一円以下の金額が発生して、それにも利子が付くというのは分かるかな?
問題文見た感じでは最終結果だけ小数点切捨てのように見えるからこっちが正しいんじゃないかな
#include<stdio.h>
int main(void)
{
int a, d=0;
double b=10000, c = 10000;
printf("返すべき元利合計(万円);");
scanf("%d",&a);
a *=10000;
for(;;){
b *= 1.1;
if(a < b) break;
c = b;
d++;
}
printf("最大年数;%d\n",d);
printf("返却金額;%d\n", (int)c);
return 0;
}
0263デフォルトの名無しさん
2008/11/22(土) 13:53:260264デフォルトの名無しさん
2008/11/22(土) 14:28:45[2] 問題文(含コード&リンク):
入力した文字列(A,B,C,Dからなる文字列)から、それぞれの文字数を出力するプログラム
を作成せよ。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語: C
[5] その他の制限:getcharを使わずscanfを用いる。switch文を用いる。
例)
文字列を入力してください:AABCD
A:2個
B:1個
C:1個
D:1個
よろしくお願い致します。
0265デフォルトの名無しさん
2008/11/22(土) 14:49:18#include <stdio.h>
int main(void)
{
char str[100];
int a = 0, b = 0, c = 0, d = 0;
int i;
printf("文字を入力してください:");
scanf("%s", str);
for (i = 0; (str[i] != '\n') && (str[i] != '\0'); i++) {
switch (str[i]) {
case 'A':
a++;
break;
case 'B':
b++;
break;
case 'C':
c++;
break;
case 'D':
d++;
break;
default :
break;
}
}
printf("A:%d個\nB:%d個\nC:%d個\nD:%d個\n", a, b, c, d);
return 0;
}
0266デフォルトの名無しさん
2008/11/22(土) 15:03:50[2]問題文
キーボードから任意の数字(a,b)を2つの
キーボードに入力し,a〜bの総和と
aのb乗を計算するプログラムを作成しなさい。
例
a=2 b=5なら
2+3+4+5=14
2^5=32
[3]
[3.1]OS:XP
[3.2]コンパイラとパーテンション:vc6.0
[4]期限:2008/11/27
[5]その他
double使うのはわかったんですが後がわかりませんお願いします
0267デフォルトの名無しさん
2008/11/22(土) 15:07:14ありとうございます。
0268デフォルトの名無しさん
2008/11/22(土) 15:17:29#include<stdio.h>
int main(void)
{
int a, b, i, sum = 0, pow = 1;
printf("a = ");
scanf("%d", &a);
printf("b = ");
scanf("%d", &b);
pow = a;
for (i = a; i < b; ++i) {
printf("%d + ", i);
sum += i;
pow *= a;
}
printf("%d ", i);
sum += i;
pow *= a;
printf("= %d\n", sum);
printf("%d^%d= %d\n",a, b, pow);
return 0;
}
0269デフォルトの名無しさん
2008/11/22(土) 15:24:56#include <stdio.h>
int main(void)
{
int a, b;
int i;
int sum = 0;
double exp = 1.0;
printf("a = ");
scanf("%d", &a);
printf("b = ");
scanf("%d", &b);
for (i = a; i <= b; i++) {
sum += i;
}
for (i = 0; i < b; i++) {
exp *= a;
}
printf("%dから%dまでの総和は%d\n%dの%d乗は%.0f\n", a, b, sum, a, b, exp);
return 0;
}
0270デフォルトの名無しさん
2008/11/22(土) 15:27:40間違ってるぞ死ねゴミ野郎
0271デフォルトの名無しさん
2008/11/22(土) 17:19:57ありがとうございます
0272デフォルトの名無しさん
2008/11/22(土) 18:36:16>>268
間違ってるぞ死ねゴミ野郎
0273デフォルトの名無しさん
2008/11/22(土) 20:43:32間違ってごめんなさいしてたんだよ!
0274デフォルトの名無しさん
2008/11/22(土) 21:23:431つのループだったら、breakで抜けられると思うのですが・・・
0275デフォルトの名無しさん
2008/11/22(土) 21:28:530276デフォルトの名無しさん
2008/11/22(土) 21:44:030277デフォルトの名無しさん
2008/11/22(土) 21:45:450278274
2008/11/22(土) 21:54:23ありがとうございました。
0279デフォルトの名無しさん
2008/11/22(土) 22:23:51[2] 問題文(含コード&リンク):
・コマンドライン引数を用いプログラムの実行時に,コピー元とコピー先のファイル名が指定できること.
・strcmpを使いコピー元のファイル名とコピー先のファイル名が同じかどうかを判定し,同じ場合には,strcatを使いコピー先のファイル名をファイル名1と変更する処理を書け.
(例) 「file」を「file1」とかにする.単にファイル名に1を加えるだけ.)
これらの条件を満たしたFile Aの内容をFile Bへコピーするプログラムを作成せよ.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラとバージョン: gcc
[3.3] 言語: C
[4] 期限: [11月25日
よろしくおねがいします。
0280デフォルトの名無しさん
2008/11/22(土) 22:26:560281デフォルトの名無しさん
2008/11/22(土) 22:30:04[2] 問題文(含コード&リンク):
名前,年齢,身長,体重,性別(M:男性,F:女性)のデータファイルより、以下のことを行なうプログラムを作成せよ.
コマンドライン引数を導入し,データファイルと出力ファイル,実行モードを指定せよ.
使い方> ./a.out 入力ファイル名 出力ファイル名 モード
使い方> ./a.out personal_data.txt result.txt 1
実行モードとして,下記三つのモードを用意せよ
1. 男性のデータのみをファイルに書き込む
2. 女性のデータのみをファイルに書き込む
3. 全員のデータをファイルに書き込む
※ 書き込む場合は,名前,身長,体重,年齢の順とする.
データファイルから,全員
分のデータを読み込む.ただし,データの終わりを判定して,読み込みを終了すること.
全員分のデータを標準出力に出力する.
personal_data.txt ↓
名前 年齢 身長 体重 性別
A 18 175.8 62.3 M
B 23 154.2 49.5 F
C 28 180.1 75.2 F
D 32 169.5 59.8 M
E 35 158.4 54.3 F
F 40 175.8 80.9 M
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラとバージョン: gcc
[3.3] 言語: C
[5] fprint/fgets/sscanfなどは習いましたがstrtok/atof/fputsなどは習っていません。
0282デフォルトの名無しさん
2008/11/22(土) 22:50:42#include <stdio.h>
#include <string.h>
char buf[10000];
int main(int argc, char *argv[]){
char *src, *dst, *p = buf;
int bufsize = sizeof(buf);
size_t readbytes;
FILE *srcfp, *dstfp;
if(argc < 3) return -1;
src = argv[1];
dst = argv[2];
if(0 == strcmp(src, dst)){
int len;
strcpy(buf, dst);
strcat(buf, "1");
dst = buf;
len = strlen(buf) + 1;
bufsize -= len;
p += len;
}
if(!(srcfp = fopen(src, "rb"))) return -1;
if(!(dstfp = fopen(dst, "wb"))){fclose(srcfp); return -1;}
while( 0 < (readbytes = fread(p, 1, bufsize, srcfp)))
fwrite(p, 1, readbytes, dstfp);
fclose(srcfp);
fclose(dstfp);
return 0;
}
0283デフォルトの名無しさん
2008/11/22(土) 23:17:59#include <stdio.h>
#include <stdlib.h>
#define file_open(fp, fname, mode, errno) do { \
if ((fp = fopen(fname, mode)) == NULL) { fprintf(stderr, "%sがオープンできません。\n", fname); \
exit(errno); } } while (0)
int main(int argc, char *argv[])
{
FILE *fpw, *fpr;
char ss[500], format[300];
char s[5][1000] = {""};
if (argc != 4) return 1;
switch (argv[3][0]) {
case '1': sprintf(format, "%%s %%s %%s %%s %%[%c]", 'M'); break;
case '2': sprintf(format, "%%s %%s %%s %%s %%[%c]", 'F'); break;
case '3': sprintf(format, "%%s %%s %%s %%s %%[%s]", "MF"); break;
default: exit(4);
}
file_open(fpr, argv[1], "r", 2);
file_open(fpw, argv[2], "w", 3);
while (fgets(ss, 500, fpr)) {
if (sscanf(ss, format,
s[0], s[1], s[2], s[3], s[4]) == 5) {
fprintf(fpw, "%s %s %s %s\n", s[0], s[2], s[3], s[1]);
}
}
fclose(fpr); fclose(fpw);
return 0;
}
0284デフォルトの名無しさん
2008/11/22(土) 23:43:23今さらで申し訳ありませんが
sizeof()・fread()・fwrite・fopenのrb・wbのbを習っていません…
これらを使わずにできますか?
またstrlenも使わないでもできますか?
すいません… おねがいします。
0285デフォルトの名無しさん
2008/11/22(土) 23:44:42入力ファイルと出力ファイルが変化する危険が生じることになるがいいか?
0286デフォルトの名無しさん
2008/11/23(日) 00:17:09> fwrite・fopenのrb・wbのbを習っていません…
コピーするファイルが、必ずしもテキストファイルとは限らんし、
テキストファイルでもrb,wbで問題なく処理できるんだが・・・
さすがに、習っていなくても、fopenを習ったのなら、あとは自分で調べて
使っても問題ないのでは?
0287デフォルトの名無しさん
2008/11/23(日) 00:27:28#include <stdio.h>
#include <string.h>
#define BUFSIZE 10000
char buf[BUFSIZE];
int main(int argc, char *argv[]){
char *src, *dst, *p = buf;
int bufsize = BUFSIZE;
size_t readbytes;
FILE *srcfp, *dstfp;
if(argc < 3) return -1;
src = argv[1]; dst = argv[2];
if(0 == strcmp(src, dst)){
int len;
strcpy(buf, dst); strcat(buf, "1");
dst = buf;
for(p=dst; *p; p++);
bufsize -= (int)(p-buf);
p++;
}
if(!(srcfp = fopen(src, "r"))) return -1;
if(!(dstfp = fopen(dst, "w"))){fclose(srcfp); return -1;}
while( 0 < (readbytes = fread(p, 1, bufsize, srcfp)))
fwrite(p, 1, readbytes, dstfp);
fclose(srcfp); fclose(dstfp);
return 0;
}
環境が linux なら、 b は単純に消せばいい。ただしその場合、Windowsでの動作は保障されない。
「習ってないから使うな」とかアホなこと書く前にテキストを読んどけ。せっかくある便利な道具を封じたら、
難易度上がるんだよ? 分かってる? その上で初心者向きじゃないとか文句言わないでね。
それすら判断できないんだろうけどw
0288287
2008/11/23(日) 00:30:25bufsize -= (int)(p-buf);
は
bufsize -= (int)(p-buf) + 1;
としといて。
0289デフォルトの名無しさん
2008/11/23(日) 00:31:24ごちゃごちゃ言って、
>>285でレスしたのに、fread , fwrite を使ってるじゃん・・・
0290デフォルトの名無しさん
2008/11/23(日) 00:34:580291デフォルトの名無しさん
2008/11/23(日) 00:35:38#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *fps, *fpd;
char *src, *dst;
char *cur;
char buf[100] = {""};
if (argc < 3) return -1;
src = argv[1];
dst = argv[2];
if (strcmp(src, dst) == 0) {
cur = dst;
while ( *cur != '.') cur++;
strcat(buf, "1");
strcat(buf, cur);
strcpy(cur, buf);
}
if ((fps = fopen(src, "r")) == NULL) return -1;
if ((fpd = fopen(dst, "w")) == NULL) {
fclose(fps);
return -1;
}
while (fgets(buf, 100, fps) != NULL) {
fputs(buf, fpd);
}
fclose(fps);
fclose(fpd);
return 0;
}
0292デフォルトの名無しさん
2008/11/23(日) 00:59:13http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8078.c
0293デフォルトの名無しさん
2008/11/23(日) 01:02:450294デフォルトの名無しさん
2008/11/23(日) 01:07:39http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8079.c
0295デフォルトの名無しさん
2008/11/23(日) 01:09:40それは自分も思った。ファイル名の後ろから . (ドット)を検出して、
それより前の文字に 1 を加えてから拡張子を結合させるようにする
コードを追加すべきかと。
0296デフォルトの名無しさん
2008/11/23(日) 01:14:02年月を与えて、その年月のカレンダーを表示させるプログラムです。
悩んでいるのは、そのプログラムを拡張して、年だけ与えたとき、
その年の12か月分のカレンダーを表示させるというものです。
月の入力があるかないかを判定すればできると思ったんですが、
どうプログラムすればいいかがわかりません。
助言願います。
0297デフォルトの名無しさん
2008/11/23(日) 01:15:51C言語なら俺に聞け(入門篇) Part 39
http://pc11.2ch.net/test/read.cgi/tech/1226693085/
0298デフォルトの名無しさん
2008/11/23(日) 01:18:59入力がコマンドライン引数なら、引数の数で判断すればいい。
プログラム中なら、月の入力時に
「12か月分を表示するときは0を入力してください」なんかにすれば?
0299デフォルトの名無しさん
2008/11/23(日) 01:21:06心配しなくてもバレるんだからちゃんと動く方もらっときな
0300デフォルトの名無しさん
2008/11/23(日) 01:28:45#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
FILE *fps, *fpd;
char *src, *dst, *cur, buf[100] = {""};
int flag = 0;
if (argc < 3) return -1;
src = argv[1];
dst = argv[2];
if (strcmp(src, dst) == 0) {
cur = dst;
while ( *cur != '\0') {
if (*cur =='.') flag = 1;
cur++;
}
if (flag == 1) {
while (*cur != '.') cur--;
strcat(buf, "1");
strcat(buf, cur);
strcpy(cur, buf);
}
else strcat(dst, "1");
}
if ((fps = fopen(src, "r")) == NULL) return -1;
if ((fpd = fopen(dst, "w")) == NULL) {
fclose(fps);return -1;
}
while (fgets(buf, 100, fps) != NULL) fputs(buf, fpd);
fclose(fps);fclose(fpd);
return 0;
}
0301デフォルトの名無しさん
2008/11/23(日) 03:20:38[2] 問題文
それぞれの人の身長と,その身長と平均身長との差(小さければマイナスの数値となる)
を,一人一行ずつ出力しなさい。例えば,次のような形式で出力する (n が3 の場合。
小数点以下の桁数は気にしない) 。
170.0 0.0
165.0 -5.0
175.0 5.0
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2008年11月25日12:00まで
よろしくお願いします。
0302デフォルトの名無しさん
2008/11/23(日) 03:56:39[2] 問題文
for文を用いて10 個の要素をもつ整数配列data を初期化して宣言する。配列要素の中の最大値と最小値を
出力しなさい。なお,配列要素の値として,すべて負のものがあるデータも試してみるこ
と。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2008年11月25日12:00まで
よろしくお願いします。
0303デフォルトの名無しさん
2008/11/23(日) 10:33:11#include <stdio.h>
int main(){
int n, i;
double person[20];
double sum = 0, ave = 0;
printf("人数:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("%d人目の身長:",i + 1);
scanf("%lf", &person[i]);
sum += person[i];
}
ave = sum / n;
for (i = 0; i < n; i++) {
printf("%3.1f %3.1f\n", person[i], person[i] - ave);
}
return 0;
}
0304デフォルトの名無しさん
2008/11/23(日) 10:41:16#include <stdio.h>
int main(){
int data[10];
int i, max, min;
printf("1個目: ");
scanf("%d", &data[0]);
max = data[0];
min = data[0];
for (i = 1; i < 10; i++) {
printf("%d個目", i + 1);
scanf("%d", &data[i]);
if (data[i] > max)
max = data[i];
if (data[i] < min)
min = data[i];
}
printf("最大値%d 最小値%d\n", max, min);
return 0;
}
0305デフォルトの名無しさん
2008/11/23(日) 12:40:51どうもありがとうございます。
0306デフォルトの名無しさん
2008/11/23(日) 13:10:20[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8082.txt
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語: (C++)
[4] 期限: ([2008年11月25日9時まで])
[5] その他の制限: 逆行列だけが表示されるようにすること
長いですがよろしくお願いします
0307デフォルトの名無しさん
2008/11/23(日) 17:44:05[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8083.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: (C++)
[4] 期限: 11/25
[5] その他の制限: よろしくお願いします
0308デフォルトの名無しさん
2008/11/23(日) 20:25:44[2] 問題文:指定したファイルに書かれている整数を逆順に表示するプログラムをつくりなさい。
例 123 4567 89
と書かれているなら
89 4567 123
と表示
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11月24日
[5] その他の制限: malloc,fsanf,fopenは習いました。
よろしくお願いします。
0309デフォルトの名無しさん
2008/11/23(日) 21:06:19#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int *v;
size_t c;
FILE *fp;
fp = fopen("308.txt", "r");
if (fp == NULL) {
perror("fopen");
return 1;
}
c = 1;
v = malloc(sizeof(int) * c);
while (fscanf(fp, "%d", &v[c-1]) == 1) {
c++;
v = reallocf(v, sizeof(int) * c);
}
fclose(fp);
c--;
while (c != 0) {
printf("%d ", v[c-1]);
c--;
}
putchar('\n');
free(v);
return 0;
}
0310デフォルトの名無しさん
2008/11/23(日) 21:32:23[2]
�@から�Cにこたえよ。
文字列msgを次の2つの方法で画面に表示させようとしたら、正しく表示できないところがあった。
なお、文字列msgは以下のように初期化されており、終端方法は問題ないものとする。
char msg[]="........";/*.......はある文字列*/
[A]printf("%s",msg);
[B]printf(msg);
�@正しく表示できなかったのは[A][B]のどちらか、あるいは両方か?
�Aそれはどのような場合か、例を挙げなさい。
�B正しくできない理由を説明しなさい。
�Cこのような問題を防ぐにはどうしたらよいか。
[3] 環境
[3.1] OS:windows xp
[3.3] 言語: C言語
[4] 期限:11月末
どうかよろしくお願いいたします。
0311デフォルトの名無しさん
2008/11/23(日) 21:37:211.
B
2.
%を含む場合
3.
printfのフォーマットとみなされるから
4.
Aの様にする
多分こうだろうと思う。
0312デフォルトの名無しさん
2008/11/23(日) 21:38:201. [B]
2. msg[] = "%d"
3. フォーマットに対応する引数を渡してないから
4. printf の第1引数には何が入っているか分からない文字列を渡さない。例えば [A] のようにする
0315デフォルトの名無しさん
2008/11/23(日) 22:22:16[2]
�@から�Cにこたえよ。
�@あるデータ型の変数内部で1と0がどのように並んでいるかを調べるにはどうしたらよいか。
�A符号付き変数の内部で正と負の整数はどのような方法で表されるか説明しなさい。
�B符号付き整数で表せる数値の範囲は負の数が正の数よりも1つ多い理由を説明せよ。
�C整数の変数の右シフトにおいて結果が異なることがある理由を説明しなさい。
[3] 環境
[3.1] OS:windows xp
[3.3] 言語: C言語
[4] 期限:11月末
どうかよろしくお願いいたします。
0316デフォルトの名無しさん
2008/11/23(日) 22:35:311.ビット演算右シフトしたものを 1 と & するという操作を繰りかえす
2. 負数はビット反転して1を足す
3. 全てのビットが1のものは最小の負数、全てのビットが0のものは0を表し、
それ以外のものは左端のビットが1であれば負、0であれば正の数なので負の方が一個多い
4.
右シフトした後の左端ビットはシフト前のビットを使うか0するはC言語の規格で決まっていないから
or
負数の場合は、右にシフトして開いたビットは1になる
正の数だったら0になる
4がどっちの意味の質問なのかわからん。後俺の説明が全般的に糞
0317デフォルトの名無しさん
2008/11/23(日) 22:40:32以下の仕様を満たす構造体を宣言しなさい。
・構造体名はTEST、構造体変数名はsttest
・1番目のメンバは0〜100000を扱う整数で変数名はnNo
・2番目のメンバは20文字を扱う文字列で、変数名はszName
・3番目のメンバは80文字を扱う文字列で、変数名はszAddr
[3] 環境
[3.1] OS:windows xp
[3.3] 言語: C言語
[4] 期限:11月末
どうかよろしくお願いいたします。
0319デフォルトの名無しさん
2008/11/23(日) 22:53:10[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8084.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語: C++
[4] 期限: 2008年11月24日24時まで
[5] その他の制限: 特になし。よろしくお願いいたします。
0320デフォルトの名無しさん
2008/11/23(日) 22:57:14宣言するだけかよw
struct TEST {
unsigned int nNo;
char szName[21];
char szAddr[81];
} sttest;
0321デフォルトの名無しさん
2008/11/23(日) 23:51:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8085.txt
原問と少しプログラムが違っているので(なぜか動かなかったので
手を加えさせてもらいました)、気になる時は修正して下さい。
0322デフォルトの名無しさん
2008/11/24(月) 00:24:03[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク):適当に問題作って正解、不正解をそれぞれ数え
不正解時は回数ごとに違う言葉が表示されるようにしろ(1回目:違う、2回目氏ねみたいな感じで)
[3] 環境
[3.1] OS:VISTAUltimate
[3.2] コンパイラ名とバージョン: gcc(unixサーバー内のものなのでver不明)orVISUALC++2008
[3.3] 言語: (C/C++/どちらでも可 のいずれか)C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)今週木曜AM10:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)if elseは必ず用いるのみ
0323デフォルトの名無しさん
2008/11/24(月) 00:25:220324デフォルトの名無しさん
2008/11/24(月) 00:26:150326デフォルトの名無しさん
2008/11/24(月) 00:31:53[1] 授業単元: 情報処理
[2] 問題文
有効桁が10桁の実数kを読み込み、
k^1、k^2、k^3、、、、、k^10 の値を表で出力せよ。
[3] 環境
[3.1] OS: vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2008/11/24
[5] その他の制限: 数学関数 pow() は使わない
宜しくお願いします
0327デフォルトの名無しさん
2008/11/24(月) 01:04:25早い回答ありがとうございます。
動きませんでしたか、問題のミスかな?
でもとっても助かりました。ありがとうございましたm(_ _)m
0328デフォルトの名無しさん
2008/11/24(月) 01:36:44Nが2と#defineされているのは動作確認のためですので
4に戻しておいてください
0329デフォルトの名無しさん
2008/11/24(月) 01:42:56初心者が、覚えたことの確認がてら作ったクソースでよければどうぞ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8086.txt
#include <algorithm>
は消しといてください
0330デフォルトの名無しさん
2008/11/24(月) 05:06:1210円の著作権料を請求するでおじゃる。
0331デフォルトの名無しさん
2008/11/24(月) 05:09:37[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8087.txt
[3] 環境
[3.1] OS: windows
[3.2] VC++08
[3.3] 言語: C++
[4] 期限:2008年11月25日のAM三時まで
[5] その他の制限:
英文ですが時間があったら日本語訳に直します。
何度かトライしてみたのですが、なかなか出来ません・・・よろしくお願いします。
0332デフォルトの名無しさん
2008/11/24(月) 07:05:15ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8089.cpp
0333332
2008/11/24(月) 07:19:11あほみたいなミスってたので
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8090.cpp
0334デフォルトの名無しさん
2008/11/24(月) 07:36:06[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8091.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
0335デフォルトの名無しさん
2008/11/24(月) 07:36:23あるセルが生(真)で、1つ以上4つ以下の生(真)の隣接するセルがあれば、
そのセルは死(偽)になる。
if the cell is dead and has exactly 3 alive neighbors, it becomes alive
あるセルが死(偽)の場合、生(真)のセルが3つ隣接している場合、
そのセルは生(真)になる。
隣接するのは、上下左右の4つが対象?斜めは無視?
0336デフォルトの名無しさん
2008/11/24(月) 07:36:380337デフォルトの名無しさん
2008/11/24(月) 09:55:39http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8092.txt
多分動く。なにかあれば修正して
0338デフォルトの名無しさん
2008/11/24(月) 09:56:55#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
int *v;
int size, i, sum;
scanf("%d", &size);
v = malloc(sizeof(int) * size);
i = 0;
while (scanf("%d", &v[i]) != EOF) {
i++;
}
fp = fopen("out.txt", "w");
sum = 0;
for (i = size; i > 0; i--) {
fprintf(fp, "%d ", v[i-1]);
sum += v[i-1];
}
fprintf(fp, "%d", sum);
fclose(fp);
free(v);
return 0;
}
0339デフォルトの名無しさん
2008/11/24(月) 10:34:35[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8083.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 11/25
よろしくお願いします
0340デフォルトの名無しさん
2008/11/24(月) 12:11:49コンウェイのライフゲーム/セルオートマトンですか。
0341デフォルトの名無しさん
2008/11/24(月) 13:51:47[2] 問題文: キーボードから入力した10個の数を昇順表示
(例) 4[enter] → 4
7[enter] → 4 7
1[enter] → 1 4 7
-2[enter] → -2 1 4 7
………
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio .NET コマンドプロンプト
[3.3] 言語: C
[4] 期限: 11/27
[5] その他の制限
[5.1] データ構造は【配列】にする。
[5.2] 既習範囲【printf,scanf,if,while,配列[]】以外は使用しない。
[5.3] void main() ではじめる。
宜しくお願い致します。
0342デフォルトの名無しさん
2008/11/24(月) 14:12:47IF使っちゃだめなのか?
0343デフォルトの名無しさん
2008/11/24(月) 14:24:59for が使えないと、なんかみょうちくりんなコードに見える。。。
#include <stdio.h>
void main()
{
int i, j;
int v[10];
int t;
i = 0;
while (i < 10) {
scanf("%d", &v[i]);
j = i;
while (j > 0) {
if (v[j] < v[j-1]) {
t = v[j];
v[j] = v[j-1];
v[j-1] = t;
}
j--;
}
/* j == 0 */
while (j <= i) {
printf("%d ", v[j]);
j++;
}
printf("\n");
i++;
}
return 0;
}
0344デフォルトの名無しさん
2008/11/24(月) 14:30:11ありがとうございます、助かりました
0345デフォルトの名無しさん
2008/11/24(月) 15:16:13番号飛ばしちゃったけど
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8094.txt
0346デフォルトの名無しさん
2008/11/24(月) 15:28:19プログラミング演習
[2] 問題文(含コード&リンク):
6個の要素を持つ整数配列 int data[6] = {3,7,12,4,16,}を初期化して宣言する。
この配列に順に「1,2,3,・・・6」と番号を振り、以下に示すようにそれぞれ配列の数値の分だけ“*”を出力されるようにしなさい。
1 ***
2 *******
3 ************
4 ****
5 *
6 ******
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョンVC 6.0
[3.3] 言語:
C++
[4] 期限:
今日中
[5] その他の制限:
特にありません。
どうかお願いします。
0347デフォルトの名無しさん
2008/11/24(月) 15:39:52#include <iostream>
int main()
{
int data[6] = {3,7,12,4,1,6};
for (int i = 0; i < sizeof(data) / sizeof(data[0]); ++i) {
std::cout << i << ' ';
for (int j = 0; j < data[i]; ++j)
std::cout << '*';
std::cout << std::endl;
}
return 0;
}
0348デフォルトの名無しさん
2008/11/24(月) 15:46:10[2] 問題文
(1) int min_intarray(int data[ ], int n)
(2) void print_intarray(int data[ ], int n)
上記(1)(2)の関数を参考にしながら、次のプログラム(main 関数)を利用して,作成した関数が正しく動作しているか
確認しなさい。
int main(void)
{
int a[5] = {3, 5, 1, 2, 4};
int b[10] = {6, 4, 2, 5, 8, -2, 7, 0, 1, 9};
int c[4] = {-2, -3, -4, -1};
printf(%d :, min_intarray(a, 5));
print_intarray(a, 5);
printf(%d :, min_intarray(b, 10));
print_intarray(b, 10);
printf(%d :, min_intarray(c, 4));
print_intarray(c, 4);
return 0;
}
[3] 環境
[3.1] OS:Windows
[3.2]
[3.3] 言語:C
[4] 期限:2008年11月25日6:00まで
問題文の意味からしていまいち掴めていないような状況です。
申し訳ないですがどなたかお願いします。
0349デフォルトの名無しさん
2008/11/24(月) 15:55:05#include <stdio.h>
#include <limits.h>
int min_intarray(int data[ ], int n)
{
int min = INT_MAX, i;
for (i = 0; i < n; ++i) {
if (data[i] < min) min = data[i];
}
return min;
}
void print_intarray(int data[ ], int n)
{
int i;
putchar('[');
for (i = 0; i < n - 1; ++i)
printf("%d ", data[i]);
printf("%d]\n",data[i]);
}
int main(void)
{
int a[5] = {3, 5, 1, 2, 4};
int b[10] = {6, 4, 2, 5, 8, -2, 7, 0, 1, 9};
int c[4] = {-2, -3, -4, -1};
printf("%4d :", min_intarray(a, 5));
print_intarray(a, 5);
printf("%4d :", min_intarray(b, 10));
print_intarray(b, 10);
printf("%4d :", min_intarray(c, 4));
print_intarray(c, 4);
return 0;
}
0350デフォルトの名無しさん
2008/11/24(月) 16:05:180351デフォルトの名無しさん
2008/11/24(月) 16:31:16[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8095.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
お願いします。
0352デフォルトの名無しさん
2008/11/24(月) 17:00:27[2] 問題文
(1)main関数で4つの数を入力し、heikin 関数に引き渡した。heikin 関数では、4 つの数
の平均値を返す。関数から計算された値はmain 関数側で表示する。この仕様を満たす
プログラムを作りなさい。
(2)main関数で整数値を入力し、kaijyo 関数に引き渡した。kaijyo 関数では、引数の階乗
値を返す。関数で計算された値はmain 関数側で表示する。この仕様を満たすプログラ
ムを作りなさい。
例)3の階乗値は 3×2×1=6 である。5 の階乗値は5×4×3×2×1=120 である。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限:明日
お願いします
0353デフォルトの名無しさん
2008/11/24(月) 17:04:47#include <stdio.h>
int main(){
int a b, c, d;
scanf("1st number %d", &a);
scanf("2nd number %d", &b);
scanf("3rd number %d", &c);
scanf("4th number %d", &d);
printf("The sum is : %d", heikin(a, b, ,c ,d));
return 5000;
}
int heikin(int a, int b, int c, int d){
return (a + b + c + d)/ 4
}
0354デフォルトの名無しさん
2008/11/24(月) 17:08:47釣りだといってくれ
0355デフォルトの名無しさん
2008/11/24(月) 17:10:36<2>
#include <stdio.h>
int main(){
int a;
printf("Which number you want?");
scanf("%d", &a);
printf("The kaijo of %d is : %d", a, kaijo(a));
return 0;
}
int kaijo(int a){
int i, base=1;
while(a>1){
base *= a--;
}
return b
}
あごめんよくわかんね
0356デフォルトの名無しさん
2008/11/24(月) 17:13:29もう休め・・・・
0357デフォルトの名無しさん
2008/11/24(月) 17:15:41でも動くだろ?
プログラマにとって多少のコンパイルエラーは避けられない
0358デフォルトの名無しさん
2008/11/24(月) 17:24:06ありがとうございます。
0359デフォルトの名無しさん
2008/11/24(月) 17:29:35#include <stdio.h>
double heikin(double input[]);
int kaijo(int n);
int main(){
double input[4];
int i;
/* for (1) */
for(i=0;i<4;i++)
scanf("%lf", &input[i]);
printf("average: %7.4f\n", heikin(input));
/* for (2) */
scanf("%d", &i);
printf("fact(%d) = %d\n", i, kaijo(i));
}
double heikin(double input[]){
int i;
double sum = 0;
for(i=0;i<4;i++) sum+=input[i];
return sum/4;
}
int kaijo(int n){return (n<2)?1:kaijo(n-1)*n;}
0360デフォルトの名無しさん
2008/11/24(月) 17:33:45iodata2-1 もうpしる
0361デフォルトの名無しさん
2008/11/24(月) 18:11:05name: name a, teln: +aa-aaa-aa-aaaa, mail: [email protected]
name: name b, teln: +bb-bbb-bb-bbbb, mail: [email protected]
name: name c, teln: +cc-ccc-cc-cccc, mail: [email protected]
name: name z, teln: +zz-zzz-zz-zzzz, mail: [email protected]
name: name e, teln: +ee-eee-ee-eeee, mail: [email protected]
name: name f, teln: +ff-fff-ff-ffff, mail: [email protected]
name: name g, teln: +gg-ggg-gg-gggg, mail: [email protected]
name: name h, teln: +hh-hhh-hh-hhhh, mail: [email protected]
name: name i, teln: +ii-iii-ii-iiii, mail: [email protected]
name: name j, teln: +jj-jjj-jj-jjjj, mail: [email protected]
name: name a, teln: +aa-aaa-aa-aaaa, mail: [email protected]
name: name b, teln: +bb-bbb-bb-bbbb, mail: [email protected]
name: name c, teln: +cc-ccc-cc-cccc, mail: [email protected]
name: name d, teln: +dd-ddd-dd-dddd, mail: [email protected]
name: name e, teln: +ee-eee-ee-eeee, mail: [email protected]
name: name f, teln: +ff-fff-ff-ffff, mail: [email protected]
name: name g, teln: +gg-ggg-gg-gggg, mail: [email protected]
name: name h, teln: +hh-hhh-hh-hhhh, mail: [email protected]
name: name i, teln: +ii-iii-ii-iiii, mail: [email protected]
name: name j, teln: +jj-jjj-jj-jjjj, mail: [email protected]
0362デフォルトの名無しさん
2008/11/24(月) 18:12:38name: name a, teln: +aa-aaa-aa-aaaa, mail: [email protected]
name: name b, teln: +bb-bbb-bb-bbbb, mail: [email protected]
name: name c, teln: +cc-ccc-cc-cccc, mail: [email protected]
name: name z, teln: +zz-zzz-zz-zzzz, mail: [email protected]
name: name e, teln: +ee-eee-ee-eeee, mail: [email protected]
name: name f, teln: +ff-fff-ff-ffff, mail: [email protected]
name: name g, teln: +gg-ggg-gg-gggg, mail: [email protected]
name: name h, teln: +hh-hhh-hh-hhhh, mail: [email protected]
name: name i, teln: +ii-iii-ii-iiii, mail: [email protected]
name: name j, teln: +jj-jjj-jj-jjjj, mail: [email protected]
0363352
2008/11/24(月) 19:19:20うまく動かなかったので構文を直した後少し変更したら動きました、ありがとうございます
>>355
動きました、ありがとうございます
0364デフォルトの名無しさん
2008/11/24(月) 19:26:56ような構造体の定義と代入の方法を教えてください
int main(int argc, char *argv[])
{
A a;
A.argc=argc;
for (int i=0;i<V.argc;i++){
strcpy(?,argv[i]);
}
}
struct A{
int argc;
?;
};
0365sage
2008/11/24(月) 19:37:22[2] 問題文: 文字列1から文字列2の最長一致系列を求めるプログラムを作成する。
文字列1 "abcdefg"
文字列2 "bcdcccd"
の場合、"abc"を求める。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual C++ 2005
[3.3] 言語: C
[4] 期限: 11月29日
[5] その他の制限: C言語は一通り習いました。よろしくおねがいします。
0366デフォルトの名無しさん
2008/11/24(月) 19:39:36関数を使っていいの?使っちゃいけないの?
0367sage
2008/11/24(月) 19:45:51特に指定されていないので、使って大丈夫なはずです。
0368デフォルトの名無しさん
2008/11/24(月) 20:10:240369デフォルトの名無しさん
2008/11/24(月) 20:16:22fread で sizeof(Address) = 300バイト ごとに読み込んでいるようだけど、実際の iodata2-1 は CSV なの?
双方向にする以前にちゃんと動くんか?
0370デフォルトの名無しさん
2008/11/24(月) 20:23:040371デフォルトの名無しさん
2008/11/24(月) 20:42:20>>362 は実際の iodata2-1 と違うだろ
showAddress の結果を貼り付けただけと思われ
そのままうpれ
0372デフォルトの名無しさん
2008/11/24(月) 20:56:35iodata2-1の内容は適当なアドレス帳のデータでいいらしいんですが・・
0373デフォルトの名無しさん
2008/11/24(月) 20:57:39[1] 応用プログラミング演習
[2] wavファイル(音楽ファイル)を読み込んでFFTを施し、バンドパスフィルタ(ある周波数領域を0にする方法でもいいしFIRフィルタでもよい)をかけてIFFTし、そのwavファイルを出力せよ。(バンドパスの領域は任意)
[3] 環境
[3.1] OS: Windows
[3.2] 開発環境:VC++ 6.0
[3.3] 言語:C言語
[4]今月中
[5]制限なし
ある程度プログラムしたのですが、うまくいきません。
他スレで助言をいただこうと作成したプログラムをうpしたのですが、返答がなくもう一度このスレにお願いをしに来た次第です。
またフィルタをかける際ですが、
勉強不足でフィルタをかけるタイミングがわかりません↓
配列に格納したデータをFFTした後フィルタをかけIFFTするのか、生のデータにかけるのか…
ちなみにFIRフィルタをかけるつもりですが、係数の計算方法がわからないので、
http://momiji.i.ishikawa-nct.ac.jp/dfdesign/fir/mado.shtml
のサイトで得られる係数を利用したいと思っています。
プログラムをttp://a-draw.com/uploader/upload.cgi?mode=dl&file=6970に挙げました。passはメル欄です。
readmeではメールアドレスにアドバイスをくださいと書いておりますが、こちらのスレに書いてくださってかまいません。
どうぞご鞭撻のほどよろしくお願いします。m(_ _)m
0374デフォルトの名無しさん
2008/11/24(月) 21:16:19http://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%83%95%E3%82%B2%E3%83%BC%E3%83%A0
まぁ、そういうことでおじゃるな。
0375デフォルトの名無しさん
2008/11/24(月) 21:19:34[2] 問題文: n×n行列Aが与えられたとき、逆行列A-1を計算するプログラムを作成しなさい。
[3] 環境
[3.1] OS: LINUX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 12月1日
n×n行列Aが与えられたとき、逆行列A-1を計算するプログラムを作成しなさい。
よろしくお願いします。
0376デフォルトの名無しさん
2008/11/24(月) 21:59:16多重ループでやな感じだけどドゾー
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8098.txt
0377デフォルトの名無しさん
2008/11/24(月) 22:46:36適当なアレス長のデータじゃねーよ
バイナリ固定長300バイトのデータじゃなきゃ動作しない
面倒だが作ったぞ
0378デフォルトの名無しさん
2008/11/24(月) 22:54:500379デフォルトの名無しさん
2008/11/24(月) 22:55:02> 維持
> 生きているセルの周囲に2つか3つの生きているセルがあれば次の世代でも生き残る。
この通りなら、1以下、4以上の生(真)のセルが隣接する場合は、死滅?
その場合、>>335 の訳は間違い?それとも、一般的なルールではない独自のもの?
0380さそり
2008/11/24(月) 23:12:05制限つきで返されまして......
なにとぞご協力お願いします。。
[1] プログラミング(応用)
[2] ファイルを読み込みダブルクオートくくりの文字列を条件付で取り出してファイルに書き込む
[3] 環境
[3.1] OS: UNIX
[3.2] 開発環境:
[3.3] 言語:C言語
[4]今週中
[5]制限なし
テキストファイルの中身が
下記の内容だとします。
GET_A="GET_B"+"GET_C"
GET_B="GET_A"*"GET_C"
このファイル内容を読み込んで.fファイルに書き込む内容は左辺の値と,右辺のダブルクオートで囲まれた文字列です。
しかも制限がありまして重複した値を2度書き込まないので従って書き込む内容は書式付で
#define GET_A
#define GET_B
#define GET_C
です。上記のファイルの中身は不規則で一定ではありません。左辺の値はダブルクオートでくくられていないこと......。
すごく困っていましてお力お借りしたいと思います。よろしくお願いします。
0381デフォルトの名無しさん
2008/11/24(月) 23:13:10[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8099.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:明日
お願いします。
0382381
2008/11/24(月) 23:20:120383デフォルトの名無しさん
2008/11/24(月) 23:48:27[2] 問題文(含コード&リンク):
次の二つの関数を作成しなさい。
(1) int min_intarray(int data[ ], int n)
この関数は,要素がn 個の配列data の中の最小の値を返すものである。
(2) void print_intarray(int data[ ], int n)
この関数は,要素がn個の配列data のすべての要素を横に並べて出力するものである。
その上で,次のプログラム(main 関数)を利用して,作成した関数が正しく動作しているか
確認しなさい。
int main(void)
{
int a[5] = {3, 5, 1, 2, 4};
int b[10] = {6, 4, 2, 5, 8, -2, 7, 0, 1, 9};
int c[4] = {-2, -3, -4, -1};
printf("%d :", min_intarray(a, 5));
print_intarray(a, 5);
printf("%d :", min_intarray(b, 10));
print_intarray(b, 10);
x
y
z
printf("%d :", min_intarray(c, 4));
print_intarray(c, 4);
return 0;
}
0384デフォルトの名無しさん
2008/11/24(月) 23:49:03[3] 環境
[3.1] OS:Win
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限:11/26
よろしくお願いします。
0385デフォルトの名無しさん
2008/11/24(月) 23:52:35[2] 問題文(含コード&リンク):
関数double area(double w, double h)を作成しなさい。
この関数は,w を長方形の幅,h を長方形の高さと見なして,
その長方形の面積を計算する。ただし,w 又はh が負の値の場合は,
長方形の面積はゼロとすることにする。
関数を定義した上で,次のようなプログラム(main 関数)を作成しなさい。
(1) 四つの実数値width1, height1, width2, height2 を読み込む
(一つ目の長方形の幅,一つ目の長方形の高さ,二つ目の長方形の幅,二つ目の長方形の高さを意味する)。
二つの長方形の面積を出力し,さらに,一つ目の長方形と,
二つ目の長方形とどちらが大きいのか,又は同じ大きさなのかを出力しなさい。
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C言語
度々すみません。
よろしくお願いします。
0386デフォルトの名無しさん
2008/11/25(火) 00:01:00#include <limits.h>
int min_intarray(int data[], int n)
{
int i;
int max = INT_MIN;
for (i = 0; i < n; i++)
{
if (max < data[i])
max = data[i];
}
return max;
}
void print_intarray(int data[], int n)
{
int i;
for (i = 0; i < n; i++)
{
printf("%d ", data[i]);
}
printf("\n");
}
>>383
全角空白インデント注意
申し訳ないがVC++は無いので動作未確認超適当
あとxyzって何?
0387デフォルトの名無しさん
2008/11/25(火) 00:03:20>>348 >>349
0388デフォルトの名無しさん
2008/11/25(火) 00:06:47しかも最大と最小間違えて解答してる俺バロスwwww
orz
0389デフォルトの名無しさん
2008/11/25(火) 00:07:42当方の環境は cygwin/WindowsXP, 処理系は 3.4.4 です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8100.txt
0390デフォルトの名無しさん
2008/11/25(火) 00:09:46[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):http://www.jpdo.com/link/1/img/7024.jpg
http://www.jpdo.com/link/1/img/7025.jpg
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 11月25日 20時
[5] その他の制限: 画像のとおりです。
問題ファイルが画像ですが、よろしくお願いします。
0391デフォルトの名無しさん
2008/11/25(火) 00:13:33第八位まで正しいかの確認は真の値との比較でかまわないか?
0392デフォルトの名無しさん
2008/11/25(火) 00:19:16大丈夫です。
問1と問2は別問題として捕らえてもらってかまいません。
0393デフォルトの名無しさん
2008/11/25(火) 00:39:39[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8101.txt
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語:C++
[4] 期限: 11月25日 AM8時
[5]
英語の問題文なのですがよろしくお願い致します。
和訳は苦手なのですが載せたほうがよろしいでしょうか?
0394デフォルトの名無しさん
2008/11/25(火) 00:51:47俺は解かないけど、英語わかんないけどC言語は分かるひとがいる可能性にかけるなら
訳してみたら?w
0395デフォルトの名無しさん
2008/11/25(火) 00:58:260396デフォルトの名無しさん
2008/11/25(火) 01:09:05すんでいます。
>>389
0397デフォルトの名無しさん
2008/11/25(火) 01:12:370398デフォルトの名無しさん
2008/11/25(火) 01:29:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8102.txt
0399デフォルトの名無しさん
2008/11/25(火) 01:32:52おなかすいた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8103.txt
0400デフォルトの名無しさん
2008/11/25(火) 01:43:38もう出ちゃったけど、一応解いたからうp
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8104.cpp
ちゃんと問題読み取れてるか分かんねー
0401デフォルトの名無しさん
2008/11/25(火) 01:46:23ありがとうございます
助かりました!
>>387
すみません…次からは確認します
ありがとうございました!
0402デフォルトの名無しさん
2008/11/25(火) 02:13:09単方向ができるなら、双方向もできるだろ。
↓こんな感じで次prevにアドレス放り込めるから、あとはnextを扱う時と同じ感覚で操作すれば良いよ。
AddressList *AddList=(任意のアドレスリストへのポインタ);
AddList->next->prev=AddList;
ちなみに消す場合は、
AddressList *AddList=(消されるアドレスリストへのポインタ)
AddList->prev->next=AddList->next;
AddList->next->prev=AddList->prev;
として自分をリストから外せばよい。
追加の場合は逆に前後のnextとprevを自分のnextとprevに代入した後、
前後のnextとprevを自分のアドレスで上書きすれば良い。
あとはがんばれ
0403デフォルトの名無しさん
2008/11/25(火) 03:00:24>>351のプログラムを実際に双方向に変更したソースを知りたいのですがわkりませんかね。
0404デフォルトの名無しさん
2008/11/25(火) 04:07:59返信遅れてすいません。ありがとうございました。
本当に助かりました。
<<400
返信遅れすいません。わざわざありがとうございます。
お手数おかけしました。
0405デフォルトの名無しさん
2008/11/25(火) 04:38:260406デフォルトの名無しさん
2008/11/25(火) 08:33:17ありがとうございます!
助かりました!
0407デフォルトの名無しさん
2008/11/25(火) 08:43:55>>139
期限が迫ってるのでお願いします
できる限り元のプログラムを基に作成してください
0408デフォルトの名無しさん
2008/11/25(火) 10:34:54普通のテキストデータならまだしもなんだってバイナリデータのサンプルよこすんだYO!
バイナリデータ用意するのに大半を費やした。はじめからうpしる!
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8105.txt
バイナリデータ(iodata2-1)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8106.zip
0409デフォルトの名無しさん
2008/11/25(火) 10:45:23問題のtxt読んだら単方向のプログラムのinsertとdeleteがリストの
先頭のアドレス返すようになってる
番兵かポインタのポインタ使わないいけないみたい
0410デフォルトの名無しさん
2008/11/25(火) 10:46:08[2] 問題文(含コード&リンク): 次のようなプログラムを作りなさい。
二つの文字列を入力する。
入力する文字列は小文字アルファベットのみの,最大長20と仮定してよい。
入力した二つの文字列のうちどちらが長いか、また辞書順でどちらが先なのかを出力しなさい。
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ:VisualC++6.0
[3.3] 言語 :C
[4]期限:特になし
考えているうちにどんどんわからなくなってきました…
良ければよろしくお願いします。
0411デフォルトの名無しさん
2008/11/25(火) 10:46:33#include <stdio.h>
int main(void) {
int i, a_jisu, b_jisu, c_jisu;
double a[50], b[50], c[50];
for(i = 0; i < 50; i++) a[i] = b[i] = c[i] = 0.0;
printf("多項式Aの次数: ");
scanf("%d", &a_jisu);
for(i = a_jisu; i >= 0; i--) {
printf("多項式Aの%d次の係数: ", i);
scanf("%lf", &a[i]);
}
printf("多項式Bの次数: ");
scanf("%d", &b_jisu);
for(i = b_jisu; i >= 0; i--) {
printf("多項式Bの%d次の係数: ", i);
scanf("%lf", &b[i]);
}
printf("A + B = ");
if (a_jisu > b_jisu) c_jisu = a_jisu;
else c_jisu = b_jisu;
for(i = c_jisu; i >= 0; i--) c[i] = a[i] + b[i];
for(i = c_jisu; i > 0; i--) printf("%lg x^%d + ", c[i], i);
printf("%lg\n", c[0]);
return 0;
}
0412デフォルトの名無しさん
2008/11/25(火) 10:55:23#include <stdio.h>
#include <string.h>
int main(void) {
char a[21], b[21];
int alen, blen, cmp;
printf("文字列A: ");
scanf("%20s", a);
printf("文字列B: ");
scanf("%20s", b);
alen = strlen(a); blen = strlen(b);
if (alen > blen) printf("Aの方が長い\n");
else if (blen > alen) printf("Bの方が長い\n");
else printf("同じ長さ\n");
cmp = strcmp(a, b);
if (cmp < 0) printf("辞書順ではAの方が先\n");
else if (cmp > 0) printf("辞書順ではBの方が先\n");
else printf("同じ文字列です\n");
return 0;
}
0413デフォルトの名無しさん
2008/11/25(火) 11:15:080414デフォルトの名無しさん
2008/11/25(火) 11:22:29どうもありがとうございました
0415 ◆obaRHR1OMI
2008/11/25(火) 13:26:02[2] 問題文:整数を標準入力から次々と入力し,入力が尽きたら,入力と逆順に出力するプログラムを書け。
ただし、以下の方法で実装すること
1. 配列をスタックとして使って実装せよ。
2. 単方向線形リストをスタックとして使って実装せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C
[4] 期限: 無期限
[5] その他の制限:なし
答えは長いと思うのでヒントを下さい!
struct cell {
struct cell *next;
int data;
};
struct tlist {
struct cell *head, *tail;
}
を使えばいいんですよね…?
0416デフォルトの名無しさん
2008/11/25(火) 13:33:36大学?専門?
0417 ◆obaRHR1OMI
2008/11/25(火) 13:52:40大学です
0418デフォルトの名無しさん
2008/11/25(火) 14:22:11#include<stdio.h>
int main(){
int i,n,a[64];
for(i=0;i<64&&scanf("%d",&n)==1;++i)a[i]=n;
for(;i>0;)printf("%d\n",a[--i]);
}
0419 ◆obaRHR1OMI
2008/11/25(火) 14:39:51有難うございます!
できました
0420 ◆obaRHR1OMI
2008/11/25(火) 15:04:38[2] 問題文:整数を標準入力から次々と入力し、入力が尽きたら、まず入力した整数のうち偶数だけを入力の順に出力し、
次に奇数だけを入力と逆順に出力するプログラムを書け。ただし、以下の方法で実装すること
1. 配列をスタックとして使って実装せよ。
2. 単方向線形リストをスタックとして使って実装せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C
[4] 期限: 無期限
[5] その他の制限:なし
>>415です
もう訳が分からなくなりました
0421 ◆obaRHR1OMI
2008/11/25(火) 15:06:45誤投
スタックとキューを使うそうです
0422381
2008/11/25(火) 15:17:08ありがとうございます。
ただ、関数はまだ習ってないんです…
0423デフォルトの名無しさん
2008/11/25(火) 17:37:20[2] 問題文 ★(1),(2)のみでも大丈夫です。
(1) "2進法"⇔"10進法"変換プログラムをつくる
例【10進法モード】 54(10) → 110110(2)
【2進法モード】 1011(2) → 11(10)
(2) "16進法⇔"10進法"変換プログラムをつくる
(3) "x進法⇔"10進法"変換プログラムをつくる
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio .NET
[3.3] 言語: C
[4] 期限: 11/27
[5] その他の制限
・【printf,scanf,if,while,配列】以外は使用しない(forなども×)
・void main() で開始
宜しくお願い致します。
0424デフォルトの名無しさん
2008/11/25(火) 19:31:04[2] 次に書き込みます
[3] 環境
[3.1]Windows
[3.2] Visual Studio
[3.3] C言語
[4] 11/26〜27
[5] printf,scanf,if,while,for,自作関数、配列は大丈夫です。ほか上級的なことさえなければたぶん 。
たくさんあってお手上げ状態です・・・
0425デフォルトの名無しさん
2008/11/25(火) 19:33:20値を-20 から20 まで1 刻みで変化し、各値の10 進数、16 進数、8 進数、2 進数を表示しなさい。
2 進数の表示は以下のサブ関数を参考にします。プログラムと結果を提出します。
void sori(int a)
{ int i,wc;
for ( i=31; i>=0; i-- ) {
wc=(a>>i ) & 0x01;
if ( i%4==3 ) printf(" ");
printf("%1d",wc);
}
printf("\n");
return;
}
2.
以下の処理はmain 関数、サブ関数で作成します。プログラムと結果を提出します。
�@.数値(n)を1 つ入力し、各桁の和を求めなさい。入力、処理は繰り返す。入力した値も表示する
11111→5
123456→21
12121212→12
�A.数値(n)を反転した値を表示しなさい。
11111→11111
123456→654321
12121212→21212121
0426デフォルトの名無しさん
2008/11/25(火) 19:35:022 つの整数値 m、n を入力する。
入力は繰り返し、m=n=0 の時、処理を終了する。
入力した整数を、m≦n になるように処理し、その値を元に
m+(m+1)+ (m+2)+ (m+3)+ (m+4)+ (m+5)+ (m+6)+ (m+7)+・・・・・・n=?を求め表示する。
4.
2次方程式ax2+bx+c=0 の解を求めるプログラムを作成しなさい。a、b、c の値を入力する
計算結果は必ず5 種類表示すること。プログラムと結果を提出します。入力した値も表示します。
a=b=c=0 の場合、処理を終了する。
a=b=0、c≠0 の場合は、「不能」と表示する。
a=0、b≠0 の場合は、「一次方程式」と解を表示する
判別式がD<0 の場合、「虚解」と表示する。
0427デフォルトの名無しさん
2008/11/25(火) 19:37:322つの実数値xとyの差の絶対値を計算して結果を返す関数 sabun(x, y) を作成し、
main 関数から呼び出すプログラムを作る。なお、関数sabunでは、実数値x
とyを引数とし、その差の絶対値を戻り値として返す。また、実数値xとyは、main
関数中でキーボードから読み込む
6.
入力された文字がアルファベット大文字ならば小文字に、小文字ならば大文字に変換するプログラムを作成する。
-大文字:0x41(A)〜0x5A(Z)
-小文字:0x61(a)〜0x7A(z)
・それぞれの文字コードの差が一定な事を利用する
0428デフォルトの名無しさん
2008/11/25(火) 19:39:295、6は知りません
0429デフォルトの名無しさん
2008/11/25(火) 19:49:191、2までです
0430デフォルトの名無しさん
2008/11/25(火) 19:55:390431デフォルトの名無しさん
2008/11/25(火) 19:56:100までです
0432デフォルトの名無しさん
2008/11/25(火) 21:08:32[2] 問題文(含コード&リンク):
int main(void){
char p[] = "ABCD.EF.GHIJ";
char *tp;
tpok = strtok( str, " ." );
puts(tpok);
while (tpok != NULL){
tpok = strtok(NULL," .");
if (tpok != NULL) puts(tpok);
}
return 0;
}
-----------------------------------
このプログラムは与えられた文字列を" . "ごとに
分割して表示するプログラムである。
strtokは第1引数に文字列定数を渡すとエラーが発生する。
char p[]
を char *p
にして" . "で分割するには以下のプログラムをどう書き換えたらいいか。
書き換えられない場合はその理由を述べよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年11月26日12:00まで
[5] その他の制限: strtokは必ず使うこと
0433デフォルトの名無しさん
2008/11/25(火) 21:14:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8107.c
0434デフォルトの名無しさん
2008/11/25(火) 21:44:25単方向線形リスト
#include<stdio.h>
#include<stdlib.h>
struct cell {
struct cell *next;
int data;
};
int main() {
struct cell *head = NULL, *t;
int n;
while (scanf("%d", &n) == 1) {
t = (struct cell*)malloc(sizeof(struct cell));
t->data = n;
t->next = head;
head = t;
}
while (head) {
t = head;
printf("%d\n", t->data);
head = t->next;
free(t);
}
return 0;
}
0435デフォルトの名無しさん
2008/11/25(火) 21:57:59#include<stdio.h>
void sori(int a)
{
int i,wc;
for ( i=31; i>=0; i-- ) {
wc=(a>>i ) & 0x01;
if ( i%4==3 ) printf(" ");
printf("%1d",wc);
}
return;
}
int main()
{
int i;
for (i = -20; i <= 20; i ++)
{
printf("%3d = %08Xh = %011oo = ", i, i, i);
sori(i);
printf("b\n");
}
return 0;
}
0436デフォルトの名無しさん
2008/11/25(火) 22:04:17#include<stdio.h>
int sum_of_digits(int n) {
int s;
for (s = 0; n; n /= 10) s += n%10;
return s;
}
int reverse_digits(int n) {
int r;
for (r = 0; n; n /= 10) r = r*10 + n%10;
return r;
}
int main() {
int n;
while (scanf("%d", &n) == 1) {
printf("%d sum=%d reverse=%d\n", n, sum_of_digits(n), reverse_digits(n));
}
return 0;
}
0437デフォルトの名無しさん
2008/11/25(火) 22:14:15#include<stdio.h>
void disp(int m, int n) {
printf("m=%d, n=%d, mからnまでの和は%d\n", m, n, (n+m)*(n-m+1)/2);
}
int main() {
int m, n;
while (1) {
printf("m="); scanf("%d", &m);
printf("n="); scanf("%d", &n);
if (m==0 && n==0) break;
if (m <= n) disp(m, n);
else printf("mとnを入れ替えますよ。\n"), disp(n, m);
}
return 0;
}
0438デフォルトの名無しさん
2008/11/25(火) 22:22:21[2] 問題文(含コード&リンク): http://www3.uploda.org/uporg1811504.pdf.html
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年12月20日23時59分まで
[5] その他の制限: 大学でやっている程度で、効率よくやる方法があればお願いしたいです。
0439デフォルトの名無しさん
2008/11/25(火) 22:30:15#include<stdio.h>
#include<math.h>
int main() {
double a, b, c, D;
while (1) {
printf("a="); scanf("%lf", &a);
printf("b="); scanf("%lf", &b);
printf("c="); scanf("%lf", &c);
if (a==0 && b==0 && c==0) break;
printf("%gx^2%+gx%+g=0\n", a, b, c);
if (a==0 && b==0) printf("不能\n");
else if (a==0) printf("一次方程式\nx=%g\n", -c/b);
else if ((D = b*b-4*a*c) < 0) printf("虚解\n");
else printf("x=%g, %g\n", (-b+sqrt(D))/(2*a), (-b-sqrt(D))/(2*a));
printf("\n");
}
return 0;
}
0440デフォルトの名無しさん
2008/11/25(火) 22:33:40#include<stdio.h>
#include<math.h>
double sabun(double x, double y) {
return fabs(x-y);
}
int main() {
double x, y;
printf("x="); scanf("%lf", &x);
printf("y="); scanf("%lf", &y);
printf("%g\n", sabun(x, y));
return 0;
}
0441デフォルトの名無しさん
2008/11/25(火) 22:36:15#include<stdio.h>
#include<ctype.h>
char flip_case(char c) {
if (isupper(c)) return tolower(c);
if (islower(c)) return toupper(c);
return c;
}
int main() {
char c;
scanf("%c", &c);
printf("%c\n", flip_case(c));
return 0;
}
0442381
2008/11/25(火) 22:51:46Nの算出の所がうまくいきません。
どこを直せばいいのでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8108.txt
0443デフォルトの名無しさん
2008/11/25(火) 22:53:15> 2次方程式ax2+bx+c=0 の解を求めるプログラムを作成しなさい
って問題で、a=0のときを考慮するのは、問題として不適切。
本来なら、条件として a≠0が必要。どんな学校だ?
0444デフォルトの名無しさん
2008/11/25(火) 22:56:02a に 0が入力されたら・・・・とでも読み替えといてください
0445デフォルトの名無しさん
2008/11/25(火) 23:12:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0446デフォルトの名無しさん
2008/11/25(火) 23:15:00sum2 += 1/(i*i);
↓
sum2 += 1/((double)i*i);
0447デフォルトの名無しさん
2008/11/25(火) 23:32:455と6は嵐なんですいません
本当に助かりました!
0448デフォルトの名無しさん
2008/11/26(水) 00:00:07[2] 問題文(含コード&リンク):
CRCを計算して符号に付加する関数crcを作成せよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8110.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々) WindowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005
[3.3] 言語: C
[4] 期限: 11/28
[5] その他の制限: 問題文に記載
よろしくお願いします
0449デフォルトの名無しさん
2008/11/26(水) 00:12:03こちらってどちら?
もしかしてロダで単発スレたてたやつ?
0450デフォルトの名無しさん
2008/11/26(水) 00:16:51そうです。不適切でしたら申し訳ございません。
0451デフォルトの名無しさん
2008/11/26(水) 00:22:43[2] 問題文(含コード&リンク):
トランプの束を正確に2等分し、それぞれの束を1枚ずつ完全に交互に噛み合わせて混ぜる
ことを、パーフェクト・シャッフルと呼ぶ。
ジョーカーを除いた52枚のトランプの束を何回かパーフェクト・シャッフルすると、元
の並びに戻ることが知られている。何回で元に戻るかを求めるプログラムを作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C/C++どちらでも可
[4] 期限: 無期限
[5] その他の制限: 特にありません。
よろしくお願いします。
0452デフォルトの名無しさん
2008/11/26(水) 01:19:24. -‐ ´ ` ´ ヽ \ \
./ , , , 、 、 、 .ヽ
./ /, '/ ./ i | .l l ! .i ヽヽ l.
i /〃 .i {_|..{ |l | ‐l-l、! i i l. l
!' .{i ! .! !'N_ヽ ! .ハ'_L.l_|ソ|' ノ l. |
! l { .lヽハli; `´` {'f::iヽレ | r、! l
>ゝヽ,! lt} 、 l,t:ソ/,' .l |ソ.| ! / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
l { l ! ‐ ,' / !ノ ! l < crc関数の戻り値は11010110111011じゃない?
!,|ヽL.|.i 、 _. i_.レ !' | | } \__________
`ゝ`| | |.`l ー‐ '.ノ/ .ノl l ノノ
! ! .レ'7ー=ー// /ヽ,__l_∠.._
,!. ,' .ノ { ``´// / \< . 〉
/,' ,' / l. // /__...- ニヽ. `/
〉/./ /ヽ.、 |/// /=‐ ̄, ' `}>'、
〈/ /〃 `ソ// ,' ./ |ヽ\\
/ /〃 o/.i. l { / i i |ヽヽ.\\
{ { {{ i .lL|__| .〈 .l l |.} }ヽr‐〜'
0453デフォルトの名無しさん
2008/11/26(水) 01:21:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8111.c
前半と後半に分けて、もう1つの配列に交互に先頭から入れてみた。
52枚のカードを0〜51の数字に置き換えて表現。
0454デフォルトの名無しさん
2008/11/26(水) 01:59:42[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8112.txt
実行したら、計算結果:t= 50.000の時、x= 1.659,y= 0.771,v_x= -0.421v_y= 0.407になるように変更して下さい。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: 無期限
0455デフォルトの名無しさん
2008/11/26(水) 02:09:240456デフォルトの名無しさん
2008/11/26(水) 02:25:420457デフォルトの名無しさん
2008/11/26(水) 02:30:02____________
ヾミ || || || || || || || ,l,,l,,l 川〃彡|
V~~''-山┴''''""~ ヾニニ彡| 回答する・・・・・・!
/ 二ー―''二 ヾニニ┤ 回答するが・・・
<'-.,  ̄ ̄ _,,,..-‐、 〉ニニ| 今回 まだ その時と場所の
/"''-ニ,‐l l`__ニ-‐'''""` /ニ二| 指定まではしていない
| ===、! `=====、 l =lべ=|
. | `ー゚‐'/ `ー‐゚―' l.=lへ|~| そのことを
|`ー‐/ `ー―― H<,〉|=| どうか諸君らも
| / 、 l|__ノー| 思い出していただきたい
. | /`ー ~ ′ \ .|ヾ.ニ|ヽ
|l 下王l王l王l王lヲ| | ヾ_,| \ つまり・・・・
. | ≡ | `l \__ 我々がその気になれば
!、 _,,..-'′ /l | ~''' 回答の受け渡しは
‐''" ̄| `iー-..,,,_,,,,,....-‐'''" / | | 10年後 20年後ということも
-―| |\ / | | 可能だろう・・・・・・・・・・ということ・・・・!
| | \ / | |
0458454
2008/11/26(水) 02:36:00できれば今すぐお願いします。
0459デフォルトの名無しさん
2008/11/26(水) 02:36:210460454
2008/11/26(水) 02:39:30違いますよ
0461デフォルトの名無しさん
2008/11/26(水) 02:46:080462デフォルトの名無しさん
2008/11/26(水) 02:47:56お前まだ諦めてなかったんだな
0463454
2008/11/26(水) 02:49:010464454
2008/11/26(水) 02:50:16よくわかりましたね。
0465デフォルトの名無しさん
2008/11/26(水) 02:51:06大本の問題がなにかを聞いてくるのが一番早いと思うよ。
0466454
2008/11/26(水) 02:53:31分かりました。もう一度聞いてみます。
0467デフォルトの名無しさん
2008/11/26(水) 03:22:090468454
2008/11/26(水) 03:38:00そんなかんじです
0469デフォルトの名無しさん
2008/11/26(水) 06:51:21いいえ。a == 0 のときなども含めて「二次方程式を解く」と表現して問題はありません。昔は高校の数�Tではそうだったんですが。
これが、ゆ と り 教 育なんですね。驚きました。
0470デフォルトの名無しさん
2008/11/26(水) 06:56:30バカですか?それを2次方程式として扱うこと事態が間違っているんだが?w
二”次”が読めませんか?a=0のときの条件も考慮したプログラムとして
問題は出ているが、x^2の係数が0の場合2次方程式とは言わないのが一般的。
どこの低レベルの高校でちゅかぁ〜?都道府県名と市町村名を述べよw
0471デフォルトの名無しさん
2008/11/26(水) 06:58:34なお、例の2次方程式の解の公式は、aの係数が0だった場合、成り立たないことくらい
分母の2aで一目瞭然ですね。0での除算は考えない、さらに、あの解の公式を導く過程でも
x^2が0でない、存在していることが前提で導かれており、平方根も出ていますからねw
0472どこの高校と大学?に通っているか分からない人の意見
2008/11/26(水) 07:01:06>>443
いいえ。a == 0 のときなども含めて「二次方程式を解く」と表現して問題はありません。昔は高校の数�Tではそうだったんですが。
これが、ゆ と り 教 育なんですね。驚きました。
> 昔は高校の数�Tでは
いつの時代なんだろう・・・遡っても、たぶんそれが不適切だったという説明で終わるだろうね・・・
これが 時 代 遅 れ なんですね。近年の科学技術の発展を考慮したら、
別に何十年も前の教育なんて、そんなもんでも驚きませんが、現代においては
a=0の場合、敢えて説明をつけるでしょうね・・・
0473デフォルトの名無しさん
2008/11/26(水) 07:10:18> a=0、b≠0 の場合は、「一次方程式」と解を表示する
と、敢えて一次方程式と述べているしね。それなのに、a=0でも
>>469
> いいえ。a == 0 のときなども含めて「二次方程式を解く」と表現して問題はありません。
なんて敢えて間違えたことを指摘して、相手を罵倒するなんて、
精神レベルも低そうだな、こいつ・・・
さらに追い討ち。判別式の中身はルートで囲まれている。すなわち・・・
これまた、一次では使われるものではないね。条件で判定して
敢えて一次の場合は二次方程式の解の公式などを使わずに導くが、
まぁ、なんだ、x^2の係数が0でも二次方程式を解くなんて、口が裂けても言えませんw
そういえば、かなり前にも、このスレでa=0でも成り立たせるために、
どうとか訳の分からん持論を展開した奴がいたが、解の方程式の分母で
やはり見事に論破されてたな。そう、x^2の係数が0では2次方程式としては
成り立たないんだよw
そういう場合、どうしてx^2も考慮した数式で演算するのだろうか?
プログラミングに於いて、適切に条件を指定するのは重要。
なのに、例外があっても合わないやり方で押し通そうなんて、
エラーやバグを態と導くおつもりですか?
0474デフォルトの名無しさん
2008/11/26(水) 07:14:23数学的に正しいかどうかとかは、そういうスレでやれ
仕様を満たしたうえでバグがあるなら、そう書けばいいし
0475デフォルトの名無しさん
2008/11/26(水) 07:31:30x^2の係数が0である場合、xがどの値をとっても
bx+c=0にしかならないだろ。これを2次方程式とは言わないの。
あと、a≠0であれば、b=0 , c=0 でもax^2だけでも2次方程式は成り立つの、分かる?
本来重要とされる係数を無視しないでくれ。
0476デフォルトの名無しさん
2008/11/26(水) 07:34:46これを修正せよだったりしたら涙目
0477デフォルトの名無しさん
2008/11/26(水) 07:55:15[2] 問題文(含コード&リンク):
関数mainにおいて,下記のような文字列を定義する.
char *name[] = {"Wada", "Kanto", "Matsuda", "Kudo", "Sato", "Iizumi", "Sugawara", NULL};
上記の文字列をアルファベット順に並べ替える関数を作成し,その結果を表示するプログラムを作成せよ.
ヒント:文字列の比較のために関数strcmpを使用する.次の2行をそれぞれ適切な場所に入れること。
#include <string.h>
int strcmp(const char *str1,const char *str2);
【戻り値】str1 > str2 ならば正値(1)
str1 = str2 ならば0
str1 < str2 ならば負値(-1)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc(できればVisual C++でも動くように)
[3.3] 言語:C
[4] 期限:2008年11月27日10:30まで
[5] その他の制限:まだ初歩の段階です。やっとポインタの基礎を習い終わったところです。
0478デフォルトの名無しさん
2008/11/26(水) 08:01:270479デフォルトの名無しさん
2008/11/26(水) 08:13:16外部から入力される値をチェックするのは基本だろ
a=0は不正な入力なのでエラーを表示して終了で問題ない
0480デフォルトの名無しさん
2008/11/26(水) 08:46:07#include <string.h>
#include <stdio.h>
void sortName(char** name){
char** pSrc = name;
while(*(pSrc+1) != NULL){
char** pDst = pSrc + 1;
while(*pDst != NULL){
if(strcmp(*pSrc, *pDst) > 0){
char* tmp = *pSrc;
*pSrc = *pDst;
*pDst = tmp;}
++pDst;}
++pSrc;}}
int main(void){
char* name[] = {"Wada", "Kanto", "Matsuda", "Kudo", "Sato", "Iizumi", "Sugawara", NULL}; char** ptr = name;
sortName(name);
while(*ptr != NULL){
printf("%s\n", *ptr++);}
return 0;}
0481デフォルトの名無しさん
2008/11/26(水) 09:34:14[2] 問題文 以下のプログラムを配列を用いない形で書く(iと直前のi-1のみを利用して
計算するようにする。)
#include <stdio.h>
#define MAX 100
int main(void)
{
int a,b,i,n;
int an[MAX],bn[MAX];
printf("a の初期値を入力 > ");
scanf("%d",&a);
printf("b の初期値を入力 > ");
scanf("%d",&b);
printf("項数 n を入力 > ");
scanf("%d",&n);
for(i=1,an[0]=a,bn[0]=b; i<n; i++) {
an[i]=2*an[i-1]-bn[i-1];
bn[i]=2*bn[i-1]-an[i-1];
}
for(i=0; i<n; i++) printf("%d ",an[i]);
puts("");
for(i=0; i<n; i++) printf("%d ",bn[i]);
return 0;
}
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:
[5] その他の制限 よろしくおねがいします。
0482デフォルトの名無しさん
2008/11/26(水) 09:41:06数学的には、二次以上の係数が0の場合、一次以下の方程式と呼ぶ。
ここは計算機科学のスレだと思うが....
0483デフォルトの名無しさん
2008/11/26(水) 09:56:380484デフォルトの名無しさん
2008/11/26(水) 10:01:210485デフォルトの名無しさん
2008/11/26(水) 10:37:50[2] 問題文(含コード&リンク):
strlen(), strcmp()と同じ動きをする関数mystrlen(), mystrcmp()を、ポインタを使って作成せよ。
作成したら→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8113.c
のmain()関数を使って動作を検証。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今日の15時まで
[5] その他の制限: ポインタを使って作成した関数で↑のリンクのプログラムを書き直して
もらえると助かります。
よろしくお願いします
0486デフォルトの名無しさん
2008/11/26(水) 10:40:14#include <stdio.h>
#define MAX 100
int main(void) {
int a, b, a_next, b_next, i, n;
printf("a の初期値を入力 > ");
scanf("%d", &a);
printf("b の初期値を入力 > ");
scanf("%d", &b);
printf("項数 n を入力 > ");
scanf("%d", &n);
printf("%d ", a);
for(i = 1; i < n; i++) {
a_next = 2 * a - b;
b_next = 2 * b - a;
a = a_next;
b = b_next;
printf("%d ", a);
}
puts("");
printf("%d ", b);
for(i = 1; i < n; i++) {
a_next = 2 * a - b;
b_next = 2 * b - a;
a = a_next;
b = b_next;
printf("%d ", b);
}
return 0;
}
0487デフォルトの名無しさん
2008/11/26(水) 10:47:08size_t mystrlen(const char *s) {
size_t len = 0;
while(*s++) len++;
return len;
}
int mystrcmp(const char *s1, const char *s2) {
while(*s1 && *s1 == *s2) {
s1++; s2++;
}
return *s1 - *s2;
}
0488デフォルトの名無しさん
2008/11/26(水) 11:01:27表示について元の形を保つのは無意味と思ったので勝手に書き換えてみた
#include <stdio.h>
int main(void)
{
int i, n, an, bn;
printf("a の初期値を入力 > ");
scanf("%d",&an);
printf("b の初期値を入力 > ");
scanf("%d",&bn);
printf("項数 n を入力 > ");
scanf("%d",&n);
printf("n=0, a=%d, b=%d\n", an, bn);
for(i=1; i<n; i++)
{
int an_ = an;
int bn_ = bn;
an = 2 * an_ - bn_;
bn = 2 * bn_ - an_;
printf("n=%d, a=%d, b=%d\n", i, an, bn);
}
return 0;
}
0489デフォルトの名無しさん
2008/11/26(水) 11:08:30ありがとうございます。
0490デフォルトの名無しさん
2008/11/26(水) 11:40:00さらに広義に、雄、雌をすべての生物を対象にして定義したら
雄なのに子供を産む種もあるみたいな。それを言い出したら
係数が0ということで、3次、4次として1次の係数が0以外の
方程式でも、何とでも言える罠。そういうことではなく、
解の公式はa≠0でなければ、導けないので、矛盾が生じるため
条件や定義をはっきりさせているわけで。
0491デフォルトの名無しさん
2008/11/26(水) 11:49:57さて、導く必要があるんだろうか?思いついたものを言えば、それが答えさ。
実に詰まらん。プログラミングの意味すらなくなる。
0492485
2008/11/26(水) 12:20:07ありがとうございます。
size-t型はまだ習ってないので、良ろしければもう少し単純なプログラムでお願いできますか?
初めの制限に書いておくべきでしたが、ポインタも基礎、配列や仮引数としての
ポインタ、多重間接参照を習ったあたりでした。申し訳ないです。
0493デフォルトの名無しさん
2008/11/26(水) 12:22:49size_tは全てintに差し替えとけ
とりあえずそれで動くから
0494デフォルトの名無しさん
2008/11/26(水) 12:23:43[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8114.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年11月27日23:59
[5] その他の制限:
よろしくお願いします
0495デフォルトの名無しさん
2008/11/26(水) 13:14:49http://mamono.2ch.net/test/read.cgi/newsplus/1227662275/
この様に、あれこれ議論してたらしょんねぇべ。とりわけ、条件を指定して
そういう場合はこうだと導けられれば良いだがや。な?
a=0でも2次方程式っつーなら、b=0の場合、c=0でなきゃ成り立たないどころか
そもそも、何について解を求める式だったか、忘れてんべw
んだがや、c=0っちゅーならbx=0、すわなつbがなんであろうがxは0だぎゃ。
ほんだら、c=0、b=0、a=0の場合、xはどんな値であろうが成り立つんべ。
だから無限さ存在すんだと。おかしいべ?そもそも、=0になるときのxを求めるのが
本題だったんでねが?
0496デフォルトの名無しさん
2008/11/26(水) 13:15:070497デフォルトの名無しさん
2008/11/26(水) 13:16:35わかりました。どうもありがとうございました!
0498デフォルトの名無しさん
2008/11/26(水) 13:17:28むしろヒントが謎
0499デフォルトの名無しさん
2008/11/26(水) 13:19:28そうだっぺ?もちっと頭使えや、な?夕食のお買い物をしに行ったのに、
いつの間にか、手持ちのお金で買えるものは何か?なんて考えてっと、
飯が食えずに時間だけが過ぎ去るぞ?
0500デフォルトの名無しさん
2008/11/26(水) 13:24:12文字比較をするのに strcmp 使え
string.h インクルード汁 そして strcmp 呼び出せ
と読んだ
0501デフォルトの名無しさん
2008/11/26(水) 14:47:14[2] 問題文(含コード&リンク):
四人の学生のテストにおける得点を読み込み、その平均点を計算して
出力するプログラムを作成してください。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限:今日の六時
[5] その他の制限:
型の変換で小数点まで出るようにせよ
scanfで点数を入力する
基本的なことしか習ってません
よろしくお願いします
0502デフォルトの名無しさん
2008/11/26(水) 15:26:35#define NINZUU 4
int main(void)
{
int i;
int tensuu[NINZUU];
double heikin = 0;
for (i=0; i<NINZUU; i++)
{
printf("%d人目の点数= ", i+1);
scanf("%d", &tensuu[i]);
}
for (i=0; i<NINZUU; i++)
heikin += tensuu[i];
heikin /= NINZUU;
printf("平均=%f", heikin);
return 0;
}}
>>501
変数名は適当になおして。
0503デフォルトの名無しさん
2008/11/26(水) 15:49:58うわぁ・・・分からないwww
#define習ってないんです
調べたら文字列に関係するって書いてありました
確かfor文も使わなかった気がします
制限に書いとくべきでしたすいません。
キャスト?でdoubleに変換して小数点出すらしいのですが・・・
問題文そのまま乗せましたけど
点数を合計してそれを四で割って平均点だせって問題です
#include<stdio.h>
main(){
int a, b, c, d;
double sum;
scanf("%d%d%d%d", a, b, c, d);
sum = (a+b+c+d)/(double)4
printf("%d\n", sum):
0504デフォルトの名無しさん
2008/11/26(水) 15:50:44自分で考えたのがこれなんですが・・・
回答を書いてもらえるか、もしくは手直しお願いします
0505デフォルトの名無しさん
2008/11/26(水) 15:53:15printf("%d\n", sum):
を
printf("%f\n", sum):
にしろ
0506デフォルトの名無しさん
2008/11/26(水) 15:53:30最終行
printf("%d\n", sum):
を
printf("%f\n", sum):
へ
0507デフォルトの名無しさん
2008/11/26(水) 15:55:26dだと整数でしたっけ?
あとはOKですか?
なんかキャストとかカッコの入れ方で計算があわないとか教授言ってたけど・・・
これでOK?
0508デフォルトの名無しさん
2008/11/26(水) 15:55:514をdoubleにキャストするのはなんか変
sum = (double)(a+b+c+d)/4.0;
でいいんじゃないかな
0509デフォルトの名無しさん
2008/11/26(水) 15:58:20>>508
了解です
#include<stdio.h>
main(){
int a, b, c, d;
double sum;
scanf("%d%d%d%d", a, b, c, d);
sum = (double)(a+b+c+d)/4
printf("%f\n", sum):
}
で頑張ります
長々とありがとうございました
0510デフォルトの名無しさん
2008/11/26(水) 15:59:29a+b+c+d の演算過程で int のとり得る範囲を突破するわけでもないしね
(a+b+c+d)/(double)4
a+b+c+d の結果は int
次の割り算は int/double で結果はdouble (かつ演算は double/double で評価される)
0511デフォルトの名無しさん
2008/11/26(水) 18:32:31#include <string.h>
#include <stdio.h>
void sortName(char** name){
char** pSrc = name;
while(*(pSrc+1) != NULL){
char** pDst = pSrc + 1;
while(*pDst != NULL){/*
int strcmp(const char *str1,const char *str2);
*/if(strcmp(*pDst, *pDst) > 0){
char* tmp = *pSrc;
*pSrc = *pDst;
*pDst = tmp;}
++pDst;}
++pSrc;}}
int main(void){
char* name[] = {"Wada", "Kanto", "Matsuda", "Kudo", "Sato", "Iizumi", "Sugawara", NULL}; char** ptr = name;
sortName(name);
while(*ptr != NULL){
printf("%s\n", *ptr++);}
return 0;}
0512デフォルトの名無しさん
2008/11/26(水) 19:15:05[2] 問題文(含コード&リンク):
1 円周率 の値を近似式
π=4納{(−1)^n/(2n+1)}×{(1/2)^(2n+1)+(1/3)^(2n+1)}] (0≦n≦100)で
を用いて小数点8ケタまで(3.14159265)正しい値を出力し、そのπを用いて
|(π^2/6)-(1/k^2)|<ε (1≦k≦N)
この不等式を満たす最小の自然数Nを求めるプログラムを作れ。
表示は
Input the volume of error: 0.000001【Enter】
Pi is 3.14159265.
the smallest integer N is .
とする。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年11月29日まで
[5] その他の制限:配列、数学関数は使ってはいけない
よろしくお願いします
0513デフォルトの名無しさん
2008/11/26(水) 19:53:09すでに回答されています。
>>37 >>389
0514デフォルトの名無しさん
2008/11/26(水) 20:04:05[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8115.c
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年11月28日 19時まで
[5] その他の制限:
よろしくお願いします
0515デフォルトの名無しさん
2008/11/26(水) 20:11:28それはそのとおりやねんけど、「方程式をとく」、というのは「あたえられた式を満たす x をもとめる」っちゅうことやから、
係数が文字であたえられたら、係数がどんなばあいにはどう、どんな場合にはどう、と場合わけして的確に記述することが重要やねん。
「すべての実数が与えられた式を満たす」「与えられた式を満たす実数は存在しない」というのも立派な解なんや。
「a=0 のときは二次方程式やない」、と言い切るのは、「方程式をとく」という所作になにがもとめられているかを理解していないのとちゃうか?
今の教程は、言葉尻をとられないようにするあまり無用に親切ではあるのですが、我々理工系に何が求められているか、という観点からすると
かなり歪んだものになっています。
しかし、これは若者には罪はありません。
高等学校の教科書などは早く投げ捨てて、本物の教科書を手にとってください。
手元にあるのは、
ISBN-13: 978-4000051712
ISBN-13: 978-4000050203
です。
0516デフォルトの名無しさん
2008/11/26(水) 20:25:54何処まで習っているか+題意はどこらへんを狙っているか は想像しづらい
明示されているもののみを対象にする以外やりようはないな <宿題スレだし
0517デフォルトの名無しさん
2008/11/26(水) 20:28:130518デフォルトの名無しさん
2008/11/26(水) 20:37:31[2] 問題文(含コード&リンク):
円周率πを以下の式を用いて計算するプログラムを作成しなさい
π=4×(arctan(1/2)+arctan(1/5)+arctan(1/8))
[3] 環境
[3.1] OS:LINUX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年11月28日まで
[5] その他の制限:
よろしくお願いします
0519デフォルトの名無しさん
2008/11/26(水) 20:38:30関数 getCountBetweenLimits のなかで、
int count; ⇒ int count = 0;
int index; ⇒ int index = 0;
numbers[index] > lowerLimit ⇒ numbers[index] >= lowerLimit
numbers[index] < upperLimit ⇒ numbers[index] <= upperLimit
あと、while 内側最後で index++;
0520デフォルトの名無しさん
2008/11/26(水) 20:39:04int getCountBetweenLimits(int numbers[], int lowerLimit, int upperLimit)
{
int count = 0;
int index = 0;
for(;numbers[index] != DataTerminator; index++)
{
if((numbers[index] >= lowerLimit) && (numbers[index] <= upperLimit))
{
count++;
}
}
return count;
}
0521デフォルトの名無しさん
2008/11/26(水) 21:31:330522デフォルトの名無しさん
2008/11/26(水) 22:14:236-1
display 関数
p = ****; ⇒ p = p->next;
insert 関数
****= n; ⇒ newnode->next = n;
****= ****; ⇒ newnode->prev = n->prev;
****= newnode; ⇒ n->prev->next = newnode;
****= newnode; ⇒ n->prev = newnode;
0523デフォルトの名無しさん
2008/11/26(水) 22:19:036-2 なんだけど、検索の関数って、何を検索すればよいかわかる?
データが一致するものとか?
0524デフォルトの名無しさん
2008/11/26(水) 22:44:56[問題]
以下の文字列をアルファベット順に並べ替えるプログラムを作成せよ。
文字列の比較にはstrcmpを用いること。
char *name[] = {"Wada", "Kanto", "Matsuda", "Kudo", "Sato", "Iizumi", "Sugawara", NULL};
[自作のプログラム(前半)]
#include<stdio.h>
#include<string.h>
void array(char *name[]){
int i, j;
char *temp;
i = 0;
while(name[i]){
j = i + 1;
while(name[j]){
if(strcmp(name[i], name[j]) < 0){
temp = name[i];
name[i] = name[j];
name[j] = temp;
}
j++;
}
i++;
}
}
0525デフォルトの名無しさん
2008/11/26(水) 22:46:05int main(){
int i;
char *name[] = {"Wada", "Kanto", "Matsuda", "Kudo", "Sato", "Iizumi", "Sugawara", NULL};
array(name);
i = 0;
while(*name[i]){
printf("%s\n", *name[i]);
i++;
}
printf("OK.");
return 0;
}
0526デフォルトの名無しさん
2008/11/26(水) 22:51:44自作プログラム(後半)の"OK."のprintfはチェック用ですので無視して下さい(^^;
どうか、助言のほどよろしくお願いします。
0527デフォルトの名無しさん
2008/11/26(水) 22:52:32i = 0;
while(*name[i]){
printf("%s\n", *name[i]);
i++;
}
*name[i]ではなくてname[i]だろうな、コンパイラさんちゃんと警告してあげてください。
whileではなくてforのほうがわかりやすいと思う。
qsort()使ってください。
0528デフォルトの名無しさん
2008/11/26(水) 22:52:47後半では while(*name[i]) ってやってる
while(name[i]){
printf("%s\n", name[i]);
にしないと
0529デフォルトの名無しさん
2008/11/26(水) 23:02:12すでに回答されています
>>38 >>389
0530デフォルトの名無しさん
2008/11/26(水) 23:02:27教授に聞いたところ、qsort()はメッ!!っということでした(^^;
また、指摘点の修正後、while(name[i])の後ろにprintf("OK.");を追加してチェックしたところ、「OK.」が人数分表示されました。
しかし、肝心の名前は表示されません…orz
0531デフォルトの名無しさん
2008/11/26(水) 23:12:16修正を重ね、以下のように表示できました。
Wada
Sugawara
Sato
Matsuda
Kudo
Kanto
Iizumi
…完全に逆ですね、わかります。
あとは調整して提出できそうです。助言して頂いた皆さん、ありがとうがざいました。
0532デフォルトの名無しさん
2008/11/26(水) 23:14:53void main(void)
は非常にまずい。
int main(void)
とか
int main()
とか
main()
とか。
0534デフォルトの名無しさん
2008/11/26(水) 23:32:00#include <math.h>
#include <stdio.h>
int main()
{
printf("pi = %16f\n", 4 * (atan(1/2.0) + atan(1/5.0) + atan(1/8.0)));
return 0;
}
C99規格でいいならこうなるな
0535デフォルトの名無しさん
2008/11/26(水) 23:38:11[2] 問題文(含コード&リンク): 西暦n 年がオリンピック年か、平年かを判別する。数値がオリンピック年だったら"Olynpic year"、平
年だったら"ordinary year"と表示する。
データは次の6 つを用意し、int 型配列変数に格納しておくこと。
1984, 1990, 1993, 1996, 2001, 2004
(このデータのうち1984, 1996, 2004 がオリンピック年)
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008/10/28
[5] その他の制限: gethar()使用 <stdio.h>のみ
よろしくお願いします
0536デフォルトの名無しさん
2008/11/26(水) 23:38:30当方の環境はcygwin/WindowsXP, 処理系はgcc 3.4.4 です。過去問の焼き直しです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8116.txt
0538デフォルトの名無しさん
2008/11/27(木) 00:42:47getchar() 使えってのが意味不明だけど、なんとなく使ってみた
#include <stdio.h>
int main()
{
int i, y[] = {1984, 1990, 1993, 1996, 2001, 2004};
for(i = 0; i < 6; i++){
if(y[i] % 4 == 0)
printf("%d is Olympic year", y[i]);
else
printf("%d is Ordinary year", y[i]);
getchar();
}
return 0;
}
0539デフォルトの名無しさん
2008/11/27(木) 00:49:42問題解きTHX
0540デフォルトの名無しさん
2008/11/27(木) 01:41:54[2] 問題文(含コード&リンク): コマンドライン引数を使って、年と月を指定したときにはその年月のカレンダーを、
年だけの時はその年の12か月分のカレンダーを表示するプログラムを作りなさい。
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 夜が明けるまで
よろしくお願いします。もしよろしければ、説明もお願いします。
0541デフォルトの名無しさん
2008/11/27(木) 01:50:23http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8117.txt
0542デフォルトの名無しさん
2008/11/27(木) 01:55:42[2] 問題文(含コード&リンク):最長5文字の文字列を3件入力し、char 型の配列にそれぞれ格納する。3つの文字列
を比較し、文字列が同じだったら「○」を表示し、異なっていたら「×」を表示するプログラム
6文字以上ならスルー
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 朝まで
お願いします
0543デフォルトの名無しさん
2008/11/27(木) 02:04:36「6文字以上スルー」って、どういう意味?
6文字以上入力したら何も表示しない?それとも6文字以降は比較対象にしない?
0544デフォルトの名無しさん
2008/11/27(木) 02:07:10適当でそーりー
0545デフォルトの名無しさん
2008/11/27(木) 02:14:26#include <stdio.h>
#include <string.h>
int main()
{
char s[3][10];
printf("String:");
scanf("%s", s[0]);
if(strlen(s[0]) > 5)
return 1;
printf("String:");
scanf("%s", s[1]);
if(strlen(s[1]) > 5)
return 1;
printf("String:");
scanf("%s", s[2]);
if(strlen(s[2]) > 5)
return 1;
if(strcmp(s[0], s[1]) == 0 && strcmp(s[1], s[2]) == 0)
printf("○\n");
else
printf("×\n");
return 0;
}
0546デフォルトの名無しさん
2008/11/27(木) 02:15:210547デフォルトの名無しさん
2008/11/27(木) 02:24:13できませんかね?
0548デフォルトの名無しさん
2008/11/27(木) 02:25:53_/ ∠≠ニ二ニ≧=<´ ヘ. ', ヘ\ヽ. /
_ -‐ ´/ , -‐´、_, '⌒`^ 、 \::\ } l ヽヘ ヽ} / _|_ \
 ̄ フ´, / 丶\::V| | Vl ,' |____
. //./ `Vヽl | ヽ ' . | /| ヽ
/ ,イ/ �Y/, ヽ.\ |. l (_ノ _ノ
|/ / | ∨ヘ. ト、 \_ |. |
. / / / l: / l ∨i 、 |  ̄ ! l lヽ│/ /
l│ / イ ,イ. l ト、ヽ / | :l :| | l | ヽ_ノ !ー┼‐ |‐┬
| | l_メ、」_,;./l L l V ∧ / :|/ ハ. ト、 | |./│ヽ l |
| ト. |.____ ヽ l´ヽ{ _⊥イ イ / / / l/⌒ヽ .| ー┼─ └── l |
| | ヽ | 、i┘::::i \ | r┬┬‐┬ァ V ,∧. ,' ´ | ー┼−
レ ヽ! ゝ- ' \l i,.┘:::::iノ / ,/〉│ :| { | _⊥_ l |
. 7/l/l/ 、 `'ー‐ ' ∠≠r'ノ:jノ :| | | (__丿 ヽ レ |
λ `i`ァー-- 、 /l/l/l ∧‐'.:|:::| ハ ', | l
`、 レ' ', ,/| ::| :|:::| ./ ヽ_> _| __|_ _ノ
` = 、 '、 ノ ,.イ∧'|:l.:/l:::|´ \ ._|
`>-r =ニi´、.,_`::: |:| { |:::l | .(_|
_,.イ´ヽ.7 / /:\;八:V:ノ | ノ
/7:::::! ○O'´ /::::::::/ヽ.
/ /:::::::レ'/ムヽ. /::::::::/ ヽ.
0549デフォルトの名無しさん
2008/11/27(木) 02:29:240550デフォルトの名無しさん
2008/11/27(木) 02:36:40[2] 問題文(含コード&リンク): 入力した文字に応じたプログラムの作成
【'a'or'A'】→”続行”を出力する(プログラムは終わらない) 【'b'or'B'】→プログラムを終了する 【その他】→”エラーです”を出力する
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 今日中
よろしくお願いします。細かく解説していただければ幸いです。
0551デフォルトの名無しさん
2008/11/27(木) 02:39:47改行文字はどうする?無視したほうがいい?エラー扱いにする?
スペースも
0552デフォルトの名無しさん
2008/11/27(木) 02:44:25#include <stdio.h>
#include <string.h>
int main()
{
char s0[6], s1[6], s2[6];
scanf("%s", s0);
if(strlen(s0) <= 5){
scanf("%s", s1);
if(strlen(s1) <= 5){
scanf("%s", s2);
if(strlen(s2) <= 5){
if(strcmp(s0, s1) == 0 && strcmp(s1, s2) == 0)
printf("○\n");
else
printf("×\n");
}
}
}
return 0;
}
0553デフォルトの名無しさん
2008/11/27(木) 02:45:30#include <stdio.h>
int main()
{
int c;
while (1) {
c = getchar();
switch (c) {
case 'A': case 'a':
printf("続行\n"); /* A, aだったので終了する */
break;
case 'B': case 'b':
return 0; /* B, bだったので終了する */
break;
default:
printf("エラーです\n"); /* それら以外なのでエラーを表示 */
}
}
}
0554デフォルトの名無しさん
2008/11/27(木) 02:46:040555デフォルトの名無しさん
2008/11/27(木) 02:46:03エラー扱いでお願いします
0556デフォルトの名無しさん
2008/11/27(木) 02:49:18>>553じゃぁこれで大丈夫だな
0557デフォルトの名無しさん
2008/11/27(木) 02:50:45ありがとうございました!
0558デフォルトの名無しさん
2008/11/27(木) 02:51:31[2] 問題文(含コード&リンク):
文字列を格納する配列へのポインタ変数textとkeyを引数に持ち、
extが示す文字列にkeyが示す文字列が出現する回数を返す関数pattern_match_num()を作成し、
これを用いて、textが示す文字列とkeyが示す文字列をプログラム中で与え、
出現回数を標準出力で表示するプログラムを作成せよ。
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: ?
[3.3] 言語: C
[4] 期限: ([2008年11月27日11:00まで]
[5] その他の制限:
よろしくお願いします
0559デフォルトの名無しさん
2008/11/27(木) 02:53:15たしか、検索するのは最初にユーザが適当に数値を10個ぐらいいれて、その中から
検索したい数値があるかどうかを検索するって感じです
0560デフォルトの名無しさん
2008/11/27(木) 09:44:336-2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8118.txt
>>559 本当にそれであってる?? 6-3, 6-4 へのつながりがよくわからない
あと、6-4 の「連続リスト」って何?つなぎリストってのはいわゆる線形リストのことだと
思うけど
あと連続リストの場合もやっぱりソートするの?
0561デフォルトの名無しさん
2008/11/27(木) 11:00:34[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8119.c
↑のカレンダーの年月の指定について、月を数字だけでなく英語(Novemberなど)でも
指定できるようにせよ。また、適切でない入力がなされた場合には
その旨エラー表示し、再度入力を促すようにせよ。
( ユーザからの入力をscanf()でうけとるのではなく、gets()でいったん
文字列として受け取り、それの内容を検査するという処理が必要になる。)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年11月29日
[5] その他の制限:関数で関数プロトタイプ、再帰、引数の値渡しと参照渡しを
習ったばかりです。
よろしくおねがいします。
0562デフォルトの名無しさん
2008/11/27(木) 11:11:45何がわからないのかな
入力部分を変えるだけで、他のルーチンはいじら無いと思うけど。。。
>暇な奴
厳密に言うと、Cに参照渡しはなかった気がするが俺の気のせいか?
ポインタで似たような機能は実装できたはずだけど・・・
0563デフォルトの名無しさん
2008/11/27(木) 11:12:13[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8120.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[5] その他の制限
[5.1]while文を使う
どなたかよろしくお願いします。
0564デフォルトの名無しさん
2008/11/27(木) 11:14:54一応数学板に問い合わせて
0565デフォルトの名無しさん
2008/11/27(木) 11:23:26http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8121.c
0566デフォルトの名無しさん
2008/11/27(木) 11:23:47たたき台のプログラムちゃんと動作しないぞ
0567デフォルトの名無しさん
2008/11/27(木) 11:34:03January + 余計な文字を入力しても、Januaryが一致していればおkってことで。
0570デフォルトの名無しさん
2008/11/27(木) 11:44:02こりゃ出題ミスだな。
0571デフォルトの名無しさん
2008/11/27(木) 11:46:17一応これで動いたがな 2.0 近くなると収束しねぇ
#include <stdio.h>
int main()
{
double X, logX = 0.0, a_n, n;
printf("Real number:");
scanf("%lf", &X);
if(X > 2.0 || X < 0.0){
printf("%f: Out of range\n", X);
return 1;
}
a_n = -1.0;
for(n = 1.0; a_n > 1e-8 || a_n < -1e-8; n += 1.0){
a_n *= -(X - 1.0);
logX += a_n/n;
}
printf("log %f = %f\n", X, logX);
}
0572デフォルトの名無しさん
2008/11/27(木) 11:51:32今月の出力結果↓たぶん1週目の空白の数がおかしい
Year?: 2008
Month?: 11
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
0573561
2008/11/27(木) 12:02:05本当だ・・・。12月は少しずれてただけなのに11月や10月は1週目が
おかしいですね。講師の人が適当に作ったのだと思います。
>>565で直っているのでたぶん大丈夫です
0574デフォルトの名無しさん
2008/11/27(木) 12:04:04だからそこ、直したって
0576デフォルトの名無しさん
2008/11/27(木) 12:19:26収束チェックする対象は a_n/n じゃね?
まあ、分母の進みは遅いからやっぱり収束に時間かかりそうだけど
0578デフォルトの名無しさん
2008/11/27(木) 12:38:32a_n であれば X=2 の時 -1⇔ 1の発振をおこすけど
a_n/n だったら n が増加関数なので振動収束するよん
0579デフォルトの名無しさん
2008/11/27(木) 12:43:22先生に聞いたらそれでいいみたいです
削除の方もそんな感じで、ユーザーに数入れてもらって、後から消すという感じ
6-4番は、対象のデータがあるのですが、容量が大きすぎてダメだったのでいいです
0580デフォルトの名無しさん
2008/11/27(木) 12:47:09むしろSample-6-1-revは誰が書いたコードなのか気になる。
0581デフォルトの名無しさん
2008/11/27(木) 13:19:056-3
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8124.txt
6-2 とは検索関数の仕様変えてる
削除と言っても配列の記憶は放置
0583デフォルトの名無しさん
2008/11/27(木) 14:13:42[2]問題文:自然対数の底の値(e=2.718282...,小数点以下12桁まで)を求めるプログラムを作成せよ。
[3]環境
[3.1]OS:indows
[3.2]コンパイラ名とバージョン:?
[3.3]言語:C++
[5]その他の制限:なし(できれば簡単なものを・・・)
素人なもんで・・・すいません。
どなたかよろしくお願いします。。。
ちなみに締め切りは月曜ですOrz
0584デフォルトの名無しさん
2008/11/27(木) 14:31:240585デフォルトの名無しさん
2008/11/27(木) 14:35:26#include <cmath>
#include <cstdio>
int main()
{
double e = exp(1);
printf("e = %.12lf\n", e);
return 0;
}
/* 自然体数の底を求める「関数」を作れとは言われてないもんね */
0586デフォルトの名無しさん
2008/11/27(木) 14:37:15[2]問題文:
生徒のテストの成績を表す構造体を定義し,下記の出席番号と得点リストの内容を格納する変数を作
り,最も得点の高い生徒を検索して,その生徒の情報を出力するプログラム.
生徒の情報を表す構造体は以下のメンバーを持つ.
出席番号(int)
得点(int)
出席番号と得点リスト
出席番号 得点
1 54
2 0
3 65
4 70
なお、出席番号と得点がプログラムで入力すること
実行例
$ ./a
出席番号 得点
4 70
[3]環境
[3.1]OS:Windows XP
[3.2]コンパイラ名とバージョン:Cygwin
[3.3]言語:C
[5]その他の制限:まだまだ序の口・・・らしいです。
どうか宜しくお願いします。
0587デフォルトの名無しさん
2008/11/27(木) 14:41:430588デフォルトの名無しさん
2008/11/27(木) 14:44:07ホント助かりますm(__)m
ありがとうございました。。
0589デフォルトの名無しさん
2008/11/27(木) 14:47:170590デフォルトの名無しさん
2008/11/27(木) 14:48:11何人分まで用意するの?
おそらく配列つかえって趣旨なんだろうけど
0591デフォルトの名無しさん
2008/11/27(木) 14:53:31何せ、ガチで素人なもんで・・・
0592590
2008/11/27(木) 15:12:25何度も読み返してみたんだけどわからない
> 出席番号と得点がプログラムで入力すること
これどういう意味?問題では4人分のデータを使うよう書かれてるけど、
それは実行時に手で入力しろってこと?それとも、4人分のデータは
あらかじめプログラムのコードに埋めておけってこと?
実行例は、最高得点だけが出力されているように見える。
0593デフォルトの名無しさん
2008/11/27(木) 15:27:57問題文の空気読んだらこんな感じかなぁ
#include <cstdio>
int main()
{
double e = 1.0, r_n = 1.0;
int n;
for(n = 1; r_n > 1e-12; n++){
r_n *= 1.0/n;
e += r_n;
}
printf("e = %.12f\n", e);
}
0594デフォルトの名無しさん
2008/11/27(木) 15:28:370595デフォルトの名無しさん
2008/11/27(木) 15:35:40[2] 問題文(含コード&リンク):
・入力された文字列中に特定の文字がいくつあるか調べるプログラムを作成せよ
-特定の文字は最初に入力してもらう
・scanfを使って
-文字列はgetcharを使って入力
実行例
数える文字を入力: a ↓
文字列を入力してください(Ctrl-zで終了)
minamotono ↓
yoritomo ↓
nihonn ↓
[Ctrl-z]
aは1個ありました
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年11月28日(金)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
配列の初期化、2次元配列、文字コード、文字データ(char型)
getchar、putcharは習いました。
お願いします。
0596デフォルトの名無しさん
2008/11/27(木) 15:36:100597デフォルトの名無しさん
2008/11/27(木) 15:49:40> 出席番号と得点がプログラムで入力する
これを「出席番号と得点をハードコードする」と読んだ
#include <stdio.h>
int main(void)
{
struct {
int n;
int score;
} grade[4] = {
{1, 54},
{2, 0},
{3, 65},
{4, 70},
}, max;
max = grade[0];
int i;
for (i = 1; i < sizeof(grade)/sizeof(grade[0]); i++) {
if (max.score < grade[i].score) {
max = grade[i];
}
}
puts("出席番号 得点");
printf("%d %d\n", max.n, max.score);
return 0;
}
0598デフォルトの名無しさん
2008/11/27(木) 15:58:27#include <stdio.h>
int main(void)
{
int c;
char buf[255];
int count = 0;
int i;
printf("数える文字を入力: ");
c = getchar();
puts("文字列を入力してください(Ctrl-Zで終了)");
while (scanf("%s", buf) != EOF) {
for (i = 0; buf[i] != '\0'; i++) {
if (buf[i] == c) {
count++;
}
}
}
printf("%c は %d個ありました\n", c, count);
return 0;
}
0599デフォルトの名無しさん
2008/11/27(木) 16:07:38本当に有難う御座いました。
大変助かりました。
0600デフォルトの名無しさん
2008/11/27(木) 16:19:36[2] 問題文(含コード&リンク):
・入力されたアルファベットの大文字と小文字を反転して表示するプログラムを作成せよ
-アルファベット以外はそのまま表示
以下のライブラリ関数を使う
・isupper(c):cが大文字なら真になる
・islower(c):cが小文字なら真になる
実行例
文字列を入力してください(Ctrl-zで終了)
Odanobunaga ↓
oDANOBUNAGA
D51 ↓
d51
[Ctrl-z]
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年11月28日(金)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
配列の初期化、2次元配列、文字コード、文字データ(char型)
getchar、putcharは習いました。
お願いします。
0601デフォルトの名無しさん
2008/11/27(木) 16:30:29> 以下のライブラリ関数を使う
いや、指定されていて出来ないってのも、どうかと・・・それ使ってぇ〜おねがーい
0602デフォルトの名無しさん
2008/11/27(木) 16:32:39#include <ctype.h>
int main() {
int c;
printf("文字列を入力してください(Ctrl-zで終了)\n");
while ((c = getchar()) != EOF) {
if (islower(c)) putchar(toupper(c));
else if (isupper(c)) putchar(tolower(c));
else putchar(c);
}
return 0;
}
0603デフォルトの名無しさん
2008/11/27(木) 16:42:29どういうことですか?
>>602
本当に有難う御座います。
大変助かりました。
0604デフォルトの名無しさん
2008/11/27(木) 17:30:57[2] 問題文: 「Hit & Blow」をつくる
・乱数を用いて4桁の数をきめる。乱数は以下のプログラムを利用する
----乱数ここから----
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main(void){
int n;
srand(time(0));
n = rand()%10000;
printf("%d\n",n);
}
----ここまで----
・キーボードから4桁の数を入力
※ 改行、%などの余計な入力を受け付けないようにする
・入力された数が場所・数ともに一致ならばH、数のみ一致ならBと判定
例) 決めた数:1234 入力:1546 → 「1H1B」
決めた数:1234 入力:1844 → 「2H0B」(Hit優先)
・当るまで繰りか牛、何回目で4Hになるか判定
例) 「あなたは 10 回目で当りました」
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio .NET
[3.3] 言語: C
[4] 期限: 11/28
[5] その他の制限
【printf,scanf,if,while,配列】以外は使用しない(forなども×)
宜しくお願い致します。
[2] 問題文(含コード&リンク):
・自分の名字と名前を2つの文字列に代入し、
-名字は変数の初期化、名前はstrcpyを使って
以下のように表示するプログラムを作成せよ
名字は〜、名前は〜です
名前の最後の文字は〜です
-名前の最後の文字は文字列が入った配列に適当な添字を指定して表示すること
-名字はYamada 名前はTarouでお願いします
実行結果(Yamada Tarou の場合)
名字は Yamada, 名前は Tarouです
名前の最後の文字は uです
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年11月28日(金)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
配列の初期化、2次元配列、文字コード、文字データ(char型)
getchar、putcharは習いました。
お願いします。
#include <stdio.h>
int main(void)
{
char str[ ]="Yamada";
printf("%s\n", str);
return 0;
}
名前は下のプログラムを参考にお願いします。
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[6];
strcpy(str, "Tarou");
printf("%s\n", str);
return 0;
}
0607デフォルトの名無しさん
2008/11/27(木) 18:11:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8126.txt
0608デフォルトの名無しさん
2008/11/27(木) 18:37:59一体何が分からないんだろう。。。
#include <stdio.h>
#include <string.h>
int main(void)
{
char family[] = "Yamada";
char given[32];
strcpy(given, "Tarou");
printf("名字は %s、名前は %s です\n", family, given);
printf("名前の最後の文字は %c です\n", given[strlen(given)-1]);
return 0;
}
0609607
2008/11/27(木) 18:57:41デバッグのために正解出力したままだったw
printf("%dH%dB (%4d)\n", h, b, n);
↓
printf("%dH%dB\n", h, b);
としてくだしあ
0610デフォルトの名無しさん
2008/11/27(木) 19:37:52有難う御座います。
HとBが重なったときには、Hを優先し、
Bのカウントにはいれたくないのですが、どのようにすればよいでしょうか?
ご教授頂けると幸いです。
0611デフォルトの名無しさん
2008/11/27(木) 19:46:23続きです。
charは習っていないのですが、intではダメでしょうか?
0612デフォルトの名無しさん
2008/11/27(木) 21:41:08[2] 問題文(含コード&リンク):
以下の二つのアルゴリズムの違いを応えよ(何故同じ答えが出るのか?ということ)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8127.txt
[3] 環境
[3.1] OS: Windows
[3.2] VC 6.0
[3.3] 言語: C
[4] 期限: ([2008年12月01日
[5] その他の制限: とくになし
宜しく尾根がします。
0613デフォルトの名無しさん
2008/11/27(木) 21:48:200614デフォルトの名無しさん
2008/11/27(木) 21:56:39[2] 問題文(含コード&リンク):外部ファイルのデータを変数、配列に格納せよ
データは
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8128.txt
です。
[3.1] Linux
[3.2] gcc
[3.3] C言語
[4] 期限: 11/28迄
よろしくお願いします<(_ _)>
0615デフォルトの名無しさん
2008/11/27(木) 22:48:47ちゃんと動作確認してないので、参考程度に。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8129.txt
1つ気になったのは、polygon の各要素数(ポリゴンデータの先頭の数値)を
どっかに保存しておかないと、取り込んだはいいけど、参照する時に困ると思う。
0616デフォルトの名無しさん
2008/11/27(木) 22:59:54- top[i] = malloc(sizeof(float));
+ top[i] = malloc(sizeof(float)*3);
じゃないか?
0618デフォルトの名無しさん
2008/11/27(木) 23:09:11お礼が遅れて申し訳ありませんでした。ありがとうございます。
コンパイルしてみたところ、70行目付近の
for(i=(long)(0.5 * PRECISION/ log10(k))・・・・・
の行が、デクリメント演算子が云々ということで通りませんでした。どうすればいいんでしょうか…
0619615
2008/11/27(木) 23:12:002つめの for ループは
for(i = 0; i < n_ver; i++){
じゃなくて
for(i = 0; i < n_pol; i++){
が正解
0620デフォルトの名無しさん
2008/11/27(木) 23:20:51迅速な回答ありがとうございます<(_ _)>
動作確認してみましたがうまく取り込めていました!
ポリゴンデータの先頭の数値はたぶん1ファイルで3ならずっと3
4ならずっと4とかになると思いますのでn_elemを参照すれば大丈夫そうです。
大変助かりました、ありがとうございました!
0621デフォルトの名無しさん
2008/11/27(木) 23:23:15してみます@@
訂正助かります<(_ _)>
0622デフォルトの名無しさん
2008/11/27(木) 23:41:27重複の考え方なんだけど、
正解 1234
入力 1844
これは、入力の1つ1つの数に対して、Hit があれば Hit 加算、なければ
1 → 1 hit
8 → 1 → 2 → 3 → 4 → 該当なし
4 → 1 → 2 → 3 → 4 → Blow +1
4 → 1 → 2 → 3 → 4 → Hit +1
この場合、3つめの4についてはBlowとカウントしないってこと?
0623622
2008/11/27(木) 23:47:30質問投げっぱなしであれだけど、↓これでどう?int にしてみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8130.txt
例によって printf のデバッグ出力は >>609 のように直してくだしあ
0624622
2008/11/27(木) 23:49:41if (h == 4)
は
if (n_h == 4)
です。こうしないと終われないw
0625デフォルトの名無しさん
2008/11/27(木) 23:53:54横からだが
正解 1234
入力 4444
だったら、 Hit 1, Blow 0 ?
正解 1234
入力 4456
だとどうなる?
0626デフォルトの名無しさん
2008/11/28(金) 00:20:23正解 1234、入力 4444 → Hit 1 Blow 0
正解 1234、入力 4456 → Hit 0 Blow 1
となります。HitとBlowが重複する場合は、Blowはカウントしません。
0627デフォルトの名無しさん
2008/11/28(金) 00:53:02[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
単振り子の運動方程式
θ''=-(g/l)sinθ、θ'(0)=0、θ(0)=Θ
の厳密な数値解を初期振れ角Θを起動時に指定して、アニメーション表示させるプログラムを作成しなさい。
[3] 環境
[3.1] OS:Windows/
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限:2008年12月11日まで
[5] その他の制限:特になし
0628デフォルトの名無しさん
2008/11/28(金) 00:55:28[2] 問題文(含コード&リンク):
以下のマップを時間発展させるプログラムを書きなさい。(最大ステップ数は70程度)
Xn+1 = 2Xn (0≦Xn≦1/2)
2(1-xn) (1/2≦Xn≦1)
ちなみに、X1=2/5でおねがいします。
[3]環境
[3.1] Unix
[3.2] gcc
[3.3] C
[4] 期限: 本日中
よろしくお願いします。
0629デフォルトの名無しさん
2008/11/28(金) 00:59:14[2] 問題文(含コード&リンク):
a:3人、7教科のテストの点数のうちTop3の人名と教科名を表示するプログラムを作成せよ(人名、教科名、点数は任意とします)
b:入力した生年月日に対し下記の情報を表示するプログラムを作成せよ
・現在の年齢
・産まれた年の干支、曜日
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ:VC 6.0
[3.3] 言語:C
よろしくお願いします。
0630デフォルトの名無しさん
2008/11/28(金) 01:21:29[2] x,y座標において入力された場所から8×7の座標軸で、(4,0)か(4,7)のところまで点を移動させる
x軸では(0,a)になったらx軸方向の速さは+、(8,a)になったら−、
y軸では(b,0)で+、(b,7)で−の速さをというように反射しながら点両軸に1マスずつを動かす
動く方向は(vx,vy)で表す
ボールの位置(x、y)および速度(vx、vy)を構造体の変数とするように書き換えろ
また、(x,y)(vx,vy)を更新する関数も構造体の関数とするように書き換えよ
[3] 環境
[3.1] OS: Windowsビスタ
[3.2] コンパイラ名とバージョン:よくわかりませんがフォートランビルダーを使っています
一応visualC++もあります
[3.3] 言語:C++
[4] 期限: もう過ぎているんですが自分で完成させたいので、学校が始まる明日9時までにお願いします
[5] その他の制限: if,else,関数のプロトタイプ宣言,『構造体』←今回のメインです
すごい時間がないですがよろしければお願いします
アップローダに一応自分が頑張ってみたC++ファイルを載せておきました
よければそちらも見てください
>>1テンプレにあるアップローダの記事番号8131です
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0631デフォルトの名無しさん
2008/11/28(金) 02:14:34数学アルゴリズムの問題
要するに、(xy) % n ==( (x % n)*(y % n) )% nが成り立つことが本質
これより(x^m) % n = ( (x % n)^m ) % nが成り立つ。(x,y>0)
(^はC言語では別の意味で使われる記号だが、ここではべき乗の意味)
最初のプログラムは、(x^b % n)を計算するプログラム。
但しb以下のベキ乗に対しても計算結果を出力している。
2番目のプログラムも結果的に(x^b % n)を計算し表示するプログラム
x=11
b=12
として説明
12= 2^3+2^2=2^3+2^2
x^13=x^(2^3+2^2+2^0)=x^(2^3)*x^(2^2)*x^(2^0)
x^(2^3)=(x^2)^3 二乗する操作を3回行う
x^(2^2)=(x^2)^2 二乗する操作を2回行う
この2つをかけたものを%nしたものが答え
プログラムでは、公式(xy)^m=x^m y^mを利用して
一つのループで、上の2つの掛け合わせた結果を求めている。
0632631
2008/11/28(金) 02:18:23この式は間違いなので忘れて
x^(2^3)を求める操作は、ある変数にxを入れてそれを
二乗する操作を3回行うことで求められることは正しい
ので、大意は631の通り
0633612
2008/11/28(金) 02:34:49サンクスです
本当に有り難う御座いました。
大変助かりました。
0635デフォルトの名無しさん
2008/11/28(金) 02:57:57同じ数字を2回使えるんだね。
正解 1123 入力 4114だったらHit 1 Blow 1でいいのかな。
0636デフォルトの名無しさん
2008/11/28(金) 03:01:30何が分からなかったのかは秘密ですよね。
0637デフォルトの名無しさん
2008/11/28(金) 03:51:58[2]最大6 桁の整数を3 つ入力させ、int 型の配列にそれぞれ格納する。
入力終了後、3 数値の和を求め出力するプログラムを作成しなさい。ただし、7桁以上
の文字列が入力された場合は、先頭から6 文字までを有効とし、7 文字目以降を無視す
る。また、負の数が入力された場合はエラーメッセージを表示しプログラムを終了す
る。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:朝まで
エラー仕様
7 桁以上の文字列が入力された先頭から6 文字までを有効とし、7 文字目
以降を無視する。
#include <stdio.h>
#include <string.h>
main()
{
int a[3];
int i;
for(i = 0; i < 3; i++) {
scanf("%d", &a[i]);
}
printf("%d\n", a[0] + a[1] + a[2] );
return 0;
}
ここまではなんとかできたのですが 最大桁数とエラー仕様がわかりません
お願いします
0638デフォルトの名無しさん
2008/11/28(金) 04:14:38制限とか細かいこと書いてないので atoi 使った。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int a[3], i;
char buf[10];
for(i = 0; i < 3; i++) {
scanf("%s", buf);
buf[6] = '\0'; /* 7文字目にNULL文字を強制挿入 */
a[i] = atoi(buf);
if(a[i] < 0){
printf("負の数は無効です\n");
return 1;
}
}
printf("%d\n", a[0] + a[1] + a[2]);
return 0;
}
0639629
2008/11/28(金) 04:36:1311/28 12:00までです。
0640デフォルトの名無しさん
2008/11/28(金) 05:03:23もとのコードを最大限尊重する方向で書いた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8132.txt
0641デフォルトの名無しさん
2008/11/28(金) 06:07:31習った範囲を書けよ
極端な話変数も配列も使わずに scanf と printf でベタ出力したってできちまうぞ
0642デフォルトの名無しさん
2008/11/28(金) 06:28:53課題の趣旨は実数加減算の誤差を調べることかな?
#include <stdio.h>
int main()
{
double Xn = 2.0/5.0;
int i;
for(i = 1; i < 70; i++){
printf("X%d: %.15f\n", i, Xn);
if(Xn < 0.5)
Xn = 2 * Xn;
else
Xn = 2 * (1 - Xn);
}
printf("X%d: %.15f\n", i, Xn);
return 0;
}
0645デフォルトの名無しさん
2008/11/28(金) 11:48:45aの問題のみ。
構造体を使ってみたが意味なかったorz
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8133.c
0646デフォルトの名無しさん
2008/11/28(金) 12:50:30[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8136.zip
[3]環境
[3.1] Linux
[3.2] gcc 4.1.2
[3.3] C
[4] 期限: 11/28(金)中くらいだと助かります。
[5] 補足
C言語初心者です。1問目は共有メモリ、2問目は共有メモリ+セマフォの問題です。
1問目はウェブで調べた内容を元に何とか自力でやったものをアップしました。
2問目はそれを改造してセマフォによる同期処理を追加するらしいのですが、ウェブで
調べてもセマフォに関する情報が難しくてあまり理解出来ませんでした。どなたか
1問目のファイルに処理を追記してもらえると助かります。
(問題の仕様が曖昧かも知れませんが、適当な感じで構わないです。)
0647デフォルトの名無しさん
2008/11/28(金) 15:47:43http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8137.zip
0648デフォルトの名無しさん
2008/11/28(金) 15:51:29ありがとうございます
助かりました
0649デフォルトの名無しさん
2008/11/28(金) 16:05:25[2] 構造体 struct data{int a; char b;}c[128],d[128];の中から、
c.aの数値を大きい順にヒープソートで並べ直し、結果を構造体dへ格納・表示する。
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2008年11月28日19:30まで
別なプログラムの実行結果をヒープソートで整理するというもので、元データを構造体に格納する
ところまでは出来たのですが、その先が分かりません。
ヒープソートの解説サイトを調べてみたのですが、構造体を利用しているものがなく、
よく分かりませんでした。期限が短くて申し訳ないのですが、よろしくお願いします。
0650デフォルトの名無しさん
2008/11/28(金) 16:08:25求めるコードが書けたんだが、もう遅いか・・・次に似た課題が出たら出すか。
0651646
2008/11/28(金) 17:12:21とてもわかりやすいコード有り難うございました。
(1)の方はコンパイルと実行が上手く行きました。
(2)の方ですが私の環境だと上手くコンパイル出来ません。。
環境はLinux Debian(英語版)、gcc 4.12です。(ソース中の日本語はアルファベットに変換済)
以下、gccのエラーメッセージですが何かわかりますでしょうか。sem.h, sem.c, producer.c, consumer.c
の全てを同一ディレクトリに置いて実行しています。
$ gcc -Wall -c sem.c (成功)
$ gcc -Wall -o consumer.c sem.o
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o: In function `_start':
../sysdeps/i386/elf/start.S:115: undefined reference to `main'
collect2: ld returned 1 exit status
このエラーが出ると、consumer.cファイルは削除されてしまうようです。
同様に、producer.cをコンパイルしても同じエラーとファイル削除が起こります。
0652646
2008/11/28(金) 17:16:58> $ gcc -Wall -o consumer.c sem.o
$ gcc -Wall consumer.c sem.o -o consumer
$ gcc -Wall producer.c sem.o -o producer
ですね。上手く行きました。有り難うございました! →647
0653デフォルトの名無しさん
2008/11/28(金) 17:57:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8139.c
0654デフォルトの名無しさん
2008/11/28(金) 17:58:39http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8140.txt
要は比較の所だけ構造体の要素を比較するようにすればいいだけ。
0655デフォルトの名無しさん
2008/11/28(金) 18:00:07○全くなにも分からない
0656647
2008/11/28(金) 18:07:34時間がなくて焦って作ったから、コマンドライン書き間違ってた。
共有メモリには、参照カウンタ付けた方がいいな、と今読んでいて思った。
が、後悔はしていない。Linuxならきっとなんとかしてくれる。という妄想。
1日ROMってまつ。
0657デフォルトの名無しさん
2008/11/28(金) 19:26:14[2] 問題文(含コード&リンク):
次の図のように33個の節点が抵抗で繋がれた電気回路がある。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8141.zip
ただし、全ての抵抗の抵抗値は同じである。
ここで、AB間に5Vの電源を接続し、Aの電位を5V、Bの電位の0Vとしたとき、残りの31点の電位を計算せよ。
[3] 環境
[3.1] OS:Windows/
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: ([2008年12月19日まで]
[5] その他の制限:各節点の電位を未知数とする連立方程式を立て、それをガウスの消去法で解けばよい。
各節点に対して、「流れ込む電流の和は0」という法則で方程式を作れるはず。
0658デフォルトの名無しさん
2008/11/28(金) 20:49:27大変参考になりました。
現状、単体では動作していますが、組み合わせると大量にエラーが返されてしまうので、
教えていただいたコードを元に修正を加えていこうと思います。
ありがとうございました。
0659ruru
2008/11/28(金) 21:57:09[1]プログラミング1
[2]課題
1990年1月1日以降の年月日をキーボードから入力すると、
それが何曜日かを表示するプログラムを作りなさい。
[条件]
�@年、月、日の順にキーボードから入力すると
曜日が表示されるようにすること。
�A1990年1月1日が月曜日であることは既知であるとする。
�Bうるう年の条件
「4の倍数で、100の倍数ではない」あるいは
「400の倍数である」も既知であるとする。
[3] 環境
[3.1] windowsXP
[3.2] Microsoft Visual studio 2005
[3.3] C言語
[4] 2008/12/01 12:00
[5]
まったくの初心者の状態から、
変数を使ったプログラミング→データの出入力→変数と演算子→条件分岐
という手順で授業が進み、今回の学習目標が
「条件分岐 switch を使うことができる」
です。
0660デフォルトの名無しさん
2008/11/28(金) 22:08:18前回までの学習目標は達成できてるの?
0661ruru
2008/11/28(金) 22:23:39はい、できてます!!
0662 ◆Ao6dpGb6Jk
2008/11/28(金) 22:43:26[2] 問題文(含コード&リンク):以下の仕様を満たすプログラムを作成せよ。
【銀行ATM】
・実際のATMの機能を網羅する
・通帳記入によりファイルに情報を出力
・顧客情報のデータベースを作成
・エラー所処理
・独自の機能を一つ以上加える
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual C++
[3.3] 言語: どちらでも可
[4] 期限: 2008年12月2日10:00
[5] 全スレにも同様な質問がございましたがリンク切れのため、どなたかよろしくお願いいたします。
0663デフォルトの名無しさん
2008/11/28(金) 22:48:51switchの使い道が思い浮かばないんだが、無理矢理使うとしてもここぐらい?
switch(dayofweek)
{
case 0: printf("日曜日"); break;
case 1: printf("日曜日"); break;
・・・
default: printf("バグってすみません"); break;
}
0664デフォルトの名無しさん
2008/11/28(金) 22:52:26・実際のATMの機能一覧
・通帳に見立てたファイルのフォーマット
・使用するDBMS
・エラー通知方法(メール送信?イベントログ?独自プロトコルで別マシンに通知?)
・加えようと思う機能
とりあえずこれくらいは伝えておかないと想定外のものが出てくると思うよ。
0665デフォルトの名無しさん
2008/11/28(金) 22:53:51ひたすらswitch使ってみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8142.c
0666デフォルトの名無しさん
2008/11/28(金) 22:56:020667665
2008/11/28(金) 22:59:50↓の365と366が逆だった。
/* 1990年からの日数を数える */
switch(bis){
case 0:
days += 366;
break;
case 1:
days += 365;
break;
default:
break;
}
0668デフォルトの名無しさん
2008/11/28(金) 23:01:27#include <stdio.h>
int main()
{
int h,y,m,d,w;
char*wn[]={{"日"},{"月"},{"火"},{"水"},{"木"},{"金"},{"土"}};
printf("日付を入力してください(YYYY/MM/DD) ");
scanf("%4d/%2d/%2d",&y,&m,&d);
if(m<3){--y;m+=12;}
w=(y+y/4-y/100+y/400+(13*m+8)/5+d)%7;
printf("%s曜日",wn[w]);
return 0;
}
0669デフォルトの名無しさん
2008/11/28(金) 23:05:110点だな
0670デフォルトの名無しさん
2008/11/28(金) 23:08:52#include <stdio.h>
int main()
{
int h,y,m,d,w;
char*wn[]={{"日"},{"月"},{"火"},{"水"},{"木"},{"金"},{"土"}};
printf("日付を入力してください(YYYY/MM/DD) ");
scanf("%4d/%2d/%2d",&y,&m,&d);
if(m<3){--y;m+=12;}
w=(y+y/4-y/100+y/400+(13*m+8)/5+d)%7;
printf("%s曜日",wn[w]);
switch(w){
case 0:break;
default:break;
}
return 0;
}
[2] 問題文(含コード&リンク):
void main()
{
int i,j,data[5][4];
for (j=0;j<=3;j++){
data[4][j]=0;
}
for (i=0;i<=3;i++){
data[i][3]=0;
for (j=0;j<=2;j++){
printf("data[%d][%d]=",i,j);
scanf("%d",&data[i][j]);
data[i][3]+=data[i][j];
data[4][i]+=data[i][j];
data[4][3]+=data[i][j];
}
}
for(i=0;i<=4;i++){
for(j=0;j<=3;j++){
printf("%4d",data[i][j]);
}
printf("\n");
}
}
右下の合計と平均の文字は要りません
国語 数学 英語 |合計 |平均
75 35 40 | |
69 75 82 | |
57 48 36 | |
30 60 50 | |
-------------------------------------
合計 |
平均 |
[3] 環境:ポケコンに打つんでよく分かりません
[4] 期限:12月1日
[5] その他の制限:特になし
お願いします
0673デフォルトの名無しさん
2008/11/28(金) 23:22:14よう 俺と同じ授業受けてるな・・
課題内容の文のせいでばればれだからあぷろだ使おう
ってか生徒だよな・・・生徒だよな・・・
>>659と同じ宿題なのですが、自力でやるとこんな感じになりました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8144.txt
どうも上手くいってるのかどうか微妙なんですよね。
どなたか改善、または計算方法の変更出来るお方いませんか
申し訳ございません。詳細を記述いたしました。ご指摘ありがとうございます。
データベースについては、よくわかりませんが以下に記述するようことができれば
よいかと思います。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8145.txt
0675デフォルトの名無しさん
2008/11/28(金) 23:31:06switchを使うべき箇所が見つからなかったという意思表示が見られるのでよいと思う
0676デフォルトの名無しさん
2008/11/28(金) 23:38:01実際のATMの機能を網羅する、からずいぶんと機能落ちしたなあ。
Excelの読み書きってbiff扱うライブラリ持ってるの?xlsx形式?にしてもxmlパーサを使うか作るかしなきゃならない。
期間的にテキストを選ばざるを得ないだろうけれど。
フォーマットもなにもあったもんじゃないね。
顧客データの保存形式はどうするのとかもうね、なんで今になるまでほっといたの?
少なくとも1ヶ月くらいは期間くれてないと学生には厳しくないかい
0677デフォルトの名無しさん
2008/11/28(金) 23:42:38[2] 問題文(含コード&リンク):英語→日本語に変換するプログラムを作りなさい。
次の3段階で構成すること。
�@単語の登録(10単語)
char word[][2][40]={{"apple","ringo"},{"dog","inu"},・・・・}
�Aキーボードからの入力(英単語)
�B入力した値が�@の英単語に含まれていれば日本語を出力させて、そうでなければエラーを表示させる関数
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Microsoft Visual studio2005
[3.3] 言語: C++
[4] 期限: 2008年12月4日
[5] その他の制限: ポインタは使用不可、"strcmp"を使用することです。
よろしくお願いします。
0678デフォルトの名無しさん
2008/11/29(土) 00:08:06#include <stdio.h>
#include <string.h>
int main()
{
char word[][2][40]={{"apple","ringo"},{"dog","inu"}};
char w[5000];
unsigned int i;
scanf("%4999s", w);
for (i = 0; i < sizeof(word) / sizeof(word[0]); ++i) {
if (!strcmp(w, word[i][0])) {
puts(word[i][1]);
return 0;
}
}
puts("エラーです");
return 0;
}
単語は自分で足してくれ
0679デフォルトの名無しさん
2008/11/29(土) 00:51:32[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8125.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2008年12月1日10:40まで
よろしくお願いします。
0680デフォルトの名無しさん
2008/11/29(土) 01:03:52#include <iostream>
class Rectangle {
int width, height;
public:
void setWidthHeight(int w, int h) {
std::cout << "横幅に" << w << "が高さに" << h
<< "が入力されました" << std::endl;
if ( w < 0 || h < 0) {
width = 0;
height = 0;
std::cout << "横幅や高さには正の値を入れる必要があります。"
"どちらも0にします。" << std::endl;
} else {
width = w;
height = h;
}
}
void calcArea() {
std::cout << "面積は" << width * height << "です。" << std::endl;
}
};
int main()
{
Rectangle r;
r.setWidthHeight(6, 8);
r.calcArea();
r.setWidthHeight(-6, 8);
r.calcArea();
return 0;
}
0681デフォルトの名無しさん
2008/11/29(土) 01:10:30[1] 授業単元:c++入門
[2] 問題文(含コード&リンク):実行するたびにランダムな
10文字の文字列を生成するプログラムを作成しなさい
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: g++ (GCC) 4.2.4
[3.3] 言語: C++
[4] 期限: 2008年11月30日16:00まで
[5] その他の制限:
0682657 ◆1lOgEs2Vr2
2008/11/29(土) 01:11:29[2] 問題文(含コード&リンク):
次の図のように33個の節点が抵抗で繋がれた電気回路がある。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8141.zip
ただし、全ての抵抗の抵抗値は同じである。
ここで、AB間に5Vの電源を接続し、Aの電位を5V、Bの電位の0Vとしたとき、残りの31点の電位を計算せよ。
[3] 環境
[3.1] OS:Windows/
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: ([2008年12月19日まで]
[5] その他の制限:各節点の電位を未知数とする連立方程式を立て、それをガウスの消去法で解けばよい。
各節点に対して、「流れ込む電流の和は0」という法則で方程式を作れるはず。
お願いします。
0683627 ◆i2J9TbOj36
2008/11/29(土) 01:12:45[2] 問題文(含コード&リンク):
単振り子の運動方程式
θ''=-(g/l)sinθ、θ'(0)=0、θ(0)=Θ
の厳密な数値解を初期振れ角Θを起動時に指定して、アニメーション表示させるプログラムを作成しなさい。
[3] 環境
[3.1] OS:Windows/
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限:2008年12月11日まで
[5] その他の制限:特になし
お願いします。
0684デフォルトの名無しさん
2008/11/29(土) 01:25:31[2] 問題文:
1H1Bを作りなさい。
(1)乱数を用いて答えとなる4桁の数字を決める。
(2)キーボードから4桁の数字を入力する。(4桁の数字以外を入力したらエラーを表示する)
(3)数字と場所が一致していたらH、数字のみ一致していたらBと判定する。
[例:答え1234 入力1324 判定2H2B, 答え1134 入力1111 判定2H2B]
(4)4H0Bになるまで入力と判定を繰り返し、4H0Bになったまでの回数を表示する。
[3] 環境
[3.1] OS:WindowsXP
[3.2] Visual Studio .NET
[3.3] C
[4] 期限:今日の12:30
[5] printf,scanf,if,while,for,int,char,配列,乱数を発生させるプログラム(srand,rand,timeを用いたもの)
以下のようにしてみたのですが、
「答え1134 入力1111」のときに1桁目の1に対して1H3B、2桁目の1に対して1H3Bであわせて2H6Bと表示されてしまいます。
また(2)のエラーの表示ができません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8146.c
よろしくお願いします。
0685デフォルトの名無しさん
2008/11/29(土) 01:28:12[2] 問題文(含コード&リンク):
・入力された文字列をchar型の配列strに読み込み,それを逆順にしてchar型の配列rtsに入れるプログラムを作成せよ
-配列str,rtsは大きめの要素数を確保
-入力された文字数は'\0'を探すことによってわかる
実行例
文字列を入力: osaka ↓
反転した文字列 = akaso
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年11月30日(日)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
配列の初期化、2次元配列、文字コード、文字データ(char型)
getchar、putcharは習いました。
宜しくお願いします。
0686デフォルトの名無しさん
2008/11/29(土) 01:35:30ありがとうございます。でもこれだといつも「エラーです」と出力されると思うんですけど。
0687デフォルトの名無しさん
2008/11/29(土) 02:07:20回答者じゃないですが、そんなことはないと思うんですけど。
0688デフォルトの名無しさん
2008/11/29(土) 02:15:24#include <cstdio>
#define BUFSIZE 200
int main(int argc,char **argv){
char str[BUFSIZE],rts[BUFSIZE];
int length = 0;
printf("文字列を入力:");
gets_s(str,BUFSIZE);
while(str[length] != '\0') length++;
for(int i=0;i<length;i++){
rts[i] = str[length-i-1];
}
rts[length] = '\0';
printf("反転した文字列 = %s\n",rts);
return 0;
}
0689デフォルトの名無しさん
2008/11/29(土) 03:06:06[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8147.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: c
[4] 期限: 朝まで
[5] その他 出来る限りの範囲でこの形から変えずにお願いします。
初心者なんで難しい関数は禁止でお願いします。
出来る限り簡単な回答求む
0690デフォルトの名無しさん
2008/11/29(土) 03:09:460691デフォルトの名無しさん
2008/11/29(土) 03:15:32意味の無い部分を削ってもいいか?
0692デフォルトの名無しさん
2008/11/29(土) 03:21:090693デフォルトの名無しさん
2008/11/29(土) 03:30:26#include<stdio.h>
#define SIZE 8
int main()
{
int count;
int c = 0, d;
int x[3], i;
for (i = 0; i < 3; ++i) {
count = 0;
d = 0;
while ((c = getchar()) != '\n') {
if (count < SIZE) {
d = d * 10 + (c - '0');
count++;
}
}
x[i] = d;
}
printf("%d + %d + %d = %d\n", x[0], x[1], x[2], x[0] + x[1] + x[2]);
return 0;
}
0694デフォルトの名無しさん
2008/11/29(土) 03:33:310695デフォルトの名無しさん
2008/11/29(土) 03:33:480696デフォルトの名無しさん
2008/11/29(土) 03:38:13#include<stdio.h>
#include <stdlib.h>
#define SIZE 8
int main()
{
int count;
int c = 0, d;
int x[3], i;
for (i = 0; i < 3; ++i) {
count = 0;
d = 0;
while ((c = getchar()) != '\n') {
if (c < '0' || '9' < c ) {
printf("エラーです\n");
exit(1);
}
if (count < SIZE) {
d = d * 10 + (c - '0');
count++;
}
}
x[i] = d;
}
printf("%d + %d + %d = %d\n", x[0], x[1], x[2], x[0] + x[1] + x[2]);
return 0;
}
負数に対応、というより数字以外を受けるとエラーを表示して終了することで
-があれば終了するというものです
0697デフォルトの名無しさん
2008/11/29(土) 03:48:080698デフォルトの名無しさん
2008/11/29(土) 03:51:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8148.txt
これでもいいのかな?
厳密な数値解よく分からない
アニメーションってどんな方法ありますか?
0699デフォルトの名無しさん
2008/11/29(土) 06:24:14これは確か初等関数の範囲外だったかと。
0700デフォルトの名無しさん
2008/11/29(土) 06:26:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8149.c
switchは不使用。閏年を求める部分は、独自で定義した関数を使用。
っつか、ツェラーの公式を使いてぇ〜〜。
0702デフォルトの名無しさん
2008/11/29(土) 09:42:03同じ内容の課題です、同じ授業をとってる人かもしれません。
0703デフォルトの名無しさん
2008/11/29(土) 10:15:46#include <iostream>
#include <sstream>
#include <cstdlib>
#include <ctime>
int main(void)
{
srand(time(NULL));
std::stringbuf sb;
for (int i = 0; i < 10; i++) {
sb.sputc(rand()%26+'a');
}
std::cout << sb.str() << std::endl;
return 0;
}
0704デフォルトの名無しさん
2008/11/29(土) 10:51:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8150.txt
無理やりスイッチ文使って見たり色々とアレ気なプログラムだけどどうぞ
0705デフォルトの名無しさん
2008/11/29(土) 10:55:47ツェラーの公式を使うなら、日数の合計なんて要らないじゃん・・・
0706デフォルトの名無しさん
2008/11/29(土) 11:00:46>>704の方が親切な気はする。
0707デフォルトの名無しさん
2008/11/29(土) 11:08:44まぁ、丸投げで知ったこっちゃないだろうけど、
> �A1990年1月1日が月曜日であることは既知であるとする。
これがキーだな。何のために基準の年月日と曜日を問題で示したか。
0708デフォルトの名無しさん
2008/11/29(土) 11:20:02コンパイルして実行してみた?
0709デフォルトの名無しさん
2008/11/29(土) 11:22:52俺が書いたのじゃないから知らんがな
constでintとくっついてる場所があるのはきになったけど文字コードの問題だろうし。
0710657 ◆1lOgEs2Vr2
2008/11/29(土) 12:38:38[2] 問題文(含コード&リンク):
次の図のように33個の節点が抵抗で繋がれた電気回路がある。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8141.zip
ただし、全ての抵抗の抵抗値は同じである。
ここで、AB間に5Vの電源を接続し、Aの電位を5V、Bの電位の0Vとしたとき、残りの31点の電位を計算せよ。
[3] 環境
[3.1] OS:Windows/
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: ([2008年12月19日まで]
[5] その他の制限:各節点の電位を未知数とする連立方程式を立て、それをガウスの消去法で解けばよい。
各節点に対して、「流れ込む電流の和は0」という法則で方程式を作れるはず。
お願いします。
0711デフォルトの名無しさん
2008/11/29(土) 14:34:57[2]問題文
ペン1〜10個で100円
11〜100個で90円
101個以上は70円
n個買った時の値段は
[3]
[3.1]OS:XP
[3.2]コンパイラとパーテンション:vc6.0
[4]期限:2008/12/5
お願いします
0712711
2008/11/29(土) 14:45:19になるわけではありません
0713デフォルトの名無しさん
2008/11/29(土) 15:48:23#include<stdio.h>
int main()
{
int n ;
printf ( "何個買いますか?->" ) ;
scanf ( "%d", &n ) ;
int price = 0 ;
for ( int i = 1 ; i <= n ; i++ ){
price += (100 - (i>10)*10 - (i>100)*20 ) ;
}
printf ( "%d円です\n", price ) ;
}
0714デフォルトの名無しさん
2008/11/29(土) 15:51:120715デフォルトの名無しさん
2008/11/29(土) 18:27:08式の立て方がよく分かんない。デレデレしながら教えて。
0716デフォルトの名無しさん
2008/11/29(土) 19:15:22int get_price(int pen_num)
{
int price=0;
if(pen_num-100>0) price+=(pen_num-100)*70, pen_num-=pen_num-100; // pen_num-=pen_num-100 -> pen_num=100
if(pen_num-10>0) price+=(pen_num-10)*90, pen_num-=pen_num-10;
if(pen_num-0>0) price+=(pen_num-0)*100, pen_num-=pen_num-0;
return price;
}
0718デフォルトの名無しさん
2008/11/29(土) 19:29:10>>657じゃ無いけど
たとえばAの上の点V1とする
V1に入ってくる電流、出てく電流を
I2↑ I3
V1├→
I1↑
とすると
I1 = I2 + I3
∴I1 - I2 - I3 = 0
って方程式が立ってこれが各点分31個
肝心の電圧はVaから電圧降下I1*rを引いた
V1 = Va - I1*r
∴I1 = (Va - V1)/r
この式が各線分52個
Iiを代入してViについての連立方程式MV=mの形にする
V = {V1,V2,・・・,V32}'
連立方程式をガウスの消去法なりで解く
紙の上でやることがほとんど
0719デフォルトの名無しさん
2008/11/29(土) 19:31:080720デフォルトの名無しさん
2008/11/29(土) 22:02:43[2] 問題文: FILE文、fopen文、fwrite文、fflush文、fclose文が全て含まれるプログラムを示せ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Borland C++ Compiler
[3.3] 言語: Cのみ
[4] 期限: ([2008年12月1日まで)
[5] その他の制限: 特になし
0721デフォルトの名無しさん
2008/11/29(土) 22:29:18/__.:.<.:.^>´.:_.:\ヘ、_
_,∠厶=::≧':∠三:::≧_` .:.:.:.:.:`丶、
'".:.:.:.: ̄.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:\.:.:.:.:.:.:.:.:.:.\
. ∠/.:.:.:.:.:.:.:.: /.:.:.:.:.:.:.:.:.:.:.:.:.:.:\.:.:.:.:.\.:.:.:.:.:.:.:.:.:.ヽ
/.:.: /.:./.:.:/.:.:.:.:.:.:.:.:.::l.:.:.:.丶:.:.ヽ.:.:.:.:.:ヽ.:.:.:.:.:.:.:.:.:.:..
/.:.: /.:./.:.:.:.::l.:.:.:.:::.:.|.:.:.::|:.:.:.:.:.:.:.:.:.:.:'..:.:.:.:.:.:'., :.:.:.:.:.:.:.:.:'.
,'.:.: /.::;'.::l.:.:::::|.:.:.:.:::.:.|.:.:.::l:.:.:.:.:.:.:::.:.:.: l:::.:.i.:.:.:.�Y::::.:.:.:.:.:.l
|.:.:/|.:::|.:::|\/|.:.:.:.::|.:.ト、.;ィ⌒.:.:.::|:.:.:.:.|:::.:.|.:.:l::.l:|::::.:.:.:.:.: |
|.:/│,'|::::l.::∧|.:l.:.:::�Wメ:.:lヽ::.:.:.: l:.:.:.:.|:::.;ム.:.�Wl:::::.:.:.:.:.:.|
|/ j/ |::::l :::坏ハ.::T^ 行外千':.:ト::.:.∧/圦リ::::|:::::.:.:.:.:.:.| >>718
リ:ハ::ヽ小リ ヽ{ iト沙'_ \| �W 〈 \::i:::::.:.:.:.:.:.| べ、べつに感謝なんてしないからね!
ヾ∧ :::}^r'//////` ´ |{} j _,ノ::i:::::.:.:.:.:.:.|
ヽ八 ハ_厂}:::::::i:::::.:.:.:.:.:.|
\`^⌒ ,':::::{: {: }:::::::i:::::.:.:.:.:.:.|
|\ イ/:::::::{: {:_}:::::::i:::::.:.:.:.:.: |
しかし、行列の入力が半端なく面倒だな。
入力しやすいデータ構造から行列への変換処理も課題のうちか?
データ構造も変換処理も思いつかないからやんないけど。
>>710
Va = a1 * V1 + a2 * V2 + ... + a31 * V31
の式を31個分導出して欲しいです。
無茶ですか?
0722657 ◆1lOgEs2Vr2
2008/11/29(土) 23:09:56ちょっとできないですね。というかできてたら質問しにこないような…
ガウスの消去法について、少し補足をしておきます
参考になるかはわかりませんが
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8152.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8153.txt
0723657 ◆1lOgEnIaoc
2008/11/29(土) 23:33:20とりあえず解答になる電位を図にしてみました
Cでこれを算出してください
どなたかお願いします
0724657 ◆3l99NbVdNE
2008/11/29(土) 23:55:54うっかり消してしまいました。
0726657 ◆3l99NbVdNE
2008/11/30(日) 00:07:58#+`+`+`+`
>>725
講義では電圧云々には触れてませんでしたね
理系の学校なので他の授業でやっているだろう、みたいな言い方をされました
(できないわけですが)
0727デフォルトの名無しさん
2008/11/30(日) 00:18:410728711
2008/11/30(日) 00:34:01補足
11個買うと100*10+90です
0729デフォルトの名無しさん
2008/11/30(日) 00:37:43>>713
0730デフォルトの名無しさん
2008/11/30(日) 00:47:38未知数と方程式の数が同一の線型方程式解法までヒントだされてるんだから
収束させるような反復計算は不要でしょ
キルヒホッフの法則は高校時代に習ったもんだが今の3年からゆとりなんだよな
0731デフォルトの名無しさん
2008/11/30(日) 00:49:13だからここにいるほとんどの人はガウスの消去法ぐらいは知っている
問題は連立方程式の立て方が分からない事だ
0732♯shinshu
2008/11/30(日) 00:52:00[2] 問題文:(ガウスザイデル法を用いて最低四元の一次連立方程式を解くプログラムを作成せよ。尚、プログラムはキーボードからの入力に対するもので、収束判定とピボット選択を必ず入れること。)
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] コンパイラ名とバージョン: (cygwin2007)
[3.3] 言語: (C)
[4] 期限: ([2008年12月01日09:00まで]
[5] その他の制限: (授業で習ったのはfor文やif文などの本当に初歩の初歩ですので初心者向けにお願いします)
以上よろしくお願いします
0733デフォルトの名無しさん
2008/11/30(日) 00:54:48マルチ?
0734デフォルトの名無しさん
2008/11/30(日) 00:59:280735デフォルトの名無しさん
2008/11/30(日) 01:05:25先に書いた方がなんとなくスレチな気がしたので一応こちらに書き直しました。
マズかったでしょうか?
0736デフォルトの名無しさん
2008/11/30(日) 01:07:45なら元スレに一言書いとけよ。
0737デフォルトの名無しさん
2008/11/30(日) 01:08:38すみませんでした。
今から書いてきます
0738デフォルトの名無しさん
2008/11/30(日) 01:59:398154.txt
行列だけやってみた。こうじゃないかなー?
自分機械なんで正確さは保証しない
0739デフォルトの名無しさん
2008/11/30(日) 02:09:41電流の方向がアッー
0740デフォルトの名無しさん
2008/11/30(日) 02:22:31どっちでもいーきがしたんだけど
解いてないからわかんないな
これだからゆとりは
0741デフォルトの名無しさん
2008/11/30(日) 02:50:090742デフォルトの名無しさん
2008/11/30(日) 03:39:50[2] 問題文
for文を用いて二つの正の整数値width(幅),height(高さ)を読み込む。
長方形を描くときに,ふちだけ*文字を出力するようにする。長方形の中央部は,スペース
文字を使ってあける。もしwidth が5,height が4 であれば,次のように出力される。
*****
* *
* *
*****
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2008年12月2日10:40まで
よろしくお願いします。
0743デフォルトの名無しさん
2008/11/30(日) 03:45:49#include <iostream>
int main()
{
int w = 0, h = 0;
std::cout << "w = ";
std::cin >> w;
std::cout << "h = ";
std::cin >> h;
for (int i = 0; i < h; ++i) {
if(i == 0 || i == h - 1)
for (int j = 0; j < w; ++j) {
std::cout << '*';
}
else
for (int j = 0; j < w; ++j) {
if(j == 0 || j == w - 1)
std::cout << '*';
else
std::cout << ' ';
}
std::cout << std::endl;
}
return 0;
}
0744デフォルトの名無しさん
2008/11/30(日) 03:52:05[2] 問題文
二つの関数を作成しなさい
(1) int min_intarray(int data[ ], int n)
この関数は,要素がn 個の配列data の中の最小の値を返すものである。
(2) void print_intarray(int data[ ], int n)
この関数は,要素がn個の配列data のすべての要素を横に並べて出力するものである。
その上で,次のプログラム(main 関数)を利用して,作成した関数が正しく動作しているか
確認しなさい。
int main(void)
{
int a[5] = {3, 5, 1, 2, 4};
int b[10] = {6, 4, 2, 5, 8, -2, 7, 0, 1, 9};
int c[4] = {-2, -3, -4, -1};
printf("%d :", min_intarray(a, 5));
print_intarray(a, 5);
printf("%d :", min_intarray(b, 10));
print_intarray(b, 10);
printf("%d :", min_intarray(c, 4));
print_intarray(c, 4);
return 0;
}
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2008年12月2日10:40まで
よろしくお願いします。
0745デフォルトの名無しさん
2008/11/30(日) 03:56:21[2] 問題文
関数double area(double w, double h)を作成しなさい。この関数は,w を長方形の
幅,h を長方形の高さと見なして,その長方形の面積を計算する。ただし,w 又はh が負
の値の場合は,長方形の面積はゼロとすることにする。関数を定義した上で,次のような
プログラム(main 関数)を作成しなさい。
(1) 二つの実数値width(幅),height(高さ)を読み込む。長方形の面積を求めて出力し
なさい。
(2) 四つの実数値width1, height1, width2, height2 を読み込む(一つ目の長方形の幅,一
つ目の長方形の高さ,二つ目の長方形の幅,二つ目の長方形の高さを意味する)。二つ
の長方形の面積を出力し,さらに,一つ目の長方形と,二つ目の長方形とどちらが大き
いのか,又は同じ大きさなのかを出力しなさい。
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2008年12月2日10:40まで
よろしくお願いします。
0746デフォルトの名無しさん
2008/11/30(日) 03:57:11ありがとうございます!
0747デフォルトの名無しさん
2008/11/30(日) 03:58:17#include<algorithm>
#include<iterator>
#include<iostream>
int min_intarray(int data[ ], int n) {
return *std::min_element(data,data+n);
}
void print_intarray(int data[ ], int n){
copy(data,data+n,std::ostream_iterator<int>(std::cout," "));
std::cout<<std::endl;
}
0748デフォルトの名無しさん
2008/11/30(日) 04:08:12初心者なので難しい関数は避けてください。
すみませんがよろしくお願いします。
0749デフォルトの名無しさん
2008/11/30(日) 04:31:13#include <stdio.h>
double area(double w,double h){
if(w <0 || h <0) return 0;
return w*h;
}
int main(int argc,char **argv){
double height,width,height1,width1,height2,width2,area1,area2;
//(1)
printf("幅:\t");
scanf_s("%lf",&width);
printf("高さ:\t");
scanf_s("%lf",&height);
printf("面積:\t%lf\n",area(width,height));
printf("\n");
//(2)
printf("幅1:\t");
scanf_s("%lf",&width1);
printf("高さ1:\t");
scanf_s("%lf",&height1);
printf("面積1:\t%lf\n",area1 = area(width1,height1));
printf("幅2:\t");
scanf_s("%lf",&width2);
printf("高さ2:\t");
scanf_s("%lf",&height2);
printf("面積2:\t%lf\n",area2 = area(width2,height2));
printf("\n");
if(area1 == area2) printf("同じ大きさ\n");
else if(area1 < area2) printf("二つ目の長方形の方が大きい\n");
else printf("一つ目の長方形の方が大きい\n");
return 0;
}
0750デフォルトの名無しさん
2008/11/30(日) 05:13:51おっしゃる意味がわからないのですが?ヤコビ法とかありますが。
0751デフォルトの名無しさん
2008/11/30(日) 05:17:52おまえさぁ、ゆとりゆとりってうるせーよ、2次方程式の解w
0752デフォルトの名無しさん
2008/11/30(日) 05:18:34>>443
いいえ。a == 0 のときなども含めて「二次方程式を解く」と表現して問題はありません。昔は高校の数�Tではそうだったんですが。
これが、ゆ と り 教 育なんですね。驚きました。
0754デフォルトの名無しさん
2008/11/30(日) 05:46:25きめぇ。お前、性格が狂ってんな。日頃、まともに相手にされていないか、
低レベルの学校の講師か?お前以上の人間なんて、世の中腐るほどいるぞ?
もっと社会を広い目で見ろよ、な?変な気を起こすなよ。まだこれからも
人間社会に未来はあるし、お前にも老いて死ぬまでに時間はあるだろうし。
0755デフォルトの名無しさん
2008/11/30(日) 06:26:49そこまで分かってるんなら自分で解けよカス
0756デフォルトの名無しさん
2008/11/30(日) 07:15:48[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8156.zip
[3]環境
[3.1] Linux Debian
[3.2] gcc 4.1.2
[3.3] C
[4] 期限: 12/1(月)朝9時くらいまでに出来ると助かります。
[5] 補足
C言語初心者です。ちょっと面倒なプログラムですみません。ソケット通信プログラムを
作成する問題です。問題の詳細は添付のURLをご覧下さい。
1問目はウェブで調べた内容を参考にしてサーバー/クライアント間でメッセージの
送受信をするというベーシックなところまでは出来ました。問題は、これをクライアント
から受け取った単語をサーバ側で/usr/share/dict/words辞書と照らし合わし、存在可否
結果を返すようにしたいです。なので僕がアップしたファイルに修正/追記してほしいです。
2問あって2問目の方はもっと難しいです。問題の仕様が曖昧だと感じた場合は、適当な
感じでも構わないです。よろしくお願いします。
0757デフォルトの名無しさん
2008/11/30(日) 09:22:27[2] 問題文: 8bitの2進数を16進数、10進数に変換するプログラムを示せ。ただし、負数、正数について示せ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++ Compiler
[3.3] 言語: C言語
[4] 期限: ([2008年12月2日まで)
[5] 補足: 正数の場合は何とかなりましたが負数の場合が…
両方を処理するプログラムでも、別々に処理するプログラムでもOKです。
宜しくお願いします。
0758デフォルトの名無しさん
2008/11/30(日) 09:24:470759デフォルトの名無しさん
2008/11/30(日) 09:55:20既に作ったものを提示したら?
0760デフォルトの名無しさん
2008/11/30(日) 10:34:23http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8157.c
たまにはクソースを。BPBを変えてもイケまっせ。
0761デフォルトの名無しさん
2008/11/30(日) 10:37:580762デフォルトの名無しさん
2008/11/30(日) 12:25:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8158.c
0763デフォルトの名無しさん
2008/11/30(日) 12:47:41ありがとうございます!
0764デフォルトの名無しさん
2008/11/30(日) 13:22:470765デフォルトの名無しさん
2008/11/30(日) 14:32:38どんな簡単なプログラムでも良いので
0766デフォルトの名無しさん
2008/11/30(日) 14:37:38簡単なのでいいとかいうなら自分で作れば?
0767デフォルトの名無しさん
2008/11/30(日) 14:40:12#include <stdlib.h>
#include <stdio.h>
int main()
{
FILE *fp;
fp = fopen("t.txt", "w");
fwrite("caster", 1, 6, fp);
fflush(fp);
fclose(fp);
return 0;
}
0768デフォルトの名無しさん
2008/11/30(日) 15:37:45平均速度を[m/s]と[km/h]の単位で小数第1位まで
出力するプログラムをつくりなさい。
0769デフォルトの名無しさん
2008/11/30(日) 15:43:02#include <stdio.h>
int main(void){
double t;
printf("陸上競技の100mのタイム[s]: ");
scanf("%lf", &t);
printf("平均速度 %.1lf[m/s]\n", t / 100);
printf("平均速度 %.1lf[km/h]\n", t * 3.6 / 100);
return 0;
}
0770デフォルトの名無しさん
2008/11/30(日) 16:01:39ありがとう。
0771デフォルトの名無しさん
2008/11/30(日) 16:18:41�@なんでfloatじゃなくてdoubleを使うんですか?
�Aなんで3.6をかけるんですか?
0772デフォルトの名無しさん
2008/11/30(日) 16:20:22時速だからだろ。
60*60=360で時速でm/hがでる
これの1000倍だろ
0773デフォルトの名無しさん
2008/11/30(日) 16:21:370774デフォルトの名無しさん
2008/11/30(日) 16:25:05ちょ、ちょっと間違えただけなんだからね!
0775デフォルトの名無しさん
2008/11/30(日) 16:26:550776デフォルトの名無しさん
2008/11/30(日) 16:30:120777デフォルトの名無しさん
2008/11/30(日) 16:31:29精度の高い計算をしてみたかっただけ。
0778デフォルトの名無しさん
2008/11/30(日) 16:32:24じっ、自分もちょっと茶化してみたかっただけなんだからねっ ♥
0779g02dy2
2008/11/30(日) 16:46:540780デフォルトの名無しさん
2008/11/30(日) 16:51:36doubleは浮動小数点におけるintのような存在。特に理由がないときに使う。
Cではmath.hの浮動小数点関数がdoubleしかなく、
floatだと頻繁にdoubleへ変換する機会が現れるのでdoubleより遅くなるのが常識
(今でもprintfのような可変個引数に名残がある)
という時代が長かった。
もちろん、floatだと精度が問題になることも多いし、
今でも理由がなければdoubleを使っておくのが普通。
0781デフォルトの名無しさん
2008/11/30(日) 16:57:31[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8159
.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 12/1
[5] 補足: プログラム自体の問題ではないのですがイマイチ理解できません。お願いします。
0782デフォルトの名無しさん
2008/11/30(日) 17:00:06構造体のサイズが分かってるんだから、ポインタを構造体のサイズ分だけ移動させればっていう話じゃないの?
0783g02dy2
2008/11/30(日) 17:04:33へぇ×20
0784デフォルトの名無しさん
2008/11/30(日) 17:06:42long型と同じ扱いだし。short も float も、それぞれの半分のbit幅だが、
浮動小数に於いては、指数部分も大きく差がでるしね・・・
0785デフォルトの名無しさん
2008/11/30(日) 17:12:210786デフォルトの名無しさん
2008/11/30(日) 17:16:540787デフォルトの名無しさん
2008/11/30(日) 17:28:470788デフォルトの名無しさん
2008/11/30(日) 17:29:47ただの、オールラウンダー
0789デフォルトの名無しさん
2008/11/30(日) 17:30:02C言語が最強であると仮定しても、いろんな意味を考えると
最強になれない場合がある
0790デフォルトの名無しさん
2008/11/30(日) 17:36:070791デフォルトの名無しさん
2008/11/30(日) 17:39:00極めなくてもすぐにそこそこのものは書けるようになりますよ、書き続ければ。
0792デフォルトの名無しさん
2008/11/30(日) 17:40:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8160.txt
ピボット選択は部分ピボット選択によった。
0793デフォルトの名無しさん
2008/11/30(日) 17:41:38×#define N 3
○#define N 4
0794デフォルトの名無しさん
2008/11/30(日) 17:42:110795732
2008/11/30(日) 17:47:38ありがとうございました.
これから自分でも解読してみたいと思います.
0796デフォルトの名無しさん
2008/11/30(日) 17:54:22×#define N 3 /* 4元 */4
○#define N 4 /* 4元 */
済みませんね、最終チェックを怠ってうpしてしまったので
これだけは最低修正して下さい
そうしないとコンパイルできません
0797デフォルトの名無しさん
2008/11/30(日) 18:02:030798732
2008/11/30(日) 18:04:34今コンパイルしてみたのですが, エラーがでてしまいます.
自分でもデバック中ですが, もしよかったら協力していただけないでしょうか?
gauss-seidel.c: In function `main':
gauss-seidel.c:9: error: parse error before numeric constant
gauss-seidel.c:15: error: parse error before numeric constant
gauss-seidel.c:15: error: parse error before ')' token
gauss-seidel.c:16: error: parse error before numeric constant
gauss-seidel.c:16: error: parse error before ')' token
gauss-seidel.c:18: error: `a' undeclared (first use in this function)
0799732
2008/11/30(日) 18:05:09gauss-seidel.c:18: error: for each function it appears in.)
gauss-seidel.c: At top level:
gauss-seidel.c:21: error: parse error before string constant
gauss-seidel.c:21: warning: data definition has no type or storage class
gauss-seidel.c:25: error: parse error before string constant
gauss-seidel.c:25: error: conflicting types for 'scanf'
gauss-seidel.c:25: note: a parameter list with an ellipsis can't match an e
parameter name list declaration
gauss-seidel.c:25: error: conflicting types for 'scanf'
gauss-seidel.c:25: note: a parameter list with an ellipsis can't match an e
parameter name list declaration
gauss-seidel.c:25: warning: data definition has no type or storage class
gauss-seidel.c:28: error: parse error before string constant
gauss-seidel.c:28: warning: data definition has no type or storage class
gauss-seidel.c:32: error: parse error before string constant
gauss-seidel.c:32: warning: data definition has no type or storage class
gauss-seidel.c:37: warning: data definition has no type or storage class
gauss-seidel.c:41: error: parse error before "for"
gauss-seidel.c:43: error: `i' undeclared here (not in a function)
gauss-seidel.c:43: warning: data definition has no type or storage class
gauss-seidel.c:44: error: parse error before "for"
gauss-seidel.c:48: error: redefinition of 'pivot'
0800732
2008/11/30(日) 18:05:56gauss-seidel.c:48: error: `j' undeclared here (not in a function)
gauss-seidel.c:48: warning: data definition has no type or storage class
gauss-seidel.c:49: error: parse error before '}' token
gauss-seidel.c:55: error: `b' undeclared here (not in a function)
gauss-seidel.c:55: error: variable-size type declared outside of any functi
gauss-seidel.c:55: error: variable-sized object may not be initialized
gauss-seidel.c:55: warning: data definition has no type or storage class
gauss-seidel.c:56: error: parse error before '}' token
gauss-seidel.c:66: error: `a' undeclared here (not in a function)
gauss-seidel.c:66: error: `sum' undeclared here (not in a function)
gauss-seidel.c:66: warning: data definition has no type or storage class
gauss-seidel.c:67: error: parse error before '+=' token
gauss-seidel.c:69: warning: data definition has no type or storage class
gauss-seidel.c:70: error: parse error before '}' token
gauss-seidel.c:73: error: parse error before string constant
gauss-seidel.c:73: warning: data definition has no type or storage class
gauss-seidel.c:55: error: storage size of `b' isn't known
gauss-seidel.c:69: error: storage size of `x' isn't known
0801732
2008/11/30(日) 18:12:03すみません、無事にコンパイルできました.
ご協力いただきありがとうございました
0802デフォルトの名無しさん
2008/11/30(日) 18:14:05誤: #define N 3 /* 4元 */4
正: #define N 3 /* 4元 */
0803732
2008/11/30(日) 18:17:10わざわざありがとうございます.
また, 別の課題でお世話になることがあるかもしれませんが
そのときはよろしくお願いします.
(このたびは解説付きのわかりすいプログラム誠にありがとうございました)
0804デフォルトの名無しさん
2008/11/30(日) 18:36:15[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8161.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 12月10日21:00まで
[5] その他の制限:特になし
自作のソース:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8162.txt
上のものだと木の生成後、根の内容(整数)は出力できるのですが、以降の節に巡回してくれません。
(ソース中のset_node、addは別ファイル(B-tree.h)から呼び出ししています。長くなるので省略しましたが必要があれば掲示します)
よろしくお願いします。
0805デフォルトの名無しさん
2008/11/30(日) 19:47:120806デフォルトの名無しさん
2008/11/30(日) 20:49:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8163.txt
こんなんでいいのか?
0807 ◆a0MxWqf9PE
2008/11/30(日) 21:54:58[2] 問題文(含コード&リンク):入力された文字列中に大文字のX、小文字のx、大文字のY、小文字のyが何文字あるか調べ、結果を出力するプログラムを作れ
[例]
入力:AWTXYXMPWPDxyDGmg
大文字のX:2文字、小文字のx:1文字、大文字のY:1文字、小文字のy:1文字
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年12月1日23:00まで
[5] その他の制限:特になし。
よろしくお願いします。
0808デフォルトの名無しさん
2008/11/30(日) 22:08:01#include <stdio.h>
int main(void)
{
int lx = 0, sx = 0, ly = 0, sy = 0;
int i = 0;
char input[100];
scanf("%s", input);
while (input[i] != NULL) {
switch (input[i]) {
case 'X':
lx++;
break;
case 'x':
sx++;
break;
case 'Y':
ly++;
break;
case 'y':
sy++;
break;
}
i++;
}
printf("大文字のX:%d個\n", lx);
printf("小文字のx:%d個\n", sx);
printf("大文字のY:%d個\n", ly);
printf("小文字のy:%d個\n", sy);
return 0;
}
0809デフォルトの名無しさん
2008/11/30(日) 22:47:200810デフォルトの名無しさん
2008/11/30(日) 23:35:08ありがとうございました><
0811デフォルトの名無しさん
2008/12/01(月) 03:27:49全てまとめて書き込もうと思ったら文字数が多すぎるとか改行が多すぎるとか言われてしまいました。
DLkeyもDELkeyも「null」です。詳細内容全て記載してあります。
宜しくお願いします。。
http://upsurusuru.hp.infoseek.co.jp/cgi-bin/src/up3284.txt.html
0812811
2008/12/01(月) 03:32:56C:\Documents and Settings\(ユーザー名)\デスクトップ>bcc32 lexico.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
lexico.c:
警告 W8004 lexico.c 45: 'mc' に代入した値は使われていない(関数 main )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
失礼しました。宜しくお願い致します。
0813デフォルトの名無しさん
2008/12/01(月) 03:50:25for(a = 0; a < b; b++) { ⇒ for(a = 0; a < b; a++) {
puts(tango[c]); ⇒ puts(tango[mc]);
0814デフォルトの名無しさん
2008/12/01(月) 03:56:56当方の環境はcygwin/WindowsXP, 処理系は gcc 3.4.4 です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8167.txt
0815811
2008/12/01(月) 04:06:35ありがとうございます…!!完璧に動きました!!!!
やっと・・・やっと寝れます・・・。ホント助かりました(;;)
>>814
ありがとうございます!!
ただ、flagの意味が微妙に難しくて分からないので今回は>>813さんに甘えさせて頂きます。
こんな真夜中に、大変お手数お掛けしました…。
隔週で課題が出るので、もしまたどうしても詰まった時はお願い致します…!
ありがとうございました!
0816デフォルトの名無しさん
2008/12/01(月) 10:32:31[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8135.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年12月6日23:59
[5] その他の制限:
よろしくお願いします
0817デフォルトの名無しさん
2008/12/01(月) 11:01:527-1
↓コメントはずす
//void init_stack(struct stack *target);
//char push(struct stack *target, char push_data);
//char pop(struct stack *target);
target->list[****] = push_data;
↓
target->list[target->num_of_data] = push_data;
pop_data = target->list[****];
↓
pop_data = target->list[target->num_of_data - 1];
0818デフォルトの名無しさん
2008/12/01(月) 11:08:58[2] 問題文(含コード&リンク):
1.data.txtをつくる
(データの中身は、20個以内の整数をスペースで区切る。例:2 34 33 62 2 712 等)
2.先ほどのdata.txtから数値を順に読み取り、ソートする。
(int s[21]に格納する。(先にs[21]にすべて-1を入れておく(初期化)))
3.printfで「あなたが探したいデータを入力してください。」→入力
4.ソートされたs[]を2部探索法で探す。
5.データがあれば「〇番目にあります。」なければ「ありません。」と返す。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: ([2008年12月6日23:59まで])
[5] その他の制限: 制限はないです。
C言語を3年前に習ったので全く分かりません。
宜しく御願い致します。
0819817
2008/12/01(月) 11:24:487-1 補足
構造体宣言の } のあとにセミコロン追加
init_stac, push, pop 関数の定義部にプロトタイプと同じく
void, char, char 型宣言を追加
push 関数の return_data_check; のコメントを外す
0820817
2008/12/01(月) 11:29:117-1 の while 以降を以下のように変更
int rev = 0;
while(string[current] != '\0')
{
if(string[current] == '#'){
while(s.num_of_data > 0)
reverse[rev++] = pop(&s);
reverse[rev++] = '#';
} else {
push(&s, string[current]);
}
current++;
}
while(s.num_of_data > 0)
reverse[rev++] = pop(&s);
reverse[rev] = '\0';
printf("%s\n",reverse);
0821デフォルトの名無しさん
2008/12/01(月) 11:34:14#include <stdlib.h>
#include <stdio.h>
int compare(const void *a, const void *b){
return *(const int*)a - *(const int*)b;
}
int main(void){
FILE *inf; int i, s[21], m, n, *find;
char buf[1024], *p;
for(i = 0; i < 21; i++) s[i] = -1;
inf = fopen("data.txt", "r");
if (inf == NULL){
fprintf(stderr, "ファイルdata.txtが開けません。");
return 1;
}
fgets(buf, 1024, inf); p = buf;
for(i = 0; i < 20; i++){
s[i] = strtol(p, &p, 10);
if(*p != '\0') p++; else break;
}
fclose(inf);
m = i;
qsort(s, m, sizeof(int), compare);
printf("あなたが探したいデータを入力してください。");
scanf("%d", &n);
find = bsearch(&n, s, m, sizeof(int), compare);
if (find != NULL) printf("%d番目にあります。\n", find - s + 1);
else printf("ありません。\n");
return 0;
}
0822デフォルトの名無しさん
2008/12/01(月) 11:45:047-3
7-1 の while 以降を以下のように変更
while(string[current] != '\0')
{
if(string[current] == '(')
push(&s, string[current]);
else if(string[current] == ')'){
if(pop(&s) == '\0'){
puts("NG");
return 1;
}
}
current++;
}
if(s.num_of_data > 0)
puts("NG");
else
puts("OK");
0823817
2008/12/01(月) 11:58:427-4 main 本文
そのほか関数は 7-1 と同じ
struct stack s;
char string[STACKMAX];
int current, len;
init_stack(&s);
printf("文字列:");
scanf("%s", string);
printf("文字列の長さ:");
scanf("%d", &len);
current = 0;
while(string[current] != '\0')
{
if(current * 2 != len - 1)
if(current < len / 2)
push(&s, string[current]);
else
if(pop(&s) != string[current]){
puts("NG");
return 1;
}
current++;
}
puts("OK");
0824756
2008/12/01(月) 12:38:24どなたかお願い出来ないでしょうか?(今見たら、リンクが切れているようだったので
うpろだにアップし直しました。)
http://www2.uploda.org/uporg1824550.zip.html
0825デフォルトの名無しさん
2008/12/01(月) 12:47:30これは7-2と考えても宜しいでしょうか
0827デフォルトの名無しさん
2008/12/01(月) 13:03:30ありがとうございます!助かりました
0828 ◆zh1nL90fZk
2008/12/01(月) 13:26:14[2] 問題文:
入力された文字列の中に「USA」という文字の並びがあるかどうか調べ、結果を出
力するプログラムを作りなさい
[実行例]
入力:TGWQGDUSAPMPWG
"USA"が見つかりました
入力:TGWQGDUMGWAPMPWG
"USA"が見つかりません
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:よくわかりませんが、たぶんgccです
[3.3] 言語: C
[4] 期限: 2008年12月2日12:00まで
[5] その他の制限:なし
期限が短いですが、よろしくお願いします
0829デフォルトの名無しさん
2008/12/01(月) 13:32:55#include <stdio.h>
#include <string.h>
int main(void)
{
char s[1024];
while(1){
printf("入力: ");
fgets(s, 1024, stdin);
if (s[0] == '\n') return 0;
if (strstr(s, "USA") != NULL)
printf("\"USA\"が見つかりました\n");
else
printf("\"USA\"が見つかりません\n");
}
return 0;
}
0830デフォルトの名無しさん
2008/12/01(月) 14:03:00>>756 1問目
server.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8169.txt
client.c は以下の1行を修正
len = recv(sockfd, buf, len, 0);
↓
len = recv(sockfd, buf, BUFSIZ, 0);
0831デフォルトの名無しさん
2008/12/01(月) 14:10:03[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8170.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual stdio 2005
[3.3] 言語: C
[4] 期限: 12/3 21:00
[5] その他の制限:特に無し
よろしくお願いします
0832デフォルトの名無しさん
2008/12/01(月) 14:14:31[2] 問題文(含コード&リンク):カラー画像を読み込んでRGB空間上に分布を表示しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] VC だと思います。
[3.3] 言語: C++
[4] 期限: 2008年12月3日13:00まで
[5] その他の制限: 制限無し
0833デフォルトの名無しさん
2008/12/01(月) 14:33:14[2] 問題文(含コード&リンク):
整数nをキーボードから入力する。続いてn 個の文字列をキーボードから入力する(文字列の長さは最大20 と仮定してよい)し、その入力した文字列とその長さを出力しなさい。
さらに、文字列の中で最も短いものを最後に出力しなさい。その際,その文字列及び何番目に入力されたものなのかを出力すること。
なお,最短文字列の長さと同じ文字列が複数あった場合は,その中で最も早く入力したものを出力すること。
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語C
[4] 期限:12/1
期限短くて申し訳ないです。どなたかお願いします。
0834デフォルトの名無しさん
2008/12/01(月) 14:35:54#include <stdio.h>
int main(void)
{
char ch;
const char *str="USA",*p;
p=str;
printf("入力:");
do{
ch=getchar();
if(ch==*p) p++;
else {
p=str;
if(*p==ch) p++;
}
}while(ch!='\n' && ch!=EOF && *p);
printf("\"%s\"が",str);
if(*p!='\0') printf("見つかりませんですた。\n");
else printf("見つかりますた。\n");
return 0;
}
0835デフォルトの名無しさん
2008/12/01(月) 14:40:10>>756 2問目
server.c のみ変更
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8171.txt
0836756
2008/12/01(月) 14:43:26正常動作を確認しました。本当に有り難うございました!今日が期限なのでこれから提出してきます。
2問目の方もお願い出来ると大変助かるのですが。。(2問目はエキストラクレジットで期限があと一週間あります。)
0837デフォルトの名無しさん
2008/12/01(月) 14:44:08#include <stdio.h>
void ToUpper(char *in, char *out){
while(*in != '\0'){
if(*in >= 'a' && *in <= 'z')
*in += 'A' - 'a';
*out++ = *in++;
}
*out = '\0';
}
int main (void){
char instr[256], outstr[256];
printf("小文字の文字列を入力してください:");
scanf("%s",instr);
ToUpper(instr, outstr);
printf("変換後:%s\n",outstr);
return 0;
}
0838837
2008/12/01(月) 14:48:56>>837 は main の instr も書き換えてしまうので、こっちの方がベターかな
#include <stdio.h>
void ToUpper(char *in, char *out){
while(*in != '\0'){
if(*in >= 'a' && *in <= 'z')
*out++ = *in++ + 'A' - 'a';
else
*out++ = *in++;
}
*out = '\0';
}
int main (void){
char instr[256], outstr[256];
printf("小文字の文字列を入力してください:");
scanf("%s",instr);
ToUpper(instr, outstr);
printf("変換後:%s\n",outstr);
return 0;
}
0839デフォルトの名無しさん
2008/12/01(月) 14:49:31>>835
0840デフォルトの名無しさん
2008/12/01(月) 14:57:13*out++ = *in++ -'a' + 'A';
小文字のaからの差を、Aに足してやれば良い。
ASCIIコードでどちらが先か分かっているとは言え。
0841756
2008/12/01(月) 15:04:59すみません、直後に書き込んでいました。ありがとうございます!
こんなに短時間でプログラム作れるのはすごい。。本当に有り難うございました。
0842デフォルトの名無しさん
2008/12/01(月) 15:05:58#include <stdio.h>
#include <string.h>
int main()
{
char str[21], strmin[21];
int n, len = 0, min = 20, i, imin;
printf("整数:");
scanf("%d", &n);
for(i = 0; i < n; i++){
printf("文字列:");
scanf("%s", str);
len = strlen(str);
if(len < min){
strcpy(strmin, str);
imin = i + 1;
min = len;
}
printf("長さ %d\n", len);
}
printf("最も短い文字列は %d 番目 %s\n", imin, strmin);
return 0;
}
0843デフォルトの名無しさん
2008/12/01(月) 15:18:05入力された文字列の表示ができてなかった。一度全部入力してから表示するのかな?だとするとこうなる。
#include <stdio.h>
#include <string.h>
int main()
{
char str[10][21], *strmin;
int n, len = 0, min = 20, i, imin;
printf("整数:");
scanf("%d", &n);
if(n > 10)
n = 10;
strmin = str[0];
for(i = 0; i < n; i++){
printf("文字列:");
scanf("%s", str[i]);
}
for(i = 0; i < n; i++){
len = strlen(str[i]);
printf("%s (%d)\n", str[i], len);
if(len < min){
strmin = str[i];
imin = i + 1;
min = len;
}
}
printf("最も短い文字列は %d 番目 %s\n", imin, strmin);
return 0;
}
0844デフォルトの名無しさん
2008/12/01(月) 16:53:52[2] 問題文
二つの文字列を入力し、どちらが長いか、辞書順ではどちらが先か、以上2点を満たしたプログラムを作成しなさい。
文字列は小文字アルファベットのみで長さは最大30とする。
[3] 環境 OS:Windows VC 6.0
言語C
[4] 期限:今日中
[その他の制限]特にありません
よろしくお願いします。
0845デフォルトの名無しさん
2008/12/01(月) 17:04:15早々の回答ありがとうございました。
入力された文字列とは最初に入力するnですよね?
恐らく>>842ので合ってると思います。
いずれにしても大変助かりました。ありがとうございます。
0846デフォルトの名無しさん
2008/12/01(月) 17:12:58#include <stdio.h>
#include <string.h>
int main(void)
{
char s1[31], s2[31];
int len1, len2, cmp;
printf("文字列1: ");
scanf("%30s", s1);
printf("文字列2: ");
scanf("%30s", s2);
len1 = strlen(s1);
len2 = strlen(s2);
cmp = strcmp(s1, s2);
if(len1 < len2) puts("文字列1の方が長い");
else if(len2 < len1) puts("文字列2の方が長い");
else puts("同じ長さ");
if(cmp < 0) puts("辞書順では文字列1が先");
else if(cmp > 0) puts("辞書順では文字列2が先");
else puts("同じ文字列");
return 0;
}
0847デフォルトの名無しさん
2008/12/01(月) 17:14:09(誤)
if(len1 < len2) puts("文字列1の方が長い");
else if(len2 < len1) puts("文字列2の方が長い");
(正)
if(len2 < len1) puts("文字列1の方が長い");
else if(len1 < len2) puts("文字列2の方が長い");
0848デフォルトの名無しさん
2008/12/01(月) 17:36:32http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8172.c
MAXの指定を3以上にしても使えまっせ
0849デフォルトの名無しさん
2008/12/01(月) 18:17:45ありがとうございました
0850デフォルトの名無しさん
2008/12/01(月) 18:18:23ありがとうございましす。ホントに助かりました。
0851843
2008/12/01(月) 18:45:10NO
入力された文字列とは、nを入力した後に入力を要求されるn個の文字列のこと。
>>842 は、scanf のエコーバックは表示されるが、プログラムで取り込んだ文字列を
表示していない。
0852デフォルトの名無しさん
2008/12/01(月) 19:00:37本当に有難う御座いました。
大変助かりませんでした。
エラーが7個も出てしまいました。
出来ればもう一度やっていただけないでしょうか?
0853デフォルトの名無しさん
2008/12/01(月) 19:18:53あるいはコピペミス
0854デフォルトの名無しさん
2008/12/01(月) 19:19:04[2] 問題文(含コード&リンク): 2個の多項式を入力してその和を求め次数の大きい順に出力する
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8070.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual stadio2008
[3.3] 言語: C
[4] 期限: 2008年12月5日
[5] その他の制限:事故参照型構造体、線形リストを使う. 基のプログラムを極力変えない
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8174.txt
実行結果は↑のように0を入力すると1つ目の多項式の入力が終わり次に2つ目の入力が始まり0で終わり合計を出力されるものをお願いします
0855デフォルトの名無しさん
2008/12/01(月) 19:28:20「C言語」って書いてあんだから cstdio とかアウトだろ
#include <stdio.h>
#define BUFSIZE 200
int main(int argc, char **argv)
{
char str[BUFSIZE], rts[BUFSIZE];
int length = 0, i;
printf("文字列を入力:");
scanf("%s", str);
while(str[length] != '\0')
length++;
for(i = 0; i < length; i++) {
rts[i] = str[length - i - 1];
}
rts[length] = '\0';
printf("反転した文字列 = %s\n", rts);
return 0;
}
0856デフォルトの名無しさん
2008/12/01(月) 21:33:45早々の回答大変助かりました!!ありがとうございます。
0857デフォルトの名無しさん
2008/12/01(月) 21:40:09[2] 問題文(含コード&リンク):一つの整数をキーボードから入力する。これをn とする。
続いてn 個の文字列をキーボードから入力する(文字列の長さは最大20 と仮定)。
文字列を入力するとすぐに,入力した文字列とその長さを出力しなさい。
更に文字列の中で最も短いものを最後に出力しなさい。
その際,その文字列及び何番目に入力されたものなのかを出力すること。
なお,最短文字列の長さと同じ文字列が複数あった場合は,その中で最も早く入力したものを出力すること。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VisualC++ 6.0
[3.3] 言語:C
[4] 期限:12月3日0:00
[5] その他の制限:特にありません
文字列中で最も〜辺りからわからなくなってしまいました。
良ければお願い致します。
0858デフォルトの名無しさん
2008/12/01(月) 22:14:420859デフォルトの名無しさん
2008/12/01(月) 22:22:57>>833
0860デフォルトの名無しさん
2008/12/01(月) 22:31:42すみません。
一応目を通したつもりだったんですが…恥ずかしいorz
ありがとうございました!
0861デフォルトの名無しさん
2008/12/01(月) 22:37:30[2] 構造体の配列 構造体のデータを得点で昇順に並び変えてください
[3] 環境
[3.1] Windows vista
[3.2] マイクロソフトヴィジュアルスタジオ
[3.3] 言語: C/
[4] 期限: ([2008年11月21日17;00まで]
[5] プリプロセッサ 、ファイル処理、操作 供用体 データ変換型 記憶クラス
は習っていません。 qsort もなしでお願いいたします
よろしくお願いいたします。
0862デフォルトの名無しさん
2008/12/01(月) 22:38:29# include<stdio.h>
struct tmp{
char name[20];
int bangou;
int ten;
};
void main(void)
{
{
struct tmp data[10]={{"山田",50113,87};
{"浜名",30211,60};
{"飯田",56231,58};
{"岡田",50215,30};
{"今田",60987,89};
{"原田",57892,75};
{"有田",53901,55};
{"清原",53098,72};
{"神山",56221,71};
{"上原",12345,100};
}}
0863デフォルトの名無しさん
2008/12/01(月) 23:30:340864デフォルトの名無しさん
2008/12/01(月) 23:53:06[1] 授業単元: Cプログラミング演習
[2] 問題文(含コード&リンク): キーボードから10個の整数を読み込んで、それについて二分探索を行うプログラムを再帰を使って作りなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual studio2005
[3.3] 言語: C
[4] 期限: 12月17日
[5] その他の制限: ポインタはまだ習っていません。よろしくお願いします。
0865デフォルトの名無しさん
2008/12/02(火) 00:23:57続きから
struct tmp w;
int i, j;
for(i = 0; i < 10; i++) {
for(j = 1; j < i; j++) {
if (data[i].ten < data[j].ten) {
w = data[i];
data[i] = data[j];
data[j] = w;
}
}
}
for(i = 0; i < 10; i++)
printf("名前:%s 番号:%5d 特典:%3d\n", data[i].name, data[i].bangou, data[i].ten);
return 0;
}
ちなみに >>862 の宣言文は以下の誤りがある
struct tmp の前の { が余計
{"山田", 50113, 87};
↓
{"山田", 50113, 87}, ← 各要素間の区切りはカンマ
}; ← 宣言の最後はセミコロン
0866デフォルトの名無しさん
2008/12/02(火) 00:29:140867デフォルトの名無しさん
2008/12/02(火) 00:36:540868デフォルトの名無しさん
2008/12/02(火) 00:40:05二分探索って具体的に何をしろっていう課題なの?
本当は二分探索木を作って昇順(または降順)で表示しろって言いたいのかな?
0869デフォルトの名無しさん
2008/12/02(火) 01:15:11ある整数を入力してそれが読み込んだ10個の整数の中に含まれていれば、「含まれていた配列の番号+1」を表示させて、そうでなければ、「ありません」と表示させる。
これを再帰を使って作れという課題です。
0870デフォルトの名無しさん
2008/12/02(火) 01:28:19つまり11回整数を入力することになるの?
0871デフォルトの名無しさん
2008/12/02(火) 01:32:32なんかおかしい気がする
二分探索はソートしてからじゃないと使えないんだがどうすればいい?
別領域に添え字と内容のセットの構造体の配列をとって
そっちに移してからそれをソートして二分探索でもするか?
0872デフォルトの名無しさん
2008/12/02(火) 02:04:190873デフォルトの名無しさん
2008/12/02(火) 02:10:36入力値をソートしながら配列に格納していくのかな? "挿入ソート"だっけ?
0874デフォルトの名無しさん
2008/12/02(火) 02:27:51本当にありがとうございました!!
助かりました!
0875デフォルトの名無しさん
2008/12/02(火) 08:43:41[2] 1.入力:2次元平面上の2つの線分s1、s2(線分はその両端点(座標は整数)を指定することによって入力とする)
出力:s1とs2が交差するか否か(yes→1、no→0)
2・入力:2次元平面上のn点からなるS(ただしどの3点も一直線上にない)
出力:Sの凸包(凸包定義する多角形の頂点を順序つきで出力)
[3]
[3.1] OS:Windows
[3.2] すいません、わかりません
[3.3] 言語:C
[4] 期限:12月8日
[5] main関数以外に1つ以上の関数を定義する。
構造体、配列、if、for、whileぐらいで記述していただければと。。
考察を書く際のポイント等も教えていただけると嬉しいです。
0876デフォルトの名無しさん
2008/12/02(火) 10:30:491問目 考え方は、s1 の直線の式に s2 の2点をそれぞれ代入して結果を掛け合わせたものの符号で判定
#include <stdio.h>
struct segment {
int x1; int y1;
int x2; int y2;
};
int chk_cross(struct segment s1, struct segment s2)
{
return ((s1.x1 - s1.x2) * (s2.y1 - s1.y1) + (s1.y1 - s1.y2) * (s1.x1 - s2.x1))
* ((s1.x1 - s1.x2) * (s2.y2 - s1.y1) + (s1.y1 - s1.y2) * (s1.x1 - s2.x2))
< 0;
}
int main()
{
struct segment s1, s2;
printf("線分 s1\nx1 y1:");
scanf("%d %d", &s1.x1, &s1.y1);
printf("x2 y2:");
scanf("%d %d", &s1.x2, &s1.y2);
printf("線分 s2\nx1 y1:");
scanf("%d %d", &s2.x1, &s2.y1);
printf("x2 y2:");
scanf("%d %d", &s2.x2, &s2.y2);
if (chk_cross(s1, s2))
printf("s1 と s2 は交わります\n");
else
printf("s1 と s2 は交わりません\n");
return 0;
}
0877デフォルトの名無しさん
2008/12/02(火) 10:52:181問目だけ。
>>876だけでは足りない気がしたので。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8177.c
0878デフォルトの名無しさん
2008/12/02(火) 11:28:29[2] 標準入力から文字列を入力すると、ランダムな漢字1文字を出力するプログラムを作れ。表示すべき漢字1文字の候補は予め決めておく。違う文字列を入力したら違う結果が出て、同じ文字列を入力したら常に同じ結果が出るようにする。
[3.1]Mac
[3.2] すみません、よくわかりません
[3.3] C
[4] 12月3日まで
よろしくお願いいたします。
0879876
2008/12/02(火) 11:37:592問目
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8178.txt
考え方は、1問目の交差判定を応用して、すべての点でつくられる線分が
交わらなければそれは凸包のエッジをなす原理を用いる。
データ入力は、1つ1つ手入力かファイルリダイレクトで
>>877
どの辺が足りない?計算内容に違いはないようだけど?
0880デフォルトの名無しさん
2008/12/02(火) 11:53:46[2] 問題文: ヤコビ法で多元連立一次方程式を解けるようなプログラムを作れ。但し以下のような条件がある
1部分ピボットを入れること
2数値は手入力で行えるようにすること
3計算回数が表示されるようにすること
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4 VC 5.0
[3.3] 言語: C
[4] 期限: [2008年12月2日17:00まで]
[5] その他の制限:
自分でも頑張ってみましたが分からなく、期限になってしまうのでどなたかお願いします
0881デフォルトの名無しさん
2008/12/02(火) 11:56:54[2] 問題文(含コード&リンク): 以下の機能を実現するプログラムを作れ:
元本と利率を入力できる。ただし、単利と複利そ
れぞれに別の利率を設定することもできる。
最初に以下の処理のどちらかをユーザが選んで
実行できる(プログラムとしては1つのもので全
部の機能を提供すること)
入力した年数が経過したら、単利・複利それぞれいく
らになるかを表示する。
複利の方が(利率が低い場合でも)何年後に単利を追
い越すかを表示する。
いくつか補足・注意
利息や金額を計算する時は、float(もしくは
double)型の変数を使う。
小数点以下切捨て:
#include “math.h” を冒頭で書く
floor(x) で x の小数点以下切捨てができる
printf(“%.0f”, x); とすれば、実数(浮動小数点
数)を整数かのように画面表示できる
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual studio2003 visual c++ win32
[3.3] 言語: C++
[4] 期限: 12月10日 24:00まで
[5] 繰り返し処理(for)繰り返し(while)を最近習いました。for,whileでお願いします。
0882デフォルトの名無しさん
2008/12/02(火) 12:00:50直線ABと直線CDの交差を判定するならそれでいいと思うけど
線分ABと線分CDの交差を判定する場合はまずくない?
例えば、線分ABの延長線上に線分CDが
交差しているようなときにも交差しているとなってる。
0883デフォルトの名無しさん
2008/12/02(火) 12:35:30いや、だから式自体は >>877 とまったく同じなのにどうしてそうなるの?
x1→s1.x1 x2→s1.x2 x3→s2.x1 x4→s2.x2
y1→s1.y1 y2→s1.y2 y3→s2.y1 y4→s2.y2
に置き換えてみ
0884デフォルトの名無しさん
2008/12/02(火) 13:59:15[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8179.txt
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:12/4
[5] その他の制限: とくになし
まわりでできてる人いなくてよくわからないので
よろしくおねがいします
0885デフォルトの名無しさん
2008/12/02(火) 14:39:34PBM形式についての説明を授業で受けてるはずだからその資料も上げれ
0886デフォルトの名無しさん
2008/12/02(火) 15:18:47[2] 問題文(含コード&リンク):
6個の実数 A[0] 〜 A[5] を入力すると、まずそれらの平均値 heikin を表示し,
次に V[i] = (A[i] - heikin)2 を i = 0 〜 5 に対し全て表示し, 最後に V[0] 〜 V[5] の平均値(つまり A[i] の分散)を表示するプログラムを作成せよ.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 12/2 pm5:00
[5] その他の制限: とくにないです
あと2時間ですが、すみませんよろしくお願いします!
このスレに昨日気づけばどれだけよかったか!
0887デフォルトの名無しさん
2008/12/02(火) 15:20:37http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8181.c
0888デフォルトの名無しさん
2008/12/02(火) 15:23:27V[i] = (A[i] - heikin)2 ← この 2 は *2 ?
0889デフォルトの名無しさん
2008/12/02(火) 15:26:23すみません、2乗です!
^2です!
0890デフォルトの名無しさん
2008/12/02(火) 15:28:28やっぱそうだよな分散って書いてあるんだから
#include <stdio.h>
int main()
{
double A[6], heikin = 0.0, V[6], bunsan = 0.0;
int i;
for(i = 0; i < 6; i ++){
printf("実数:");
scanf("%lf", &A[i]);
heikin += A[i];
}
heikin /= 6.0;
printf("平均:%f\n", heikin);
for(i = 0; i < 6; i++){
V[i] = (A[i] - heikin)*(A[i] - heikin);
printf("V[%d] = %f\n", i, V[i]);
bunsan += V[i];
}
bunsan /= 6.0;
printf("分散:%f\n", bunsan);
return 0;
}
0891デフォルトの名無しさん
2008/12/02(火) 15:31:57早いw
脱帽ですw
本当にありがとうございます!m<_>m
これからlinuxでコンパイルしてたしかめてきます!
0892デフォルトの名無しさん
2008/12/02(火) 15:33:06int main(void)
{
int A[5],V[5],i,heikin=0,heikin2=0;
for (i=0;i<6;i++){printf("実数を入力してください:");scanf("%d",&A[i]);heikin+=A[i];}
heikin/=6;printf("%d \n",heikin);
for (i=0;i<6;i++){V[i]=(A[i]-heikin)*2;heikin2+=V[i];}printf("%d",heikin2/6);
}
0893デフォルトの名無しさん
2008/12/02(火) 16:15:26標準ライブラリを使っても良いってことだよね?
0894デフォルトの名無しさん
2008/12/02(火) 18:01:54最初から入力値は小さい順ってことでソートする必要はありません。
説明不足で申し訳ない・・・
0895デフォルトの名無しさん
2008/12/02(火) 18:05:460896N,R
2008/12/02(火) 18:43:19[2] 問題文(含コード&リンク);
*学籍番号・身長・体重の 3 つのメンバを持つ構造体 struct height_weight を宣言し,さらに typedef 宣言を用いて struct height_weight 型を student として参照できるようにせよ.
student型の配列 a[10] を宣言し,この配列に下記のデータをセットせよ.
キーボードから,身長の下限および体重の下限を入力し,その範囲の学生の学籍番号とその身長および体重を表示するプログラムを作成せよ.
学籍番号・身長・体重のデータとして,次のデータを用いること.
1001 160.5 53.1
1002 173.8 79.2
1003 169.7 65.3
1004 175.3 72.7
1005 187.2 98.9
身長の下限を170,体重の下限を75とした時,
1002 173.8 79.2
1005 187.2 98.9
*上記のプログラミングのstudent 型の構造体のポインタ変数を受取り, その内容を表示する関数 void print_student(student*) を作成せよ.
キーボードから学籍番号を入力すると,print_studentを用いて,その学籍番号の学生の身長と体重が表示されるプログラムを作成せよ.
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 12月4日(水)まで
[5] その他の制限:特になし
期限が早くてすみません。できたらでいいのでよろしくお願いします
0897N,R
2008/12/02(火) 18:45:430898デフォルトの名無しさん
2008/12/02(火) 19:05:25[2] 問題文(含コード&リンク):�@http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8184.txt
�Ahttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8185.txt
�Bhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8186.txt
[3] 環境
[3.1] OS: Win xp
[3.2] コンパイラ名とバージョン: visual stadio
[3.3] 言語: C
[4] 期限: 2008年12月5日
[5] その他の制限: �Aは�@を3分割するので3つ解答お願いします
0899デフォルトの名無しさん
2008/12/02(火) 19:33:40[2]課題
英文文字列を入力し、英大文字は小文字に、英小文字は大文字に変換して出力する。
ただし、英文字以外は変換しないでそのまま出力する。なお、is〜関数は使用しないこと。
<実行例>
・入力英文:It is necessary to execute the program.
・出力英文:iT IS NECESSARY TO EXECUTE THE PROGRAM.
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:Microsoft Visual studio 2005
[3.3] 言語:C言語
[4] 期限:2008年12月18日
よろしくお願いします。
0900デフォルトの名無しさん
2008/12/02(火) 19:39:10#include<stdio.h>
int main(void){
unsigned char map[256], buf[512];
int i;
for(i=0;i<256;i++) map[i]=i;
for(i=0;i<26;i++) map['a'+i]='A'+i;
for(i=0;i<26;i++) map['A'+i]='a'+i;
fgets(buf, sizeof(buf), stdin);
for(i=0;buf[i];i++) buf[i]=map[buf[i]];
puts(buf);
return 0;
}
0901デフォルトの名無しさん
2008/12/02(火) 19:44:50[2]課題
キーボードからの英文字列(100文字以内)を入力し、その文字列を反転させて出力する。
反転表示はいずれかの方法で行う。
�@文字列を配列に入力し、最後の文字から一文字ずつ取り出して表示する。
�A文字列を配列に入力し、最後の文字から一文字ずつ取り出し、別の配列に格納してから表示する。
�B文字列をポインタの示す領域に入力し、最後の文字から一文字ずつ取り出して表示する。
�C文字列を配列に入力し、配列内で前後交換してから表示する。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:Microsoft Visual studio 2005
[3.3] 言語:C言語
[4] 期限:2008年12月18日
よろしくお願いします。
0902デフォルトの名無しさん
2008/12/02(火) 19:49:34ありがとうございます。
0903デフォルトの名無しさん
2008/12/02(火) 19:51:47このスレを文字列とか反転とかで検索したらいくつか見つかるんだが
それを参考にしてはどうだろうか?
0904デフォルトの名無しさん
2008/12/02(火) 19:57:30すいません^^;
探してみます。
0905デフォルトの名無しさん
2008/12/02(火) 20:22:22一応
#include <stdio.h>
int main(void)
{
char str[1001];
int i = 0;
printf("1000バイト以内の文字列を入力してください:");
scanf("%s", &str);
while (str[i] != 0)i++;
for (; i >= 0; i--)
if (str[i]!=0)
printf("%c", str[i]);
return 0;
}
0906デフォルトの名無しさん
2008/12/02(火) 20:30:11ありがとうございます><
0907デフォルトの名無しさん
2008/12/02(火) 20:49:37�@
#include <stdio.h>
#include <stdlib.h>
/* define を使った定義 */
#define MAX 100
#define MIN 0
#define HANI(x, a, b) ((a) > (x) || (x) > (b))
#define HANTEI(x, a) ((x) >= (a))
int main(void)
{
int point, border;
do {
printf("Input your score: ");
scanf("%d", &point);
} while(HANI(point, MIN, MAX));
do {
printf("Input border: ");
scanf("%d", &border);
} while(HANI(border, MIN, MAX));
if(HANTEI(point, border))
puts("合格");
else
puts("不合格");
return 0;
}
0908デフォルトの名無しさん
2008/12/02(火) 20:55:06�A
============== kadai09c.h ==============
#define MAX 100
#define MIN 0
#define HANI(x, a, b) ((a) > (x) || (x) > (b))
#define HANTEI(x, a) ((x) >= (a))
void hantei(void);
============== hantei.c ================
#include <stdio.h>
#include "kadai09c.h"
extern int point, border;
void hantei(void)
{
if(HANTEI(point, border)) puts("合格");
else puts("不合格");
}
============== input.c =================
#include <stdio.h>
#include "kadai09c.h"
int point, border;
int main()
{
do {
printf("Input your score: "); scanf("%d", &point);
} while(HANI(point, MIN, MAX));
do {
printf("Input border: "); scanf("%d", &border);
} while(HANI(border, MIN, MAX));
hantei();
return 0;
}
0909デフォルトの名無しさん
2008/12/02(火) 21:02:09ですが、期限がすぎてしまいましたがわかる方教えていただけませんか?
0910デフォルトの名無しさん
2008/12/02(火) 21:04:50�B
#include <stdio.h>
#include <stdlib.h>
/* define を使った定義 */
#define NUM 10
#define DEBUG 0
int main(void)
{
int array[NUM];
int *p = array;
int sum = 0, i;
double heikin = 0;
printf("Input %d integer.\n", NUM);
for(i = 0; i < NUM; i++) {
scanf("%d", &array[i]);
sum += *p++;
}
heikin = sum / (double)NUM;
#if DEBUG == 1
printf("Input numbers:\n");
for(i = 0; i < NUM; i++)
printf("%d ", *p++);
printf("\n");
#elif DEBUG == 2
printf("goukei = %d\n", sum);
#endif
printf("heikin = %f \n", heikin);
return 0;
}
0911デフォルトの名無しさん
2008/12/02(火) 21:46:47[2] 問題文(含コード&リンク):
ストップウォッチ作成。
00:00:00.0(確かこのような感じでした)デジタル表示で。
何かキーを押すと開始して、もう一度押すと止まるという仕組みも。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語: C++でお願いします
[4] 期限:12月5日までです。
[5] その他の制限: 特にないです
お願いします
0912デフォルトの名無しさん
2008/12/02(火) 21:59:54基本的に環境依存のプログラムになるからどうにかして環境ちゃんと書けやクズ
0913デフォルトの名無しさん
2008/12/02(火) 22:05:17>>912
すみません
環境
OS:Windows XP
コンパイラ名とバージョン:Microsoft Visual studio 2008
言語:c++
です。
0914デフォルトの名無しさん
2008/12/02(火) 22:32:41[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8189.txt
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 12月3日まで
[5] その他の制限: 特になし
よろしくお願いします。
0915デフォルトの名無しさん
2008/12/02(火) 23:56:08typedef struct{
char name[100];
int age;
double height;
double weight;
} PERSONAL_DATA1;
typedef struct{
int person[10];
}PERSONAL_DATA2;
PERSONAL_DATA1 input_personal_data(int num);
void output_personal_data(PERSONAL_DATA2 person[10],int num);
int main(int argc, char *argv[]){
PERSONAL_DATA1 x;
int num,i;
char person[10];
if(argc != 2){
printf("Usage ./test number");
return 0;}
num=atoi(argv[1]);
for(i=0;i<10&&i<num;i++){
person[i]=input_personal_data();
output_personal_data(person,num);
return 0;}}
0916デフォルトの名無しさん
2008/12/02(火) 23:56:59PERSONAL_DATA1 x;
printf("name>");
scanf("%c" ,&x.name);
printf("age>");
scanf("%d" ,&x.age);
printf("height>");
scanf("%lf" ,&x.height);
printf("weight>");
scanf("%lf" ,&x.weight);
return x;}
void output_personal_data(PERSONAL_DATA2 person[10],int num){
PERSONAL_DATA1 x;
printf("name>>%s\n" ,x.name);
printf("age>>%d\n" ,x.age);
printf("height>>%lf[cm]\n" ,x.height);
printf("weight>>%lf[kg]\n" ,x.weight);
}
0917デフォルトの名無しさん
2008/12/03(水) 00:02:35[2] 問題文(含コード&リンク): 問題はコマンドライン引数で人数を指定し,人数分のデータを標準入力(キーボード)から構造体配列に入力し,標準出力(ディスプレイ)に出力するプログラム
個人データの集合を格納するための構造体配列PERSONAL_DATAを定義せよ.
PERSONAL_DATA person[10]; /* 10人分用意 */
構造体配列personの要素数はdefine文を用いて定義すること
個人データを標準入力から入力し,戻り値としてPERSONAL_DATA型構造体を返す関数を作成せよ.
関数のプロトタイプ(案) PERSONAL_DATA input_personal_data(int num);
戻り値を構造体配列に順番に代入するようにすること.引数の整数型変数numは何番目の入力かを記すために使用(無くても良い).
データを格納しているPERSONAL_DATA型構造体変数を引数として受け取り,個人データを標準出力に出力する関数を作成せよ.
関数のプロトタイプ(案) void output_personal_data(PERSONAL_DATA per[], int num);
※ 引数が構造体配列変数となっている点に注意すること
引数の整数型変数numを用いて表示人数を関数に渡している
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語:C
[4] 期限: 無期限
[5] その他の制限:>>915>>916は自分なりに考えたプログラムです。
どこが悪いかわかりません。使う関数などは上のプログラムの内容に使われるもののみでおねがいします。
0918デフォルトの名無しさん
2008/12/03(水) 00:13:20[1] 授業単元: Cプログラミング演習
[2] 問題文(含コード&リンク): キーボードから10個の整数を小さい順に読み込む。
その後新たにある整数を入力したとき、それが10個の整数のなかにあれば、
「その配列の番号+1」を表示させてなかったら
「ありません」と表示させる2分探索のプログラムを再帰を使って作りなさい。
実行例:{1,3,4,6,7,9,11,24,31,35}としたら
9:6番目にあります。
15:ありません。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual studio2005
[3.3] 言語: C
[4] 期限: 12月17日
[5] その他の制限: ポインタはまだ習っていません。再帰は2分探索の部分で関数を使います。
どなたかよろしくお願いします。
0919910
2008/12/03(水) 00:28:33>>910 はコピペしながら修正してしまったので、一部バグがが混入。
scanf の for ループを抜けた直後に
p = array; を追加してくらっさい。
0920デフォルトの名無しさん
2008/12/03(水) 00:32:26[2] 問題文(含コード&リンク):以下の2つのプログラムをデバックせよ
http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8182.c
http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8183.c
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 12/4 18:00
[5] その他の制限: 特になし
よろしくお願いいたします
0921デフォルトの名無しさん
2008/12/03(水) 00:33:55これだけよく書かれているのをみると一般的に浸透してしまっているようだが、
標準入力から読み込みたいのか、コマンドライン引数で渡すのか分かりにくい。
まぁ、普通は前者なのかな。
0922デフォルトの名無しさん
2008/12/03(水) 00:39:53デバッグ結果を求めているの
それとも、これらのソースの間違っている部分を修正してほしいの
0923デフォルトの名無しさん
2008/12/03(水) 01:00:32881で質問した者なのですが、どなたかわかる方はいらっしゃいませんか?
プログラムを最初に選ばせて、計算するのですがプログラムが書けなくて困っています。
0924デフォルトの名無しさん
2008/12/03(水) 01:03:36その表現に限らず日本語おかしいの大杉だよね
問題が毎度パターン化してるからエスパーも多いと思うけど
0925デフォルトの名無しさん
2008/12/03(水) 01:20:31[2] 問題文: 処理前:AbcefGhijklMnopqrstuvw
処理後:wvutsrqponMlkjihGfecbA
#include<stdio.h>
#include<stdlib.h>
void RevStr(char *p, char *rp, int n);
int main(void){
char *str="KantoGakuinUniversity",*rst;
int k,num;
[文字数を算出して、領域確保する処理]
RevStr(引数を記述する);
printf("処理前:%s\n",str);
printf("処理後:%s\n",rstr);
[確保領域を解放する処理]
return 0;
}
void RevStr(char *p, char *rp, int n)
[文字列を逆順にする処理]
[3] 環境:Visual studio2005
[3.1] OS: (Windowsxp
[3.2] Visual studio2005
[3.3] 言語:C
[4] 期限:12/8 10:30
[5] その他の制限:特になし
よろしくお願いします
0926デフォルトの名無しさん
2008/12/03(水) 01:50:21>>923
#include <math.h>
#include <iostream>
class cash {
protected:
double ga; double yen; double ri;
public:
cash(double ganpon, double riritsu) : ga(ganpon), yen(ganpon),ri(riritsu) { }
virtual void addYear() = 0; void show() { std::cout << floor(yen);}
bool operator<=(const cash& op) { return yen <= op.yen ? true : false;}
};
class hukuri : public cash {
public:
void addYear() { yen *= 1.0 + ri;} hukuri(double ganpon, double riritsu) : cash(ganpon, riritsu){ }};
class tanri : public cash {
public:
void addYear() { yen += ga * ri;} tanri(double ganpon, double riritsu) : cash(ganpon, riritsu){ }};
int main()
{ double gan, rit, rih; int y, ay = 0;
std::cout << "元本: " << std::endl; std::cin >> gan;
std::cout << "単利の利率: " << std::endl; std::cin >> rit; tanri t(gan, rit);
std::cout << "複利の利率: " << std::endl; std::cin >> rih; hukuri h(gan, rih);
std::cout << "年数: " << std::endl; std::cin >> y;
for (int i = 0; i < y; ++i) { h.addYear(); t.addYear();
if (t <= h && ay == 0) ay = i + 1; }
std::cout << "単利"; t.show(); std::cout << "円" << std::endl;
std::cout << "複利"; h.show(); std::cout << "円" << std::endl;
if (rit > rih) std::cout << "追い付くのは" << ay << "年" << std::endl;
return 0;}
0927デフォルトの名無しさん
2008/12/03(水) 01:50:27http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8190.c
C言語で、クソースゆえ、異論は認める。
0929デフォルトの名無しさん
2008/12/03(水) 01:55:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8191.c
っと、ちと経過時間を間違えた。
0930デフォルトの名無しさん
2008/12/03(水) 02:02:59k は使わなかった。
#include<stdio.h>
#include<stdlib.h>
void RevStr(char *p, char *rp, int n);
int main(void)
{
char *str = "KantoGakuinUniversity", *rstr;
int num;
for(num = 0; str[num] != '\0' ; num++);
rstr = malloc(num);
RevStr(str, rstr, num);
printf("処理前:%s\n", str);
printf("処理後:%s\n", rstr);
free(rstr);
return 0;
}
void RevStr(char *p, char *rp, int n)
{
while(--n >= 0)
*rp++ = *(p + n);
*rp = '\0';
}
0931デフォルトの名無しさん
2008/12/03(水) 02:24:43for(;str[num]!='\0';)
malloc(num)
臭うコードだな
0932デフォルトの名無しさん
2008/12/03(水) 02:27:180933デフォルトの名無しさん
2008/12/03(水) 03:56:39C FAQ的には 0 がいいそうですね
0934デフォルトの名無しさん
2008/12/03(水) 04:12:330935デフォルトの名無しさん
2008/12/03(水) 07:04:48While(){
}でいいだろう
0936デフォルトの名無しさん
2008/12/03(水) 07:24:14柔軟な考えが必要なプログラマーには向いていない考え方なんだよ。
気持ち悪いのが、自分の方だと気づいた方が良いぞ?
とりあえず、鏡を見ろ。何が映った?そう、お前の顔だよ。
キモかった?それともイケてた?どちらでも、それは
自分が思ったことで、第三者からしてみれば、自分が
思った通りとは限らないんだよ。
0937デフォルトの名無しさん
2008/12/03(水) 07:28:56聞いたことねぇ
0938デフォルトの名無しさん
2008/12/03(水) 07:29:03do{
num++;
}while(str[num]!='\0');
この方が、何か臭うな、キモイな。
0939デフォルトの名無しさん
2008/12/03(水) 07:30:40while(str[num]!='\0') {
num++; };
あるいはstr[num++]か。やっぱこっちの方がきめぇ。
もっとforに対して、考え方を変えるんだなw
0940デフォルトの名無しさん
2008/12/03(水) 07:53:07if(str[num]!='\0') break;
}
これでおk
0941デフォルトの名無しさん
2008/12/03(水) 08:37:000942デフォルトの名無しさん
2008/12/03(水) 10:09:45亀レスですまんが、
式自体は同じだが、判定を2回やらないとだめじゃねってこと。
(直線AB・線分CD)と(線分AB・直線CD)の交差判定が必要でしょ?
じゃあ実際に値入れてみそ?
点A(1,0) 点B(5,0) 点C(0,1) 点D(0,-1)
これの線分ABと線分CDは交差しないっしょ?
0943デフォルトの名無しさん
2008/12/03(水) 11:00:36num = 0;
while (num++[str] != '\0');
ちょっとだけキモくしてみたよ
0944デフォルトの名無しさん
2008/12/03(水) 11:22:25お前の書き込みから、厨房臭さが漂ってるぜ?
0945デフォルトの名無しさん
2008/12/03(水) 11:25:22言葉足らずに申し訳なかったです。どなたかよろしくお願いいたします。
0946デフォルトの名無しさん
2008/12/03(水) 11:45:16きもいけどプログラムとしては意図した動きになるな
こういうのに警告吐くコンパイラってあるのかな
0947デフォルトの名無しさん
2008/12/03(水) 11:56:59自分でも考えてみましたが、上手くいきません…
0948デフォルトの名無しさん
2008/12/03(水) 12:15:54「ランダムな漢字」が何を求めているのかよくわからんが、とりあえず a-z の 26文字用。
#include <stdio.h>
int main()
{
char kanji[] = "亜哀愛悪握圧扱安案暗以衣位囲医依委威胃為尉異移偉意違";
char c;
printf("文字を入力(a-z):");
scanf("%c", &c);
if(c >= 'a' && c <= 'z')
printf("%c%c\n", kanji[(c - 'a')*2],kanji[(c - 'a')*2 + 1]);
return 0;
}
0949デフォルトの名無しさん
2008/12/03(水) 12:28:56ありがとうございます。
私の説明が悪くて微妙にずれた感じになってしまいましたが
参考にさせていただきます。
0950デフォルトの名無しさん
2008/12/03(水) 12:30:37#include <stdio.h>
int main()
{
int n[10], i, key, p, q;
printf("10個の整数を小さい順に入力してください\n");
for(i = 0; i < 10; i++){
printf("整数:");
scanf("%d", &n[i]);
}
printf("探す数を入力してください:");
scanf("%d", &key);
p = q = 10/2;
while(1){
q /= 2;
if(key > n[p])
p += q;
else if (key < n[p])
p -= q;
else {
printf("%d:%d 番目にあります。\n", key, p + 1);
break;
}
if(q == 0){
printf("%d:ありません\n", key);
break;
}
}
}
0951デフォルトの名無しさん
2008/12/03(水) 12:36:01こういうことかなと勝手に妄想。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char kanji[] = "亜哀愛悪握圧扱安案暗以衣位囲医依委威胃為尉異移偉意違";
char s[30];
int i, c;
unsigned int seed;
printf("文字列を入力: ");
scanf("%s", s);
for(i = 0, seed = 0; i < strlen(s); i++){
seed += s[i];
}
srand(seed);
c = rand() % strlen(s);
printf("%c%c\n", kanji[c*2],kanji[c*2 + 1]);
return 0;
}
0952951
2008/12/03(水) 12:40:51×c = rand() % strlen(s);
○c = rand() % (strlen(kanji) / 2);
0953デフォルトの名無しさん
2008/12/03(水) 12:44:52お願いします。
0955デフォルトの名無しさん
2008/12/03(水) 13:31:26[2] 問題文(含コード&リンク):
c言語でスタックオーバーフローするプログラムを作成し、実際にスタックの内容を
表示させる。そして、どれくらいのスタックの大きさならスタックオーバーフローの
起こらないかのスタックの限界領域を調べる。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ:Cygwin
[3.3] 言語:C
よろしくお願いします。
0956デフォルトの名無しさん
2008/12/03(水) 14:04:33無限再起でオーバーフロー
#include <stdio.h>
void func(void)
{
int val[256];
printf("%p ", val);
func();
}
int main(void)
{
func();
return 0;
}
0957デフォルトの名無しさん
2008/12/03(水) 14:41:01再帰バージョンのクソース
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8192.txt
0958デフォルトの名無しさん
2008/12/03(水) 14:50:39[2] 問題文(含コード&リンク):
下のサンプルプログラムを,関数へのポインタ配列を利用して書き直せ。
そのとき,演算に対してIDを割り当て,入力を簡素化すること。
例えば,次のようにする。
(1) addition
(2) substruction
(3) multiplication
(4) division
上記以外 other
さまざまな数値データに対して,上記のいずれかの演算を指定して,
常に正しい計算結果が得られることを確認せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc (Visual C++でも動くと嬉しい)
[3.3] 言語:C
[4] 期限:2008年12月4日10:30まで
[5] その他の制限:問題文+ヒント>http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8193.txt
0959デフォルトの名無しさん
2008/12/03(水) 15:32:33#include <stdio.h>
#include <stdlib.h>
#include <string.h>
double addition(double a, double b){ return a+b; }
double substruction(double a, double b){ return a-b; }
double multiplication(double a, double b){ return a*b; }
double division(double a, double b){ return a/b; }
double other(double a, double b){ return 0; }
int main(int argc, char *argv[]){
char* opt[]= {"0.other", "1.addition", "2.substruction", "3.multiplication", "4.division"};
double (*pfunc[])(double a, double b) = {other, addition, substruction, multiplication, division};
double pa, pb;
int i=1, idx_f;
while(i < argc){
idx_f = atoi(argv[i]);
if (idx_f > 4 || idx_f < 0) {
idx_f = 0;
}
pa = atoi(argv[i+1]);
pb = atoi(argv[i+2]);
printf("%s(%f,%f)=%f\n",opt[i/3+1],pa,pb,pfunc[idx_f](pa,pb));
i+=3;
}
return 0;
}
0960デフォルトの名無しさん
2008/12/03(水) 16:21:03任意のディレクトリ以下のcsvファイルのフルパス(サブディレクトリのファイル含む)を取得したいです。
FindFirstFileとかででいけそうと思ったのですが、ファイル名しか取得できなくて困っています。
どうすればディレクトリも取得でlきますか?
0961960
2008/12/03(水) 16:22:490962デフォルトの名無しさん
2008/12/03(水) 16:24:53GetCurrentDirectory
GetFullPathName
を使え
0963help me
2008/12/03(水) 16:50:16[2] 問題文 あらかじめ、なんらかの内容(英文)が書かれた“test.txt”
というファイルを作り、ファイルの先頭から終端(EOF)まで、
文字コードを16進数で画面に出力するプログラムを作成せよ。
出力形式は横8データと分する。
[3] 環境
[3.1] OS: Linux
[3.3] 言語:C
[4] 期限:12月5日まで
よろしくおねがいします!
0964デフォルトの名無しさん
2008/12/03(水) 17:03:06#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <sys/types.h>
#include <sys/stat.h>
int main(void){
FILE *fout, *fin; struct stat st;
char *buf; size_t i;
fout = fopen("test.txt", "w");
fprintf(fout, "テストだよ\nあいうえお\nカキクケコ
\n");
fclose(fout);
stat("test.txt", &st);
buf = (char *)malloc(st.st_size);
fin = fopen("test.txt", "r");
fread(buf, st.st_size, 1, fin);
fclose(fin);
for(i = 0; i < st.st_size; i++){
printf("%02X ", buf[i]);
if (i % 8 == 7) puts("");
}
free(buf);
return 0;
}
0965デフォルトの名無しさん
2008/12/03(水) 17:08:01#include <stdio.h>
int main()
{
FILE *fp;
char buf[256], *p;
int i;
fp = fopen("test.txt", "r");
if(fp == NULL){
printf("Cannot open test.txt\n");
return 1;
}
while(fgets(buf, 256, fp) != NULL){
p = buf;
i = 0;
while(*p != '\0'){
printf("%02x ", *p++);
if(i++ == 7){
printf("\n");
i = 0;
}
}
}
printf("\n");
return 0;
}
0966デフォルトの名無しさん
2008/12/03(水) 17:11:58#include <stdio.h>
int main(void)
{
FILE *fp = fopen("test.txt", "r");
int c, i = 0;
while ((c = fgetc(fp)) != EOF) {
printf("%02X ", c); ++i;
if (i % 8 == 0) printf("\n");
}
return 0;
}
0967デフォルトの名無しさん
2008/12/03(水) 17:12:03#include <stdio.h>
#define HABA 8
int main(void)
{
int i = 0, input;
FILE * fin;
if ((fin = fopen("test.txt", "r")) == NULL)
{
puts("file open error");
return 1;
}
while ((input = fgetc(fin)) != EOF)
{
printf("%02X ", input);
if (i++ % HABA == HABA -1)
printf("\n");
}
fclose(fin);
return 0;
}
0968help me
2008/12/03(水) 17:15:20読みこんで文字コードを出力するようです。 説明たりなくてごめんなさい。
0969デフォルトの名無しさん
2008/12/03(水) 17:16:320970help me
2008/12/03(水) 17:16:380971デフォルトの名無しさん
2008/12/03(水) 17:22:50#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <sys/types.h>
#include <sys/stat.h>
int main(void){
FILE *fin; struct stat st;
char *buf; size_t i;
stat("test.txt", &st);
buf = (char *)malloc(st.st_size);
fin = fopen("test.txt", "rb");
fread(buf, st.st_size, 1, fin);
fclose(fin);
for(i = 0; i < st.st_size; i++){
printf("%02X ", buf[i]);
if (i % 8 == 7) puts("");
}
free(buf);
return 0;
}
0972デフォルトの名無しさん
2008/12/03(水) 17:24:57>ファイルの先頭から終端(EOF)まで、
って仕様なんだからEOF以降を処理しちゃいかんよ
0973デフォルトの名無しさん
2008/12/03(水) 17:26:36一般的にはそうだろうが
> ファイルの先頭から終端(EOF)まで
と出題されてる。
0974デフォルトの名無しさん
2008/12/03(水) 17:35:290975デフォルトの名無しさん
2008/12/03(水) 17:40:34[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8195.txt
[3] 環境
[3.1] OS:Windows
[3.2] VC 6.0等
[3.3] 言語: C++
[4] 期限: ([2008年12月4日17:00まで]
[5] その他の制限: 問題文中に条件が2つ
よろしくお願いします。
0976デフォルトの名無しさん
2008/12/03(水) 17:58:11たすかりました。本当にありがとうございました!
0977デフォルトの名無しさん
2008/12/03(水) 18:00:15>(2)データは下図のように各支店の売上を管理する配列を用意し,
「下図」とやらを見せてくれ
0978デフォルトの名無しさん
2008/12/03(水) 18:33:17本当に有り難う御座いました。
大変助かりました。
0979デフォルトの名無しさん
2008/12/03(水) 18:39:36btree_print の部分(実行例のような出力)以外のところはできてるけど
0980デフォルトの名無しさん
2008/12/03(水) 21:16:01[2] 問題文(含コード&リンク):3次関数f(x)=x(x-a)(x-b)とx軸、および直線
x=0とx=c(c>0)とで囲まれる部分の面積の近似値を求めるプログラミングを
次のように書け。
(1)定数a,bおよびcを整数データとして標準入力から入力する。
(2)区間[0,c]をn等分して、その分点を順にx0=0,x1,x2,…xn=c,分点の間隔を
Δx=c/nとして、求める面積Σn k=1 f(xk)Δxで計算する。nは1000とし、記号定数N
として定義せよ。
(3)f(xk)を計算する部分を関数にする。変数xkと関数値f(xk)はdoubleとして扱うこと。
[3] 環境
[3.1] OS: CentOS5
[3.2] コンパイラ名とバージョン: gcc バージョンは不明
[3.3] 言語: Cのみ
[4] 期限: [2008年12月04日20:00まで]
[5] その他の制限: 特になし
0981デフォルトの名無しさん
2008/12/03(水) 21:22:04「データにEOFが含まれている」とはどういう意味ですか?
EOF って具体的にはどんなデータですか?
0982デフォルトの名無しさん
2008/12/03(水) 21:28:360x1Aだったけな・・・が、EoFの文字コードだったはず。
EoFを消さないで末尾から追記するとか特殊な事もあるから
0983デフォルトの名無しさん
2008/12/03(水) 21:30:59んー、>>971 は "rb" でオープンしているのだから、 0x1a を EOF として解釈するのはどうかと思うのですが。テキストモードならば
一つの考え方として理解できます。
0984デフォルトの名無しさん
2008/12/03(水) 21:31:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8196.txt
0985デフォルトの名無しさん
2008/12/03(水) 21:34:08EOF は処理系依存だろ
int i = EOF;
を cpp にかけると
int i = (-1);
になるぞ
0986デフォルトの名無しさん
2008/12/03(水) 21:34:490987デフォルトの名無しさん
2008/12/03(水) 21:38:480988デフォルトの名無しさん
2008/12/03(水) 21:42:50今回も課題のアドバイスをいただきたいのですが…
課題内容は以下の通りです。
「関数へのポインタを用いて、コマンドライン入力に応じて計算を行うプログラムを作成せよ。
関数は加減乗除の他に0を返す関数otherを定義し、それぞれの関数にIDを割り当て、入力を簡素化すること。」
連スレになってしまいますが、自作プログラムを貼っておきます。
whileループに入らないところが解決できません…
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
float addition(int a, int b) {return (a + b);}
float subscription(int a, int b) {return (a - b);}
float multiplication(int a, int b) {return (a * b);}
float division(int a, int b) {return (a / b);}
float other(int a, int b) {return 0;}
int main(int argc, char *argv[]){
float (*pfunc)(int a, int b);
int pa, pb, i = 1;
char *funcname[1];
printf("(1) addition\n(2) subscription\n(3) multiplication\n(4) division\n上記以外 other\n\n");
printf("実行する演算の番号と2つの引数を入力して下さい : ");
0989デフォルトの名無しさん
2008/12/03(水) 21:44:34pa = atoi(argv[i]);
if(argv[i] == 1){
pfunc = addition;
funcname[1] = "addition";
}
else if(argv[i] == 2){
pfunc = subscription;
funcname[1] = "subscription";
}
else if(argv[i] == 3){
pfunc = multiplication;
funcname[1] = "multiplication";
}
else if(argv[i] == 4){
pfunc = division;
funcname[1] = "division";
}
else{
pfunc = other;
funcname[1] = "other";
}
pa = atoi(argv[i + 1]);
pb = atoi(argv[i + 2]);
printf("%s(%d, %d) = %d\n\n\n", funcname[1], pa, pb, pfunc(pa, pb));
printf("実行する演算の番号と2つの引数を入力して下さい : ");
i += 3;
}
return 0;
}
0990デフォルトの名無しさん
2008/12/03(水) 21:58:21> 0x1a を EOF として解釈するのはどうかと思う
>>971のどこにそのような処理が?
0991デフォルトの名無しさん
2008/12/03(水) 21:59:00おまw
書き込む前にテンプレ違反してること分かってんなら従いなよww
0992デフォルトの名無しさん
2008/12/03(水) 21:59:22#include <stdio.h>
#include <math.h>
#define n 1000
double f(double x, int a, int b) { return x * (x - a) * (x - b); }
int main(void)
{
double answer = 0.0, xk;
int a, b, c;
int i;
printf("input a: "); scanf("%d", &a);
printf("input b: "); scanf("%d", &b);
printf("input c: "); scanf("%d", &c);
for (i = 0; i < n; i++) {
xk = (double)c * i / n;
answer += fabs(f(xk, a, b)) * ((double)c / n);
}
printf("f(x) = x(x - %d)(x - %d)\nx = %d\n", a, b, c);
printf("\nAnswer: %f\n", answer);
return 0;
}
0993デフォルトの名無しさん
2008/12/03(水) 22:01:01コマンドライン入力をしていないに3兆ジンバブエドル
0994デフォルトの名無しさん
2008/12/03(水) 22:08:35コマンドライン引数っぽさと
コマンドラインからの標準入力っぽさが両方見えるんだがどっちなん?
0995デフォルトの名無しさん
2008/12/03(水) 22:13:32#include<stdio.h>
#include<stdlib.h>
#include<string.h>
float addition(int a, int b) {return (a + b);}
float subscription(int a, int b) {return (a - b);}
float multiplication(int a, int b) {return (a * b);}
float division(int a, int b) {return (a / b);}
float other(int a, int b) {return 0;}
float (*pfunc[])(int a, int b) = {other, addition,
subscription, multiplication,
division};
int main(){
int ope, a, b, f;
char *funcname[] = {"other", "addition", "subscription",
"multiplication", "division"};
printf("(1) addition\n(2) subscription\n(3) "
"multiplication\n(4) division\n上記以外 other\n\n");
while(1) {
printf("実行する演算の番号と2つの引数を入力して下さい : ");
f = scanf("%d %d %d", &ope, &a, &b);
if (f != 3) {
puts("入力おかしいです");
}
if (ope < 0 || 4 < ope )
ope = 0;
printf("%s(%d, %d) = %f\n\n\n", funcname[ope], a, b,
pfunc[ope](a, b));
}
return 0;
}
適当に脳内補完でお送りします
0997デフォルトの名無しさん
2008/12/03(水) 22:20:11[2] 問題文:生年月日から今日までの経過日数計算簡易プログラム
誕生日と今日の日付を西暦・月・日の順にスペースで区切りながら入力。
誕生日が今日の日付より後になっていた場合はエラーメッセージを表示する。
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 12月5日(金)
[5] その他:日数計算のとこはすでに出来ています。
エラーメッセージ表示のとこの条件がわかりません><
どなたかお願いします!
0998デフォルトの名無しさん
2008/12/03(水) 22:23:02反省のために青汁でも飲んでおきます。いけない子ですみません…
>>993, >>994, >>995
「問題はこんな感じ」で書いたので、多分問題が変なのだと思います。
書きたかったのは、要するにコマンドライン引数を用いよ、ということだったのですが…
実行例としては、例えば123 * 456を計算したい場合は、「3 123 456」と入力する、という感じです。
もう次スレに移るようなので、頑張って自己解決の道を模索していきます。
ありがとうございました(^^
0999デフォルトの名無しさん
2008/12/03(水) 22:25:02int main(int argc, char *argv[]){
char aNumBf[][10];
switch(atoi(argv[0])){
1000デフォルトの名無しさん
2008/12/03(水) 22:31:25と、入力してるの?
なんか、
hoge.exe
3 123 456
と、分けてそうに思うんだけどせんげっと
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。