C/C++の宿題片付けま ..
32:デフォルトの名無しさん
09/06/25 21:28:19
[1] 授業単元: プログラミングU
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows vista
[3.2] コンパイラ名とバージョン: win avr
[3.3] 言語: C
[4] 期限: 6月28日まで
[5] その他の制限: 先週からavr studio4 に変わったのでほとんど理解してません。
33:デフォルトの名無しさん
09/06/25 21:37:04
>>28 課題1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAMELEN 64
#define BUFFSIZE 32
int main(void)
{
FILE *fp;
char filename[FILENAMELEN];
char buff[BUFFSIZE];
double x = 0;
int n = 0;
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
fp = fopen(filename, "r");
while (fgets(buff, BUFFSIZE, fp)) { x += strtod(buff, NULL); n++; }
fclose(fp);
printf("%.1lf\n", x / n);
return 0;
}
34:デフォルトの名無しさん
09/06/25 21:38:05
>>28 課題2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAMELEN 64
#define BUFFSIZE 32
int main(void)
{
FILE *ifp, *ofp;
char filename[FILENAMELEN];
char buff[BUFFSIZE];
int x = 0, y = 0;
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ifp = fopen(filename, "r");
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ofp = fopen(filename, "w");
while (fgets(buff, BUFFSIZE, ifp)) {
x += atoi(strtok(buff, ","));
y += atoi(strtok(NULL, ","));
fprintf(ofp, "%d,%d\n", x, y);
}
fclose(ifp);
fclose(ofp);
return 0;
}
35:デフォルトの名無しさん
09/06/25 21:48:24
>>28 課題3
#include <stdio.h>
#define FILENAMELEN 64
#define NAMELEN 31
int main(void)
{
FILE *ifp, *ofp;
char filename[FILENAMELEN];
char name[NAMELEN];
double height, weight, BMI;
scanf("%s", filename); ifp = fopen(filename, "r");
scanf("%s", filename); ofp = fopen(filename, "w");
while (fscanf(ifp, "%s%lf%lf", name, &height, &weight) != EOF) {
BMI = weight / height / height * 10000;
if (BMI < 18.5 || BMI >= 25.0) fprintf(ofp, "%s\n", name);
}
fclose(ifp); fclose(ofp);
return 0;
}
36:デフォルトの名無しさん
09/06/25 21:56:36
>>32
Aの図?の意味がわからんのでもしかたら外してるかも
#include <stdio.h>
int main()
{
int i;
char c;
char* p;
char* name = "tatsuya";
printf("*** @ ***\n");
for (c='0'; c<='9'; c++)
{
printf("'%c'=%d\n", c, c);
}
printf("*** A ***\n");
for (c='0'; c<='9'; c++)
{
printf("'%c'=%x\n", c, c);
}
printf("*** B ***\n");
for (i=0; name[i]; i++)
{
printf("'%c'=%x\n", name[i], name[i]);
}
printf("*** C ***\n");
for (p=name; *p; p++)
{
printf("'%c'=%x\n", *p, *p);
}
return 0;
}
37:デフォルトの名無しさん
09/06/25 21:57:43
>>28 課題4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define FILENAMELEN 64
#define BUFFSIZE 128
int main(void)
{
FILE *ifp, *ofp;
char filename[FILENAMELEN];
char buff[BUFFSIZE];
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ifp = fopen(filename, "r");
*strchr(fgets(filename, FILENAMELEN, stdin), '\n') = '\0';
ofp = fopen(filename, "w");
while (fgets(buff, BUFFSIZE, ifp)) {
int i;
for (i = 0; buff[i]; ++i) if (isdigit(buff[i])) buff[i] = '*';
fprintf(ofp, buff);
}
fclose(ifp); fclose(ofp);
return 0;
}
38:デフォルトの名無しさん
09/06/25 22:04:30
>>32
もしかして0から9って普通に表示じゃなくてAみたいな数字の表示方法があったりしない?
39:デフォルトの名無しさん
09/06/25 22:08:19
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):do-while文を使って、入力させた数値を3で割った余りを表示することを続ける。
もし、3の倍数が入力されたときは"3の倍数"と表示して終了する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年06月28日
[5] その他の制限:まだまだ習い始めたところなのでif、swichくらいしか習っていません。
40:デフォルトの名無しさん
09/06/25 22:14:36
>>32は7セグメントLEDの組み込み系の話だと思う。
回路にビットパターン流し込んで対応するLEDをつけるって課題だとおもう。
AVRって環境を使うみたいだけど、ここのスレに使ったことがある人間がいるかはかなり疑問。
41:デフォルトの名無しさん
09/06/25 22:15:50
>>39
未コンパイルコード
#include <stdio.h>
int main( void )
{
int inp=0,mod=0;
do{
printf("->");
scanf("%d",&inp);
getchar();
mod = inp%3;
if( mod )
{
printf("%d\n");
}
else
{
printf("3の倍数です。\n");
}
}while(mod);
return 0;
}
42:デフォルトの名無しさん
09/06/25 22:16:16
>>38
その通りです、説明しずらいので、配布されたプリントの画像を見てもらえたらありがたいです。
DLkye 0000
URLリンク(www1.axfc.net)
43:デフォルトの名無しさん
09/06/25 22:20:17
>>39
#include <stdio.h>
int main()
{
int ret, num, rem;
printf("数値を入力してください\n");
while (true)
{
ret = scanf("%d", &num);
if (ret!=1)
{
printf("不正な入力です\n処理を中止しますn");
break;
}
printf("%d: ", num);
rem = num % 3;
if (rem==0)
{
printf("3の倍数です\n");
break;
}
else
{
printf("3で割ったあまりは%dです\nもう一度入力してください", rem);
}
}
return 0;
}
44:デフォルトの名無しさん
09/06/25 22:22:06
>>41
レスありがとうございます。出来ました。
45:デフォルトの名無しさん
09/06/25 22:24:52
>>14
前スレの内容について、一辺が3の八角形は
***
* *
* *
* *
* *
* *
***
こうではないだろうか。
質問者が納得してるからこうではなかったんだろうけど。。
46:39
09/06/25 22:28:39
すみませんこれも出来ませんでした。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):入力した数を2の何乗より大きいかを求めるプログラム。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年06月28日
[5] その他の制限:まだまだ習い始めたところなのでif、swichくらいしか習っていません。
たぶんdo-while文を使うんだと思います。
47:デフォルトの名無しさん
09/06/25 22:35:06
>>46
math.h使って
(int)(log(d)/log(2.0))
d: 入力した数
48:デフォルトの名無しさん
09/06/25 22:40:23
>>46
よくわからないが 2^k<x の条件でkの最大でいいのかな
#include <stdio.h>
int main()
{
int x;
int n = 1, k = 0;
scanf("%d",&x);
while(n < x){ n *= 2; k++;}
printf("%d\n", k-1);
return 0;
}
49: ◆/91kCCQXBo
09/06/25 22:42:24
>>045 C:\a.exe >a.txt line 255-261* を見れば、
>>014(9548) OK
>>前1000 は間違い
50:デフォルトの名無しさん
09/06/25 22:43:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):下に示すように,最初に整数を読み込み,その後,その個数だけ整数を読み込んでいき,そ
の合計と平均を表示するプログラムを作成せよ。
整数は何個ですか: 6
No.1 : 65
No.2 : 23
No.3 : 47
No.4 : 9
No.5 : 153
No.6 : 777
合計値: 1074
平均値: 179.00
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年07月02日
[5] その他の制限:どうかよろしくお願いします。
51:デフォルトの名無しさん
09/06/25 22:45:37
>>46
せっかく作ったから便乗アップ。動作は保障しない。
#include <stdio.h>
int main(){
unsigned int N,S;
printf("Input Number:");
scanf("%d",&N);
S=0;
do{
}while(N>(1<<S++));
S--;
printf("%d is upper then 2^%d ->%d!!\n",N,S-1,1<<(S-1));
return 0;
}
52:デフォルトの名無しさん
09/06/25 22:48:59
>>50
#include <stdio.h>
int main(void)
{
int i, n, x = 0;
printf("整数は何個ですか: "); scanf("%d", &n);
for (i = 0; i < n; ++i) {
int t;
printf("No.%d : ", i + 1); scanf("%d", &t);
x += t;
}
printf("合計値: %d\n平均値: %.2f\n", x, (double)x / n);
return 0;
}
53:デフォルトの名無しさん
09/06/25 22:50:47
>>31
> trace実行後の出力ファイル(point.out)の内容は
> 1,2
> 2,0
ここは2,2じゃないのかなあと、ガウス平面というものを知らずにレス
54:デフォルトの名無しさん
09/06/25 22:55:14
>>49
うpされたコードを見てなかったんだ。
スマソ
55:デフォルトの名無しさん
09/06/25 22:58:54
>>42
なんかよくわからんのだが、
「環境はwin avr, avr studio4です」で通じる話なのか?
どんなデバイス使ってるとかわからんと手の出しようがないような
わかる人にはわかるのかね
動作させるってのは実際にデバイス動かして
表示させるってのはデバイス上の液晶画面か何かに表示させるってことなんだよな?
56:デフォルトの名無しさん
09/06/25 23:02:53
>>37
% を含む文字列を出力できない
57:デフォルトの名無しさん
09/06/25 23:08:30
>>55
自分も正直何をやっているのかわかっていません・・・。
デバイスの関してはatmega88pというのを使います。
液晶画面に自分の名前のアルファベットを表示させるのですが、デバイスやらUSBライターなどは教授が持っているので、自分で確認することが出来ません。
58: ◆/91kCCQXBo
09/06/25 23:09:43
>>035 BMI 出力が標準出力でない。
#include <stdio.h>
#define FILENAMELEN 64
#define NAMELEN 31
int main(void)
{
FILE *ifp;
char filename[FILENAMELEN];
char name[NAMELEN];
double height, weight, BMI;
fgets(filename, FILENAMELEN, stdin); filename[strlen(filename)-1] = '\0';
ifp = fopen(filename, "r"); if(ifp == NULL) return 1;
while (fscanf(ifp, "%30s%lf%lf", name, &height, &weight) != EOF) {
BMI = weight / height / height * 10000;
if (BMI < 18.5 || BMI >= 25.0)
printf("%s\n", name);
}
fclose(ifp);
return 0;
}
59:デフォルトの名無しさん
09/06/25 23:19:34
>>56
あるある
60:デフォルトの名無しさん
09/06/25 23:20:46
>>37
strchr が NULL を返したらどうするんだ
61:デフォルトの名無しさん
09/06/25 23:23:52
>>57
ぶっちゃけ、エスパーじゃないと無理。
一般人は、回路図とデバイスの仕様が無いと書きようがない。
62:デフォルトの名無しさん
09/06/25 23:27:13
>>57
そうですか、わかりました。ありがとうございます。
63:61
09/06/25 23:45:35
>>57
7セグメントディスプレイは何個ついてるの?
問題文からは3つかな?
64:デフォルトの名無しさん
09/06/26 00:01:19
>>63
確か三つだったと思います。
65:61
09/06/26 00:19:45
>>64
7セグメントディスプレイにA(01110111)を表示する時の様に、
0から9の数字を出すパターンはできてるんだよね?
それを3つのポート(PORT-B,PORT-C,PORT-D)に喰わせれば良いんじゃないか?
例えば、PORT-Bが1の位、PORT-Cが10の位、PORT-Dが100の位の
7セグメントディスプレイと繋がっていると仮定すると、
char segdat[10] = { {0を表示するパターン}, ・・・, {9を表示するパターン} };
int i;
for ( i = 0; i < 256; i++ ) {
int d100 = i / 100;
int d10 = ( i - d100 ) / 10;
int d1 = i % 10;
PORTD = segdat[ d100 ];
PORTC = segdat[ d10 ];
PORTB = segdat[ d1 ];
}
これだけじゃね?
66:デフォルトの名無しさん
09/06/26 00:25:04
>>65
今かやってみます。ありがとうございます。
67:61
09/06/26 00:30:36
>>65
訂正。
×int d10 = ( i - d100 ) / 10;
○int d10 = ( i % 100 ) / 10;
68:デフォルトの名無しさん
09/06/26 01:40:23
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
じゃんげんプログラムを作成せよ。次の関数を用いること。
get_hand_player()
print_hand()
judge()
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 六月二十九日
[5] その他の制限: 関数まで。お願いします。
69:デフォルトの名無しさん
09/06/26 02:17:27
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
ほとんど質問に近いのですが、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のようなプログラムを人に聞きながら作ったのですが、
/*0.5を足してから*/
で示した文、kinri += 0.5;
ってどういう意味があるのでしょうか?
試しに抜いてみたのですが結果は変わりませんでした。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 関数まで。お願いします
70:デフォルトの名無しさん
09/06/26 02:27:23
>>69
恐らく四捨五入をさせているものと思われる。
int型にすると小数点以下全て切り捨てだから、
0.5を足してあげると丁度四捨五入になるかと。
71:デフォルトの名無しさん
09/06/26 02:40:00
>>70
ああ、なるほど・・・そういうことか。
ありがと!
72:デフォルトの名無しさん
09/06/26 03:08:09
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):下に示すように,二辺の長さと個数を読み込んで,読み込んだ個数だけ横長の長方形を表示
するプログラムを作成せよ.
一辺(その1) : 3
一辺(その2) : 5
個数: 4
***** ***** ***** *****
***** ***** ***** *****
***** ***** ***** *****
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年07月01日
[5] その他の制限:特になし
73:68
09/06/26 03:29:04
>>68
の回答、
前スレにあった。どうも同じ大学の人がいるらしい。
ありがとー。
74:デフォルトの名無しさん
09/06/26 04:31:28
>>72
#include<stdio.h>
int main(void){
int width=4, height=3, num=2, i, j, k;
printf("一辺(その1) : ");
scanf("%d", &height);
printf("一辺(その2) : ");
scanf("%d", &width);
printf("個数: ");
scanf("%d", &num);
for(i=0;i<height;i++){
for(j=0;j<num;j++){
if(j) printf(" ");
for(k=0;k<width;k++) printf("*");
}
printf("\n");
}
return 0;
}
75:デフォルトの名無しさん
09/06/26 04:49:01
[1] 授業単元: C
[2] 問題文(含コード&リンク):
キーボードから入力された1以上の整数nについて、次の例に示すように行番号と*を表示するプログラムを作成せよ
。また、0や負の数が入力された場合はプログラムが終了するようにせよ。
表示結果の例
正の整数:6
1******
2 *****
3 ****
4 ***
5 **
6 *
[3] 環境
[3.1]linux
[3.2] gcc
[3.3]C
[4]6月29日
[5]繰り返しの課題なので繰り返しまででお願いします。
スペースをどういれたらいいかわからない・・・。
76:デフォルトの名無しさん
09/06/26 04:52:10
>>75
ごめん、問題文ミス。
1*****
2 ****
3 ***
4 **
5 *
77:デフォルトの名無しさん
09/06/26 05:11:14
>>75
#include<stdio.h>
int main(void){
int a=1,b,n,i,j,k;
printf("n…\n");
scanf("%d",&n);
if(n<=0){
return 0;
}
b=n;
for(i=1;i<=n;i++){
for(j=b;j<=n;j++){
printf(" ");
}
for(k=a;k<=n;k++){
printf("*");
if(k==n)printf("\n");
}
b--;
a++;
}
return 0;
}
78:デフォルトの名無しさん
09/06/26 06:09:38
前スレのプログラムへの質問なんですが、
前スレ675氏のプログラム、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
を実行すると、
Usage: exefile 10000
とだけ出力されて終了してしまうのですが、
これは自分の転記ミスなんでしょうか?
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
79:デフォルトの名無しさん
09/06/26 06:28:49
>>77
ありがとう。
せっかく作ってくれた所悪い、
問題文のとおり行番号がいるんだ。
80:デフォルトの名無しさん
09/06/26 06:34:11
>>79
#include<stdio.h>
int main(void){
int a=1,b,n,i,j,k;
printf("n…");
scanf("%d",&n);
if(n<=0){
return 0;
}
b=n;
for(i=1;i<=n;i++){
printf("%d",i);
for(j=b;j<=n;j++){
printf(" ");
}
for(k=a;k<=n;k++){
printf("*");
if(k==n)printf("\n");
}
b--;
a++;
}
return 0;
}
81:デフォルトの名無しさん
09/06/26 07:13:02
>>78
17s/argc != 2/argc != 3/
82:前675
09/06/26 10:16:03
>>78 やっちまったみたい、17行目と18行目を、次の2行に置き換えてみて、教えて。
//if(argc != 2) {puts("Usage: exefile 10000"); return 1;}
//max_days = atoi(argv[1]);
if(argc < 2) max_days = 10000;
else max_days = atoi(argv[1]);
83:デフォルトの名無しさん
09/06/26 16:39:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
自分の名前の英字名のASCIIコードを順番に表示するプログラムを作りなさい。
[3] 環境
[3.1] OS: Windows vista
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年07月01日
[5] その他の制限:特になし
どうかよろしくお願いします。僕の能力では作ることができませんでした。
84:デフォルトの名無しさん
09/06/26 16:54:23
#include <stdio.h>
int main() {
int i;
char name[30] = "Taro Aso";
for ( i = 0; name[i] != '\0'; i++ )
printf("%3d %c", name[i], name[i]);
return 0;
}
85:デフォルトの名無しさん
09/06/26 18:09:15
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7月1日 17:00
[5] その他の制限:
86:デフォルトの名無しさん
09/06/26 18:10:43
>>28です。
答えてくだっさた方々ありがとうございました。
87:デフォルトの名無しさん
09/06/26 19:12:34
>>85
#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main(void){
char code[26][30]={{0}}, buf[30], filename[FILENAME_MAX], alpha;
FILE *fp;
int moji;
scanf("%s\n", filename);
fp=fopen(filename, "r");
if(fp==NULL) return 1;
while(fscanf(fp,"%c,%[^\n]\n", &alpha, buf)==2){
if(isalpha(alpha)){
strcpy(code[tolower(alpha)-'a'], buf);
}
}
fclose(fp);
while((moji=getchar())!=EOF){
if(isalpha(moji)){
printf("%s", code[tolower(moji)-'a']);
}else{
putchar(moji);
}
}
return 0;
}
88:デフォルトの名無しさん
09/06/26 19:23:31
30って気持ち悪いw
89:デフォルトの名無しさん
09/06/26 19:28:57
>>83
#include<stdio.h>
#include<ctype.h>
int main(void){
char name[]="Nanasi no Gonbee Jr.2";
int i;
for(i=0;name[i];i++){
printf("%c:%d\n", name[i], name[i]);
}
return 0;
}
90:デフォルトの名無しさん
09/06/26 19:36:17
なんでctype.h?
91:デフォルトの名無しさん
09/06/26 21:55:22
>>10
有難うございました!
92:デフォルトの名無しさん
09/06/26 23:25:43
[1]数値情報解析
[2]ドゥーリトル法によるLU分解でn元連立1次方程式を解くプログラムを作りなさい。
LベクトルとUベクトルと解ベクトルを表示すること。
[3]
[3.1]Windows
[3.2]Visual Studio
[3.3]C
[4]2009年7月1日
[5]ほぼ素人なので、少しでも優しい表現にしていただくようよろしくお願い致します。
93:デフォルトの名無しさん
09/06/27 00:37:12
前スレ930のものです。
前スレで回答してもらえず、前スレが落ちてしまったのでもう一度質問させてください。
[1] 授業単元:計算機システム構成原理
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 6月30日まで
[5] その他の制限: 特になし
よろしくお願いします。
94:デフォルトの名無しさん
09/06/27 00:39:17
長くてめんどくさいだけの課題はやる人あんまりいないよな。
95:デフォルトの名無しさん
09/06/27 01:27:02
>>93
URLリンク(ftp.gnu.org)
96: ◆/91kCCQXBo
09/06/27 02:17:57
>>032 LED コンパイルはしてない。0b01111111
URLリンク(rg550.hp.infoseek.co.jp)
97:デフォルトの名無しさん
09/06/27 05:39:00
11
★pc1つで毎日3万稼ぐ★
★翌日入金★
★2009年最新在宅ワーク!★☆
URLリンク(toutou.nantomo.dousetsu.com)
98:デフォルトの名無しさん
09/06/27 06:30:45
>>27
Dll_BMP_C.h ってのを晒さないと誰もできないぞ
(もし Dll_BMP_C.c みたいなのがあったらそれも)
99:デフォルトの名無しさん
09/06/27 07:24:15
>>27
>>98
D_llBMP_C.h URLリンク(kansai2channeler.hp.infoseek.co.jp)
100:83
09/06/27 09:54:43
>>84様
ありがとうございましたm(__)m
101:デフォルトの名無しさん
09/06/27 09:56:38
>>99
thx
DllBmpReadImage()とかの実体のDLLかソースコードもあるとうれしい
(というかそれがないとできない)
102:デフォルトの名無しさん
09/06/27 10:04:27
なんかこのやり取りを良く見る気がする
一般的でないライブラリを使用するときは
一緒にアップしろとテンプレに明記した方がいいんじゃないか
103:デフォルトの名無しさん
09/06/27 10:11:06
>>95
どうみてもbash
104:デフォルトの名無しさん
09/06/27 10:37:35
[1] 授業単元:C言語
[2] 問題文:2つの整数型の変数を入れ替える関数swapを定義して、それを使用して配列中の数字をランダムに入れ替えるプログラムの作成。
1から52までの数が順番に入った配列を用意し、十分に入れ替えた結果を表示すること。
[3] 環境
[3.1] OS: windows
[3.3] 言語: C
[4] 期限: 7月2日まで
[5] その他の制限: 特になし
105:デフォルトの名無しさん
09/06/27 10:44:04
#include <stdio.h>
#include <stdlib.h>
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main(void)
{
int i, a[52];
srand(time(NULL));
for(i=0; i<52; i++) a[i] = i + 1;
for(i=52; i> 0;) {
int j = rand() / (RAND_MAX + 1.0) * i--;
swap(a+i, a+j);
}
for(i=0; i<52; i++) printf("%d ", a[i]);
return 0;
}
106:デフォルトの名無しさん
09/06/27 11:30:32
>>92
URLリンク(kansai2channeler.hp.infoseek.co.jp)
107:デフォルトの名無しさん
09/06/27 14:22:30
[1] 授業単元 C言語
[2] 問題文 回文の判断をせよ
ただ、小文字、大文字の区別はしない、記号、空白も考えない。
例
Madam, I’m Adam
Able was I ere I saw Elba
この二つの文は回文である。 Ad czv zC Daのような文も回文
[3] 環境
[3.1] OS Windows
[3.2] コンパイラ名とバージョン VisualC++
[3.3] 言語 C
[4] 期限: 6月29日
108:デフォルトの名無しさん
09/06/27 16:01:45
>>107
眠りながら適当に書いた
#include<iostream>
#include<algorithm>
#include<string>
#include<cctype>
#include<functional>
int main(){
std::string line;
getline(std::cin,line);
std::string tmp = line;
tmp.erase(std::remove_if(tmp.begin(),tmp.end(),std::not1(std::ptr_fun(std::isalpha))),tmp.end());
std::transform(tmp.begin(),tmp.end(),tmp.begin(),std::toupper);
std::cout << (std::equal(tmp.begin(),tmp.end(),tmp.rbegin()) ? "回文です" : "回文じゃないです") << std::endl;
}
109:デフォルトの名無しさん
09/06/27 16:02:35
おおっとすまん課題はC言語だったか。適当に書き直すわー
110:デフォルトの名無しさん
09/06/27 16:03:34
>>107
URLリンク(kansai2channeler.hp.infoseek.co.jp)
111:デフォルトの名無しさん
09/06/27 16:15:54
書いてるうちに他の人が書いたけど悔しいから出してみる
#include<stdio.h>
#include<ctype.h>
#include<string.h>
void copyAlpha(char*dst,const char*src){
while(*dst = *src)if(isalpha(*src++))++dst;
}
void lowerCase(char*dst){
for(;*dst;++dst)*dst=tolower(*dst);
}
void reverseStr(char*dst,const char*src){
0[dst += strlen(src)]=0;
while(*src)*--dst=*src++;
}
int main(){
char src[80],rev[80];
gets(src);
copyAlpha(src,src);
lowerCase(src);
reverseStr(rev,src);
puts(strcmp(rev,src)==0 ? "回文です" : "回文じゃないです");
}
112:デフォルトの名無しさん
09/06/27 17:44:30
ポインタなしver.がないので
isalphaの行をどうにかマクロにしたかったw
int is_anagram(const char str[]) {
int head, tail, len;
head = 0; tail = (len=strlen(str))-1;
for ( len /= 2; head < len && len < tail; head++, tail-- ) {
if ( !isalpha(str[head]) ) { head++; continue; }
if ( !isalpha(str[tail]) ) { tail--; continue; }
if ( tolower(str[head]) != tolower(str[tail]) )
return 0;
return 1;
}
}
113:デフォルトの名無しさん
09/06/27 17:50:07
[1] 授業単元: コンピュータプログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: windows
[3.2] VisualC++
[3.3] 言語: c
[4] 期限: 2009年6月30日
[5] その他の制限:配列はcharやdouble,
並び替えはdo,for,if,whileなどで習いました。
お願いします。
114:デフォルトの名無しさん
09/06/27 17:55:56
URLが
115:デフォルトの名無しさん
09/06/27 17:56:14
>>113 大きいクリップ、リンクが変。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
116:デフォルトの名無しさん
09/06/27 17:57:34
>>113
問題文のリンクがちがうぞw
117:デフォルトの名無しさん
09/06/27 18:07:55
<<115のが正しいです。
すみません。
118:デフォルトの名無しさん
09/06/27 18:33:49
>>112
retrun 1;
の位置が明らかにおかしい
119:デフォルトの名無しさん
09/06/27 19:36:14
>>107
俺もブームに乗って作ってみた。動作は保障しない。怪文21面相〜♪
そうそう、全角文字には対応してないんだからね!サンプルをコピペしてハマッタ。ソースの整形はご自分で!
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(){
unsigned char str[1024]={'\0',}; char *ch; int i=0,j=0,N=0;
printf("input string:");
fgets(str,1024,stdin);
str[1023] ='\0';ch = strchr(str,'\n');
if(ch != NULL) *ch ='\0';
for(i=0;str[i]!= '\0';i++){
if(isalpha(str[i])){//アルファベット置換と移動
str[j++] = toupper(str[i]);
}
if(isdigit(str[i])){//数字移動
str[j++] = str[i];
}
}
str[j]='\0'; N=j/2;
for(i=0;i<N;i++){
if(str[i]!=str[j-1-i]){
printf("string is no match!\n");
return 1;
}
}
printf("string is Match!\n");
return 0;
}
120:デフォルトの名無しさん
09/06/27 20:15:38
>str[1023] ='\0';
無意味
121:デフォルトの名無しさん
09/06/27 20:18:23
>>120
保険だよ。一行削れるから、ないほうがよかったかなぁ。。。
122:デフォルトの名無しさん
09/06/27 20:25:14
行削りたいなら
if(isalum(str[i])) str[j++] = toupper(str[i]);
でいいだろ
123:デフォルトの名無しさん
09/06/27 20:37:25
>>122
あぁ、それでいけるのね。
toupperを普段使わないから、認識が曖昧だった。勉強になります。
124:デフォルトの名無しさん
09/06/27 20:41:01
>>121
fgets()は必ず終端に'\0'を付けると>>120は言ってるんだろう
fgets()で付く場合と付かない場合があるのは'\n'だ
125:デフォルトの名無しさん
09/06/27 20:45:29
>>124
それも認識が曖昧だった。なるほど、勉強になります。
126:デフォルトの名無しさん
09/06/27 21:07:38
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
int型配列:int x[]と、int型配列xの大きさ:int sizeの2つの引数を用いて、
クイックソートで昇順に並べ替えるvoid quicksort(int x[], int size)と
二分木の中間走査によって昇順に並び変えるvoid inorder(int x[], int size)
の作成
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: 特になし
127:デフォルトの名無しさん
09/06/27 22:03:12
>>27
URLリンク(u9.getuploader.com)
128:93
09/06/27 23:06:49
>>95
これは違うと思うのですが…。
すいませんがどなたか>>93のをお願いします。
129:デフォルトの名無しさん
09/06/27 23:42:52
>>128
>>94-95
130:デフォルトの名無しさん
09/06/27 23:54:48
>>106 さんありがとうございました。
ホントに助かりました!
131: ◆/91kCCQXBo
09/06/28 01:42:21
>>113 ソートのアルゴリズムは習ってないということで。
スレリンク(tech板:676番)
132:デフォルトの名無しさん
09/06/28 02:54:57
【質問テンプレ】
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):3つの分数の和を求めるプログラムの作成.
但し,2つの分数の和をもとめる関数bunnsuwa(..)を作ってそれを利用して3つの分数を求める.
[3] 環境
[3.1] OS:Windows/vista
[3.2] コンパイラ名とバージョン Visual Studio 2008
[3.3] 言語:C++
[4] 期限: ([7月2日まで]
[5] その他の制限:
下の手順でプログラムを作成すること
1.二つの分数を入力して,その和をmain関数で計算して結果を表示する
1.1 分数を二つ入力 b/a, d/c とする:
ここは整数変数4つにデータを入力
1.2 二つの分数の和をf/eに計算:
普通に計算してf,eを表示
2.その二つの分数の和を計算する部分を取り出し関数bunnsuwa(..)を作成する:
3.bunnsuwa(..)を複数回適用し、三つの分数の和を求めるプログラムを作成する
4
約分をできるようにする。また分母が0のときにエラー処理をする。
4.1 yakubun(..)という関数を作ってみるのもよい
例えば、void yakubun(int *a, int *b)で *b/*aを約分して更新する
5
マイナスの分子や分母が入れられた時や,分母が1になった時もきれいに表示できるようにする
お願いします〜
133:デフォルトの名無しさん
09/06/28 10:36:59
>>132
こんな感じでよいか?
#include<stdio.h>
void yakubun(int*a,int*b){
int x=*a,y=*b,z;
while(y){z=x%y;x=y;y=z;}
*a/=x;*b/=x;
if(*a<0)*a=-*a,*b=-*b;
}
void bunnsuwa(int*a,int*b,int*c,int*d){
*b=*b**c+*a**d;*a*=*c;
}
int main(){
int a=!0,b=0,c,d,i;
for(i=1;i<4;i++){
for(;;puts("やりなおせ")){
printf("%dつ目の 分子 分母 = ",i);scanf("%d%d",&d,&c);
if(c)break;
}
bunnsuwa(&a,&b,&c,&d);
yakubun(&a,&b);
printf("合計 = %d",b);
if(a>1&&b!=0)printf(" / %d",a);
puts("");
}
return 0;
}
134:デフォルトの名無しさん
09/06/28 10:37:30
[1] 授業単元: C言語
[2] 問題文:
(1) 整数と4つの演算子(+, -, *, /)とカッコ ( ) から
成る計算式の文字列から計算木を作成する関数を作れ。
ただし、再帰は使ってはならない。
(2) 整数と4つの演算子(+, -, *, /)から成る計算木から
計算式の文字列を作成する関数を作れ。優先順位に注意
して、必要な箇所をカッコ ( ) でくくれ。ただし、
再帰は使ってはならない。
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] C言語
[4] 期限:6/30
お願いします。
135:93
09/06/28 11:15:59
>>129
本当にわからなくて>>95のが与えられてもよくわかりませんでした。
すいませんがせめて>>95のどれを見たらわかるかだけでも教えていただけないでしょうか?
136:デフォルトの名無しさん
09/06/28 11:41:43
>>132
一応やってみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
137:デフォルトの名無しさん
09/06/28 13:36:16
[1] 授業単元:数理物理
[2] 問題文(含コード&リンク):URLリンク(www.mns.kyutech.ac.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:どちらでも可
[4] 期限:6/30まで
[5] ヒントのプログラムから最後のprintfのところのxのあたいがよくわからないのでよろしくお願いします。
138: ◆/91kCCQXBo
09/06/28 13:41:47
>>132 >>136のGCDを参考にした。
3個の分数の和は、分数の和+1個の分数の和が題意だと解釈してみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
139:デフォルトの名無しさん
09/06/28 14:02:12
>>133 >>136 >>138
ありがとうございました!とても参考になりました。
140:デフォルトの名無しさん
09/06/28 14:15:05
>>87
答えてくださってありがとうございます。しかし、これを実行してみたら、フォネティックコード
化はちゃんとなっているんですけど、入力→フォネティックコード化→入力・・・・とずっと続
いてしまいます。
ポインタとファイルだけは何がどうなっているのかさっぱりわからないので自分で修正する
こともできなくて・・・。修正よろしくおねがいします。
141:デフォルトの名無しさん
09/06/28 14:48:24
>>96
遅くなりましたが、ありがとうございます。
142:デフォルトの名無しさん
09/06/28 15:16:05
>>137
xは微分方程式を解いたときのx(t)の値だと思う
double func(double x, double v, double t) {
return (-x-v*v*v+1+cos(t));
}
に変えるだけでいいんじゃないかな
143:デフォルトの名無しさん
09/06/28 15:23:56
>>140
こうかな?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
144:143
09/06/28 15:30:17
while((moji=getchar())!=EOF){
if(isalpha(moji)){
printf("%s", code[tolower(moji)-'a']);
}else{
if (moji == ']')
break;
putchar(moji);
}
}
前のだと無駄に ] を出力しちゃうのでこっちの方で。
145:デフォルトの名無しさん
09/06/28 16:04:07
>>144
if (moji == '\n') // 改行で終わる(笑!)
break;
146:デフォルトの名無しさん
09/06/28 16:13:13
[1] 授業単元: C言語
[2] 問題文:f(x)=xe^x-6を2分法とニュートン法で解きなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
「4」期限:6/28
[5] その他の制限: 配列が終わった程度しかやってません
147:デフォルトの名無しさん
09/06/28 17:17:34
>>142
助かりました。
プログラムは一応完成しました。
感謝します。
148:デフォルトの名無しさん
09/06/28 17:41:06
>>146
#include <stdio.h>
#include <math.h>
double f(double x) { return x * exp(x) - 6; }
double fd(double x) { return (1 + x) * exp(x); }
/* 繰り返し回数、初期値は任意 */
int main(void) {
// 二分法
{
int i, n = 10;
double a = 0, b = 5, x;
for (i = 0; i < n; i++) {
x = (a + b) / 2;
if (f(x) < 0 && f(a) < 0) {
a = x;
} else {
b = x;
}
}
printf("%f\n", x);
}
// ニュートン法
{
int i, n = 10;
double x = 0;
for (i = 0; i < n; i++) {
x = x - f(x) / fd(x);
}
printf("%f\n", x);
}
return 0;
}
149:デフォルトの名無しさん
09/06/28 18:00:11
>>148
即レスthxです
参考にさせてもらいます
150:デフォルトの名無しさん
09/06/28 18:05:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
@URLリンク(kansai2channeler.hp.infoseek.co.jp)
AURLリンク(www.dotup.org)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C
[4] 期限:7/2
[5] その他の制限:
お手数かけますが宜しくお願いします
151:145
09/06/28 18:09:36
>>140 Ctrl+D をキーボードから入れれば終了する。Windowsなら Ctrl+Z。
152:デフォルトの名無しさん
09/06/28 20:10:58
>>150
課題1
153:デフォルトの名無しさん
09/06/28 20:12:41
URI張り忘れたorz
URLリンク(kansai2channeler.hp.infoseek.co.jp)
154:デフォルトの名無しさん
09/06/28 20:41:45
>>153
有難うございます。
助かりましたm(_ _)m
課題2の方どなたかお願いします。
155:デフォルトの名無しさん
09/06/28 20:58:21
すみません、アセンブラの問題なんですが、どこで質問したらいいのか分らないので
ここでさせて頂きますm(_ _)m
もしアセンブリプログラムの方が無理でしたらC言語の方で構いません。
[1] 授業単元: アセンブリプログラミング
[2] 問題文(含コード&リンク): 1からN(N≦3)までの正整数の順列を作成せよ。すなわち、
N=1を与えた場合には1を、N=2を与えた場合には12,21、N=3を与えた場合には123,132,...を生成する。
[3] 環境
[3.1] OS:Windows
[3.3] 言語: アセンブリ言語、無理でしたらC++
[4] 期限: 7月1日
[5] その他の制限: 特にないです。
ちゃんとした質問になってるかも分かりませんが、すみませんが
よろしくお願いします。
156:デフォルトの名無しさん
09/06/28 21:02:26
>>150
課題2
URLリンク(kansai2channeler.hp.infoseek.co.jp)
157:デフォルトの名無しさん
09/06/28 21:23:33
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン: VC 2008
[3.3] 言語: C
[4] 期限: 6月29日 15時
[5] その他の制限: 配列やif文などは使わない。(使わなくてもできるみたいです。
printf,繰り返し処理を使う。
148を参考にやってみたのですが、実行結果の出し方が違うみたいなのでいまいちわからなかったので
質問しました。 お手数ですがよろしくおねがいします。
158:デフォルトの名無しさん
09/06/28 21:32:00
>>156
迅速なレス感謝します
本当に助かりました。
159:デフォルトの名無しさん
09/06/28 22:02:20
>>155
C言語でアセンブラ出力する。
160:デフォルトの名無しさん
09/06/28 22:35:48
どなたか>>126お願いします
161:145
09/06/28 22:44:53
>>087 scanf("%s\n", filename); // \nでは、<Enter>で入力が終わらない。
これか、 scanf("%s%*c", filename);
または、 scanf("%[^\n]%*c", filename);
これか、 fgets(filename, FILENAME_MAX, stdin); filename[strlen(filename) - 1] = '\0';
162:デフォルトの名無しさん
09/06/28 22:50:03
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):の連立1次方程式の解をガウスの消去法用いて解くプログラムを作成しなさい。
(この行列を使用してください
{{10,-9,0,0,0,0,0,0},
{-9,17,-8,0,0,0,0,0},
{0,-8,17,-9,0,0,0,0},
{0,0-9,13,-4,0,0,0},
{0,0,0,-4,12,-8,0,0},
{0,0,0,0,-8,10,-2,0},
{0,0,0,0,0,-2,2,7}})
[3] 環境
[3.1] OS: Windows Vista
[3.2] Visual Studio 2008
[3.3] 言語: C++
[4] 期限: 2009年7月1日まで]
[5] その他の制限:特にありませんがなるべく簡単なものでお願いします
163:デフォルトの名無しさん
09/06/28 23:05:17
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS Linux
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語:C
[4] 期限:7/3
[5] その他の制限:ポインタ配列を利用すること
お願いします
164:デフォルトの名無しさん
09/06/28 23:05:32
[1] 授業単元:文字列
[2] 問題文(含コード&リンク):
#include<stdio.h>
int chrlen(int n,char a[]);
void cap2sml(char a[],char b[]);
void strinv(int n,char a[],char b[]);
int main(void)
{
char a[100],b[100];
int i,n;
n=0;
/*from CAPITAL to small*/
void cap2sml(char a[],char b[])
{
int i;
for(i=0;a[i]!='\0';i++){
b[i]=a[i]+0x20;
}
if("A"<=a)&&(a<="Z")
b[i]='\0';
}
↑入力データが英大文字のときのみ小文字変換して表示するようにせよ
[3] 環境
[3.1] OS: Windows vista
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2009年6月29日AM07:00
[5] その他の制限: 特になし
165: ◆/91kCCQXBo
09/06/28 23:21:26
>>155 N=3までの順列
#include <iostream>
using namespace std;
int main(void) {
int i,j,k,n;
cout<<"n="; cin>>n;
cout.width(1);
switch(n) {
case 1:
for(i=1;i<=1;i++) {
cout<<i<<endl;
}
break;
case 2:
for(i=1;i<=2;i++) {
for(j=1;j<=2;j++) {
if(i==j) continue;
cout<<i<<j<<endl;
}}
break;
case 3:
for(i=1;i<=3;i++) {
for(j=1;j<=3;j++) {
if(i==j) continue;
for(k=1;k<=3;k++) {
if(i==k || j==k) continue;
cout<<i<<j<<k<<endl;
}}}
default:
break;
}
}
166:デフォルトの名無しさん
09/06/28 23:31:15
>>163
入力はポインタでなくていいのかな。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4981日前に更新/375 KB
担当:undef