ぼるじょあがC/C++の宿題を片づけますYO! 68代目
796 :
デフォルトの名無しさん :
2008/01/27(日) 14:43:59 [1] 授業単元:プログラミングU [2] 問題文(含コード&リンク):与えられたデータ(data1.txt )に対して季節調整を行うプログラムを作成しなさい。 <調整法> i年目、j月のデータを aij とする。 月平均 Mj 月平均の平均 M 調整のための指数 Sj = Mj / M 調整結果 aij / Sj [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Visual Studio 2005 [3.3] 言語:C++ [4] 期限:2月3日 [5] その他の制限: 特にありません。 よろしくお願いします。
>>796 data1.txtがどんな物か分からないとやりようが無いYO
data1.txtをうpしてクレYO
調整結果は画面に表示すれば良いのかな?
798 :
◆DSpH.2sBBQ :2008/01/27(日) 19:43:32
[1] 授業単元: C++ [2] 問題文 格子状(一辺20mのブロック×縦横10ブロック)の道を、人が4m/sで移動し 任意の座標(通路上に自由に指定可)にある複数の障害物とのそれぞれの距離を、各分岐点で表示しなさい。 スタートは左下の点、ゴールは一番右上の点とする。人が通る道順も自由に指定可。 障害物の上を通る場合は人の速度を1m/sとし、ゴールに到着するまでにかかった総時間も表示しなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C++ [4] 期限: とても急いでます(>_<) [5] その他の制限: なし 本当に切羽詰ってます!ぼるじょあさん、宜しくお願い致します!!
799 :
# :2008/01/27(日) 20:31:30
>>797 すいません。貼り付け忘れてました。
データ(12カ月×5年)
40.0 37.7 51.8 45.9 45.2 45.4 62.0 40.8 42.1 49.1 51.5 93.4
42.6 39.5 53.4 47.6 47.0 47.5 63.5 42.2 42.9 51.1 51.8 94.7
43.3 39.8 53.6 48.5 48.3 47.5 65.9 42.8 43.7 53.2 52.9 97.0
44.9 42.3 55.0 50.7 48.6 48.9 68.8 43.3 46.2 54.2 54.6 100.5
47.5 42.8 57.7 52.6 51.0 50.9 71.4 45.0 47.3 56.8 56.7 102.7
調整結果は、画面に表示させてください。よろしくお願いします。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 2つの正の整数値a,bの最大公約数を出力するプログラムを ユークリッドの互除法というアルゴリズムを用いて作成したい。 以下のプログラムの****部分に適切な処理をいれて,プログラムを完成させなさい。 #include <stdio.h> int main( void ) { int a, b; /* 変数の宣言 */ int m, n; scanf( "%d,%d", &a, &b );/* 2つの正の整数値を入力する */ m= a ; n= b ; while(m **** n){ /* ユークリッドの互除法を適用 */ if( m > n ) m = ***** ; else n = **** ; [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C言語 [4] 期限: [2008年1月28日12:00まで] [5] その他の制限: 特になし よろしくお願いします。
全部あれかよwなさけねえ
803 :
デフォルトの名無しさん :2008/01/31(木) 16:31:13
[1]授業単元:C言語
[2]問題文:単純なソートアルゴリズム(バブル・選択・挿入)のどれか1つと、クイックソートアルゴリズムを計算量を比較するプログラムを作る。
*自分はバブルソートを選択しました。
[3]環境
[3.1]OS:(Windows XP)
[3.2]Ultara-C pro version 2.1
[3.3]言語:c言語
[4]期限:2008年2月1日 AM2:00まで
[5]その他制限:特になし
プログラムが長かったのでろだにアップしています。URLは下記に貼り付けています。
2008/01/30(Wed) 17:02 No.5941 が自分の書き込みです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm よろしくお願いします。
804 :
デフォルトの名無しさん :2008/01/31(木) 18:39:47
[1] 授業単元: C言語 [2] 問題文(含コード&リンク):フロッピードライブのディスクイメージを作成せよ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++ [3.3] 言語:C [4] 期限: 2008/02/05に提出 [5] その他の制限: 基本的なことはできます。RAW Readをやらせたいんだと思うので、標準ライブラリ以外はダメです。 ioctrlを使うんだと思うんですが・・・。 すみません。資料へのリンクだけでもいいのでお願いします。
>>804 ・ディスクイメージを作成せよ
・RAW Readをやらせたい
・ioctrlを使う
相互に矛盾しているとは思わんかね。
806 :
804 :2008/01/31(木) 19:43:51
>>805 そうなんですか・・・?
FDイメージを作成するためにFDをFATでのReadではなく、RAW Readをしなければならない。
RAW Readをするためには・・・と思って調べていくとioctrlがそれっぽいかなぁというところまでは行ったつもりだったんですけど、違うんですか?
807 :
デフォルトの名無しさん :2008/01/31(木) 21:40:57
>>802 はい、ありがとうございます。使わせていただきます。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 線形探索/二分探索 の2つの方法での計算時間の違いをC言語実装によって 定量的に示す。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition もしくはUltara-C pro version 2.1 [3.3] 言語: Cのみ [4] 期限: ([2008年2月1日AM:6:00まで [5] その他の制限: 特に無いです。 よろしくお願いします
809 :
デフォルトの名無しさん :2008/02/01(金) 02:28:34
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):手の平の2値画像(
http://www2.uploda.org/uporg1226336.pgm ):手領域は255、背景は0 を使って
・手領域の面積 SS
・手領域の重心位置 (Mg,Ng)
・手領域の外接長方形 (RI,RJ) (RM,RN)
を計算して表示するプログラムを作成しなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: Cのみ
[4] 期限: 2008年2月4日まで
[5] その他の制限:なし
よろしくお願いします。
>>804 Windows環境でBorlandC++を使っていいならAPIでいいやん。
CreateFile
引数:\\.\C:\
で検索してみ。
811 :
モダン :2008/02/01(金) 19:14:16
[1] 授業単元:C言語 [2] 問題文 優先順位つき四則演算(小数点付き) 例 261.5*(2.3+7.9)+6.3/3.0= を計算して表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Visual Studio 2005 [3.3] 言語: C++のみ [4] 期限: 2008年2月5日まで [5] その他の制限:特にありません
マルチ死ね
セリオも死ね
>>818 (・3・) エェー (いろんな意味で)ねーYO!
(・3・) エェー Fizz-Buzz 問題解いてみるYO! 問題: 1から100までの数をプリントするプログラムを書け。 ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、 3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 #include <stdio.h> int main(void){ int i; for(i=1;i<=100;i++){ if(i%3==0 && i%5==0) printf("FizzBuzz\n"); else if(i%3==0) printf("Fizz\n"); else if(i%5==0) printf("Buzz\n"); else printf("%d\n", i); } return 0; }
>>820 の別解
#include <stdio.h>
int main(void){
int i;
char *print_format[]={"%d\n", "Fizz\n", "Buzz\n", "FizzBuzz\n"};
for(i=1;i<=100;i++){
printf(print_format[!(i%3)+(!(i%5))*2], i);
}
return 0;
}
823 :
デフォルトの名無しさん :2008/03/18(火) 09:24:13
本家が荒れているのでこちらをage! 宿題をやってもらいたい人かもーん!!
今の時期に宿題が出るとは思えませんが、お暇ならこの問題をどうぞ 3^(1,000,000,000,000,000)MOD23を計算せよ。
3と23の最小公倍数ってどうやって算出すればいいんですか?
>>825 3と23を掛けた後、最大公約数で割る。
#include <stdio.h> #include <math.h> int main(void) { int i, amari = 3; for(i = 0; i < 15; i++) { amari = int(pow((double)amari, 10.0)) % 23; } printf("%d", amari); return 0; }
#include <stdio.h> int main(void) { const int a = 3, b = 23; int i = b; while (i % a != 0) i += b; printf("%d\n", i); return 0; }
>>824 (・3・) エェー 出遅れたYO!
>>827 は有効桁数を超える可能性があるYO!
(3**10 も 8**10 も 2**31 以上じゃないから大丈夫だけど)
#include<stdio.h>
int main(void){
int i, j;
int result=1, mul=3;
for(j=0;j<15;j++){
for(i=0;i<10;i++) result=(result*mul)%23;
mul=result;
}
printf("%d\n", result);
return 0;
}
>>830 (・3・) エェー なんか処理内容見落としてるYO!
> if ((imonths >2) && ((iyear % 4 == 0) && ((iyear % 100 !=0) || (iyear % 400 == 0)))) {
の
(imonths >2)
はどこいったんだYO!
妹なら俺のちんぽしゃぶってるが
>>831 忘れてました・・・ありがとうございますw
>>832 忘れてました・・・ありがとうございますw
>あとこのソースって前年度の総日数(365xyear-1)とかがぬけてますよね? 質問してるところのループだけじゃなくて、その前のループもわかってないじゃんw
で?
839 :
839 :2008/04/12(土) 16:12:38
(・3・) エェー 全然初心者用の問題じゃないお
>>839 (・3・) エェー 問題文の意味が分からないYO!
842 :
839 :2008/04/13(日) 18:14:42
843 :
839 :2008/04/14(月) 13:00:50
期限を今日の8:00までと書いてますが期限を延ばしてもらったので、 どうぞ教えていただけないでしょうか
(・3・) エェー 期間が、明日明後日だと僕は無理だYO もっと余裕があるならやってもいいYO
845 :
デフォルトの名無しさん :2008/04/15(火) 12:05:41
期日が短くてすいません orz
では
>>842 のプログラムをもっと簡単にはできないでしょうか?
お願いします
マルチポストして解決したんなら、こっちでも報告するのが筋だろ。
848 :
デフォルトの名無しさん :2008/04/15(火) 23:08:40
はい仰る通りですね、すいません。 orz いいわけになりますが、やってもらったプログラムの理解とフローチャートを作ろうとしていたもの ですから報告が遅れました。そして私の宿題を手伝っていただきありがとうございました。
849 :
デフォルトの名無しさん :2008/04/17(木) 21:06:36
[1] 授業単元: プログラム入門 [2] 問題文(含コード&リンク): 整数aにデータを6つ入力し、偶数、奇数の個数を求めよ [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C [4] 期限: 2008年4月18日12:00まで [5] その他の制限: 初心者レベルです、Whileやfor、一次元配列までしか・・・ よろしくお願いします。
#include <stdio.h> int main(void) { int data[6], i, kisuu=0, guusuu=0; for(i=0;i<6;i++) { printf("%d番目のデータを入力してください:",i); scanf("%d",&data[i]); } for(i=0;i<6;i++) { if(data[i]%2==1)kisuu++; else guusuu++; } printf("奇数は%d個、偶数は%d個です",kisuu,guusuu); return 0; }
851 :
デフォルトの名無しさん :2008/04/18(金) 00:13:28
>>850 様
ありがとうございます!助かりました〜。
>>852 (・3・) エェー 元のプログラムが間違ってるYO!
ツェラーの公式使えYO!
ツェラーの公式を使うことが、そんなに辛い(つぇらい)のかね?ん?
857 :
デフォルトの名無しさん :2008/04/27(日) 18:53:51
[1] 授業単元:データ構造とアルゴリズム [2] 問題文(含コード&リンク):体育館問題を列挙で解け。 ・入力・・・最初に部活の数 n (0 <= n <= 100)が与えられる。 si(部活の活動開始時間),fi(部活の活動終了時間)の順に n 個の整数の組が与えられる。 (0 <= si <= 9999, 1 <= fi <= 10000, si < fi) ・出力・・・活動可能な部活の最大数を出力 Sample Input n = 5 si fi 0 5 13 20 15 27 4 10 25 30 Sample Output 3 [3] 環境 [3.1] OS: WindowsXP [3.2] Borland C++ [3.3] 言語:C++ [4] 期限: [2008年5月2日17:00まで] [5] その他の制限:特にありません よろしくお願いしますm(_ _)m
[1] 授業単元:プログラミング実験(ソフト開発) [2] 問題文(含コード&リンク): 下記の機能を持つ原始的なペイントソフトの作成をせよ。最低でも1.2は必須の機能である。 1.直線の描画 左ボタンを押しながらマウスを移動させ、左ボタンを離すと、左ボタンを押した座標から離した座標までの直線を描画する。 この際、移動最中の過程を消すためのXORペンを使用する。moveto,linetoという関数を用いる。 2.ラバーバンド 右ボタンを押しながらマウスを移動すると、右ボタンを押した座標とマウスの現座標を頂点とする矩形を描写する。 3.ハイライト 描いた直線の先端にマウスカーソルを合わせると、端点が強調される。 4.右ドラッグ選択 描いた直線をラバーバンドで囲み、右クリックを離すと、ラバーバンド内の直線の端点が強調される。 [3] 環境 [3.1] OS:Windows XP [3.2] Visual C++ 2005(or2008) Express Edition [3.3] 言語:C++ [4] 期限: 2008年5月4日まで [5] その他の制限:Windowsフォームアプリケーションで作成。 1.2の機能を持つものであれば十分すぎるほど十分です。 ぜひお力添えしていただければと思います。よろしくお願いします。
はわわ〜、ってネタが古いですぅ〜?
861 :
デフォルトの名無しさん :2008/05/20(火) 14:01:27
[1] 授業単元: C言語 [2] 問題文:文字列s1の中から文字列s2に含まれる文字を取り除く.関数の戻り値は文字列s1(の先頭を指すポインタ値). テストプログラムでは,文字列s2は固定でも構わない.しかし,関数の仕様としては,s1とs2の両方を引数にする.できるならば,s2もキーボードから入力できるようにする. s1: "This is a pen." s2: "sp." ↓ s1: "Thi i a en" [3] 環境 [3.1] OS:LINUX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 2008/05/026に提出 C言語全然分からなくて困ってます。どうかよろしくお願いします。
>>861 (・3・) エェー 久々だYO!
#include <stdio.h>
unsigned char *hoge(unsigned char *s1, const unsigned char *s2){
int i, j, remove_flag[256]={0};
for(i=0;s2[i];i++) remove_flag[s2[i]]=1;
for(i=j=0;s1[i];i++) if(!remove_flag[s1[i]]) s1[j++]=s1[i];
s1[j]='\0';
return s1;
}
int main(void){
char s1[1024]="", s2[1024]="sp.";
fgets(s1, sizeof(s1), stdin);
puts(s1);
hoge(s1, s2);
puts(s1);
return 0;
}
#include <stdio.h> #include <string.h> // s1にs2[some]が存在したら詰めると言う横着アルゴリズム。 // s1[some]がs2中に存在したら詰めると言う戦略のほうが無難かと思われる。 static void removeChars(char * s1, const char * s2) { for (const char * s2p = s2; * s2p != '\0'; ++s2p) for (char * p; (p = strchr(s1, * s2p)) != NULL; strcpy(p, p + 1)) ; } // 以下はテスト用サンプル。提出に当たっては適当に修正されたし。 int main(int argc, char ** argv) { removeChars(argv[1], argv[2]); puts(argv[1]); return 0; }
strcpy(p, p + 1) これって未定義じゃねーの?
865 :
デフォルトの名無しさん :2008/05/20(火) 16:47:06
【質問テンプレ】 [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): キーボードから文字列を入力し、それを逆順に表示するプログラムを作成せよ。 表示には必ずポインタを用いること。 [3] 環境 [3.1] OS: (Windows xp [3.2] コンパイラ名とバージョン: Cl [3.3] 言語: C言語 [4] 期限:2008年5月22日hh:17時 [5] その他の制限: 文字列の長さを知る必要があるので工夫する. ポインタに最初どこを向けさせて、どこまでいったら表示を終えるかを考えること。 よろしくお願いします。
866 :
863 :2008/05/20(火) 17:00:13
// >864の指摘も尤もなので、修正した。 // ついでに、s1[some]がs2中に存在したらコピー元をずらして、毎回一文字だけコピーする戦略に。 // これって、中のwhileの行を取り除いてp = s1をp = s2にしたらstrcpy()だ。 // static void removeChars(char * s1, const char * s2) { char * p = s1; do { while (* p != '\0' && strchr(s2, * p)) ++p; * s1++ = * p; } while (* p++ != '\0'); }
アルエェー ぼるじょあってまだいたのかYO! 健康なのかYO!
>>865 #include <stdio.h>
int main(void)
{
char str[256], *p;
scanf("%s", str);
for(p=str; *p; p++);
while(p-->str) putchar(*p);
return 0;
}
せめてscanf("%255s", str)にしようよ。
870 :
◆g/ZMVdytmo :2008/05/20(火) 22:18:53
871 :
865 :2008/05/20(火) 22:49:45
>>870 (・3・) エェー でけたYO!
#include<stdio.h>
int main(void){
int i, j, n;
printf("段数を入力してください:");
scanf("%d", &n);
for(i=0;i<n;i++){
for(j=0;j<n-i;j++) printf("*");
printf("\n");
}
return 0;
}
#include<stdio.h>
int main(void){
int i, j, n;
printf("段数を入力してください:");
scanf("%d", &n);
for(i=0;i<n;i++){
for(j=0;j<n-1-i;j++) printf(" ");
for(j=0;j<=i;j++) printf("*");
printf("\n");
}
return 0;
}
873 :
◆g/ZMVdytmo :2008/05/21(水) 00:12:59
ぼるじょあ氏超絶感謝!! 意外とシンプルワラタww
874 :
デフォルトの名無しさん :2008/05/21(水) 11:00:12
>>862 どうもありがとうございます。
どうやら条件があるみたいで「配列版」と「ポインタ版」 をつくり,それらの動作をテストするためのプログラムを作成する.
どの関数も,与えられた文字列に何らかの加工を施すものである「配列版」とは,関数内の文字列に対する処理を配列的表現を使って記述したものである.文字列sの中のある文字にアクセスする場合に,s[i]という表現を用いる.
「ポインタ版」とは,関数内の文字列に対する処理をポインタ使って記述したものである. 関数内には,全く配列的表現が現れないように書く.単に,配列版の s[i] を *(s+i) に置き換えるだけではダメで,ポインタ変数の値を変化させて文字列を走査するように記述する.
なんか面倒くさくて申し訳ないですが、よろしくお願いします。
875 :
デフォルトの名無しさん :2008/05/21(水) 11:26:33
[1] 授業単元: C言語 for [2] 問題文(含コード&リンク): 整数の個数を読み込み、その個数分の整数を 読み込み、読み込んだ整数の最大値を求めるプログラムを作れ。 整数の個数: 3 No.1: 6 No.2: 3 No.3: 4 最大値は 6 です [3] 環境 [3.1] OS: WINDOWS XP [3.2] コンパイラ名とバージョン: Cl [3.3] 言語: C [4] 期限: 2008年5月21日19:00 [5] その他の制限: for文を使う事。 お願いしますm(__)m
>>874 (・3・) エェー そういうことは先に言えYO!
#include <stdio.h>
#include <string.h>
unsigned char *hoge(unsigned char *s1, const unsigned char *s2){
char *src, *dest;
for(src=dest=s1;*src;src++){
if(!strchr(s2, *src)) *dest++=*src;
}
*dest='\0';
return s1;
}
int main(void){
char s1[1024]="", s2[1024]="sp.";
fgets(s1, sizeof(s1), stdin);
puts(s1);
hoge(s1, s2);
puts(s1);
return 0;
}
>>875 (・3・) エェー でけたYO!
#include <stdio.h>
int main(void){
int i, value_num, value, maximum_value=12345;
printf("整数の個数: ");
scanf("%d", &value_num);
for(i=0;i<value_num;i++){
printf("No.%d: ", i+1);
scanf("%d", &value);
if(i==0 || value>maximum_value) maximum_value=value;
}
printf("最大値は %d です\n", maximum_value);
return 0;
}
878 :
デフォルトの名無しさん :2008/05/21(水) 11:41:23
【質問テンプレ】 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク) 身長 150 cm から 170 cm までの標準体重(BMI法で計算)によるの対応を 表示するプログラムを for 文を使って作成せよ。 標準体重は小数点以下を1桁だけ表示すること。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:特になし [5] その他の制限:特になし
881 :
ぼろじょあ :2008/05/24(土) 06:03:58
(´3`) エェー でけねーYO!
882 :
◆ob60wHXQlc :2008/05/26(月) 23:12:53
[1] C言語 [2] 後から用意される2つのファイルがマージできるプログラムをつくる。 ファイルのサイズは最大で1000バイト。 unsigned shortを使う。 昇順。 [3] 環境 [3.1] Windows [3.2] visual studio [3.3] C [4] 5月27日のお昼まで。 [5] C言語始めて3週間です。 お願いします。
>>882 (・3・) エェー 問題の意味が分からないYO!
884 :
デフォルトの名無しさん :2008/05/27(火) 13:15:08
[1] 授業単元: C言語 [2] 問題 文字列sの文字の順を逆に置き換える. 関数の戻り値は文字列s(の先頭を指すポインタ値). s: "This is a pen." ↓ s: ".nep a si sihT" [3] 環境 [3.1] OS:LINUX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C >876いつもありがとうございます。 助かります。 追加で問題だされました。 配列版のほうは自力でできましたがポインタ版のほうは無理でした。 よろしくお願いします。
>>884 (・3・) エェー 配列版とかポインタ版とか省略すんなYO!
過去ログ読み直さないと意味分からんYO!
#include<stdio.h>
char *reverse(char *s){
char *p, *q, t;
for(p=q=s;*q;q++);
for(q--;p<q;p++,q--) t=*p,*p=*q,*q=t;
return s;
}
int main(void){
char s[]="This is a pen.";
puts(s);
puts(reverse(s));
return 0;
}
886 :
◆Anhlv1kDvE :2008/05/27(火) 21:17:24
【質問テンプレ】 [1] 授業単元: C言語 [2] 問題文(含コード&リンク): コマンドプロンプトで実行して ”ファイル名は?” と聞いてきてテキストファイルのフルパス(場所)を入力してエンターキーで次は ”作成先は?” と聞いてきてフルパス(場所)を入力してエンターキーで終わり、 英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”NEWテキスト”と呼ぶ)に書き込み保存するプログラミングです。 実際の内容の結果は次のようになる。 -------------------英文.txt------------------------------- I was wondering if my plant needs friends, do I need to get more of the same plant so it can get polinated and produce peppers? 続く
887 :
◆Anhlv1kDvE :2008/05/27(火) 21:20:15
886 続き1 ------------------new英文.txt(プログラムによって新規作成)------------------------------ I was wondering if my plant needs friends, do need to get more of
888 :
"gra454 :2008/05/27(火) 21:21:14
887 続き the same so it can polinated and produce peppers? ------------------------------------------------- ポイント (1) NEWテキストの重複チェックは同じ単語でも大文字と小文字ひとつでも違えば書き込みはOKとする(プログラムが楽なよう) 例)Apple と apple
889 :
gra454 :2008/05/27(火) 21:22:15
888 続き では違うものとしNEWテキストに書き込みされる。また同じ単語でも記号が含まれていても違う単語と判断し、記号付きのままNEWテキストに書き込む。 例)get! と get つまり小文字、大文字を区別して一致し、さらに文字数も一致しないと重複とみなされない。 (できるならnew英文.txtは記号を削除して英数字の大文字と小文字のみにしたい。その場合上の例は重複となる) (2) Windowsで動作すること。NEWテキストのファイル名は毎回入力しないでいいように、英文のテキストファイルのファイル名の先頭に"new" をつけたものでいい。 例)英文.txt → new英文.txt [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Visual C++ 2005 [3.3] 言語: どちらでも可 [4] 期限: ([2008年6月2日まで] [5] その他の制限: 初心者です
>>886 (・3・) エェー ほらYO!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct tag_list_t{
int num;
char **wordlist;
}list_t;
int list_add(list_t *list, char *word){
int i;
for(i=0;i<list->num;i++) if(strcmp(list->wordlist[i], word)==0) return 0;
list->wordlist=realloc(list->wordlist, sizeof(char*)*(list->num+1));
list->wordlist[list->num]=strdup(word);
list->num+=1;
return 1;
}
int main(void){
list_t list={0, NULL};
char fname_in[FILENAME_MAX], fname_out[FILENAME_MAX], word[255+1];
FILE *fp_in, *fp_out;
printf("”ファイル名は?”");
scanf("%s", fname_in);
printf("”作成先は?”");
scanf("%s", fname_out);
if((fp_in=fopen(fname_in, "r"))==NULL) return 1;
if((fp_out=fopen(fname_out, "w"))==NULL) return 2;
while(fscanf(fp_in, "%255s", word)==1) if(list_add(&list, word)) fprintf(fp_out, "%s\n", word);
fclose(fp_in);
fclose(fp_out);
return 0;
}
質問長いしうpロダ使えよ
>>889 (・3・) エェー 記号削除版だYO!
while(fscanf(fp_in, "%255s", word)==1) if(list_add(&list, word)) fprintf(fp_out, "%s\n", word);
↓
while(fscanf(fp_in, "%255[A-Za-z]%*[^A-Za-z]", word)==1) if(list_add(&list, word)) fprintf(fp_out, "%s\n", word);
893 :
デフォルトの名無しさん :2008/05/28(水) 00:15:53
894 :
デフォルトの名無しさん :2008/05/28(水) 00:17:25
895 :
◆hwfaJ.m7oQ :2008/05/28(水) 00:28:46
>>886 ありがとうございます。
実行すると(記号未削除版)
ファイル名は? 1.txt
作成先は? C:\
続行するには何かキーを押してください . . .
と出てエンターキーをおしても何も作られませんが?
896 :
デフォルトの名無しさん :2008/05/28(水) 00:40:57
ヴィジュアルベーシック2005 携帯プログラミング テキストボックス1に文字が出る ボタン12個 ボタン1(1) ボタン2(2、A,B,C) ボタン3(3、D,E,F) ・・・ ボタン9(9、W,X,Y,Z) ボタン10(*)入力画面を初期化 ボタン11(0) ボタン12(#)同じ文字・数字をつづけて入力できる 多いですがプログラミングコードを教えてください。 本当によろしくお願いします。
>>893 #include <stdio.h>
int main(void){
int score[20], range[5] = {0}, input, i = 0, k;
while(i < 20){
printf("[No.%2d]の成績を入力して下さい: ", i+1);
scanf("%d", &input);
if(input >= 1 && input <= 5){
score[i] = input;
range[input -1]++;
i++;
}
}
puts("*** 成績分布 ***");
for(i=0; i<5; i++){
printf("評価[%d] (%2d人) ", i+1, range[i]);
for(k=0; k<range[i]; k++){
if(k != 0 && k%5 == 0) putchar(' ');
putchar('*');
}
puts("");
}
return 0;
}
898 :
デフォルトの名無しさん :2008/05/28(水) 09:33:44
899 :
デフォルトの名無しさん :2008/05/28(水) 09:43:03
900 :
◆ob60wHXQlc :2008/05/28(水) 09:57:39
>>883 100個の数字が入ったファイルが2つ用意されるので、
それを合わせて昇順にソートして、
新しいファイルに書き込むというものです。
ファイルはいっきに読み込まず、1レコードずつです。
よろしくお願いします。
902 :
デフォルトの名無しさん :2008/05/28(水) 10:12:33
903 :
デフォルトの名無しさん :2008/05/28(水) 10:14:02
>>882 (・3・) エェー こんなもん?
#include<stdio.h>
#include<stdlib.h>
#define DATA_NUM_MAX (100*2)
int compare(const unsigned short *a, const unsigned short *b){
if(*a>*b) return 1;
if(*a<*b) return -1;
return 0;
}
int main(int argc, char *argv[]){
FILE *fp_in, *fp_out;
unsigned short data[DATA_NUM_MAX];
int i, data_num=0;
if(argc!=4){
printf("Usage: ./a.out filename[in] filename[in] filename[out]\n");
return 0;
}
for(i=0;i<2;i++){
if((fp_in=fopen(argv[i+1], "r"))==NULL) return 1;
for(;data_num<DATA_NUM_MAX;data_num++)
if(fscanf(fp_in, "%hu", &data[data_num])!=1) break;
fclose(fp_in);
}
qsort(data, data_num, sizeof(data[0]), (int (*)(const void *,const void *))compare);
if((fp_out=fopen(argv[3], "w"))==NULL) return 2;
for(i=0;i<data_num;i++) fprintf(fp_out, "%hu\n", data[i]);
return 0;
}
906 :
◆ob60wHXQlc :2008/05/28(水) 11:01:50
>>883 ありがとうございます!!!!!!!
ちなみに、入ってる数字の数は不明だったとして、
ファイル1とファイル2の名前は相手に入力させ、
freadとfwriteを使ってファイル3に書き込み、
それをソートして1レコードずつ出力する。
っていうのはできたりするんでしょうか‥。
長くてすいません‥。
907 :
デフォルトの名無しさん :2008/05/28(水) 11:08:15
>>905 ありがとうございます。
しかし、コンパイルしたら(haii1.cで保存)
haii1.c: In function `main':
haii1.c:14: warning: unknown escape sequence: `\' followed by char code 0x8e
となってしまいました…。
該当部分のprintf("\nデータ一覧を表示します\n");を削ったら成功したんですがどうすればいいんでしょう?
んなあほな、そこはエラーというエラーは起こらないはずだが・・・
「表示」 S-JIS 文字コードの場合、十六進数表記で 95 5C 8E A6 5C == '\\' ってことでコンパイルオプションに以下を追加すればいいYO! --input-charset=cp932 --exec-charset=cp932
俺も問題無し
911 :
デフォルトの名無しさん :2008/05/28(水) 11:27:09
すみませんが初心者なので
>>909 がよくわかりません。。。
具体的にはどうすればいいのでしょうか?
「表示」だけ削ればたしかに成功しますが…。
とりあえず、エラーじゃなくて警告だからスルーしておk
"表\示します" にすればいけるだろ
914 :
デフォルトの名無しさん :2008/05/28(水) 11:31:33
データ一覧を侮ヲします とでました。orz
915 :
デフォルトの名無しさん :2008/05/28(水) 11:33:54
>>913 よっしゃあああああああああああああああああああああああ
できました!!皆様ありがとうございました!!!!
>>911 コンパイラする時にcmdで渡す引数に
--input-charset=cp932 --exec-charset=cp932
を追加するって意味
C:\Work>command --input-charset=cp932 --exec-charset=cp932
917 :
デフォルトの名無しさん :2008/05/28(水) 11:43:48
まあ ソ系ダメ文字 でググれば原因はわかるはず
あぁ、あったなぁ・・・ソね。そーっすね。そうだね、そうなのか・・・そっかぁ・・
最小値の出し方はわかるんですけど、2番目に小さい値ってどうすれば出ますかね
最小の次、あるいはもう ソ ートして2番目ってことで
922 :
920 :2008/05/28(水) 15:25:47
>>921 お早い解答有難うございます!
「ソーティング」で調べてやってみたらできました有難う御座いました。
さらに3番目、4番目、……、一番大きい値と知りたいとかならともかく 2番目を知りたいだけならわざわざソートするのは無駄が多い気がしなくもない
ソうやなぁ。まず一番最小の要素をチェキして、その要素以外で 次に最小のものをチェキ。並び替える必要はないが、基本選択法の 一部を用いれば・・・
925 :
デフォルトの名無しさん :2008/05/28(水) 15:50:14
比較と代入ってどっちが遅いんだっけ とりあえずi386系
俺の超高速挿入はむっちゃ早いで?クイック挿入なんて目じゃねーぜ
口で語る前にソース書け
要するに全部配列使ってやればいいんでしょ int takara[SIZE][SIZE];/*宝が入ってれば1 無ければ0*/ int hide[SIZE][SIZE];/*既にオープンされている=1 されていない=0*/ int around[SIZE][SIZE];/*周囲の宝の数*/ もう出来たも同然
>>930 defineのビットマスクのとこにその配列を入れるってことですよね?
なんか実行できないのですが…
お手数かけますがプログラムを書いていただけませんか?
932 :
デフォルトの名無しさん :2008/05/28(水) 23:57:30
>>933 解答していただき本当にありがとうございます
staticっていうのはまだ習ってないのですが簡単に書き直せませんか?
935 :
デフォルトの名無しさん :2008/05/29(木) 01:53:38
>>934 static外せばいいよ
どうせmain()は一回しか呼ばれて無いだろうし
936 :
デフォルトの名無しさん :2008/05/29(木) 02:14:40
#include <stdio.h> #include <stdlib.h> main(){ int I, YOU; srand(time(NULL)); I=rand()%3+1; YOU=rand()%3+1; printf("my choice="); scanf("%d",&I); printf("your choice="); scanf("%d",&YOU); if(I==0){ if(YOU==0){ printf("引き分け\n");} if(YOU==1){ printf("勝ち\n");} if(YOU==2){ printf("負け\n");} } else if(I==1){ if(YOU==0){ printf("負け\n");} if(YOU==1){ printf("引き分け\n");} if(YOU==2){ printf("勝ち\n");} } else{ if(YOU==0){ printf("勝ち\n");} if(YOU==1){ printf("負け\n");} if(YOU==2){ printf("引き分け\n");} }}
937 :
デフォルトの名無しさん :2008/05/29(木) 02:16:08
乱数使ってジャンケンしろって問題なんですが相手(YOU)の入力を
乱数にするにはどうすれば良いのでしょうか?
>>936 に書いてみましたが
IとYOUの両方とも入力しなければならないこととなっています。
938 :
デフォルトの名無しさん :2008/05/29(木) 02:40:10
あ、出来ました。 IとYOUってのがちょっと分かりにくいですがw main(){ int I, YOU; srand(time(NULL)); YOU=rand()%3+1; printf("my choice="); scanf("%d",&I); printf("your choice=%d\n",YOU); printf("%d,%d\n",I,YOU);
939 :
デフォルトの名無しさん :2008/05/29(木) 15:39:48
940 :
デフォルトの名無しさん :2008/05/29(木) 16:39:16
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 西暦年を引数に取り、閏年かどうか判定する 関数 is_leap_year() を用いて、 開始年と終了年を入れると、開始年、終了年およびその間の年に 閏年が何個あるか数えるプログラムを作成せよ。 [3] 環境 [3.1] OS: (Windows) [3.2] 言語: (C++) [4] 期限: 5/29
#include <stdio.h> int is_leap_year(int year){return((((year) % 4) == 0) && (((year) % 100) != 0) || (((year) % 400) == 0));} int main(void){ int count=0; int i,a,b; scanf("%d %d",&a,&b); for(i=a;i<=b;i++){ if(is_leap_year(i)) count++; } printf("%d",count); return 0; }
転載。期限切れだけど誰かやってあげて。 [1] 授業単元:Windous Programming [2] 問題文(含コード&リンク): 限界まで新規ウィンドウを開き続けるプログラムを完成させなさい。ただし、 1.開くウィンドウの閉じるボタン(通常右上に配置される[x]ボタン)は無効にすること。 2.限界まで開いたら、開いたウィンドウを全て閉じてきちんと後始末すること。 3.開いたウィンドウ数をカウントしておき、最後に「あなたのマシンの窓力はxxxです。」 (xxxには数値が入る)とダイアログで表示して終了すること。 [3] 環境:WindowsXP, VC++, C++ [4] 期限: 昼までに [5] その他の制限: 特になし
意味ワカンネ
>[1] 授業単元:Windous Programming そんな単元あるなら見てみたいもんだ。
945 :
デフォルトの名無しさん :2008/05/30(金) 16:49:35
[1]C言語 [2]組・名前・国語の点数・算数の点数が入った構造体がある。 もし組が同じなら、国語の点数を足していって、 1組ごとの合計をファイルに出力して、また次の組も。(算数も同様に。) [3] 環境 [3.1]Windows [3.2]visual studio [3.3]C [4]5月31日12:00 [5]キーブレイクというのをやらせたいみたいです。
946 :
デフォルトの名無しさん :2008/05/30(金) 17:29:05
>>945 問題文省略して無い?
それじゃいくらなんでも適当すぎる
そもそも、キーブレイクとはなんなのだ。
948 :
945 :2008/05/30(金) 17:42:38
これしか聞いてなかったので今質問してきます!!
[1]C [2]放物線プログラム 定数として重力加速度、初速度 経過時間からX,Yをもとめる。 経過時間0の場合は(X,Y)は(0,0)
ま、ぼるじょあが何であるか理解できてないような板だから、期待してはいないけどね。
953 :
945 :2008/05/30(金) 21:09:46
大事なとこが抜けてました。。 成績データレコード struct PERSONAL_REC { unsigned char number; (クラス番号) unsigned char reserve[3]; (予備) unsigned char name[80]; short kokugo; short sansuu; }; 成績集計レコード struct CLASS_REC { unsigned char number; (クラス番号) unsigned char reserve[3]; (予備) short kokugo; short sansuu; }; を使うということです! お願いします。
954 :
◆AfLWwW3FJ2 :2008/05/31(土) 00:12:40
前も質問してなかった?別スレで
956 :
◆AfLWwW3FJ2 :2008/05/31(土) 01:27:10
>>955 どこかに投稿した覚えありますが
見失ったのですいません
お願いします。
ひとついえることがある。 今の計算機ではshortは速度においても消費メモリにおいても doubleとまったく変わらないケースがほとんど。
>>956 質問しておきながら見失ったんですか。。。
善良な誰かが大切な時間を費やして回答してくれたかもしれないのに、
それをいともたやすく踏みにじるんですね。
反吐が出ます。
959 :
◆AfLWwW3FJ2 :2008/05/31(土) 04:00:21
>>958 いえどこかにテキストをアップロードしただけで
質問はしてません。
一応すいません。ここはプログラムを教えあうところで
言い合いしたくないので。
質問がどんどん埋もれるので
954
の質問お願いします。
>>959 tolower使えばいいじゃん。
なんなの?
作ってもらって理解してないからそんな醜態晒すことになるんだよ 頼むから留年してよ
>>954 (・3・) エェー ただ一つの愛があれば救われるYO!
(・3・) 〜♪
> ここはプログラムを教えあうところで言い合いしたくないので。 質問がどんどん埋もれるので954の質問お願いします。 これは笑ったwwwwww
>>965 一応すいません。ここはプログラムを教えあうところで
言い合いしたくないので。
質問がどんどん埋もれるので
954
の質問お願いします。
wwwwww
[1] 授業単元: [2] 問題文(含コード&リンク): 分子と分母をint型で入力すると、その小数値を表示するプログラムを作成せよ。 なお、循環する場合は"[ ]"で括る事。 例: 分子:1 分母:3 値:0.[3] [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 2008/6/1 23:00 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 桁数があまりにも多くなる場合、任意で打ち切ってよい。 ただしその場合は閉じ括弧は表示しないこと。
>>959 > ここはプログラムを教えあうところで
いいえ。ぼるじょあがC/C++の宿題を片付けるところです。
>>968 質問がどんどん埋もれるので
954
の質問お願いします。
wwwwww
>>967 (・3・) エェー 結構面倒だったYO!
#include<stdio.h>
#define BUF_SIZE 2048
int main(void){
int bunsi, bunbo, c, i, is_inf=0;
int mod[BUF_SIZE];
char result[BUF_SIZE];
scanf("%d %d", &bunsi, &bunbo);
printf("%d.", bunsi/bunbo);
bunsi%=bunbo;
for(c=0;(mod[c]=bunsi%bunbo) && c<BUF_SIZE && !is_inf;c++){
result[c]=bunsi*10/bunbo+'0';
for(i=0;i<c;i++){
if(mod[c]==mod[i]){
is_inf=1;
break;
}
}
bunsi=(bunsi*10)%bunbo;
}
if(is_inf) printf("%.*s[%.*s]\n", i, result, c-1-i, result+i);
else printf("%.*s\n", c, result);
return 0;
}
971 :
側近中の側近 ◆0351148456 :2008/06/01(日) 22:59:04
972 :
デフォルトの名無しさん :2008/06/01(日) 23:48:15
質問がどんどん埋もれるので 954 の質問お願いします。
975 :
デフォルトの名無しさん :2008/06/05(木) 00:04:25
[1] 授業単元:プログラミング演習1 [2] 問題文(含コード&リンク): m ×m 行列を入力し和と積を求め、結果を行列の形で表示させる プログラムの作成。但し、入力した行列も表示。 <表示例> 1 2 3 4 [3] 環境 [3.1] OS:WinXP/linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等):VC++/gcc [3.3] 言語:C言語 [4] 期限:2008/06/06 [5] その他の制限: stdio.h、入力はscanf関数、出力はprintf関数、配列で プログラムの冒頭ですが、これで配列可変になるんでしょうか…? int m,i,j;/*要素、カウント用変数宣言*/ printf("行列数を入力"); scanf("%d",&m); int a[m]=0; int b[m]=0;
>>975 > プログラムの冒頭ですが、これで配列可変になるんでしょうか…?
C89はできません
977 :
デフォルトの名無しさん :2008/06/05(木) 00:15:58
[1] 授業単元: [2] 問題文: ポインタを使った循環リストを実装せよ.リストの表示、ノード の挿入,削除を行う関数を作ること.なお,リストのノードNode は以下のよ うに定義されている. typedef struct { // data type int no; char name[10]; } Data; typedef struct __node { // node definition Data data; struct __node *next; } Node; 実行例: (0) Insert a Node (1) Delete a Node (2)View the List (3) exit : 0 Please input the data. No.: 1 Name: Lu (0) Insert a Node (1) Delete a Node (2)View the List (3) exit : [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:BorlandC++ [3.3] 言語:C [4] 期限:6月5日16:00 [5] その他の制限:一応構造体まで習っているので、初歩的な知識程度だと思われます よろしくお願いします
978 :
デフォルトの名無しさん :2008/06/05(木) 01:13:25
2008/06/01
こんにちは 管理人です
2003年から運営しているこのサイトですが
もはや掲示板やブログの類は機能せず、
唯のアップローダーサイトになってしまっているという現実と
本スレの酷い衰退具合と、運営費の問題と
そして私の受験という様々な要因から
今までも事実上の閉鎖状態ではありましたが
今日をもちまして正式な閉鎖とさせて頂きます。
何故かアップローダーとしては多少名が知れているらしく、
毎日何方かが利用して下さってたのですが 申し訳ありません。
ここについては基本的に弄ることなく残しておこうとは思いますが、
XREAの有料アカウントが解除されると同時に容量制限により
過去ログは殆ど飛んでしまうと思われます。(11月に切れます)
過去ログが飛んでしまえばもはや何も無い空のサイトですが、
せめてAAデータベースや1001変更の纏めは残しておきます。
borujoa.orgとpcqa.orgのドメインに関しての処理は未定です
今後どこかで流用するかもしれません。
右に表示されているメッセのアカウントは現在でも使用しており、
これからも使用する予定なので
過去ログがどうしても必要だ、等何か連絡がありましたらお気軽にどうぞ。
中1から始まったゆとりの暇つぶしに今までお付き合い頂き、
本当にありがとうございました。
ぼるじょあ文化が絶えないことを祈っております。
ではまたいつか
http://www.borujoa.org/
VS2008のVC++を使っているのですが インテリセンスの表示をデフォルトのCtrl+Spaceではなくて VBのように何も押さなくても リアルタイムに表示するようにしたい場合はどうすればいいでしょうか?
C言語のリスト構造によるスタック・キューそれぞれについて、 要素数を管理する変数を用意して追加・削除の際に更新する方法で、 格納されている要素数を取得することの利点・欠点がわかりません。 又は、スタック・キューの全要素を追査して現要素数を調べて要素数を 取得する方法の利点・欠点でも構いません。 どなたか宜しくお願いします。
982 :
デフォルトの名無しさん :2008/06/05(木) 13:14:56
>>981 要素数を得るときの計算量がO(1)かO(n)かの違いでいいんでね?
>>981 別途変数を用意すると要素数を知るのが速くなるが、その分メモリを多く消費する
984 :
デフォルトの名無しさん :2008/06/05(木) 17:02:16
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): A=1を何倍ずつしていくと50回目に1,000,000を越えるか? [3] 環境 [3.1] OS: (Windows) [3.2] 言語: (C++) [4] 期限: 6月6日 似た問題もわかりませんが、これ一問を質問させていただきます。 よろしくお願いします。
1.32
986 :
デフォルトの名無しさん :2008/06/05(木) 19:43:34
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 2次元配列(hai[10][10])を用いる。 各マスには予め1または2がランダムで入力されている。 100マスの中で、1と2のサイズを計測せよ。 なお、境界は存在せず、トーラス状とする。 例) 1,1,1 2,1,1 1,1,1 であれば、 1:8 2:1 1,1,1 2,1,2 1,2,1 であれば、 1:6(トーラス状であるため、左下と右下も一つの塊と見る) 2:2(トーラス状であるため、中段の左右は一つの塊と見る),1 [3] 環境 [3.1] 言語: どちらでも可 [4] 期限: 6月10日 解決の糸口が見つかりません。 どうかよろしくお願いします。
トーラスじゃない場合はできる?
多次元配列を利用して、5人の3教科(国語・数学・英語)の最高点を出すソースと、平均点を出すソースをそれぞれ別々に教えていただけませんか?
>>984 (・3・)エェー この倍数って実数でしょ?
2倍ずつしてっても1000000超えるYO!
と言うより単にlog2(1000000)のような気が・・・・
じゃなかった 不等式 logx(1000000) >= 50 を解けばいいのか
1000000^(1/50)<x<1000000^(1/49)
誰かニュートン法でも二分法でもいいから解いてやってくれ
>>986 解決しました。
心優しい方ありがとう。
>>984 (・3・) エェー
>>993 がズバリ答えだYO! (表示している数値は10^-5まで有効だYO!)
#include<stdio.h>
#include<math.h>
int main(void){
printf("%.6f<x<%.6f\n", pow(1000000., 1./50), pow(1000000., 1./49));
return 0;
}