[1] 授業単元:
Cプログラミング
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6835.txt [3] 環境
[3.1] OS: (Windows/Linux/等々)
linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
明日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
スレが変わったのでもう一度書き込ませていただきます。
明日までなのでどうにかよろしくお願いします。。
[1]プログラミング [2]問題文 int型整数の四乗値を返す関数、int pow4(int x)を作る。 ただし関数sqrを利用すること。 [3-1]windows [3-2]gcc [3-3]C言語 [4]明後日まで。 よろしくお願いいたします。
[1] 授業単元:Cプログラミング入門
[2] 問題文:間隔1の碁盤目状に格子点が並んでいます。
外径R+1、幅1の円環に含まれる格子点の数nを求めるプログラムを作成しなさい。
なお、格子点が円環の境界上にあった場合、外側境界上の点は含め、内側境界上の点は含めない。
以下に半径R=2の場合を示します。
ttp://upp.sakura.ne.jp/src/upp18015.png 全部で16個の格子点が円環に含まれます。
半径が少ない場合の例をあげておきます。
(R,n)=(0,4),(1,8),(2,16),(3,20),(4,32)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C
[4] 期限:[2008年6月10日まで]
[5] その他の制限:まだ大した勉強はしていません。
>>3 #include <stdio.h>
int sqr(int x) {
return x * x;
}
int pow4(int x) {
return sqr(sqr(x));
}
int main(void) {
int n;
scanf("%d", &n);
printf("%d\n", pow4(n));
return 0;
}
>>4 問題文には、二乗値を返すという問題の際にsqrという関数を使ったんですが、この四乗値を返すという問題でもsqrを使えと書いてるんですよね。
>>5 #include<stdio.h>
#include<math.h>
#define EPS (1e-10)
long internal_point(double r){
int x, y;
long count=0;
for(x=0;x<=r;x++){
y=sqrt(r*r-x*x+EPS);
if(x==0) count+=2*y+1;
else count+=(2*y+1)*2;
}
return count;
}
int main(void){
int R=2;
printf("%ld\n", internal_point(R+1)-internal_point(R));
return 0;
}
>>7 int pow4(int x){ return sqr(x)*sqr(x); }
>>6 #include <stdio.h>
#define R 2
int main()
{
int x, y;
unsigned n = 0;
for(x = -(R + 1); x <= R + 1; ++x)
for(y = -(R + 1); y <= R + 1; ++y)
{
unsigned r = x * x + y * y;
if(R * R < r && r <= (R + 1) * (R + 1)) ++n;
}
printf("%d\n", n);
return 0;
}
浮動小数点数つかうなんて正気の沙汰と思えねえ
Rが整数だとは?
>>11 それだと実行時間が半端ねえよ
R=10000 の時
>>8 1[msec]
>>11 625[msec]
>>8 すいません、これだと
R=2のときのものしかできないので、
Rを打ち込んでそのときのnを求めるプログラムがほしいのですが…
>>12 整数です。
>>14 #include<stdio.h>
#include<math.h>
#define EPS (1e-10)
long internal_point(double r){
int x, y;
long count=0;
for(x=0;x<=r;x++){
y=sqrt(r*r-x*x+EPS);
if(x==0) count+=2*y+1;
else count+=(2*y+1)*2;
}
return count;
}
int main(void){
int R=2, n;
printf("Input R : ");
scanf("%d", &R);
n=internal_point(R+1)-internal_point(R);
printf("%d\n", n);
return 0;
}
格子点の表示はしなくていいの?
>>17 格子点の数nだけでよいです。
ありがとうございます。
[1] 授業単元:コンピュータ入門 [2] 問題文(含コード&リンク): たてa,よこbの長方形から半径cの円をできるだけ多く取りなさい 出力:円は何個できましたか? 長方形の何パーセント使いましたか? [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:わかりません [3.3] 言語: C [4] 期限:明日中 [5] その他の制限:できるだけ簡単に お願いします
>>20 #include<stdio.h>
int main(void){
int a,b,c,count=0,menseki=0;
double circle=0,amari=0;
printf ("縦:");
scanf("%d",&a);
printf ("横:");
scanf("%d",&b);
printf ("円の半径:");
scanf("%d",&c);
menseki = a*b;
circle = c*c*3.14;
count = menseki/circle;
amari = (menseki-(circle*count))/menseki;
printf ( "%d個 余り%4.2f%%\n",count,(amari*100));
}
間違えたこれ円の個数じゃなくて、ただ面積引いてるだけだ
長方形から円を引くって難しいな…俺も知りたいから誰か答えて
>>20 問題文は以上ですか?
その問題文ですべてなら
円はほぼ無限個でき、長方形のほぼ100%を使うことができます。
できるわけねーだろ
>>24 わかりにくくてすみません
長方形を円でくりぬいていき何個円ができるかという感じでお願いします
>>23 考えてくださってありがとうございます
[1] 授業単元:Cプログラミング入門 [2] 問題文:文字列を入力し、その長さ(入力した文字数)を求めよ [例]文字列を入力して下さい:abcde fghijkl mn 文字の長さ:16 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名:VC++6.0 [3.3] 言語:C [4] 期限:6月10日まで [5] その他の制限:標準関数を使わずにお願いします。
>>27 #include <stdio.h>
int main(void){
char str[64];
int nlen;
scanf("%s", str);
for (nlen = 0; str[nlen]; nlen++);
printf("文字列の長さ:%d", nlen);
return 0;
}
ゴメン、scanfはスペースで区切っちゃうんだった
>>28 ありがとうございます!
こうやってみるとめっちゃ簡単ですね(;><)
gets使ってもいいなら scanf("%s", str); ↓ gets(str); にしといてください
#include <stdio.h> int main(void) { int i, ch; printf("文字列を入力して下さい:"); for(i=0; (ch=getchar())!='\n'; i++); printf("文字の長さ:%d\n", i); return 0; }
#include <stdio.h> int main(void) { int i, ch; printf("文字列を入力して下さい:"); for(i=0; (ch=getchar())!='\n' && ch!=EOF; i++); printf("文字の長さ:%d\n", i); return 0; }
34 :
デフォルトの名無しさん :2008/06/09(月) 10:22:30
>>20 ようするにクッキーの生地(長方形)から型(円)を何個とれるか、てこと?
35 :
20 :2008/06/09(月) 10:44:00
>>21 外部プログラムとして動かすのにforkなの?
37 :
20 :2008/06/09(月) 12:38:46
どなたか20の解答お願いします!!
むずいね。 しかも今日中か。
しかもこれがコンピュータ入門すか。 前回の課題とかせっかくだから載せてもらえる? できれば作成したソースも。
>>20 とりあえず a<b ならそれなりの解が出るソースコード
解法plz
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int pattern1(double a, double b, double c){
int x, y;
y=(a-2*c)/(sqrt(3.)*c)+1;
x=b/(2*c);
return x*y-y/2;
}
int pattern2(double a, double b, double c){
int x, y;
y=a/(2*c);
x=b/(2*c);
return x*y;
}
int main(int argc, char *argv[]){
double a=20., b=30., c=3.;
int num, maximum;
switch(argc){
case 4: c=atof(argv[3]);
case 3: b=atof(argv[2]);
case 2: a=atof(argv[1]);
}
maximum=pattern1(a, b, c);
num=pattern2(a, b, c);
if(num>maximum) maximum=num;
printf("円の数:%d 使用率:%.3f%%\n", maximum, (c*c*M_PI*maximum)/(a*b)*100);
return 0;
}
42 :
41 :2008/06/09(月) 13:44:20
>>20 >>41 の訂正
return x*y-y/2;
↓
return x*y-((b-x*2*c<c)?y/2:0);
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): abbcという問題の中にabがあればそのabをxyzに置き換えるプログラムをつくりなさい、です。 また、なかった場合は問題をそのまま出力するようにしなさい、です。 問題と単語は自分で適当に入力するようにプログラムするようにしなさい、です。 どうぞよろしくお願いします。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: (2008年6月12日まで [5] その他の制限: ポインタ変数を習ってまもないです
>>43 #include<stdio.h>
#include<string.h>
void replace(char dest[], const char src[], const char modify[], const char org[]){
const char *p;
int org_len;
org_len==strlen(org);
while((p=strstr(src, org))){
dest+=sprintf(dest, "%.*s%s", p-src, src, modify);
src+=p-src+org_len;
}
sprintf(dest, "%s", src);
}
int main(void){
char *src="abbc", *org="ab", *modify="xyz";
char dest[1024];
puts(src);
replace(dest, src, modify, org);
puts(dest);
return 0;
}
ここのスレって、意外と勉強になる、、、、
>>44 ありがとうございます。
あと、聞きたいのですが、xyzに置き換えるのはそのままでアルファベットを任意でprintf,scanfして行う場合は
どのようにプログラムを書いたらいいのでしょうか?
[1] 授業単元:Cプログラミング [2] 問題文: 入力した文字からキャラクターを作成し、名前とパラメーターを表示。 入力した文字によってパラメーターが変化する。 例)・生命力 = 入力した文字コードの合計 ・攻撃力 = 入力した偶数番目文字コードの合計 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名:VC++6.0 [3.3] 言語:C [4] 期限:6月13日まで [5] その他の制限:文字列操作を習ったばかりです。 例にある生命力、攻撃力の場合のプログラムをお願いします。
50 :
デフォルトの名無しさん :2008/06/09(月) 16:44:54
リナックスの問題で 1+(1+2)+(1+2+3)+(1+2+3+・・・+n) 二重ループを用いて書いてください。 よろしくお願いします
>>49 #include <stdio.h>
#include <string.h>
int main(void) {
char name[1024];
int code = 0;
int hp = 0, at = 0;
int i = 0;
gets(name);
for (i = 0; i < strlen(name); i++) {
code = name[i];
hp += code;
if (i % 2 == 0) {
at += code;
}
}
printf("名前:%s 生命力:%d 攻撃力:%d\n", name, hp, at);
return 0;
}
間違ってたら自分で治してね☆
>>51 無事エラーも出ず、例のとおり実行できました。
ありがとうございます。
>>50 #include <stdio.h>
int main(void)
{
int i, j, n, sum = 0;
scanf("%d", &n);
for(i=1; i<=3; i++) for(j=1; j<=i; j++) sum += j;
for(i=1; i<=n; i++) sum += i;
printf("%d", sum);
return 0;
}
1 + (1 + 2) + (1 + 2 + 3) + ・・・ + (1 + 2 + 3 + ・・・・ + n)
[1] 授業単元:グラフ理論2 [2] 問題文: ノード数100、平均リンク数4の、 ランダムネットワークを生成。 各ノードには予め1or-1の値をランダムで割り振る。 このネットワーク全体の熱量を求めるプログラムを考えよ。 *注意1 Ni(ノードi)とNj(ノードj)、 熱量=Ni*Nj 上記の式を全リンクで計算し、結果を足し上げていく。 すなわち、接続しているノード同士が同じ値だと全体の熱量は増していく。 *注意2 ランダムネットワークとは、リンク数とリンク先がランダムに選択されたネットワークのことで、今回は分断されてないネットワークを利用すること。 [3] 環境 [3.1] 言語:C [4] 期限:6月11日まで 以上、よろしくお願いします。
56 :
:2008/06/09(月) 19:31:20
>>50 int main(void){
int i=0;
int total=0;
int n=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
total+=1+i*i/2;
}
return 0;
}
え?二重ループ?
無駄はない方がいいよ
ん、計算順序おかしいや total+=(1+i)*i/2; だね ついでに printf("%d",total); も足しといて
問題の指定を守らないのは回答する資格ないから
>>20 は壮大な釣りだよ。最密充填はそれほど簡単な問題ではない。
ここ数百年かけてかなり解けるようになってはいるけどね。
多数の数学者の頭脳を持ってしても手こずっている問題だと
推して知るべし。
61 :
55 :2008/06/09(月) 20:56:21
長方形に円をつめるだけなら簡単。
>>56 vistaでの日本語文字コードって何だっけ?
Shift-jis と仮定してよいなら、
int c;
while ((c = getchar()) != EOF) {
if (c & 0x80) {
putchar(c); c = getchar;
}
else if (islower(c)) c = toupper(c);
else if (isupper(c)) c = tolower(c);
putchar(c);
}
>>60 最適解を求めることができればそれはとてもすごいことだということは
分かるが、自分の思いつく範囲で可能な限りたくさん、というのを
試しているのだと思うよ。
a b がともに2*cよりも大きい
→円は1個でき、(c*c*PI)*100/(a*b) パーセント
という、とても稚拙なものであっても、とりあえず要求は満たされてるんだよ
ということで、
>>20 にはがんばってもらいたい。
getchar; -> getchar(); orz
[1] 授業単元:
Cプログラミング
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6846.txt [3] 環境
[3.1] OS: (Windows/Linux/等々)
linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
今日中
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
明日以降でも提出はできるのですが、一応期限は今日までなのでよろしくお願いします。
>>67 たぶん前スレとかによく似たのがあるよ。
今日中ってのもアレな話だけど、がんばれ。
誰も見ていないし更新もされていないだろうwikiにスタック載ってるなw
>>68 前スレっていうと自分の頼んだ課題かもしれません。前スレでも依頼したので・・
長くて面倒そうだからやってもらえないのかもしれませんが、どうにかよろしくお願いします。。
>>71 ですが、
コンパイラはBorlandCでもいいです。
>>74 その通りです。
1つ目の課題はやってもらったのですが、
もう一つの課題が残っていまして・・それが
>>67 なのです。。
76 :
74 :2008/06/09(月) 22:45:59
ちゃんと動いたって報告してるしやっぱり違う人でしょかー。 例題のソースからもコメントがばっさり抜かれてるし、どういうことだろう。
77 :
67 :2008/06/09(月) 22:46:15
ちなみに・・長すぎると読むのが面倒かなと思って、短く削ってアップロードし直しました。
>短く削って 何を削っていいか判断できるぐらいなら宿題も自分で解けるだろw
79 :
67 :2008/06/09(月) 22:58:26
>>78 プログラミング上級者のここのスレの方達だと、例題のコメントや余計な制約は邪魔なだけかなと思って削らせていただきました。
何分実力不足なので、私自身の力では無理です。。力を貸して下さい
[1]プログラミング [2]問題文 画面に「こんにちは」と表示して改行する、void hello(void)関数を作る。 [3-1]windows [3-2]gcc [3-3]C言語 [4]明後日まで。 よろしくお願いいたします。
>>80 void hello(void)
{
printf("こんにちわ\n");
return;
}
83 :
67 :2008/06/09(月) 23:06:06
>>82 そうですね、すいません。余計なことをしてしまいました。。
これからは気をつけます。
>>59 回答するつもりも無いならレスする必要(ry
こうですか?わかりません><
この言い方古いのかな
>>84 っつーか2重ループの回答あがってるし、
どうでもいい
86 :
21 :2008/06/10(火) 01:56:32
>>36 確認しましたが、特に指定はないとのことです…
曖昧な返答で申し訳ありません。どうかよろしくお願いします。
制約を守らないのにループを残した
>>57 はなんだ?
どうせならこうするがね。
int main(void){
int n=0;
scanf("%d",&n);
printf("%d\n", n*(n+1)*(n+2)/6);
return 0;
}
>>86 forkを使って、fork1.c fork2.cそれぞれから生成される実行体を
外部プロセスとして呼び出すのですか?
という意図の質問をしてしまったのであれば、前回の課題を実力で
解答したのではないことがばれたかと。
理解しなかったっしょ。もったいない。
>>88 アフィン変換とかでぐぐってみればどうだろう。
[1] 授業単元: C言語入門 [2] 問題文(含コード&リンク): 二つの整数値を入力したら最大公約数を表示してくれるやつ作れ [3] 環境 [3.1] OS: windows [3.2] borland c++ 5.5.1 [3.3] 言語: C 自分で作ってみたのですがうまく動きません どこが間違ってるんでしょうか? #include <stdio.h> int main (void) { int x,y,z=0,i=1; printf("二つの整数を「,」で区切って入力してください:"); scanf("%d,%d",&x,&y); while(i==1){ if(x>y) z=x-y; if(x<y) z=y-x; else break; } printf("最大公約数は%d\n",z); return 0; }
>>91 です
意味ないかもしれませんが
正解に近づいたかもしれないので貼ってみます
#include <stdio.h>
int main (void)
{
int x,y,a,b;
printf("二つの整数を「,」で区切って入力してください:");
scanf("%d,%d",&x,&y);
a=x;
b=y;
while(a!=b){
if(a>b) a=a-b;
if(a<b) a=b-a;
}
printf("%d%dの最大公約数は%d\n",x,y,a);
return 0;
}
[1] 授業単元:
C言語
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6849.txt [3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Microsoft Visual Studio 2008
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
明日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
無し
お願いします。
#include <stdio.h> int main(void) { int i, j, count[11] = {0}, n; while(1) { scanf("%d", &n); if(n==-1) break; if(0<=n && n <= 100) count[n/10]++; } for(i=0; i<10; i++) { printf("%3d -%3d %d人 ", i*10, i*10 + 9, count[i]); for(j=0; j<count[i]; j++) putchar('*'); putchar('\n'); } printf("100 %d人 ", count[10]); for(j=0; j<count[10]; j++) putchar('*'); putchar('\n'); return 0; }
>>92 #include <stdio.h>
int main (void)
{
printf("二つの整数を「,」で区切って入力してください:");
scanf("%d,%d",&x,&y);
int a,i;
if (x>y) {
for (i=1;i<=y;i++) {
if (y%i == 0) {
if (x%i == 0) a = i;
}
}
} else {
for (i=1;i<=x;i++) {
if (x%i == 0) {
if (y%i == 0) a = i;
}
}
}
printf("%d%dの最大公約数は%d\n",x,y,a);
return 0;
}
>>93 発展
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, j, count[11] = {0}, n;
srand(time(NULL));
while(1) {
n = rand() % 102 - 1;
if(n==-1) break;
count[n/10]++;
}
for(i=0; i<10; i++) {
printf("%3d -%3d %3d人 ", i*10, i*10 + 9, count[i]);
for(j=0; j<count[i]; j++) putchar('*');
putchar('\n');
}
printf("100 %3d人 ", count[10]);
for(j=0; j<count[10]; j++) putchar('*');
putchar('\n');
return 0;
}
while(a!=b) { while(a > b) a -= b; a = a + b; b = a - b; a = a - b; }
>>92 ,で区切る意味が全く分からない
再帰を使わずに作ると
#include <stdio.h>
int gcd(int a, int b);
int main(void){
int x, y, z;
scanf("%d", &x);
scanf("%d", &y);
z = gcd(x, y);
printf("%d\n", z);
}
int gcd(int a, int b){
int c;
while (b > 0){
c = a % b;
a = b;
b = c;
}
return a;
}
100 :
22 :2008/06/10(火) 05:12:14
>>21 #include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <unistd.h>
int main(void) { pid_t c[2], p; int s;
switch (c[0] = fork()) { case -1: perror("fork"); break;
case 0: execlp("./fork1", "fork1", NULL); perror("fork1"); _exit(1); /* NOTREACHED */
default: break; }
switch (c[1] = fork()) { case -1: perror("fork"); break;
case 0: execlp("./fork2", "fork2", NULL); perror("fork2"); _exit(1); /* NOTREACHED */
default: break; }
while (c[0] != -1 || c[1] != -1) { int i;
if ((p=wait(&s)) == -1) { perror("wait"); break; }
else for (i = 0; i < 2; i++) if (p==c[i]) {
if (WIFEXITED(s)) printf("fork%c exit(%d)\n", i+1, WEXITSTATUS(s));
else if(WIFSIGNALED(s)) printf("fork%c killed(%d)\n", i+1, WTERMSIG(s));
c[i]=-1;break; }
if (i==2) {fprintf(stderr, "?\n"); break;}}
return 0; }
102 :
101 :2008/06/10(火) 05:45:59
どうして 「backslash n」が消えるんだ???
>>102 ソースを貼るのには適さないんだし、行が多い場合はテキストファイルを
ここ用のロダにあげなよw
学科の出席簿作成。 15人分の学生を表示し、入力により内容を変動させる。 表示順番:出席表 <入力>学生番号0〜14 <入力>曜日番号0〜6 <入力>時限番号0〜3 <入力>出欠番号0〜1 <入力>学生番号0〜14の時に99を入力するとプログラム終了。
ここまでは自力でできた。 #include <stdio.h> int main() { int gakusei,youbi,jigen,syukketsu; printf("学生Noを入力してください----"); scanf("%d", &gakusei); printf("曜日番号を入力してください----"); scanf("%d", &youbi); printf("時限番号を入力してください----"); scanf("%d", &jigen); printf("出欠番号を入力してください----"); scanf("%d", &syukketsu); if(gakusei=99){ printf("学生番号は99以外の数字を入力してください。\n"); } if(gakusei>=0||gakusei<=14 || youbi>=0||youbi<=6 || jigen>=0||jigen<=3 || syukketsu>=0||syukketsu<=1){ printf("学生No%d\n",gakusei); printf("月曜日\n"); printf("時限番号%d\n",jigen); printf("出欠番号%d\n",syukketsu); }else{ printf("エラーです\n"); } return 0; }
>>101 forkしてexecか。なる。
出題者じゃないが勉強になった。
そういう事柄に関しては 小耳に挟んだ ということと 勉強になったということは 根本的に違うということは区別しようね。
それにして、インデントがないと、ソースが読みにくい(><)
まあ手元ソース書く場合はメモ帳とか使うんだろうからせめて TAB1個->全角スペース3個とかで置換かけてから投下しようよw それがあれならアップローダーにあげるとかさ・・・
>>5 の問題の補足なんですが
円の中心に原点をおくと、格子点はi,jを整数として座標(i,j)で表される。(i,j)が円環に含まれる場合に1,含まれない場合に0を返却する関数
is_inrarge(double r, int i, int j)
を作成し、これを用いて、半径Rをキー入力することでn(R)を表示するプログラムを作成しなさい。
とのことなのでこれを踏まえてもう一度この問題の解答をお願いします。
112 :
デフォルトの名無しさん :2008/06/10(火) 13:05:53
[1] 授業単元: C++ [2] 問題文キーボードから2以上の整数を入力し、その数が素数であるかどうかを判断するコードを記述せよ。 ただし入力される数値が2以上でない場合、繰り返し入力を求めること。[3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 ) [3.3] 言語: C++ ([[4] 期限:今日の5時mで [5] その他の制限:なし
>>110 #include <stdio.h>
int is_inrange(double r, int i, int j)
{
return r * r >= i * i + j * j;
}
int main(void)
{
int i, j, r, count = 0;
scanf("%d", &r);
for(i=-(r+1); i<=r+1; i++) {
for(j=-(r+1); j<=r+1; j++) {
if(is_inrange(r+1, i, j)&&!is_inrange(r, i, j)) count++;
}
}
printf("%d", count);
return 0;
}
そういうオープンな問題が出るわきゃないだろ 出した講師か教師が糞 2^2^1024-1が素数かも判定しなきゃならなくなる罠
115 :
ルート :2008/06/10(火) 13:11:11
[1] 授業単元: プログラミング C言語 [2] 問題文(含コード&リンク): 【課題】 BMPファイルを読み込み、以下の処理を行って下さい。 @2値化(白黒画像) 閾値は指定できること Aディザ法による2値化 B誤差拡散法による2値化 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC++ [3.3] 言語: C [4] 期限: 〜6月13日0:00 [5] その他の制限: 無い
なんか、ここを見てるとプログラミングを嫌いにさせたいのか と思うような出題内容が多いよな。 まあIT業界は悲惨なので学生時代に嫌いにさせておいて 就職口から外す講師の親心なのかもしれないけどw ってそれはねーかw
口だけクンががんばってるなw
@ [1] 授業単元: C++ [2] 問題文 キーボードから2以上の整数を入力し、その数が素数であるかどうかを判断するコードを記述せよ。 ただし入力される数値が2以上でない場合、繰り返し入力を求めること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C++ [4] 期限: 6月10日 [5] その他の制限: なし A [1] 授業単元: C++ [2] 問題文 直角三角形の表示を行うフローチャートは左下が直角の直角三角形を表示するプログラムであった。直角が左上側、右上側、右下側の三角形を表示するプログラムをそれぞれ作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C++ [4] 期限: 6月17日 [5] その他の制限: なし お願いします。
書くだけクンが大きなこと言えるのかなw
>>112 #include <iostream>
int main(void)
{
int n, flag = 1;
do {
std::cout << "2以上の整数を入力してください:";
std::cin >> n;
}while(n < 2);
for(int i = 2; i*i<=n; i+=2) {
if(n % i == 0) {
flag = 0;
break;
}
}
std::cout << n << "は素数" << (flag ? "です" : "ではありません") << std::endl;
}
2以上の素数を入力して下さい 15 15は素数です
ミスった i+=2 → i++
>>118 #include <iostream>
int main()
{
int i, j, n;
std::cin >> n;
//左上
for(i=n; i>0; i--) {
for(j=i; j>0; j--) std::cout << '*';
std::cout << std::endl;
}
//右下
for(i = 0; i<n; i++) {
for(j=1; j < n - i; j++) std::cout << ' ';
for(j=0; j<=i; j++) std::cout << '*';
std::cout << std::endl;
}
//右上
for(i=0; i<n; i++) {
for(j=0; j<i; j++) std::cout << ' ';
for(j=n; j>i; j--) std::cout << '*';
std::cout << std::endl;
}
}
2以上の素数を入力して下さい:2 2は素数ではありません
126 :
デフォルトの名無しさん :2008/06/10(火) 14:02:11
[1] 授業単元: プログラミング C言語 [2] 問題文(含コード&リンク)課題:ファイル"test.txt"から文字列を読み込み、並びを逆にしてファイル"sample.txt"に出力するプログラムを作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005 [3.3] 言語: C [4] 期限: 〜6月11日11:00 [5] その他の制限: ポインタを使う
127 :
110 :2008/06/10(火) 14:10:22
>>126 #include <stdio.h>
void f(FILE *in, FILE *out)
{
int ch = fgetc(in);
if(ch==EOF) return;
f(in, out);
fputc(ch, out);
}
int main(void)
{
FILE *f_in, *f_out;
if((f_in=fopen("test.txt", "r"))==NULL) return 0;
if((f_out=fopen("sample.txt", "w"))==NULL) return 0;
f(f_in, f_out);
fclose(f_in);
fclose(f_out);
return 0;
}
129 :
デフォルトの名無しさん :2008/06/10(火) 14:31:41
>>126 int main(void) {
FILE* in;
FILE* out;
int c;
char ss[1024];
int i = 0;
in = fopen("test.txt", "r");
if (in == NULL) {
return -1;
}
out = fopen("sample.txt", "w");
if (out == NULL) {
return -1;
}
while ((c = fgetc(in)) != EOF) {
ss[i] = c;
i++;
}
ss[i] = '\0';
i--;
while (i >= 0) {
fputc(ss[i], out);
i--;
}
fclose(in);
fclose(out);
return 0;
}
適当すぎたorz
131 :
130 :2008/06/10(火) 14:39:26
おかしかったら自分でなんとかして。 結構、初心者向けに書いたつもりなので
132 :
20 :2008/06/10(火) 15:38:13
>>41 >>41 int pattern1(double a, double b, double c){
int x, y;
y=(a-2*c)/(sqrt(3.)*c)+1;
x=b/(2*c);
return x*y-((b-x*2*c<c)?y/2:0);;
}
すみませんがここの処理が何をやってるのかわからないのですが
説明していただけませんか?
134 :
デフォルトの名無しさん :2008/06/10(火) 15:41:55
[1] 授業単元:プログラミング入門 [2] 問題文(含コード&リンク):小さい順の友愛数ペア10組を探し出すプログラムをつくれ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語:C++ [4] 期限:2008年6月17日14:40まで [5] その他の制限:for,while,if文ぐらいしか習ってません。 main関数のみでお願いします。 参考プログラム:約数の和の計算 #include <stdio.h> void main() { int m; /* 整数 */ int n; /* 1〜m まで繰り返す */ int s; /* 約数の和(累計) */ scanf("%d", &m); /* キーボードから整数を読み込む */ s = 0; /* s の内容をクリア */ for (n = 1; n <= m; n++) { /* 1〜m まで繰り返す */ if (m % n == 0) /* 約数の判定 */ s += n; /* 約数であれば s に足す */ } printf("整数%dの約数の和は%dです。\n", m, s); /* 約数の和の画面表示 */ } よろしくお願いします。
135 :
デフォルトの名無しさん :2008/06/10(火) 15:48:26
[1] 授業単元: C++ [2] 問題文次々に入力される値を合計する処理である。 変数dtにデータを入力する処理を繰り返し行い、 入力終了後その合計sumと平均aveを出力する。 なお、入力データは正の整数とし、 入力するデータがなくなったら、 終わりの印として負の値を入力する。 【ヒント】 平均の計算は、合計÷入力回数。 入力回数も変数を用意して数える。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 ) [3.3] 言語: (C++) [4] 期限: ([2008年06月24日午後5時までまで] ) [5] その他の制限:なし
136 :
ルート :2008/06/10(火) 16:02:29
137 :
デフォルトの名無しさん :2008/06/10(火) 16:02:34
[1] 授業単元: C++ [2] 問題文 次の処理を行うプログラムを作成しなさい。 キーボードから入力した2進数を 10進数に変換して出力する。 ただし,入力が2進数でなかった場合 エラーメッセージを出力して最初からやりなおす。 【実行例】 2進数を入力してください 10101 21 2進数を入力してください 12345 エラー(2進数ではありません) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 ) [3.3] 言語: (C++) [4] 期限: ([2008年06月24日午後5時までまで] ) [5] その他の制限:なし お願いします
138 :
21 :2008/06/10(火) 16:07:41
>>101 ありがとうございました。
来週テストということもあり、前回のプログラムも含めて復習してみます。
本当にありがとうございました。
>>135 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char input[1024];
int temp = 0;
int dt = 0;
int count = 0;
gets(input);
while ((temp = atoi(input)) >= 0) {
count++;
dt += temp;
gets(input);
}
printf("合計:%d\n", dt);
printf("平均:%d\n", dt / count);
return 0;
}
140 :
デフォルトの名無しさん :2008/06/10(火) 17:26:47
[1]データ構造(C言語) [2]以下のようなstudent構造体の配列をプログラム内に定義しておく。 struct student{ int num; char name[20]; int score; }; struct student St[]={{3, "鈴木三郎", 86}, {1, "山田一郎", 75}, {14, "高橋十四子", 93}, {2, "田中二子", 68}}; このデータをfprintf()を用いてファイルに出力するプログラムを作成せよ。またcatコマンドなどにより出力し、内容が正しいことを確認せよ。 [3]OS Linux 言語 C [4]10日18時 [5]なし おねがいします。
>>134 #include <stdio.h>
int f(int n)
{
int i, s = 0;
for(i=1; i<=n/2; i++) if(n % i == 0) s += i;
return s;
}
int main(void)
{
int i, j, cnt = 0;
for(i=1; cnt < 10; i++) {
j = f(i);
if(j > i && i == f(j)) {
printf("%d, %d\n", i, j);
cnt++;
}
}
return 0;
}
>>137 #include <iostream>
using namespace std;
int main()
{
int i, n = 0;
char buff[256], *p;
while(1) {
cout << "2進数を入力してください ";
cin >> buff;
for(p=buff; *p; p++) if(*p!='0' && *p!='1') break;
if(!*p) break;
cout << "エラー(2進数ではありません)" << endl;
}
for(p=buff; *p; p++) n = n * 2 + *p - '0';
cout << n << endl;
}
>>140 struct student {
int num;
char name[20];
int score;
};
int main(void) {
FILE* fp = fopen("aaa.txt", "w");
int i = 0;
struct student St[]={{3, "鈴木三郎", 86}, {1, "山田一郎", 75}, {14, "高橋十四子", 93}, {2, "田中二子", 68}};
struct student st;
if (fp == NULL) {
return -1;
}
for (; i < 4; i++) {
strcpy(st.name, St[i].name);
st.num = St[i].num;
st.score = St[i].score;
fprintf(fp, "番号:%d 氏名:%s スコア:%d\n", st.num, st.name, st.score);
}
fclose(fp);
return 0;
}
Cで動くかしらんけど。
あ、include載せ忘れてる。 ま、いっか。 それくらい自分でなんとなしてくれ。
>>141 main関数のみでお願いします。
せっかくやってもらった立場でそうと言いにくい
>>134 に代わって御願いします
>>144 ほんとありがたいです。ありがとうございました!
>>134 #include <stdio.h>
int main(void)
{
int i, j, cnt = 0, m, n;
for(i=1; cnt < 10; i++) {
n = 0;
for(j=1; j<=i/2; j++) if(i % j == 0) n += j;
if(n > i) {
m = 0;
for(j=1; j<=n/2; j++) if(n%j ==0) m += j;
if(m == i) {
cnt++;
printf("%d, %d\n", i, n);
}
}
}
return 0;
}
149 :
デフォルトの名無しさん :2008/06/10(火) 19:34:18
150 :
デフォルトの名無しさん :2008/06/10(火) 19:44:13
152 :
デフォルトの名無しさん :2008/06/10(火) 19:45:31
盛大な釣りですね
[1]プログラミング [2]問題文 警報をno回鳴らす関数void alart(int no)をメイン文も含め作る。 [3-1]windows [3-2]gcc [3-3]C言語 [4]明後日まで。 よろしくお願いいたします。
155 :
デフォルトの名無しさん :2008/06/10(火) 20:12:43
void alart(int no); int main(void){ int no=0; alart(no); return 0; } void alart(int no){ if(no); system("echo 数字を入力してください"); system("set /p no="); system("for /l in (1,1,%no%) do echo ^G"); system("set no="); }
157 :
デフォルトの名無しさん :2008/06/10(火) 20:31:48
>>154 #include <stdio.h>
void alart(int no);
int main(void){
int ret=0;
int no=0;
printf("数字を入力して下さい");
scanf("%d",&no);
if(ret){
puts("数字っつったろぼけ");
return 1;
}
alart(no);
return 0;
}
void alart(int no){
int i=0;
for(i=0;i<no;i++){
printf("\a");
}
}
自信ないのに意味不明なコード書くのはバカ
コード書かないのはバカですね 分かります
man よめよ
162 :
158 :2008/06/10(火) 20:56:36
やべぇ
否定し忘れてる!!
if(!ret){
だ
>>159 あ?しねよ
scanfの戻り値なんか見たことないだろ
私のためにケンカしないで><
/*ここまで俺の自演*/
165 :
デフォルトの名無しさん :2008/06/10(火) 21:07:16
[1] 授業単元: プログラミング C言語 [2] 問題文(含コード&リンク)課題: ファイル"test.txt"から文字列を読み込み、並びを逆にしてファイル"sample.txt"に出力するプログラムを作成せよ。 [3] 環境 コンパイラ名とバージョン:Microsoft Visual Studio 2005 言語: C [4] 期限: 〜6月11日 [5] その他の制限: ポインタを使う
ここは、使えないPGを育成するスレですか? といてもらって、お礼もいわんとは
>>167 あえて言おう
ここは2ちゃんねる
久しぶりに言った
同じ質問を再度行う場合も非常に見にくいことが多い。
前回依頼時へのポインタを示してくれればそこからいろいろたどれるのに。
具体的には
>>165 が
>>126 へ貼ってくれさえいればダメだったらしい
回答であるところの
>>130 がすぐ見れたわけだ。
もう少し考えていただければと思う。
釣られてどうする
171 :
デフォルトの名無しさん :2008/06/10(火) 21:17:53
>>166 ファイルポインタは大丈夫みたいなんですが、
while ((c = getc(in)) != EOF)
などが上手く動作しないみたいで困ってます。
>>171 >while ((c = getc(in)) != EOF)
~~~~~
fgetcじゃなくて?
173 :
デフォルトの名無しさん :2008/06/10(火) 21:19:54
質問者は名前欄にレス番号を記入すべきだとも思う。
175 :
デフォルトの名無しさん :2008/06/10(火) 21:26:29
>>172 fgetcです。
文字列の書き込みや出力の部分がとんで動作しているみたぃです。
test.txtの置き場所間違ってないか?
178 :
157 :2008/06/10(火) 21:37:51
179 :
デフォルトの名無しさん :2008/06/10(火) 22:02:06
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):() 文字列を逆向きに表示する関数void printrev(char[]);を定義せよ.テキストファイルの最初の1行を逆向きにして表示するプログラムを作成せよ. 出力例: bash-3.2$ ./rev1 < rev1.c >h.oidts< edulcni# ヒント: ・文字列を逆向きに表示する関数を定義する ・繰り返し文 while ((c = getchar()) != EOF) {...} で,改行記号まで配列に文字を順番に代入する ・改行記号が来たら break ・できあがった文字の配列に終端文字\0を入れて文字列にする ・文字列を逆向きに表示する関数を使って表示する [3] 環境 [3.1] OS:Linux [3.2] gcc (すみません、詳しいことはよくわかりません;) [3.3] C言語 [4] 期限:前期中 [5] その他の制限:なし。 よろしくお願いします。
さぁ、逆さ文字をコマンドプロンプトに表示できる勇者は現れるか? バナーならなんとかできるか?
#include <stdio.h> #include <string.h> int main(void) { int i, j; char buf[81], *p; fgets(buf, sizeof buf, stdin); if (p = index(buf, '\n')) *p = '\0'; for (i = 0, j = strlen(buf) - 1; i < j; i++, j--) { int t; t = buf[i]; buf[i] = buf[j]; buf[j] = t; } fputs(buf, stdout); fputs("\n", stdout); return 0; }
毎度のことで申し訳ありません。7行目の' 'と13行目の" "の中身はbackslash nです。
ちゃんと\見えてるわけだが、お前は何を使って見てるんだ。
74です。
187 :
181 :2008/06/10(火) 22:48:41
あ、問題文全然読んでませんでした。誰か函数化してください。
188 :
デフォルトの名無しさん :2008/06/10(火) 23:02:10
>>185 はぁ?バカは四の五の言ってねーでソース書けよw
そのレスに反論するのは、指摘された本人だろ?
他は黙ってソース書いてんだよ、ボケが
>>162 >>160 これもうぜーなぁ。バカは口閉じてろよ、あっキーボードを打つ指を
休めているか、タイピングできないように切断しとけば?w
>>184 おまいさんが酉つけてガンガン回答してくれたら納得しとくわ。
>>189 僕ちゃんは、宿題を教えてもらえなかったのかな?
逆にたとえば俺が酉つけてたら回答も提言もそして暴言も割と あるわけだが、それはそれでちょっとやだなあ
コテや酉つきの回答者のウザさは異常
>>179 #include <stdio.h>
void printrev(char str[])
{
char *p = str;
while(*p) p++;
while(p-- > str) putchar(*p);
}
int main(void)
{
int i = 0, c;
char str[256];
while((c = getchar())!=EOF) {
str[i++] = c;
if(c=='\n') break;
}
str[i] = '\0';
printrev(str);
return 0;
}
195 :
デフォルトの名無しさん :2008/06/11(水) 00:30:24
>>193 そんなこと関係なくウザイ奴は一生ウザイ。
言動や行動に性格、人間性が露呈していることに気づかず
指摘されると指摘してきた奴を執拗に罵倒して自分を正当化できると
勘違いしているから、その他の周りからも嫌われているって気づいてないんだよ
198 :
179 :2008/06/11(水) 00:42:39
>>194 回答ありがとうございます!
ただ、
7行目の while(p-- > str)
13行目の char str[256];
の意味がよくわからないのですが、よかったら説明いただけないでしょうか。
>>195 128や130のどこが気に入らないのか具体的に。
もしかして一行文字列読み込む度にそれを逆順にするとか?
200 :
デフォルトの名無しさん :2008/06/11(水) 00:47:49
>>198 char str[256]は単に配列。
strは変数名で特別な意味があるわけじゃない。
while(p-- > str) は
while(p > str) {
p--;
と同じこと。
pは最初文字列終端の'\0'のアドレスになってるからそこから一文字分前に移動する。
そこから順番に一文字ずつ前に移動して表示、
最後はp[0](元の文字列の先頭)を表示してループから抜ける。
202 :
デフォルトの名無しさん :2008/06/11(水) 00:57:57
203 :
200 :2008/06/11(水) 00:58:35
193 名前:デフォルトの名無しさん 投稿日:2008/06/10(火) 23:57:39 コテや酉つきの回答者のウザさは異常 ↑いちいち自分の不満をたらたら漏らす、場違い野郎がうざいんだが。 自己紹介って返す奴は、自分の素性をどんぴしゃで当てられて 必死になっているのを隠さずにはいられないくらい動揺している証拠。
>>165 #include<stdio.h>
#include<stdlib.h>
#define SRC_FILE "test.txt"
#define DST_FILE "sample.txt"
int main()
{
FILE *fs, *fd;
long size, i;
char *buf;
if((fs = fopen(SRC_FILE, "r")) == NULL) {
perror(SRC_FILE);
return 1;
}
if((fd = fopen(DST_FILE, "w")) == NULL) {
fclose(fs);
perror(DST_FILE);
return 1;
}
fseek(fs, 0, SEEK_END);
size = ftell(fs);
fseek(fs, 0, SEEK_SET);
buf = malloc(size);
size = fread(buf, 1, size, fs);
for(i = size - 1; i >= 0; i --)
fputc(buf[i], fd);
free(buf);
fclose(fd);
fclose(fs);
return 0;
}
>>205 GJ。ちと自分なりに突っ込み。
int main(void)
fseek(fs, 0L, SEEK_END); < 特に必要ないがlong型ということで
fseek(fs, 0L, SEEK_SET); < 0ではあるが後ろにLを
buf = (char*)malloc(size * sizeof(char)); < キャストと念のために型のサイズを
余談だが、1文字2バイトの全角文字には非対応やね。質問者はどこまで
要求しているのかはっきりせぬが。
型変換あるんだから蛇足だろ
208 :
デフォルトの名無しさん :2008/06/11(水) 02:08:29
>>207 知ったか無知を露呈しなくて良いぞ、ろくにソースも書かずに
無駄口を叩くバカは。ちなみに、蛇足でもないから。
たまたま問題の無い例を用いて否定すると、墓穴掘るぞ。
他人のソースにいらんもんを付け足すほうがアホだろ。
テキストファイルであると暗黙的に仮定されてる。 バイナリファイルとしての逆順とはやはり微妙に違うよな 元ファイルの最初の行が改行されてると、出力ファイルは先頭が空行になるのは何だかな....で、ちょっと書いてみた ygguB .kcehC rorrE oN tfarD// srotcarahc 5904 revo erom evah ton od "txt.tset" fo senil hcae demussA// >h.oidts< edulcni# {)(niam tni ;s*,]6904[fub rahc;tuo*,ni* ELIF ;)"w","txt.elpmas"(nepof=tuo;)"r" ,"txt.tset" (nepof=ni ;0=]0[fub {))ni(foef!(elihw {) )ni,5904,]1[fub&)*rahc((stegf=s (fi {)s*(elihw ;kaerb) )31==s*(||)01==s*( (fi ;++s } ;--s)s*(fi };))--s(*,"c%",tuo(ftnirpf{)s*(elihw ;)"n¥",tuo(ftnirpf esle} ;kaerb } ;)tuo(esolcf;)ni(esolcf ;0 nruter }
>>210 動いているものには触るなっていうタイプですか?
リファクタリングとか理解できない人に多いよね。
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 1!〜53!の階乗値を右揃えで出力せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 明日正午まで [5] その他の制限: 各機能(計算処理や出力等)毎に関数に分ける事。 助けてください。お願いします。
>>214 ほらよ。どうやれば省略しているところを作れるかは自分で考えな。
#include <stdio.h>
char *f[] = {
"1",
"2",
"6",
/* 47 行省略 */
"1551118753287382280224243016469303211063259720016986112000000000000",
"80658175170943878571660636856403766975289505440883277824000000000000",
"4274883284060025564298013753389399649690343788366813724672000000000000",
};
int
main()
{
int i;
for (i = 0; i < 53; i++) {
printf("%70s\n", f[i]);
}
return 0;
}
暇すぎるw
>>214 #include <stdio.h>
int main(void)
{
int i, j, figure = 0, fac[53][128] = {0};
fac[0][0] = 1;
for(i=1; i<53; i++) {
for(j=0; j<=figure; j++) {
fac[i][j] += fac[i-1][j] * (i + 1);
if(fac[i][j] >= 10) {
fac[i][j+1] += fac[i][j] / 10;
fac[i][j] %= 10;
if(j==figure) figure++;
}
}
}
for(i=0; i<53; i++) {
for(j=figure; fac[i][j]==0; j--) putchar(' ');
for(; j>=0; j--) printf("%d", fac[i][j]);
putchar('\n');
}
return 0;
}
219 :
ルート :2008/06/11(水) 10:19:05
220 :
デフォルトの名無しさん :2008/06/11(水) 10:35:07
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 3より大きく、入力された上限の数未満の全ての自然数かつ非素数について、3で割り切れるものは無視し、3で割った余りが1のものは加算し、余りが2のものは減算して合計を求めよ 次のように表示する. Input Upper Limit: 11 [Enter] Answer is: 6 [3] 環境 [3.1] OS: Windows Vista [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 明日の正午まで [5] その他の制限:特になし お願いします><
[1]プログラミング基礎 [2] #include <stdio.h> int main(void) { FILE *file; file = fopen("test.txt","w"); fclose(file); return 0; } このプログラムを実行すると、test.txtという名前のファイルが作成される。 では、text.txtはどこに作成されるか答えよ。 [3-1]windows [3-2]gcc [3-3]C言語 [4]今日中 [5]結構ユーモラスで意地悪な問題が好きな先生なので 何かしらのひっかけがあるかもしれません よろしくお願いします
223 :
ルート :2008/06/11(水) 13:40:05
224 :
デフォルトの名無しさん :2008/06/11(水) 14:38:06
[1] C言語実習 [2] test.txtから文字列を読み込み、 大文字だけを画面に表示するプログラムを作成せよ。 [3] [3.1] Windows [3.2] cisual stadio .NET2003 [3.3] 言語:C [4] 期限:今日中 全くの初心者なので、なるべく簡単なコードで お願いします。
>>220 #include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j, n, sum = 0;
char *sieve;
printf("Input Upper Limit:");
scanf("%d", &n);
sieve = malloc(sizeof(int) * n);
for(i=0; i<n; i++) sieve[i] = 0;
for(i=4; i<n; i+=2) sieve[i] = 1;
for(i=3; i * i <= n; i+=2) {
if(!sieve[i]) {
for(j=i*i; j<n; j+=i) sieve[j] = 1;
}
}
for(i=4; i<n; i+=3) if(sieve[i]) sum += i;
for(i=5; i<n; i+=3) if(sieve[i]) sum -= i;
printf("Answer is : %d\n", sum);
free(sieve);
return 0;
}
>>224 #include <stdio.h>
int main(void)
{
int ch;
FILE *fp;
if((fp=fopen("test.txt", "r"))==NULL) return 0;
while((ch=fgetc(fp))!=EOF) if('A'<=ch && ch <='Z') putchar(ch);
fclose(fp);
return 0;
}
228 :
デフォルトの名無しさん :2008/06/11(水) 15:47:47
229 :
224です :2008/06/11(水) 16:00:00
230 :
デフォルトの名無しさん :2008/06/11(水) 16:32:44
【質問テンプレ】
[1] 授業単元:C言語演習1
[2] 問題文
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6859.txt 上記をもとに親プロセスがキーボードから入力した行をパイプで
子プロセスに標準出力ファイルとして送り、子プロセスは標準入力から受けとってスクリーンに
エコーバックするようなプログラムを作れ。
ヒント:dup2(fd[1],fileno(stdout)), fgets(line, MAXLINE, stdin), fputs(....)
(親) (子)
キーボード-->| stdin stdout| ---> |stdin stdout|---->ディスプレ
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C言語)
[4] 期限: (6月16日)
[5] その他の制限:上記のURLのプログラムを元によろしくお願いします。
よろしくおねがいします
>>230 #include <stdio.h>
void readdata(int *x, int *y) {
printf("input integers (x y): ");
scanf("%d%d", x, y);
}
void calculate(int x, int y, int *wa, int *sa, int *seki, int *sho, int *joyo)
{
*wa = x + y;
*sa = x - y;
*seki = x * y;
*sho = x / y;
*joyo = x % y;
}
void printresult(int x, int y, int wa, int sa, int seki, int sho, int joyo) {
printf("%d + %d = %d\n", x, y, wa);
printf("%d - %d = %d\n", x, y, sa);
printf("%d * %d = %d\n", x, y, seki);
printf("%d / %d = %d\n", x, y, sho);
printf("%d %% %d = %d\n", x, y, joyo); /* '%'の出力*/
}
int main(void)
{
int x, y, wa, sa, seki, sho, joyo;
readdata(&x, &y);
calculate(x, y, &wa, &sa, &seki, &sho, &joyo);
printresult(x, y, wa, sa, seki, sho, joyo);
return 0;
}
032>> >h.oidts< edulcni# { )y* tni ,x* tni(ataddaer diov ;)" :)y x( sregetni tupni"(ftnirp ;)y ,x ,"d%d%"(fnacs } )oyoj* tni ,ohs* tni ,ikes* tni ,as* tni ,aw* tni ,y tni ,x tni(etaluclac diov { ;y + x = aw* ;y - x = as* ;y * x = ikes* ;y / x = ohs* ;y % x = oyoj* } { )oyoj tni ,ohs tni ,ikes tni ,as tni ,aw tni ,y tni ,x tni(tlusertnirp diov ;)aw ,y ,x ,"n¥d% = d% + d%"(ftnirp ;)as ,y ,x ,"n¥d% = d% - d%"(ftnirp ;)ikes ,y ,x ,"n¥d% = d% * d%"(ftnirp ;)ohs ,y ,x ,"n¥d% = d% / d%"(ftnirp /*ヘ熔称〓'%' */ ;)oyoj ,y ,x ,"n¥d% = d% %% d%"(ftnirp } )diov(niam tni { ;oyoj ,ohs ,ikes ,as ,aw ,y ,x tni ;)y& ,x&(ataddaer ;)oyoj& ,ohs& ,ikes& ,as& ,aw& ,y ,x(etaluclac ;)oyoj ,ohs ,ikes ,as ,aw ,y ,x(tlusertnirp ;0 nruter }
234 :
デフォルトの名無しさん :2008/06/11(水) 17:38:20
初めまして。 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): テキストファイルに保存された改行で区切られた整数を読み込んで、 その平均値を計算し、結果をファイルに保存することのできるプログラムを作成せよ。 データ数は最大1000個まで計算できるようにする。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:C [3.3] 言語:C言語 [4] 期限:2008年06月12日まで さっぱりわかりませんでした。宜しくお願いします。
1] 授業単元: 計算機システム
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6861.txt 上記を元に,システムコールalarm とpause を使用してsleep コマンドと同等の働きをするコマンドmysleep を
作って下さい.
Ctrl-c(Interrupt)、Ctrl-z(Suspend) に反応しないようにしてください.途中終了はCtrl-Y=(Quit)
のみとし,“User quit” といったメッセージと残り時間を表示させてください.
• ヒント: 対処すべきシグナルは4 種類,SIGINT,SIGTSTP,SIGALRM,SIGQUIT です.
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] c
[4] 期限: 6月11日中
[5] その他の制限: 上のtxtを元にしていただけたら、他は特にありません。
どうかよろしくお願いします。
236 :
デフォルトの名無しさん :2008/06/11(水) 18:02:15
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):()
クイックソートにより配列をソートするプログラムを作れ
http://www2.uploda.org/uporg1474868.txt.html ネットを参考に書いたのですが、中途半端にしかソートされません
どこが違うのか指摘お願いします
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008/6/3まで
[5] その他の制限: とくになし
>>234 #include<stdio.h>
int main(void){
char *filename="data.txt";
FILE *fp;
int i, data;
double average=0.0;
if(!(fp=fopen(filename, "r"))) return 1;
for(i=1;i<=1000;i++){
if(fscanf(fp, "%d", &data)!=1) break;
average=(average*(i-1)+data)/i;
}
printf("%f\n", average);
return 0;
}
>>242 一々平均計算しなおすのはどうかと思うぜ。
【質問テンプレ】 [1] 授業単元:情報ネットワーク論 [2] 問題文(含コード&リンク): 基数変換プログラムを作成しなさい。 「元:2〜16進数(選択)→変換先:2〜16進数(選択)」 という基数の指定ができるようにすること [3] 環境 [3.1] OS:Window [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:6月19日まで [5] その他の制限:基数変換を行う関数や外部プログラム等を用いてはいけない プログラミング類はやらないと言われていたのに出てしまいお手上げです よろしくお願いします
>>240 1.
#include <stdio.h>
int chkmatch(char *t1, char *t2)
{
while(*t2) if(*t1++!=*t2++) return 0;
return 1;
}
int main(void)
{
char t1[256], t2[256], *p;
scanf("%s", t1);
scanf("%s", t2);
for(p=t1; *p; p++) if(chkmatch(p, t2)) break;
printf("%s", *p ? "yes" : "no");
return 0;
}
>>240 2.
#include <stdio.h>
int chkmatch(char *t1, char *t2){
while(*t2) if(*t1++!=*t2++) return 0;
return 1;
}
char *findstr(char *t1, char *t2){
while(*t1) {
if(chkmatch(t1, t2)==1) return t1;
t1++;
}
return NULL;
}
int main(void){
char *p, *q, *tag, t1[256], t2[256];
scanf("%s%s", t1, t2);
p = t1;
while(*p) {
tag = findstr(p, t2);
if(tag == NULL) {
while(*p++) putchar(' ');
break;
}
while(p!=tag) {
putchar(' ');
p++;
}
for(q=t2; *q; q++, p++) putchar('^');
}
return 0;
}
>>240 3.
#include <stdio.h>
void swapmax(int *data, int num)
{
int temp, i, max_indx = 0;
for(i=1; i<num; i++) if(data[i] > data[max_indx]) max_indx = i;
temp = data[0];
data[0] = data[max_indx];
data[max_indx] = temp;
}
int main(void)
{
int data[10], i, n;
scanf("%d", &n);
for(i=0; i<n; i++) scanf("%d", data + i);
swapmax(data, n);
for(i=0; i<n-1; i++) printf("%d ", data[i]);
printf("%d", data[i]);
return 0;
}
>>245 文字列を整数に
int my_strtol(char* str, int base) {
int l, val;
l = 0;
while (*str) {
if (*str >= '0' && *str <= '9') {
val = *str - '0';
}
else if (*str >= 'A' && *str <= 'F') {
val = *str - 'A' + 10;
}
else if (*str >= 'a' && *str <= 'f') {
val = *str - 'a' + 10;
}
// 16進数以外の文字が出たらそれまでの数値を返す
else {
return l;
}
// 基数以上の数値が出たらそれまでの数値を返す
if (val >= base) {
return l;
}
l *= base;
l += val;
str++;
}
return l;
}
>>245 整数を文字列に
int my_ltostr(int l, int base, char *str, int len) {
int val, mod, i;
val = l;
i = 0;
// 桁数を求める
while (val) {
val /= base;
i++;
}
// 文字数オーバー
if (i > len) {
return -1;
}
str[i + 1] = '\0';
for (; i >= 0; i--) {
mod = l % base;
if (mod >=0 && mod <= 9) {
str[i] = mod + '0';
}
else if (mod >= 10 && mod <= 15) {
str[i] = mod - 10 + 'A';
}
l /= base;
}
return 0;
}
うpロダ使え
【質問テンプレ】
[1] 授業単元:自習
[2] 問題文(含コード&リンク):
グレースケール化した画像の0〜3次までのモーメントMpqを求めたいです。
Mpq = ΣΣ((x-xx)^p)*((y-yy)^q)*f(x,y)
xx = M10/M00 = ΣΣx*f(x,y) / ΣΣf(x,y)
yy = M01/M00 = ΣΣy*f(x,y)/ ΣΣf(x,y)
数式の記述はこちらのほうが見やすかったです
http://mikilab.doshisha.ac.jp/dia/research/person/shuto/research/0605/tokutyo.html [3] 環境
[3.1] OS: CentOS5.0
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:6/14
[5] その他の制限: 特になし
使っている画像の種類はpgmです。
よろしくお願いいたします。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):int a[4]={30,15,60,5}を昇降に並び替える。(ポインタ使用) [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 6月11日11:00まで [5] その他の制限: ポインタ・再帰まで学習済み。 関数部分でif文で左右を比較し、whileかfor文を用いて繰り返すことはわかったのですが、どう書いていいかわかりません。お願いします。
>>254 #include <stdio.h>
#include <stdlib.h>
static int cmp(const void*a, const void*b) {
return *(int*)a < *(int*)b ? -1: *(int*)a > *(int*)b ? 1 : 0;
}
int main(void) {
int a[4] = {30, 15, 60, 5};
qsort(a, sizeof a/sizeof *a, sizeof *a, (int(*)(const void*, const void*))cmp);
return 0;
}
257 :
デフォルトの名無しさん :2008/06/11(水) 21:51:11
1] 授業単元:C言語 [2] 問題文(含コード&リンク):西暦yy年mm月dd日と(文字には1から12の数字が入る)入力するとその日の昨日の日付と明日の日付 を出力するプログラムをつくれ ただし閏年については以下のプログラムを使うこと int isleap(int year) { return (year % 4 == 0 && year % 100 != 0 || year % 400 = 0); } [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限: 来週まで [5] その他の制限: swich文は使わない方向でお願いします
260 :
257 :2008/06/11(水) 21:54:11
間違えました…… 閏年については以下のプログラムを使うこと→うるう年は以下の関数で判定すること
[1] 授業単元:C言語入門 [2] 問題文: 「キーボードから異なる実数を3つ入力し、大きい順に3つの値を 表示させるプログラム」をswitch文を用いて作成せよ。 「キーボードから数値を1つ入力し、実数か整数か自然数か判定し、 当てはまるものすべてを表示するプログラムを作成しなさい」 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 明朝7:00まで お願い致します。
>>261 適当
#include<stdio.h>
int main()
{
double a[3], t;
int i, j;
for(i = 0; i < 3; i ++)
scanf("%lf", a+i);
for(i = 0; i < 3; i ++)
for(j = i + 1; j < 3; j ++)
if(a[i] < a[j]) {
t = a[i]; a[i] = a[j]; a[j] = t;
}
for(i = 0; i < 3; i ++)
printf("%g\n", a[i]);
return 0;
}
-----------------------------------
#include<stdio.h>
#include<math.h>
int main()
{
double a, b;
scanf("%lf", &a);
printf("%gは実数です。\n", a);
if(modf(a, &b) == 0) {
printf("%gは整数です。\n", a);
if(b > 0.5)
printf("%gは自然数です。\n", a);
}
return 0;
}
マジでうpロダ使え・・・
>>261 携帯からなんで1のヒントだけ
switch((a>b)+(b>c)*2+(c>a)*4)
>>260 >>257 return (year % 4 == 0 && year % 100 != 0 || year % 400 = 0);
明らかに括弧の位置と、 year%400 == 0 の部分が間違っているんで訂正
267 :
261 :2008/06/11(水) 23:21:54
>>264 switchの中がそんな事に・・・どうなるのか見当がつかないです
>>259 画像処理のことはあまりわからんので、ちょっと質問。
・グレースケールの画像を使うと書いてあるが、読み込んだRGBの値がバラバラの場合、輝度はRGBの平均値でおk?
・ヒストグラムの形式は何でもいい?例えば、N=8だったらこんな感じ?
0: *****
32: ************
64: *******
96: ********************
128: ***************************
160: ***************
192: ****
224: **
269 :
デフォルトの名無しさん :2008/06/11(水) 23:41:30
[1] 授業単元:プログラミング基礎 [2] 5人の学生の3教科(国語・数学・英語)の点数を2次元配列を用いて次の二つ の処理を実行するプログラムを作成せよ @科目別の最高点を求める A各学生の平均点を求める [3] 環境 [3.1] OS:Windows vista [3.2] コンパイラ名とバージョン: borland5.5.1 [3.3] 言語:C [4] 期限: 2008年6月12日中 [5] その他の制限: 特になし よろしくお願いします
>>268 自分がいまいちわかってないので自信がないのですが
グレースケール画像の各成分の輝度値を量子化する以外は
平均値をとるなどの指示はないです。
ヒストグラムの方は後でエクセルで処理をするので
値をテキストファイルに保存できればいいです。
>>253 pgm形式、rawとascii、2つのモードがあるですが。両方対応ですか?
272 :
257 :2008/06/12(木) 00:13:26
274 :
デフォルトの名無しさん :2008/06/12(木) 00:48:23
>>228 勘違いしていたのでもう一度書き込みします。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
1.0/1による8桁の2つの2進数入力に対して,それらの和を2進数表現で求め,その2進数表現を出力せよ.
このとき,2ビットの論理和,論理積,排他的論理和を求める関数,および,これらを用いて2進数1桁の加算を行う全加算器の機能を関数で実現すること.
なお,確認を容易にするため,入力と出力の各2進数に対する10進数表現も出力すること.
さらに2の補数を用いて負の数も扱えるように拡張せよ.
2.2つの2進数の差を求めるプログラムを作成せよ.
3.任意の(変数や定数で指定した)桁数の2進数を扱えるようにせよ.
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C++
[4] 期限:2008年06月11日まで
[5] その他の制限:1については 2の補数を用いて負の数も扱えるように拡張する前までは作ることができたのでうpしておきます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6853.txt よろしくお願いします。
276 :
デフォルトの名無しさん :2008/06/12(木) 01:15:08
>>274 です。
[4] 期限:2008年06月12日までですが最終16日まで大丈夫です。
えっ?クソアッー!は両方一致、すなわち a==b のとき 0 を返し 一致しない場合は 1 を返せばおk、だったかと。
>>239 釣りっぽい気もするけど、とりあえずtyuuouの後半が間違ってんじゃん
>>281 あぁ、あと free してなかった、すまそ。
>>283 問題文上部を理解することのなんと困難なことか!
[1] 授業単元:プログラミング技術 [2] 問題文(含コード&リンク): 文字列を反転させて表示するプログラムを作成せよ。 ここでの”反転”とは例えば”Program”という文字列を入力したら ”margorP”と出力するものである。 (実行例) 文字列を入力せよ:Program 反転した文字列:margorP 単純な配列の並び替えでOKです、文字の長さを調べるstrlenの使用可。 ただし終端文字をどのように扱うかは注意。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限:本日6/12 午後1時までにお願いします。 当方strlenで文字列カウントして、その後どうすれば文字列を反転させられるのかが分かりません。
>>283 どうすりゃいいの
input()をメンバ関数で持っていいの?
いいよ!
>>279 参考にさせてもらってどうにかできました!
本当にありがとうございます〜
助かりました
>>288 ???
strlenも使ってないし、分からない関数だらけでC言語なんでしょうか?
#include <stdio.h> int main(void) { char *p, str[256]; printf("文字列を入力せよ:"); scanf("%s", str); for(p=str; *p; p++); printf("反転した文字列:"); while(p-- > str) putchar(*p); return 0; }
>>210 > いらんもんを付け足すほうがアホだろ。
勝手にお前が要らんって思っているだけで、本当は必要なものだよw
バーカ、gdgd知ったか無知を晒す前にこのスレに来るな、来ても
発言せずにROMってろ、クズ
>>285 #include <stdio.h>
#include <string.h>
int main(void)
{
char buf[80], t;
int i, len;
printf("文字列を入力せよ:");
gets(buf);
len = strlen(buf);
for (i = 0; i < len / 2; i++)
t = buf[i], buf[i] = buf[len - i - 1], buf[len - i - 1] = t;
printf("反転した文字列:%s\n", buf);
return 0;
}
Cには暗黙の型変換があるからキャストする必要はない。 sizeof(char)は1であるので省略可能。 どちらもあってもなくても問題はない。
>>210 ソースも書かない、知ったような口を聞いているお前が言うと笑えるw
>>294 > どちらもあってもなくても問題はない。
ダウト。適切か不適切か、考えたら普通はそんなことは言わない。
そもそも、char型が単に1バイトだから、たまたま都合よく通っただけ。
本来あれを正式な場所でやった場合、不適切とされ、どんな言い訳をしても
知らなかったと駄目だしをされるだけだよ。これだから ド素人 は口を閉じてろって
言われるんだよw
>>291 ありがとうございます、ただ*pがどういう意味なのか分からなかったです。
>>293 こちらもありがとうございます、これなら当方にもちゃんと分かります。
とても参考になります。
>>294 キャストの場所を勘違いしていないか?にしても、mallocの前に
記述していないのは大減点。おまけに、そこじゃなくて
fseekの0Lについてでは?これについても問題はなかったにしろ
どちらも問題が無かっただけで、コードとしては完全に不適切。
だから要らん口出しはしない方が、自分が無知、バカだと露呈せずに済むよw
関数へ与える値が、型を宣言した変数の識別子ではなく 定数という点で、long型の変数に引き渡すことになっているため ほとんどの資料には後ろにLを記述しているものが見られるよ。 中には書いてないものもあるが、符号無しでUをつけるように いくら暗黙のキャストがあろうが、適切なコードに対して 蛇足 なんて知ったかぶるからバカにされるんだよ。そんな知ったかが 適切な記述を蛇足って言うなら、そいつは本当に必要なものに対しても 蛇足と思い込んでいるだろうね。これだから視野の狭い奴は相手にならねー
なんでこんな時間に蒸し返してまで顔真っ赤なんだろ
302 :
デフォルトの名無しさん :2008/06/12(木) 04:49:44
蛇足でもないのにアホとか、発言したがために無知を晒したアホが
言うと笑えねーな・・・少なくとも
>>210 はプログラマには向いてない。
些細なことでイラついて、ムッキーポッポーで、業界に入っても
淘汰されて下手すりゃ排除されるよ。あぁ恐ろしや恐ろしや。
さすがにpowに渡すからってループ変数をdoubleにしたキチガイは言うことが違うw
ループ変数がdoubleでも小数点以下を使わなければ 桁落ち誤差が累積する事はない
円の中心に原点をおくと、格子点はi,jを整数として座標(i,j)で表される。(i,j)が円環に含まれる場合に1,含まれない場合に0を返却する関数 is_inrarge(double r, int i, int j) を作成し というところまでを自分でr、i、jを入力する方法でやって #include <stdio.h> #include<math.h> #include<stdlib.h> int main(void) { int r,i,j; printf("r,i,j ="); scanf("%d,%d,%d", &r,&i,&j); printf("%d,%d,%d \n",r,i,j); inrange(); return 0; } int inrange(double r,int i, int j) { double o,p,q; o=r*r; p=(i*i+j*j); q=(r+1)*(r+1); if (q >= p && p>o){ printf("1"); }else{ printf("0"); } } ここまでやって5時間かけてもどうにもうまくいきません。 vista vc05ですけど関係ないような気もします。 誰か教えてください。
途中の↓はどうにも行かなくて確認で入れてみたら 代入した直後の数字とは別の数字が出ます。 printf("%d,%d,%d \n",r,i,j); わけがわかりません
>>307 //inrange()
としてもう一度確かめてみそ
[1] 授業単元: プログラミング技術V [2] 問題文(含コード&リンク): 任意の文字列を配列に読み込み、その中に出てくる特定の文字列を指定した文字列に置き換えるプログラムを作成せよ。 (実行例) 文字列を入力せよ : kadai no teisyutukigen ha mamore 置き換え元を入力せよ : kadai 置き換え後を入力せよ : report 結果 : report no teisyutukigen ha mamore [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C言語 [4] 期限: 本日午後2時までにお願いします。 [5] その他の制限: 空白ごと読み込む方法はgetchar命令、もしくはfgets命令を用いるとよい。
>>305 pow関数にdouble渡してカウンタにしてたってーのは知らないけど
情報落ちも考慮するとdoubleは異常
311 :
デフォルトの名無しさん :2008/06/12(木) 06:01:42
>>309 入力:111
置き換え元:11
置き換え後:aa
結果:aa1
結果:1aa
どっち?
double d=(double)10000000000000,e=(double)0.0; while( e<d ) e+=(double)1.0; このコードは停止するか?
>>311 最初に見つかった方をするようにお願いします。
結果:aa1
>>304 お前が相当な馬鹿だということが分かった・・・っつか、お前の言っていることって
言わなきゃ良いことばかりだよ?かなりあほだな・・・進路を変えろ、基地外
>>306 入力するとき,で区切って入力してないってオチじゃない?
>>316 #include <stdio.h>
int my_tolower(int ch)
{
if('A'<=ch && ch<='Z') ch += ('a' - 'A');
return ch;
}
int main(void)
{
char str[256];
int i, len;
scanf("%s", str);
for(len=0; str[len]; len++);
printf("文字列の長さ:%d\n", len);
for(i=0; i<len; i++) str[i] = my_tolower(str[i]);
printf("大文字を小文字に変換した文字列:%s\n", str);
for(i=0; i<len / 2; i++) if(str[i]!=str[len-1-i]) break;
if(i==len/2) printf("回文です\n");
else printf("回文ではありません\n");
return 0;
}
>>309 文字列を複製する関数:strcpy(str1,str2,n)
文字列の長さを返すかんすう:strlen(str1)
文字列をn文字比較する関数:strncmp(str1,str2,n)
文字列str2をstr1のあとの連結する関数:strcat(str1,str2)
を使うなど、このレベルでプログラムを組んでいただけると助かります。
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
PNMという画像フォーマットを用いるとprint文で文字コードを出力することで
画像が作成できる。
(説明例:
http://a-gamyl.hp.infoseek.co.jp/Clang/pnm_read.html )
これを用いて任意の画像を作成する。2次元の配列変数x,y座標を持つ平面に見立てて
画像を構成することが可能である。例えば画像の大きさ256x256の大きさとして
中央の(128,128)の場所に赤い点をひとつだけ打つには以下のようなプログラムになる。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6879.txt 以下のように直接出力してみよう。
$ cc en5-3.c
$ ./a.out > test.ppm
出来上がったtest.ppmというファイルをファイルブラウザで開いてみると
中央に赤い点が打たれているのが分かる。どのようなデータが書き込まれているかは
プログラムの最後のfor文を見ていただきたい。
(課題)
・sin派を描いた画像を作成するプログラムに変更せよ。
・円を描いた画像を作成するプログラムに変更せよ。
・うずまきを描いた画像を作成するプログラムに変更せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C言語
[4] 期限:無理を承知で後日6/12 午後2時までにお願いします。
321 :
デフォルトの名無しさん :2008/06/12(木) 09:03:24
>>206 の老婆心
つまり、処理系によって、ちゃんと解釈してくれないよ
という忠告は
小さな親切余計なお世話
というのが
>>207 で女々しい口喧嘩を繰り返すと。
要するにだ、207がちゃんとキャストをするなりしてコードを書いて
206がそれをハンディコンパイルすればそれで済む話
(できれば207がコードを実行すれば尚良い)
>処理系によって、ちゃんと解釈してくれないよ Cの規格読み直せw
×小さな親切余計なお世話 ○小さな親切大きなお世話
このスレレベルの「案件」では自分のコンパイラで動作確認さえ取ってさえいれば いいんじゃないのか?(自分のコンパイラで動作確認もとってないのにソース上げるのは論外だけど) どんな処理系でも動作するポータビリティなんて要求されてないし、 仮に要求してきたにせよ宿題丸投げの要求なんて無視していい というか、そんなウィルスコードここに貼るな。
>>324 だからといってなコードは削ればいいという思想もウィルス
326 :
デフォルトの名無しさん :2008/06/12(木) 10:29:39
このスレとしては ×自分のコンパイラ ○テンプレ[3]で指定されている環境 まぁ適当に書いてもだいたい通るから大丈夫だけど
205は適当でも処理系依存でもなくきちんと規格に準拠したコードなのになw
329 :
デフォルトの名無しさん :2008/06/12(木) 10:54:15
ソースコード読むのは人間だろ 解析するのがコンパイラ
>>306 なんだ、まだ5時間しか考えてないのか、というのはヤボですかね。
>>328 >>205 char *buf;
buf = malloc(size);
int main()
あーあ・・
C#は取り扱っていませんか?
>>335 誘導ありがとうございます。
31に書き込んだのでどなたかよろしくお願いします
>>337 int main(void){
QUEUE_TYPE x;
initQueue();
while(1) {
printf("整数を入力して下さい:\n");
scanf("%d",&x);
if (x<0) break;
if(x % 2) {
printf("dequeue() %d : ",dequeue());
printQueue();
}
else {
enqueue(x);
printf("enqueue(%d) : ",x);
printQueue();
}
}
while(!chkEmpty()){
printf("dequeue() %d : ",dequeue());
printQueue();
}
return 0;
}
while(1) { printf("整数を入力して下さい:\n"); scanf("%d",&x); if (x<0) break; if(x % 2) { dequeue(&Q); printQueue(&Q); } else { enqueue(x, &Q); printf("enqueue(%d) : ", x); printQueue(&Q); } }
>>341 ありがとうございます。
しかし、
負の数字-100を入力した場合に、実行例に在るとおりに
dequeue します: キューの中 [ 20 30 ]
dequeue します: キューの中 [ 30 ]
dequeue します: キューの中 [ ]
空状態のためデキューできません。
と表示されないのと、奇数の数字35等を入力した場合にdequeue しますという文字が表示されません。
それとやはり、デキューされた値を表示するのは難しいのでしょうか?
if(x % 2) { dequeue(&Q); printQueue(&Q); } を if(x % 2) { dequeue(&Q); printf("dequeue します: "); printQueue(&Q); } に q=Q.front;以下はそのまま使ってる?
>>343 すいません、q=Q.front;以下も一緒に消してしまっていました。
負の数の時のも無事いけました!
デキューされた値を表示するのは無理でしょうか?
dequeue()関数をいじっていいなら337のみたいに返り値でdequeueしたのを戻せばいいんだけど。
void dequeueを↓に変更 int dequeue(struct queue *Q){ /* デキューする関数 dequeue の定義 */ struct cell *q; /* キューの先頭(デキューされるセル)を指す*q の宣言 */ int x; if(Q->front == NULL) { /* Q->front がNULL(キューが空状態)であれば */ printf("空状態のためデキューできません。\n"); /* 左記のメッセージを画面に表示して */ exit(1); /* プログラムを終了 */ } else { /* Q->front がNULL(キューが空状態)でなければ */ q=Q->front; /* ポインタ変数*q はキューの先頭を指す */ x=q->element; Q->front = (Q->front)->next; /* キューの先頭(Q->front)を置き換える */ free(q); /* デキューされたセルのメモリを解放 */ } if(Q->front == NULL){ /* Q->front がNULL(キューが空状態)であれば */ Q->rear = NULL; /* キューの初期化 */ } return x; } あとmain()内の dequeue(&Q); printf("dequeue します: "); を printf("dequeue() %d : ",dequeue(&Q)); にすればいけると思う
あれ、dequeueを変えない方が良かったか?
>>347 いいんじゃね?
main()を変えてって指定があるのは337の問題の方だけだし
>>346 ありがとうございました!見事に動作しました
351 :
340 :2008/06/12(木) 18:17:57
何度もすいません、
>>337 と同じ内容を実施するプログラムと書いてあるので、
>偶数(0 を含む)である場合は、その整数をエンキューする。キューがフル状態である場合には、
>その整数をエンキューせず、『enqueue : フル状態のためエンキューできません。』と表示した後、プログラムを終了する。
の部分も付け加えなければいけないと思うのですが、
この部分はどうすればよいのでしょうか?
恐らくmain以外もいじくってよいと思います。。
よろしくお願いします
352 :
309 :2008/06/12(木) 18:24:29
>>351 >>340 の場合は、要素が入る度にmallocでqueueのサイズを増やしてるから、
キューがフルである状態というのがそもそもない。
だからその部分は必要ないはず。
まあ、もしもそれを分かっていて、mallocするメモリが存在しなかった場合の話をしているなら、
enqueue内の
p=(struct cell *)malloc(sizeof(struct cell)); /* エンキューするセルを指すポインタ変数*p の獲得 */
を
if((p=(struct cell *)malloc(sizeof(struct cell)))==NULL){
printf("enqueue : フル状態のためエンキューできません。\n");
exit(1);
}
とすればおk
354 :
340 :2008/06/12(木) 18:30:09
>>353 なるほど、そうなのですか!無知な発言申し訳ないです。
本当に助かりました
>>352 どれがわかんないの?
int main(void)
{
//文字列入力
//置き換えられる文字入力
//その文字列が最初に入力した文章ないにあるかチェック
//無いときの処理
//置き換える文字列入力
//置き換え前文字列表示
//置き換え処理
//置き換え後文字列表示
return(0);
}
[1] 授業単元:C++プログラミング [2] 3つの整数を入力し、入力値を昇順に入れ替える処理を作成する。 ソート処理は関数を使って作成し、処理結果は関数の外で行う。 ソート関数は引数がポインタ、参照の2種類の関数をオーバーロードで作成する 出力イメージ: "整数を3つ入力しなさい" "入力した値は15,1,12" "昇順に並び替えると1,12,15" [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C++ [4] 期限:6月14日 [5] その他の制限:どうぞ宜しくお願いします
361 :
309 :2008/06/13(金) 01:22:57
>>359 ・指定した文字列が含まれているか判定
・無いときの処理
・置き換え方
特に置き換える際は、どうやって文字を置き換えているのかさっぱり分からないです。
自分で分からないものを煮詰めても、まったくす進まないので、丸投げで全部作っていただきたく思います。
>>309 #include <stdio.h>
#include <string.h>
#define BUFF_SIZE 1024
void ex(char *dest, char *src,char *a,char *b){
while(*src!='\0'){
if(strncmp(src,a,strlen(a))==0){
strncpy(dest,b,strlen(b));
src+=strlen(a);
dest+=strlen(b);
}
else
*dest++=*src++;
}
*dest='\0';
}
int main( void )
{
char buf[BUFF_SIZE],src[BUFF_SIZE],dest[BUFF_SIZE],a[BUFF_SIZE],b[BUFF_SIZE];
printf("文字列を入力せよ : ");
fgets(buf,BUFF_SIZE,stdin);
sscanf(buf,"%[^\n]",src);
printf("置き換え元を入力せよ : ");
fgets(buf,BUFF_SIZE,stdin);
sscanf(buf,"%[^\n]",a);
printf("置き換え後を入力せよ : ");
fgets(buf,BUFF_SIZE,stdin);
sscanf(buf,"%[^\n]",b);
ex(dest,src,a,b);
printf("結果 : %s\n",dest);
return 0;
}
363 :
362 :2008/06/13(金) 01:30:54
fgetsに引っ付いてくる改行文字除去するのにもっとスマートなやり方があるかもしれんが
優秀な方がつっこんでくれるに期待して
一応
>>311 の通りに置きかえ
\nの置き換えなら if((p=strchar(buf, '\n'))!=NULL) *p = '\0'; ってやるのが一般的か?
strcharじゃなくてstrchrだな
366 :
デフォルトの名無しさん :2008/06/13(金) 02:52:16
[1] 授業単元:C言語 [2] コマンドラインから数字の文字列を入力して、 unsigned intの範囲外の値が入力された場合は エラー文を返す。それ以外は入力値を標準出力する。 例) 入力 → 出力 例1) "4294967295" → 4294967295 例2) "4294967296" → 入力値が範囲外です。 [3] 環境 [3.1] OS:Ubuntu [3.2] コンパイラ名とバージョン:gcc4 [3.3] 言語:C [4] 期限:6月15日 [5] その他の制限:特にありません。isdigit()は使うと思います。 よろしくお願いいたします。
sum1 += (the[i] - mea1[i]) * (the[i] - mea1[i]); sum2 += (the[i] - mea2[i]) * (the[i] - mea2[i]);
>>366 #include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
unsigned int u = ~0;
double d;
if(argc!=2) return 0;
d = atof(argv[1]);
if(d - u > 0) printf("入力値が範囲外です。\n");
else printf("%u", (unsigned int)d);
return 0;
}
2重投稿すみませんorz
>>361 > 文字列をn文字比較する関数:strncmp(str1,str2,n)
を使ってくれといっているのに
> ・指定した文字列が含まれているか判定
が分からないとは。
自分が分からないものを他人に作ってもらって分かったふりして
提出する程度の人だからしょうがないけど。
375 :
366 :2008/06/13(金) 03:29:05
>>371 早速ありがとうございます。
ただ以下の箇所でSIGSEGVが発生してしまいます。
d = atof(argv[1]);
376 :
366 :2008/06/13(金) 03:32:44
char *argvとしていました。申し訳ありません。
377 :
366 :2008/06/13(金) 03:38:31
>>371 0未満の値を入力すると大きな値が出力されてしまいます。
例) -1 → 4294967295
>>377 符号無しが範囲だから、0未満は範囲外として良いん?
379 :
366 :2008/06/13(金) 03:56:17
>>378 0〜4294967295以外はエラーという事でお願いします。
こんな感じでしょうか?
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
unsigned int u = ~0;
double d;
if(argc!=2) return 0;
d = atof(argv[1]);
if(d - u > 0) printf("入力値が範囲外です。\n");
else if(d < 0) printf("入力値が範囲外です。\n");
else printf("%u", (unsigned int)d);
return 0;
}
if(d - u > 0 || d < 0) とすると一つにまとめられるよ
あと小数点を入れられた時はどうすんの?その辺りも教えて
っつか、int型って時点で小数点以下は無視かと。 範囲って言うと・・・どうなん?>質問者 まぁ、切り落としちゃえば良い話だろうけど
>>381 >>382 ここでは小数を想定していないので、
「不正な形式です。」と表示させたいです。
文字列が0〜9の数字で構成されているかチェックする必要が
ありそうです。
エラーの種類は最初に確定しとかないと後出しで条件つけるなって怒られるよ
ほっほっほ、麻呂がクソースを書くでおじゃるから、待ってたもう
入力された文字列が正しい範囲のC言語の意味での符号無し整数を 表しているかどうかは、次の方法を取るべきであろう。 まず、文字に不正な文字が含まれていないか検査する。 これは文字列を先頭からスキャンし、不正な('0'~'9'以外の)文字が 含まれているか否かをチェックし、検出された場合は、エラー出力 して終了する。 4294967295は10桁なので、スキャンが終わった段階で、長さ ??以上あった場合はエラーとしたいが、それは間違いである。 先頭に?が何個継続しているかで、文字列の長さが100あっても 正しく範囲にあるかも知れない。 最初に?ではない文字が出た位置を記憶(これを実質開始位置とする)し、 文字終端の位置と比較して、差を取り、??桁より大きい場合はこの時点 でエラー出力して終了して良い。 以降文字列の開始点が上記実質開始位置であるとして考える。 文字列の長さが?桁未満の場合は、正常終了できる。 ??桁の時が問題であり、先頭の文字が?以下の時は正常数量 ?以上の時はエラー終了とする。 ?桁目を見て、?以下の場合は正常終了、?以上の時はエラー終了する。 ?桁目を見て、?以下の場合は正常終了、?以上の時はエラー終了する。 以降同様の処理を1桁目まで書く。
しまった、flgの設定が不適切だったでおじゃる、ちと直してくるでおまる
>>366 strtoulを使い、エラーチェックすれば簡単。
if (先頭が数字でない || *endがNULでない || errnoがERANGE && 結果がULONG_MAX) 不正な形式です。
longがunsigned intの大きさが異なるなら、これにさらにチェックを加えれば良い。
ライブラリ関数を使わないのであれば、
unsigned int r, s; int i;
for (r = 0, i = 0; s = r * 10 + argv[1][i] - '0'; i++, r = s)
if (r > s || argv[1][i]が数字でない) 不正な形式です。
かな。こちらは自信なし。
不等号の向きが逆だお。
>>390 アッーーー!って、見つけちゃったあなた、罰ゲームとして修正しておまっ
どこが間違ってるか分からないなら素直に教えてくださいって言えよ。
>>394 またお前か・・・態度でバレバレ。桁が同じだったときの
各桁の大小の評価のところだろ。面倒だから後はあんたがやっとけw
教えてくださいって言えよ。 教えてくださいって 教えてくださいって 言えよ。 言えよ。 これはハマるぜ、この程度のことでここまで偉そうに出来るやつって 日ごろ相当つまらないことで恩着せがましい態度で嫌われてんぞw
どこが間違っているか分かっているなら素直に答えてやるよっておっしゃってぇ〜
ミスったら自分で修正しないか?
アルェー、結果がおかしかったから間違っているとだけ言ったけど 本当はコードのどこが間違っているか分かってなかったのかYO!
1時間かけてようやく分かった癖にw
>>398 > どこが間違ってるか分からないなら素直に教えてくださいって言えよ。
って指摘したら指摘した奴が率先して口先だけじゃないってことを
証明するためにも、修正しないか?ウホッ?
ミス指摘されて逆ギレってみっともなさすぎるな
>>400 > 1時間かけてようやく分かった癖にw
そもそも、ソースを書いた本人じゃないし、俺はw
指摘した奴が詳細を把握してないのに、何言ってんだお前?w
どうせ数日前に現れた蛇足野郎だろ?w
あれを蛇足なんて言う程度の低さだから、どうせ口先だけだろ。
一体誰と戦ってるんだw
漢は黙ってソースうp
ここで空気読めない俺がミスを指摘 if(argv[1][i] < uim[i]) break; を追加するだけ。
407 :
デフォルトの名無しさん :2008/06/13(金) 09:12:35
>>366 もうこんなのでいいんじゃないか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 0〜9の文字以外の表現だと不正な値になる unsigned int のパーサ
unsigned int parse(const char *str){
unsigned int u=0;
for(; str!='\0'; str++){ u+=u*10+(*str-'0'); }
return u;
}
int main(int c, char **a){
unsigned int u = parse(a[1]);
char us[11];
sprintf(us, "%u", u);
if(strcmp(us, a[1])!=0) printf("unsigned int の範囲外です");
else printf("%u", u);
}
なにそのコード、ふざけてるの?
>>317 まじだあああああああ
ありがとうございます(つд⊂)エーン
(つд・)∩チラッ
>>407 実行してから貼れよ
>for(; str!='\0'; str++){ u+=u*10+(*str-'0'); }
いくらなんでもこれはひどすぎだろ
>>368 すいません、見落としてました
ピボットのとり方が変わってもソート結果が変わることはないので、
原因はほかにあると思うんですがよろしくお願いします
>>408 ふざけてはないと思う。よく見れば単なるタイプミス
*が抜けてて+が余計についてる。
for(;str !='¥0'...→for(;*str !='¥0'...
u+=u*10...→u=u*10...
貼る時に、インデント付けようと、コピペじゃなく
ブラウザのtextareaに直接タイプしたんじゃなかろうか(想像)
ただし実行して確かめてみたコードだとしても、
>>366 の要求をほぼ満たしてるとは言い切れないと思う。
>>366 は、
>>407 のコードを修正して実行出来たのかな?
414 :
55 :2008/06/13(金) 14:51:43
>>408 コードを書かないくせに、相変わらず茶化しだけの屑か
コードを読めるだけましじゃね?
コードを読めなくても文句は言える コードを書くまで信用するな
そうそう、結果で判断すりゃそれまで。指摘するなら具体的にどこが? 言わないと、かなり印象が悪いぞ。例え間違っているのがわかっていても 何でお前はそれを指摘したか?逆に言い返されると、お前がわかってないだの 茶化すから余計に悪い。
>>415 手持ちのgccでチェックしたが、
[Suma]:~ Asagiri$ ./6894 4199999999
4199999999
[Suma]:~ Asagiri$ ./6894 4200000000
範囲外です。
となった
>>421 >415はstrcmp()の戻り値の仕様を誤解しているらしい。
>>423 否strcmpの仕様がおかしい。1,-1,0のいずれかを返すべき
標準関数の仕様にケチをつけるか・・・だから駄目なんだよ、お前はw
文字同士の差を直接返すほうが、差の正負で1と-1にするより単純だから
>>426 バーカ
ISO/IEC 9899:1999を読んでから言え
>>425 そこの実現例、nはどっから湧いてきたんだ?
>>430 確かに、実装例はおかしいね・・・サイト管理者に聞いてみw
>>430 そう思って strncmp のとこも見に行ったw
柴田望洋さんって日本人の中ではまともな本を書く人なんだが こういう間違いを犯す事もあるんだな
しょっちゅうだろ。
難しいコトする時は誰でも気を付けるけど 簡単なことは気が抜けちゃうんだよ
日本語でおkな出版物はどこにでもあるさ。 映像コンテンツに於いても、映画ではあまりそういうことはないが アニメなんて日本語でおk日本語でおkなものも少なくないw
[1] C [2] 問[1] 1^1+2^2+3^3+4^4+……99^99を1000で割った値を求めよ。 問[2] 1から20までの数すべてで割り切れる最小の正整数を求めよ。 [3] 環境 [3.1] LINUX [3.3] C [4]6月16日 [5]なし 2問も書いて厚かましいかもしれませんが よろしくお願いします
>>437 とりあえず問1だけ
#include <stdio.h>
unsigned int f(unsigned int a,unsigned int b,unsigned int m)
{
/* a^b (mod m) */
unsigned int x=1;
while(b!=0){
if(b%2==0){
a=(a*a)%m;
b=b/2;
}
else{
x=(x*a)%m;
b=b-1;
}
}
return x;
}
int main( void )
{
int i;
int answer=0;
for(i=1;i<=99;i++)
answer=(answer+f(i,i,1000))%1000;
printf("1^1+2^2+3^3+...+99^99≡%d (mod 1000)",answer);
return 0;
}
実行結果:1^1+2^2+3^3+...+99^99≡920 (mod 1000)
a^b ( mod m)の値を返す関数の引数やら色々unsigned int になってるけど
気に入らなかったらこのくらいの計算ならintに変えても大丈夫だろう
というか、答えあってるのかな・・・これ
> 1000で割った値を求めよ。
うはwつって来るわorz
441 :
デフォルトの名無しさん :2008/06/13(金) 18:24:08
>>441 文字列には代入できない。エラーが出た時は常にエラーメッセージをちゃんと読むこと。
strcpy(maxt.name,(p + i)->name);
>>437 問[2]
#include <stdio.h>
int gcm(int a, int b) { return a % b ? gcm(b, a%b) : b; }
int main(void)
{
int i, n = 1;
for(i=2; i<=20; i++) if(n % i) n *= i / gcm(n, i);
printf("%d", n);
return 0;
}
>>442 ありがとうございます!助かりました!
大学の講義でstrcpyは習った事がなかったのですが
この関数以外で簡単に記述する方法があれば教えて下さい
[Fuga]:~ Miyabi$ ./443 232792560 232792560 % 2=0 232792560 % 3=0 232792560 % 4=0 232792560 % 5=0 232792560 % 6=0 232792560 % 7=0 232792560 % 8=0 232792560 % 9=0 232792560 % 10=0 232792560 % 11=0 232792560 % 12=0 232792560 % 13=0 232792560 % 14=0 232792560 % 15=0 232792560 % 16=0 232792560 % 17=0 232792560 % 18=0 232792560 % 19=0 232792560 % 20=0 検算コード入れてみた。すげー。あってるじゃん。検算コード入りソース↓
#include <stdio.h> #define int long long int gcm(int a, int b) { return a % b ? gcm(b, a%b) : b; } #undef int int main(void) #define int long long { int i, n = 1; for(i=2; i<=20; i++) if(n % i) n *= i / gcm(n, i); printf("%lld¥n", n); /*チェック*/ for(i=2;i<=20;i++) printf("%lld % %% lld=%lld¥n",n ,i,n %i); return 0; }
>253です。 >251さん raw形式です。気にかけてくださって有難うございます。
>>445 nを2で割って447のチェック試してみろ
>>437 問1を適当にといてみたら答えがオーバーフローしたw
>>437 1^1+2^2+....+99^99=(恐らく)
371115746176445351701210713361941528546861949073514542015172437236580034634746971244943788132460150776779198800002366059871900041784732217539059306483834977865973576751345853385981719448969027641920
だから1000で割った値は、下3桁を000にしたものが答
ソースはC++だから無意味なんで省略
こういった問題はC/C++の問題としては余りにも不適当。検算のしようがないじゃん。
誰だこんな宿題出したの?
この結果で見る限り
>>438 で使われてる式は合ってるな (ま、当然と言えば当然だが)
多分余りで
>>438 みたいな答えを期待したんじゃないかと思うんだが
>>443 ユークリッドの互除法を使ってるのは分かるんですが
そのプログラムにより何故目的の数値が出てくるのか分からないんですが…
できれば詳しく教えてもらえませんか?本当にすいません
>>454 数学板の質問箱にでも逝って1,2,3,4,5,6,7,8,9,10,...,20の最小公倍数を求める方法を
聞いてくるのが最善かと
1と2の最小公倍数を求める 1と2の最小公倍数と3の最小公倍数を求める 1〜3の最小公倍数と4の最小公倍数を求める ・ ・ 1〜19の最小公倍数と20の最小公倍数を求める
>>438 ありがとうございます
>>452 今日の実技試験でこの問題が出されました
問題にはヒントとしてオーバーフーロー起こすからどうとかこうとか書いてました
>>444 構造体はそのままコピーできる
つまり
maxt.tall = (p + i)->tall;
strcpy(maxt.name, (p + i)->name);
じゃなくて
maxt=p[i];
でいい
>>457 本当に1000で割った値?余りじゃなくて?
>>459 先ほどプリント見たら
余りでした…すいません…
そんなの あ(ん)まり ダッーーーー!
#include <stdio.h> int main(void) { int i, j, rt = 0; for(i=1; i<=99; i++) { int r = 1; for(j=0; j<i; j++) r = (r * i) % 1000; rt += r; if(rt >= 1000) rt -= 1000; } printf("%d\n", rt); return 0; }
1] 授業単元:C言語応用 [2] 問題文:コマンドラインに指定されたディレクトリのファイルに変更があったら、そのファイルをコンソールに 出力するプログラムを作りなさい。(出力:時刻、ファイル名、(新規作成/削除/内容変更/アクセス)) [3] 環境 OS:gcc Linux [4]言語: C [5]その他: system関数などの子プロセスを作成をさせたりすることはしてはならないそうです。
466 :
465 :2008/06/13(金) 22:59:21
すみません。期限は、再来週の水曜日までだそうです。
>>465 変更があったらって、何をもとに判断するん?
[1] 授業単元:プログラム [2] 問題文 以下を逆ポーランド記法を使って答えを求めるプログラムを作成せよ char a[] = "123+*45+*" [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語: C [4] 期限:14日まで [5] その他の制限:関数、配列、などを習いました よろしくお願いします
大変遅くなりましたが、
>>362-363 さんありがとうございます。
今日一日、友人と考えていたのですが、置き換えた文字列が別の文字に化けたりで
結局完成しませんでした。
なので
>>362 さんのコードを是非使わせていただきます。ありがとうございます。
471 :
デフォルトの名無しさん :2008/06/14(土) 00:44:42
[1] 授業単元: プログラミング言語 [2] 問題文(含コード&リンク): 1,文字列に母音(a,i,u,e,o)が何個含まれているかをint型数値として返すような関数VowelNumber()を作成せよ。 また,この関数を使用して,キーボードから入力された文字列に 母音が何個含まれているかを表示するプログラムを作成せよ。 2, (1) ある自然数に対して,その自然数の約数は何個かを関数値として返すような 関数FactorQuantity()を作成せよ。 例として20の場合は{1,2,4,5,10,20}なので個数は6となる。 (2) ある自然数Nの約数の個数が2個だけ(1とNだけ)の場合,Nは素数である。 そこで(1)の関数FactorQuantity()を利用してNが素数がどうかを判定し, Nが素数なら1を返し,素数でなければ0を返す関数Prime()を作成せよ。 (3) (2)の関数Prime()を用いて次のプログラムを作成せよ。 2つの自然数a,bを入力させ(a<bとする),a以上b以下の素数を全て表示するプログラムを作成せよ。 ※ソースファイルは1つのファイルにまとめよ。 [3] 環境 [3.1] OS:Linux [3.3] 言語:C [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) いままで習ったのは、printf,scanf,ループ文,if文,配列,strcat,strcpy,strlen,stricmp,strcmpなどです。まだポインタは習っていません。 解説も少し加えてくれるとありがたいです。 よろしくお願いします。
>>471 2.
#include <stdio.h>
int FactorQuantity(int n)
{
int i, ret = 1;
for(i=1; i<=n/2; i++) if(n % i == 0) ret++;
return ret;
}
int Prime(int n)
{
return FactorQuantity(n) == 2;
}
int main(void)
{
int i, a, b;
scanf("%d%d", &a, &b);
for(i=a; i<=b; i++) if(Prime(i)) printf("%d ", i);
return 0;
}
っつか、マジで。見づらいからうpロダ使えって
474 :
デフォルトの名無しさん :2008/06/14(土) 01:08:01
>>472 ありがとうございました
明日実行してみます
>>476 いちいち反論するお前みたいなバカがうざい
空気読め、引きこもり
>>472 =
>>476 > 自治厨いね
日本語でおk。ここに書き込むのに、{} の位置やら無駄に改行をして
ウザイのが自分だと気づかない痛い自己中だろ・・・
自治でも何でもないだろ・・・まぁ、理解力の無い奴は 身勝手な行動をとるし、そのせいで放置されるんだろうね・・・ 言っても聞かない基地外は、スルー、放置が一番だしな。 どうせ面倒臭いだの、他の奴に先を越されるのが嫌だから 少しでも早くって、必死に書き込んでいるんだろうけどさ・・・ 何か言われると、俺に命令するな!だろ。しかも、罵倒レスをし返す。 孤立した引きこもりが取るお決まりのパターンだな。 だから集団社会の中に入れないんだよ。 頼むから秋葉原で暴れるなよ。昼と夜が逆転した自己中さん。
複数レスにわたる長いプログラムであればうpろだ使えってのはわかるが、 1レスで収まる範囲くらい許して欲しいところ 正直うpろだ使うのが面倒なときもある
7行に収まるなら直接書いていいよ
>>479 いね = 去ね
高校出てれば当然習ってるはずの言葉。
473が余計なこと書かなきゃ荒れないのにな。 いつもうpロダ使えっていっては反論されて大暴れ。
>>485 オマエモナー。
>>487 自己紹介乙。いつもうpロダ使えって注意されてファビョっているのがお前か・・・
>>484 ますます日本語でおk。どこの高校だよ、お前は?w
古文で習うはずなんだが
平成時代に古文を使うってどれだけKYだよ
基礎的な教養に欠けてる人間が何言ってもムダw
>>492 >2 (動ナ四)
>〔補説〕 1 の四段化。近世中期以降の語
>[1] (関西地方で)立ち去る。帰る。
日本語でおkが最近のお気に入りみたいだけど、どんだけ流行に遅れてんだよ
人格障害者だな 華麗にスルーしようぜ どうせこいつ第二の加藤君だから
>>497 > ◆ナ変は現在関西方言で用いられる。また、近世中期以降、四段化して用いられるようにもなった。
>>497 大学名教えてw
教えてくれなかったら脳内大学とみなす
いねを知らなかった馬鹿が入れる大学なんてないだろ
502 :
465 :2008/06/14(土) 02:35:24
>>467 初期状態はすべて新規作成という設定だそうです。つまり起動したら対象のディレクトリのファイルを新規作成
という状態で出力しなければなりません。
プリントを確認したら、フォルダーの中のファイルは10000個以内に制限されるそうですがサブフォルダー
を任意の階層まで含むことはあり得るそうです。
明示されていないので、対象フォルダー以外のフォルダーへの書き込みアクセスは可能なようですが、
この点来週にでも確認したいと思ってます。
>>470 定期的にls -laをsystem()し、一時ファイル(対象ディレクトリ外)にリダイレクト出力し、
直近の同種ファイルリストとの差分で、出力しようかと思いましたが、system()やfork()が使用禁止らしいので
ls -laに相当するものを作らなければならないことは確実でしたが、参考になりました。
ありがとうございます。けれど、残念ながら回答にはなっていない感じです。
おじゃるの時は現代語だのなんだの突っ込みなかったのに いねくらいで荒れるなよ
おじゃる本人だしw
506 :
468 :2008/06/14(土) 02:37:59
>>498 作っていただきありがとうございます
できればポインタを使わずに作っていただきたいのですが
あとまだ初心者なので簡単にお願いします
必死でググってる姿が微笑ましい。
>>501 いねを知っている程度でそこまで詰まらないことが言えるなんて
大学に入学したことがない、かなりレベルの低い知識しかもってないんだw
っつかね、もうお前みたいなことを言い出したら負けだよ。くだらねぇ。
この世に全知全能な奴だけが大学に入学しているわけでもないし、
プログラミングをやっているわけでもない。しかし、なんで知らなかったってことになってるの???
辞書も引いたことがない奴が入れる学校すらないだろうねw
ちゃんと出典を見たか?タイピングミスを無理やりフォローして必死になっている
ようにしか思えんな。みっともないから止めとけ。関西人
509 :
498 :2008/06/14(土) 02:40:45
>> 498 あー、スマン 最初にスタックをchar型で作ってたから /* スタック初期化 */ memset( stack, 0, STACK_SIZE ); を /* スタック初期化 */ memset( stack, 0, sizeof(int) * STACK_SIZE ); に直してくれ
自分に知識が不足してるのに、他人が間違ってると思い込んでバカにするから引っ込みがつかなくなるんだよ。
511 :
468 :2008/06/14(土) 02:41:20
>>498 #include <string.h>
あとこれもなしでできませんか?
はじめて見るので…
>>507 > 必死で
にーーーほーーーんーーーーごーーーーでーーーー おkw
どっちが必死なんだよ、フォローにもならねー古典野郎w
お前はプログラミングなんてやってねーで、古事記でも読んでろや。
現代語を知らない方が痛す
痛すなんて現代語ありませんよ?
515 :
514 :2008/06/14(土) 02:48:42
>>498 0割エラーも判定してないし、コメントもないし、
pushもpopも関数化してないけど
こんなスレで古典で出た言葉を使って、知らなさそうな奴に対して
強がっている場違い、うpロダすら使えない奴が必死すぎて笑え・・・ない・・・
そんなの知らなくても大学に入学できるが、自分は知っていて
敢えてタイピングミスだと茶化してみたら、詰まらないフォローをしててワラタw
素直に認めたら?タイピングミスだって。ほんっと、現代語でおkな時代遅れか・・・
スレタイ読める?読めない?空気読める?読めない?
ttp://jp.youtube.com/watch?v=RIL28wqOQGA お前ってさぁ〜〜〜、数学の授業中に歴史の話でもしてんの?
場違い野郎ってほんっとKYだよな。ぜってー社会じゃ成功しないタイプ。
むしろ、そういう詰まらないことを持ち出して、他人を罵倒、非難するから
余計に周りから無視されて、孤立が原因で失敗するんだろ?
だいたい、こんな時間にこのスレで必死になって、ソースも書かずに
罵倒レスとな?(麻呂風に)
もはや大学にすら入学できなかった奴の妬み、僻みだな。哀れ、チーン。
>>477 str[i] == 'a' が2個あるぞw
3行とは言わないからせめて7行にまとめて
521 :
498 :2008/06/14(土) 02:54:19
>自分は知っていて敢えてタイピングミスだと茶化してみたら 相変わらず完全に論破されると後釣り宣言ですか。 全然進歩してないね。
>>516 あれ?
君の敵は472じゃなかったの?
ソース書いてるじゃん。
>だいたい、こんな時間にこのスレで必死になって、ソースも書かずに罵倒レスとな? >もはや大学にすら入学できなかった奴の妬み、僻みだな。 なんでこいつ追い詰められると自己紹介しちゃうんだろうな。
>>521 どうもです!!
まだ時間があるので自分でもねばってみます
IDの出ない板で煽りあい止めれ
自分が解けない問題が出ると質問者でなく回答者が荒れる 何だか末期的なスレでつね
古典で使われていた 去ぬ を知っているだけで、ここまで 得意気になれる恥ずかしい香具師・・・こんな時間にコーヒーを ディスプレイに吹いちまったじゃねーかよw 知らなかったと勘違いした奴を、勝手な自分基準で蔑む、貶す必死さ・・・ もう終わってるよ・・・。こんなスレで、自分以下の人間を見て安心してんだろ? 頼むから、秋葉原以外の歩行者天国で暴れるなよ。警備は強化されているだろうけど。 ちなみに、自分、高校生のときは10段階評価で平均8.0以上、3年間ほとんど9.0以上で 成績優秀者だったんで、センター試験なんぞ屁でもないものは受けずに 自己推薦で卒業する前の年には、入学する大学は決まってましたから。 理系の学科を専攻、大学生時代も、秀、優ばかりの成績優秀でしたが、何か? 国語の試験もあったけど、去ぬはたまたま試験に出なかったけど、知ってましたが何か? スレが流れちゃうんで、この辺で。コード書けよ、古典で勝負しようとしないでw
>>529 どこの高校なんだ?
どこの大学かもまだ訊いてないけどさ。
通知簿の成績なんてその学校の中での相対評価に過ぎないんだから、
学校のレベルが分からんことには9.0とか優とかいっても何の意味も成さないよ。
鏡見てみたら? お前の書き込みが一番口汚く他人を罵ってるよ。
531は529当てね、わかるとは思うけど
#include<stdio.h> int main ( void ) { printf ( "H" "E" "L" "L" "O" "!" "W" "O" "R" "L" "D" "!" ) ; return ( 0 ) ; }
return(0)はお勧めできない
>>445 バカが他人にケチつけるのは一億年はえーよw
明らかに間違っていると分かっているレスに、何を今さら 亀レスで蒸し返してんだ・・・やべぇ、こいつ歩行者天国に向かうぞ。 誰か阻止してやってくれ。
古典、おk これらをNGワードに加えればすべておk と、今までROMってた自分が言ってみるテスト
>>536 あれあれ?
自分は平気で一日前のを蒸し返すのに、他人には許さないの?
まさか445本人でしたか?
そりゃ恥ずかしくて思わずそう言いたくなるのも分かるよw
>>475 ループの外にbuff[i] = '\0'があるのに、breakする前にもあるのはムダ。
あとVolumeNumber関数間違ってる。
Volumeってw Vowelだぞ、よく見ろw
541 :
231 :2008/06/14(土) 04:35:06
なんか、前にこのスレで自分の間違いを指摘された基地外が ここぞといわんばかりに、自分に対して意見をした奴とは別の奴に 噛み付いているよな・・・キモイ。見えない敵と戦う奴って、恥ずかしいなw
知ったか無知が 蛇足 って言った後、蛇足ではないことを 資料を提示されて言い返されたのがよっぽど悔しかったんだな・・・
発作はおさまったか? 壁のうちならいいけど、人は殴るなよw
行数制限内で完結するならソース書いてよし。
>>1 にも長い時だけうpろだ使えと書いてあるし。
>>543 そんなことどうでもいいから早く大学名とついでに高校名を教えろよw
脳内だから言えませんか〜〜〜w
早く大学名教えろよw
なんか、朝まで必死だなぁ。ちちまわされたいんか、ワレ?
ちちまわすは現代語ではありません
俺は乳を回すほうがいいなあ
>>465 cont =1;
SIGINTを受けたらcontが0になるようハンドラーを仕込んでおく。
fts(3)で対象ディレクトリを開く。
while (cont) {
fts_children(3) でプレインファイルのリストを作成。
前回のリストと比較し、
増えたものは新規作成、
消滅したものは削除、
fts_statp->st_mtimeが変わっていたら内容変更、
fts_statp->atimeが変わっていたらアクセス。
前回のリストを破棄。
今回のリストを前回のリストとして記憶。
(次回のfts_children(3)の呼び出しで今回のリストは破壊されるので注意)
何秒かスリープ。
}
後始末。
でどうかな。
>>493 人間性が崩れているお前が言うなよ・・・
しっかし、去ぬだけでここまで煽れるお前らに脱帽だぜ。
よっぽど暇な奴がこのスレに常駐してんだな。
>>491 具体的にどこがダメか、指摘くらいしたら?口先だけの坊や。
5時間も前のレスに反応するなよw
バカの癖にプライドだけは高いから困りもんだな。 いやバカだからこそか?
>>554 煽られるのは自分が原因だってわかってないの?
560 :
553 :2008/06/14(土) 07:46:02
ごめんなさい。
何か言われると相手を威圧しようと、言い返さないと気が済まない一言居士。 もはや人格どころか人生が狂ってるな、こいつら。だからこんな場所にいても まともなソースが書けねーんだよw
>>231 #include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#define MAXLINE 1024
int main(int argc, char *argv[]){
int fd[2];
char line[MAXLINE];
pid_t pid;
if (pipe(fd)<0) exit(1);
if ((pid=fork())>0) { /*parent process */
close(fd[0]);
dup2(fd[1],fileno(stdout));
close(fd[1]);
fgets(line, MAXLINE, stdin);
fputs(line, stdout);
fflush(stdout);
wait(NULL);
exit(0);
} else{ /*child process */
close(fd[1]);
dup2(fd[0],fileno(stdin));
close(fd[0]);
fgets(line, MAXLINE, stdin);
fputs(line, stdout);
exit(0);
}
}
563 :
465 :2008/06/14(土) 09:19:16
>>553 >>560 そういう方向性ですね。取り敢えずありがとうございます。
問題は2つのファイル情報リストファイル(新旧)の
突き合わせ処理ですね。何かめんどくさそうというか、
やり方を間違えると、激重になってしまう悪寒です
564 :
デフォルトの名無しさん :2008/06/14(土) 10:05:12
[1] 授業単元:プログラミング演習 [2] classを使って行列式を計算する物を作る 足し算、行列同士の掛け算、スカラー倍できるもの [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VisualC++6.0 [3.3] 言語: C++ [4] 期限:6月16日、13時まで
行列式 -> 行列の式?
2次なら簡単そうだけど、行列式としか書いてないからなぁ
>>567 この際、効率性は考えないとして、
小行列式展開すれば簡単だろ。
[1] 授業単元:アルゴリズムとデータ構造 [2] 問題文:動的配列を使ってヒープを実現せよ。ただし、各記憶要素xは整数値をとるものとする。 関数として、空のヒープを生成するcreate(),要素xを挿入するinsert(int x), 最小値を削除してその値を返すdeletmain(),ヒープが空かどうかを判定するempty(), 現在のヒープ内容全体を表示するshow()を用意する。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2008年6月28日まで [5] その他の制限: ポインタはできるだけ使用しないでください よろしくお願いします。
>>278 期限過ぎてますが提出は出来るのでお願いします
>>570 そのソースを修正するの?一からでもいいの?
>>570 insert_sortのj--を分離、それからquickの最後の再帰を
quick(first,first_p);
quick(first_p+1,last);
にすりゃ動くだろ。
ついでにtyuuouとか余分な細かいとことかも直しとけよ。
573 :
デフォルトの名無しさん :2008/06/14(土) 18:10:22
>>567 説明不足ですいません
二次の行列式を計算するやつです
2x2限定でよかったってことか? しねよ
>>574 またお前か、今度はタイピングミスはしなかったかw
482 名前:デフォルトの名無しさん 投稿日:2008/06/14(土) 01:50:32 複数レスにわたる長いプログラムであればうpろだ使えってのはわかるが、 1レスで収まる範囲くらい許して欲しいところ 正直うpろだ使うのが面倒なときもある
なんでそこまでアップローダーにこだわるんだろうな? 質問者でもないんだから他人のコードなんて見る必要ないじゃん。
×アップローダにこだわる ○このスレの流れを懸念している
一々罵倒する方が流れ悪くなる。
586 :
デフォルトの名無しさん :2008/06/14(土) 21:53:06
>>539 > あとVolumeNumber関数間違ってる。
1行目の指摘はともかく、2行目の指摘は
言うからにはどこが間違っているか、具体的に。できるなら訂正も。
指摘無しに間違っているとだけ言うのは論外。
ちなみに、母音の数をカウントした結果はあっているようだが?
>>546 > 長い時だけ
だけ なんて限定はしていないよ。便利って記述はあるが?
にしても、なんで使えって言われているのかわかってないだろ。
質問者がではなく、回答する側だってスレをスクロールさせてみているし
やたらとソースをはりつけられてもスレが長くなってしまうことで、
答えたとしても質問者も回答レスを見つけるのに手間が掛かっているようだが?
答えたのに、まだ答えてもらってませんって催促するわ、回答者に
確認したレスはしないわで、かなり荒れてんだろ?だから質問、回答のレスが
増えたことも考えて、ここに直接書き込むのを自重してうpロダ使ったらどうだ?
って催促もあるんだよ。命令だの指図だの、自己中な考えじゃ
世の中うまく渡っていけないよ。例えルールが無くてもマナーってものは存在する。
引きこもってないで、外に出てみろ。特に人が集まる都心なんて、ちょっとしたことでも
自分勝手や周りに迷惑が掛かることは、監視員に注意されるよ。それで切れて
監視員に罵声を浴びせている映像が放送されてたけどなw
>>502 クソースを活用して必要な情報をファイルに吐いて、次回起動時は
そのファイルと、現在の情報を比較して結果を出力、また情報を
吐いとく、でいいんじゃなくて?
> 直近の同種ファイルリストとの差分で、出力しようかと思いましたが
> ls -laに相当するものを作らなければならないことは確実でしたが
この辺見る限りだとクソースの部分があれば解決っぽく思えたのにな。
あと、クソクソ言ってごめんな>おじゃるまる
母音の数をカウントした結果が合ってるとか言ってるが 最後にaiueo以外の文字で終わる文字列含めばおかしい事がすぐ分かる strをインクリメントした結果がNULLの時、strchrは文字列最後のNULLも含んで探索するからカウントが1足されてる while( *str++ ) { if( strchr(boin,(int)*str) ) cnt++; } ↓ while( *str ) { if( strchr(boin,(int)*str) ) cnt++; str++; }
>>587 質問者が聞いてきたならともかく、他人の宿題を答えてやろうっていうやつが自分で
間違いをみつけられないのは論外。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 要素数 nScores=13 の配列 scores[]={65,0,95,0,0,79,82,0,84,94,86,90,0} から0を除去して、 要素数 nScores=8 の配列 scores[]={65,95,79,82,84,94,86,90} を 求める関数 RemoveZeroElements(array,n) を書きなさい。 main() では次の実行文により、0を除去した配列の要素数を求めて、 ファイルに nScoresscores[] を書き出すこと。 nScores = RemoveZeroElements(scores,nScores); [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:VisualC++6.0 [3.3] 言語:C++ [4] 期限: 6月16日まで [5] その他の制限:配列、関数などは習いました。 よろしくお願いします。
593 :
320 :2008/06/15(日) 05:35:24
>>320 どなたかお願いします。
for文で描画しているようなので、for文を書き換えれば出来ると思うのですが
sin波や円を描くためのmath関数を使うのが、自分には難しくて出来ません。
期限は6/19(木曜日)でお願いします。
int RemoveZeroElements(int *array, int n) { int i, j; for(i=j=0; i<n; i++) if(array[i]) array[j++] = array[i]; return j; }
↑と等価だか検証してみそ int RemoveZeroElements(int *array, int n){ int i=0,j=n; for(; i<n-1; i++) if(array[i]==0) array[i] = array[i+1] else j=i; return j+1; }
for(; i<n-1; i++) if(array[i]==0) array[i] = array[i+1] ,array[i+1]=0 ;else j=i;
+1とか-1とか微調整に使用するのは 小 細 工
>>595 ,596
お前はここに書き込む資格ないよ
>>598 処理の速度は度外視して、ローカル変数をi以外使わないで等価なものが書けるかな?
変数が自由に使える世界ばかりじゃないんだよ。勿論再帰は論外
>>593 期限までまだ時間があるのでヒントだけ:
最初のfor文はクリアしてるだけ。
描画してるのはその直後の
data[0] [128] [128] = 255; /*最大値255, 最小値0*/
の所だよ。ここをfor文で囲う必要があるかな。
>>599 題意を全く満たしてないクソと等価なもの書いてどうすんだよw
クソはどう見ても595と596だろ。 見ただけじゃ理解できないほど脳みそ腐ってるんなら実行してから物言えよw
じゃクソじゃない
>>594 と等価なローカル変数がiだけのコード書いて皆
そもそもなんで変数iだけなんて条件つけてんの? 595と596もj使ってるのに
606 :
デフォルトの名無しさん :2008/06/15(日) 08:42:03
もうこれでいいじゃん int CountZeroElements(int *array, int n){ int c; for(c=0; n>=0; n--) c+=(array[n]!=0); return c; }
>>606 int CountZeroElements(int *array, int n){
for(int c=0; n>=0; c+=(array[n--]!=0)) ;
return c;
}
問題文も読めない盲は引っ込んでろよ
609 :
デフォルトの名無しさん :2008/06/15(日) 08:47:41
>>592 C++知らないからCで
int CountZeroElements(int *array, int n){
for(int c=0; n>=0; c+=(array[n--]!=0)) ;
return c;
}
int * RemoveZeroElements(const int * array, int n){
int i, c, *ret, len;
len=CountZeroElements(array, n);
ret=(int*)malloc(sizeof(int)*len);
for(i=c=0; i<n; i++)
if(array[i]!=0) ret[c++]=array[i];
return ret;
}
for (i = 0; i < n; ) { if (array[i] == 0) { for (--n; i < n; i++) array[i] = array[i + 1]; i = 0; } else i++; } return n;
>>605 クソな595,596が使っているからこそ、ローカル変数を1つだけに
したコードを考えて欲しいんだナ
int RemoveZeroElements(int *const array, const int n){ int i; ?????????????????? } この条件ではどーだ?
// 学生向けのコード int RemoveZeroElements(int* array, int n) { int len = 0; // 戻り値に使う配列の長さを格納する変数 int* work = new int[n]; // 作業用領域を確保 // 0を除去した配列を作業用領域に作り、配列の長さを求める for(int i = 0; i != n; ++i) { if(array[i] != 0) { work[len++] = array[i]; } } // 作業用の配列から、引数で与えられた配列に、内容をコピーする。 for(int i = 0; i != len; ++i) { array[i] = work[i]; } delete [] work; // 作業用領域の後始末 return len; }
くそコードかいた595=596が話をそらそうとして必死だなw
[1] 授業単元:プログラミング基礎 [2] 問題文: 自然数nを入力し、nの階乗(1×2×…×n)を計算し、 10進数で表示するプログラムを作りなさい。ただし、n<10000程度までは正しく動くようにすること。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年6月27日まで [5] その他の制限:いまポインタについて習っている所です
>>616 #include <stdio.h>
#define N 1000000
int main(void)
{
int i, j, n, fig = 0;
int a[1000] = {0}, temp[1000] ={0};
scanf("%d", &n);
a[0] = 1;
for(i=2; i<=n; i++) {
for(j=0; j<=fig; j++) temp[j] = a[j] * i;
for(j=0; j<=fig; j++) {
if(temp[j] / N) {
a[j] = temp[j] % N;
if(j==fig) fig++;
temp[j+1] += temp[j] / N;
}
else a[j] = temp[j];
}
}
printf("%d", a[fig]);
for(i=fig-1; i>=0; i--) printf("%06d", a[i]);
return 0;
}
619 :
592 :2008/06/15(日) 09:59:02
コードありがとうございます。 若干流れが荒れてしまって申し訳ない。。。
594と610と614以外は参考にしちゃ駄目だから
>>620 いまどきは滅多にないと思うけど、618は環境によっては正しく動かない可能性あるから。
IT業界関連社会人を目指す学生向けの回答はこっち
>>614 はパソコン愛好会のお遊び勉強会向けのコードで大学の宿題じゃNG
効率はやや悪いが、
1.何を書き換えるかが把握しやすい。
2.ローカル変数をstaticにしている(必要もなくautoにしない)
3.newで許可無く勝手に変数を作っていない
という点に相違がある。こういうのが非常に大事になってくる。
int RemoveZeroElements(int *array, int n){
static int i,j;
for(i=0;i<n;i++){
if(array[i]==0){
for(j=i+1;j<n;j++){//後ろに0でない項があれば、それと交換する
if(array[j]){array[i]=array[j];array[j]=0;break;}
}//for
}//if
}//for
for(i=0;i<n;i++)
if(array[i]==0)
return i+1;
}
624 :
623 :2008/06/15(日) 10:24:17
return n;が抜けてたから追加しといて
>>623 >return i+1;
>return i+1;
>return i+1;
>return i+1;
カウンタ用の変数をプログラム全体の実行終了までメモリ上に保持しとくとか・・・。 実行環境はメモリ余りまくりのWindowsXPだというのに・・・。 バカなの?
再帰とか普通禁止されてる業務用コードは、リエントラントである ことなんて要求されないから、ローカル変数をautoに統一だなんて DOSとかの貧弱なメモリ環境のコード書いてた時の戒律だぜw 実行環境はメモリ余りまくりのWindowsXPだというのに・・・。 それをやらないのってひょっとして バカなの?
わざわざ似た文面で返すところを見ると、よっぽど悔しかった模様。
>>623 すいません、実行すると配列の最後に0が入っちゃうんですけど。
配列の長さも9になってしまいます。
628は627をわかりやすく補足しただけだろ
>>320 >>593 誰もやらない理由って言うかさ、問題文と提示コードの内容が違うからじゃね
提示コードで処理してる data[3][Y_SIZE][X_SIZE]ってさ、明らかにPNMフォーマットじゃ無い
しかし問題文はPNMフォーマットを利用って書いてある
意味不明だよ、提示コードも良く分らずに君が書いたのか?
スレッドセーフを意識しないのが最近の流行なんだ? よし、俺も関数内static変数バンバン使うぜ!
>>632 8行目のPS3をP3にし、
21行目の%dの後ろにスペースを一個追加すれば、
ppmを吐くようになる。
その上で、16行目を以下の4行で置き換えればとりあえずsinカーブを書くようになるよ。 for (x = 0; x < X_SIZE; x++) { y = 256 / 6.28 * sin(x / 256.0 * 6.28) + 128; data[0][y][x] = 255; }
連投すまん、 #include <math.h> も忘れずに。
円を角煮は、パラメトリック表示した円の式を使うのが楽。 (ただし、あまり美しくはかけない。) double t; for (t = 0; t < 6.28; t += 0.01) { x = 128 * cos(t); y = 128 * sin(t); data[0][y][x] = 255; } ぐらいでどうかな。 渦巻きは、半径(ここでは128)をtにあわせて変化させてやれば良い。
不動小数点数をループカウンタに使うなよ。 横着しないでpiから計算すれ。
>>642 #include<stdio.h>
int main()
{
int a[10], i, *pa, *pb;
for(i = 0; i < 10; i ++)
a[i] = i;
pa = a; /* a と &a[0] のどちらでも可 */
printf("a[0]=%d\n", pa[0]); /* pa[0] と *pa のどちらでも可 */
printf("a[4]=%d\n", pa[4]); /* pa[4] と *(pa+4) のどちらでも可 */
pb = a+5; /* a+5 と &a[5] のどちらでも可 */
printf("*(pb-2)=%d\n", *(pb-2)); /* *(pb-2) と pb[-2] のどちらでも可 */
return 0;
}
>>644 #include <stdio.h>
int char2int(const char *s);
int main(void){
char s[]="123";
int t;
t = char2int(s);
printf("文字列: %s \n", s);
printf("数値: %d \n", t);
return 0;
}
int char2int(const char *s){
int n = 0;
while(*s)
n = n * 10 + (*s++ - '0');
return n;
}
>>644 #include <stdio.h>
#include <stdlib.h>
int char2int(char const *s);
int main(void){
char s[]="123";
int t = char2int(s);
printf("文字列: %s\n", s);
printf("数値: %d\n", t);
return 0;
}
int char2int(char const *s){
return atoi(s);
}
[1] 授業単元:基礎プログラミング [2] 問題文: (1) char*pstrというchar型のアドレスを宣言して、256バイトのメモリ領域を割り当てます。 割り当てたメモリ領域に以下のような文字を入れ、表示させなさい。 I'll finish this book today. (2) (1)で割り当てたメモリ領域を512バイトに拡張しなさい。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ:VC 6.0 [3.3] 言語:C [4] 期限: 今日中でお願いします。 [5] その他の制限: malloc関数を使ってください。
reallocは使用可能?
すみません書き忘れてました。 (2)はrealloc使用OKです。
>>647 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *pstr;
pstr = malloc(256);
strcpy(pstr, "I'll finish this book today.");
fputs(pstr, stdout);
pstr = realloc(pstr, 512);
return 0;
}
エラーチェックは省略。
652 :
231 :2008/06/15(日) 19:56:47
昔、あるfjで、exitの前に freeすべきかどうかで 大論争があったね。
[1] 授業単元:プログラミング演習 [2] 問題文: 次をポーランド記法を用いて計算し、標準出力に出力せよ。 * + 3.2 1.6 - 8 / 9.1 0.2 [3] 環境 [3.1] OS:WindowsVista64 [3.2] コンパイラ:bcc32 [3.3] 言語:C [4] 期限: 今日中でお願いします。 [5] その他の制限: ありません。
660 :
デフォルトの名無しさん :2008/06/15(日) 22:12:38
[1] 授業単元: [2] 問題文(含コード&リンク): CSVファイル内のレコードをスペース区切りで入力した文字列でアンド検索せよ (「あいう けこ」と入力すると「あいうえお,かきくけこ,さしすせそ」というレコードがヒットする) [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C [4] 期限: 明日まで [5] その他の制限: ライブラリはなしで 一つの文字列での検索は出来るのですが、複数のときにどうしたらいいのかわかりません…。 今書いているソース↓ FILE *fp= fopen(IN_FILE, "r"); char buff[256]; //CSVファイルのデータ用 char srch[256]; //検索ワード用 gets(srch); //検索するワードの取得 int i = 0; //行数。その後の編集や削除処理でデータを特定するために使用 int line = 0; //ヒットした行数 while(fgets(buff, 256, fp) != NULL) { ++i; if(strstr(buff, srch) != NULL) { printf("%d%s", i,buff); ++line; } } fclose(fp);
>>660 入力された文字列をスペース区切りで複数の文字列に分割する
分割した文字列ごとに検索する
ソートネタ大人気だな
そーっと しておいてくれ・・・
ありがとうございます。
670 :
657 :2008/06/15(日) 23:14:34
671 :
:2008/06/16(月) 00:14:46
>>623 がいるからIT(笑)って言われるんだよ
>>462 掘り返してすいません
何故さきに余りを求めて足して最後に1000以上なら1000を引くのかがわかりません
どうしてその考えにいたるのかが分かりません
できれば詳しく説明して欲しいのですがよろしいでしょうか?
[1] 授業単元:C言語入門 [2] 問題文:二次方程式 ax2+bx+c=0に適当なa,b,cを与えて もし実数解をもつならば 解を計算して表示し、 虚数解であれば「実数解をもちません」と表示 するような、プログラム if-else文を使って作成せよ [3] 環境 [3.1] OS: (WindowsXPです [3.3] 言語: (Cになります。 [4] 期限: ([2008年6月16日10:00まで] になります(´;ω;`) よろしくお願いいたします。。
#include <stdio.h> #include <math.h> int main(void) { double a, b, c, d; scanf("%lf%lf%lf", &a, &b, &c); d = b * b - 4 * a * c; if(d < 0) printf("実数解をもちません\n"); else if(d > 0) printf("%f, %f\n", (-b + sqrt(d))/ (2*a), (-b-sqrt(d)) / (2*a)); else printf("%lf\n", -b / (2 * a)); return 0; }
>>673 > 何故さきに余りを求めて足して
まともに計算したら巨大な数になって、intもlongも超えちゃう。
最終的に下3桁を求めればいいのだから、
乗算と加算だけなら下3桁の範囲だけで計算していれば十分。
合同式とかいうんだっけ?あまり詳しくないけど。
> 1000以上なら1000を引くのか
rtは2000未満なので、余りを求めているのと同じ。
>>673 1 + 4 + 27 + 256 において、10で割った余りを求めることにしよう。
1^1 と 2^2 は10を越えていないんでそのままでおk。この時点で余りの合計は5。
3^3は27で10を越え、10で割った余りの7のみを残しておk。5+7=12、
ここで合計も10を越えたから10で割った余りの部分を残して2。
4*4 = 16 は10で割った余りの6のみ残して、次は
本来は16*4 = 64 だが、前の6に4を掛けて24で4のみ残しておk、さらにもう一度
本来は64*4 = 256 だが、前の4に4を掛けて16で6のみでおk
2+6 = 8で、答えはあっているじゃろう。
そうやって、10で割った余りの部分だけを残してべき乗を継続しても成り立つのが分かる。
#include <stdio.h> #define MAX 4 #define MOD 10 int main(void) { int i, j, rt = 0; for(i=1; i<=MAX; i++) { int r = 1; for(j=0; j<i; j++) r = (r * i) % MOD; rt += r; if(rt >= MOD) rt%=MOD; } printf("%d\n", rt); return 0; } ちょいと拝借して、このソースの MAX 、 MOD を適当に変えてみ。 理屈が成り立つことが分かるから。
>>651 error C2440: '=' : 'void *' から 'char' に変換できません。
1> この変換が可能なコンテキストはありません。
って出るんですけどどうしたらいいでしょうか
>>655 単に strdup() を無神経に使っていることに噛み付いただけなんですけれど‥‥‥。
>>681 明示的にキャスト汁
pstr=malloc(256); →pstr=(char *)malloc(256);
pstr=realloc(pstr,512); →pstr=(char *)realloc(pstr,512);
>>681 エラーメッセージのコピペかソースコードのコピペで失敗してるんじゃない?
685 :
デフォルトの名無しさん :2008/06/16(月) 02:20:47
C++だとvoid*を他のポインタ型に代入するときに明示的なキャスト必要なんだっけ?
>>681 C++ 扱いでコンパイルしてませんか?
[1] 授業単元:C言語入門 [2] 問題文:ある2つの実数aとbを入力し、aの数が3で割り切れる、 または、bの数が2で割り切れる場合のみに、それらの 四則演算を行い、その結果を表示するプログラムを作成せよ [3] 環境 [3.1] OS: WindowsXP [3.3] 言語: C [4] 期限: 今日中にお願いしたいです。。 よろしくお願いします。
>>687 整数ではなくて実数?
実数なら必ず2で割り切れるという扱いでおk?
>>683 それでできました、ありがとうございます><b
>>688 はい、実数で、
2で割り切れる扱いでお願いいたします(*´д`*)
>>687 #include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main(void){
char buf[256];
int i, chk, bufindex;
double a, b;
printf("Input a : ");
scanf("%255s", buf);
if(sscanf(buf, "%lf%n", &a, &bufindex)<1) return 1;
for(i=0,chk=0;i<bufindex;i++) if(isdigit(buf[i])) chk+=buf[i]-'0';
if(chk%3!=0) return 2;
printf("Input b : ");
if(scanf("%lf", &b)<1) return 3;
printf("a+b=%f+%f=%f\n", a, b, a+b);
printf("a-b=%f-%f=%f\n", a, b, a-b);
printf("a*b=%f*%f=%f\n", a, b, a*b);
if(b) printf("a/b=%f/%f=%f\n", a, b, a/b);
return 0;
}
>>691 それでは「aの数」、「bの数」をどう解釈しても題意を満たさないのでは?
>>572 ありがとうございます!
助かりました
今日提出しにいこうと思います
[1] 授業単元: 入門 [2] 問題文(含コード&リンク): 1. {C1}=(a11 a12){b1} {C2}=(a21 a22){b2} ↑は行列の積です。 C=A・bの形でA,bはfloat型 これを求めるプログラムの計算です。 2. {d1}=(a11 a12)n乗{b1} {d2}=(a21 a22){b2} ↑は1と同じ行列の積ですが、Aのところがn乗となっています。 わかりにくくて申し訳ないですが、お願いします。 [3] 環境 [3.1] OS: vista [3.3] 言語:C [4] 期限: できるだけはやくほしいです [5] その他の制限: まだ、3ヶ月ほど習っただけでやったことがあるのは 演算と型、if、switch、do、while、for、配列、関数ぐらいです。
[1] 授業単元: C言語 [2] 問題文(含コード&リンク):() ポゴソートについて調査し、それを実演するプログラムを書け。 データ数N=10000の場合について、整数の一様乱数の整数配列を作成してから それをポゴソートし、結果がソートされているかをプログラムでチェックする。 配列を作成した時点からソートが完了した時点までにかかった時間をミリ秒単位で測定し、 処理にかかった時間を出力せよ。10回実行し、かかった時間を表にし、平均時間も計算し、 プログラムコードと共に提出せよ。 [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) GCC [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 本日中 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 乱数は起動の度に異なるようにすること。乱数配列の出力、整列済み乱数配列の出力は不要とのことです。
ボゴソートなら知ってるがポゴソートは知らないな
意味は通じているのにいちいち誤字を指摘するか。 格の低い男だな。
データ数10000のボゴソートなんて正気じゃねえなw
ボゴソート int check(int *a, int size) { int i; for(i=1; i<size; i++) if(a[i] < a[i-1]) return 0; return 1; } void bogo_sort(int *a, int size) { int i, j, temp; do { for(i=1; i<size; i++) { j = rand() / (RAND_MAX + 1.0) * (i + 1); temp = a[j]; a[j] = a[i]; a[i] = temp; } }while(!check(a, size)); }
嫌らしい難問だナ まともとは思えないのでスルーがよろしいかと (一様乱数とはほど遠い線形合同法を使ったCのライブラリ乱数で N=10000もの順列を一様に生成すること自体至難の技なのだが)
702 :
691 :2008/06/16(月) 09:25:54
703 :
デフォルトの名無しさん :2008/06/16(月) 09:47:52
無保証。自己責任で参考にしてね void main(void) { complex zin, ai; double v=10.,l=13.92e-3,c=0.01591e-6,pi=3.14159; double r,fr,f,q,w,x,za,aiabs; r=5; // fr=1./(2.*pi*sqrt(l*c)); // q=2*pi*fr*l/r; // printf("R=%lf fr=%lf Q=%lf¥n¥n",r,fr,q); printf("C(Farad) L(Henry) freq.(Hz) I(ampare) Zin(ohm)¥n"); // for(f=9000.;f<=11000.;f+=25.){ f=9000.0; for(c=1.0E-8;c<1.0;c*=1.001){ w=2.*pi*f; x=w*l-1./(w*c); zin=cmplx(r,x); za=cabso(&zin); ai=cmplx(v,0.0); ai=cdiv(&ai,&zin); aiabs=cabso(&ai); printf("C=%12.2lf l=%f f=%12.2lf %14.4lE %15.5lE¥n",c,l,f,aiabs,za); } getchar(); return ; }
705 :
◆rR6EHrq.2w :2008/06/16(月) 13:38:07
>>705 問題のタイプが全然違うので、参考(マウスで選択して、キーボードからちょこちょこっと入力)にして解くことは
期待できないね。
この問題を出した奴はよほどのバカだ。まだ
>>695 を出したアホのほうがマシ
まともに相手せず、「氏んだほうがいいよ」と白紙のレポートなりメールなり出すのが吉かと
>>705 微分を知っていれば10秒ほどでできるよ。
f()の中身をreturn 2 * cos(x) - x / 8.;にしてdf()の中身をreturn -2 * sin(x) - 1 / 8.;にするだけだ。
709 :
デフォルトの名無しさん :2008/06/16(月) 17:58:40
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク):クイックソートでは、値が等しい要素 の位置を入力された順に 保つことができない。この問題を解
710 :
デフォルトの名無しさん :2008/06/16(月) 18:01:55
すいません、なんか切れてしまったのでもう一度・・・ [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):クイックソートでは、値が等しい要素 の位置を入力された順に 保つことができない。この問題を解
学習能力のない香具師だな。
>>710 >クイックソートでは、値が等しい要素 の位置を入力された順に
>保つことができない。
そのような事実は無い
は? クイックソートが安定ソートじゃないのは常識だろ
じゃ使わなきゃいいだろ
>>712 =714か? だとしたらとんでもない間抜けだな。
[1] 授業単元:プログラミング実習問題 [2] 問題文:『階上の計算』 n=1〜12に対して、n!を計算して出力する。 ただし、n!=1*2*3*・・・・*(n-1)*nである。 なお、再帰法を用いてもよい。 [3] 環境 [3.1] OS:vista [3.2] コンパイラ名:visual studio 2005 [3.3] 言語:C [4] 期限:[2008年6月18日まで] [5] その他の制限:まだ大した勉強はしていません、すいません。 多分C言語検定3級程度の実力くらいしかないです。
マイナスの初期値与えたら暴走するようなプログラムを10秒で作って出来たと
思ってる
>>707 だろよ
>>718 #include <stdio.h>
int fac(int n)
{
int ret = 1;
while(n) ret *= n--;
return ret;
}
int main(void)
{
printf("%d", fac(12));
return 0;
}
釣れますか?
int main(void) { int i; for(i=1; i<=12; i++) printf("%d\n", fac(i)); return 0; }
725 :
703 :2008/06/16(月) 19:47:49
>>724 unsigned int にしてるのに%dってw
730 :
703 :2008/06/16(月) 20:11:04
すみません自己解決しました
ホント無駄に荒れるスレだな だがそれがいい
[1] 授業単元:認識
[2] 問題文:
http://a-draw.com/uploader/src/up1643.zip.html このファイルをダウンロードしてもらって解凍してもらいたいんです。
prog.cのファイルを実行してセグメンテーションエラーをとってほしいんです
けど。
[3] 環境
[3.1] OS:linux
[3.3] 言語:C
[4] 期限:[2008年6月17日まで]
[5] その他の制限:fread,fseekの使いかたはあっています。
for文{printf文で配列の中身を表示しています.
宝船いいよ
[1]データベース [2]問題文 リストの追加機能を作る。(他にも編集やら削除やら機能をつけなきゃならないけど、追加たけでお願いします) キーボードから1と入力されたら、画面に name:(aaa) age:(57) mail:(aa@bb)カッコ内はこちら側が入力。 上記3つを入力した後、下のように表示させる。 1:aaa:57:aa@bb [3-1]windows [3-2]gcc [3-3]C言語 [4]明後日まで。 よろしくお願いいたします。
[1] 授業単元:
C研究
[2] 問題文(含コード&リンク):()
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6935.txt [3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Microsoft Visual Studio 2008
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C++
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
6月21日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
お願いします。
>>719 三角関数をニュートン法で収束させるんだから、初期値の与え方によっては発散するのは常識。
負の値でも、-1辺りを入れれば収束するんじゃないか? 逆に正の値でも大きな値を入れたら発散しそうな希ガス。
せめてその位の確認してからけちつけたら?
1] 授業単元:C++入門 [2] 問題文(含コード&リンク):ジャンケンゲームを作る。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: borland c++ 5.5.1 [3.3] 言語: C++ [4] 期限: 6月18日まで [5] その他の制限:入力、出力、クラス、コンストラクタ、if文くらいまで よろしくお願いします。
>>740 自分でやる気ないのにVIPで聞くんだな
>>739 発散する初期値より大きいところに収束初期値がありますね。x=0で発散します。
すべての解を求める方法としてはこういう問題は不適当です。
745 :
デフォルトの名無しさん :2008/06/17(火) 04:48:32
[1] 授業単元: 言語と計算 C++ [2] 問題文(含コード&リンク): SA面体のサイコロがNA個のA組と、SB面体のサイコロがNB個のB組があるとする。 (SAとSBの範囲は2〜1000、NAとNBの範囲は1〜100000) それぞれの組でサイコロを振った時、 1.A組がB組の出目を超える(>)確率 2.A組がB組の出目以上になる(>=)確率 それぞれを求める関数を作り、 a.計算結果(%表記、小数点以下6桁まで) b.計算に要した時間 を標準出力に書き出せ。 [3] 環境:C++ [4] 期限:18日正午まで [5] その他の制限:とくに無し
>>745 に書き漏らしがありました。
結果を表示するのは
SA=2, SB=3, NA=6, NA=6の時
SA=1000, SB=500, NA=50000, NB=100000の時
の2つだけでOKです。
/* クソースその2 */ #include <stdio.h> int total_sec; int sec; int min; int hr; void InputSec(void){ printf("秒数を整数で入力してください :"); scanf("%d", &total_sec);} void CalcHMS(void){ hr = total_sec / 3600; min = total_sec / 60 % 60; sec = total_sec % 60;} void PrintHMS(void){ printf("%d秒は%d時間%d分%d秒です\n", total_sec, hr, min, sec);} int main(void){ InputSec(); CalcHMS(); PrintHMS(); return 0;}
うわっ、くせぇくせぇ、●ンコの臭いがプンプンすんぜっ おまけにそんなものを直接書き込むKY、こりゃ真性の(ry
752 :
デフォルトの名無しさん :2008/06/17(火) 05:17:55
でっ、でたーーー、タイピングミスで「いね」と書いたあと ファビョって必死になって、古文で使われている用法を 知らないの?って噛み付いてた粘着バカw
476 名前:デフォルトの名無しさん 投稿日:2008/06/14(土) 01:26:29
>>473 自治厨いね
484 名前:デフォルトの名無しさん 投稿日:2008/06/14(土) 01:56:30
>>479 いね = 去ね
高校出てれば当然習ってるはずの言葉。
487 名前:デフォルトの名無しさん 投稿日:2008/06/14(土) 02:00:46
473が余計なこと書かなきゃ荒れないのにな。
いつもうpロダ使えっていっては反論されて大暴れ。
↑うpロダ使えと言われては反論して罵倒レス。
自分に対して何か言ってくる奴がいると、そいつに対しては
とことん罵倒、威圧しないと気が済まない精神異常者?
> 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) コードが長くなけりゃアップローダー使わなくて良いのがこのスレのルールだと言う事を 理解出来てないバカが居るな。
きちがいだから触っちゃだめだ
でもさ、宿題お願いするのにわざわざ手伝ってもらう人にカラム調整させるのか? その辺だけでもTABとかが削除されない方法を選ぶだろ・・・・
へー、カラム調整されてないように見える環境もあるんだ。 俺の環境だと半角スペースはそのまま残って見える。
ブラウザ次第じゃね?
>>760 検索程度しろ、前のに回答が上がってるだろ
学科の出席簿作成。 15人分の学生を表示し、入力により内容を変動させる。 表示順番: 出席表 <入力>学生番号0〜14 <入力>曜日番号0〜6 <入力>時限番号0〜3 <入力>出欠番号0〜1 <入力>学生番号0〜14の時に99を入力するとプログラム終了。 /* stdio.h をインクルード */ int main(void) { /* 必要な変数を宣言し、出席簿の初期値を設定 */ /* 学生番号を入力から一時変数に取り込み、それが妥当な値である間、以下の処理を繰り返す */ { /* 曜日を入力から一時変数に取り込み、もし妥当な値でなければエラーメッセージを表示して continue する */ /* 時限を入力から一時変数に取り込み、もし以下略 */ /* 出欠を入力から以下略 */ /* 入力された一時変数の値を出席簿に反映する */ /* 出席簿の現在の内容を表示する */ } return 0; }
763 :
デフォルトの名無しさん :2008/06/17(火) 09:54:28
[1]授業単元: C言語 [2] 問題文:BMP画像を読み込んで画面に出力するプログラムを作成 [3] 環境: [3.1] OS:Windows [3.2] コンパイラ名とバージョン: borland c++ 5.5.1 [3.3] 言語:Cのみ [4] 期限:18日午前8時まで [5] その他の制限:とくに無し
問04(最終問題) テキストサウンドノベルを作成する事。 キー入力でメッセージを表示し、途中で選択しを含める。(最大3つまで) 画面をスクロールさせることは禁止。ページ切り替えは、画面全消去で対処する事。 テキスト行数は、最低50行から最大100行までとする。 画面全消去方法は、先生に聞くこと。
[1] 授業単元: C言語実習 [2] 問題文:任意の文字列から任意の文字列を操作する。 例:「kokoha dokoda」 @任意の文字列を検索し、削除する 例:「ko」を削除する →「ha doda」 A任意の文字列を検索し、長い文字列と置換する 例:「ko」を「max」に置換する →「maxmaxha domaxda」 [3] 環境 [3.1] OS:Windows xp [3.2] vc++ 2008 [3.3] 言語: C [4] 期限:無期限 [5] その他の制限:<stdio.h> <string.h>を使用できます。 1文字を検索して削除なら出来るのですが、2文字になるとどう処理していいか わかりませんorz
[1] 授業単元: C++ [2] 問題文(含コード&リンク): 2008年は閏年(うるうどし)である。 現在の暦において閏年は, 地球が太陽の周りを公転する周期が, 約365.24日であることに由来する調整法である。 閏年でない年は平年という。 キーボードから西暦を入力し 入力された年が閏年かどうか判定する プログラムを作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: 6月27日 [5] その他の制限: 3つの条件によって,うるう年か平年か決まるが,論理演算子を使って,双分岐型1つにまとめる
[1] 授業単元: C++ [2] 問題文(含コード&リンク): 今年(2008年)はオリンピックイヤー (オリンピック開催年)である。 8月8日から24日までにかけて,中国の北京で 夏季オリンピック第29回大会が開かれる。 次の説明はオリンピックの開催年についての説明である。 キーボードから変数year に入力された年号について, 開催された年に第何回大会が開催(中止)されたか 画面に表示するプログラムを作成しなさい。 またオリンピックイヤーでない場合は、 画面にその旨メッセージを出力すること。 【説明】 ・1896年の第1回大会以来、4 年に1 度開催されている。 ・1916年の第6回大会,1940年の第12回大会,1944年の第13回大会は 世界大戦の影響で中止された。ただし中止の場合も回数は数える。 ・1906年には,近代オリンピック制定10周年記念大会が開催された。 ただし特別大会のため,回数には数えない。 ・次回は2012年、第30回大会がロンドンで開催予定。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: 6月27日 [5] その他の制限: 第1回大会の年は,1986年。式にしなくてもよい。中止された年にも対応してください。
>>767 #include <iostream>
int isleapyear(int y){
int i = y / 100;
return !(y == i * 100 ? i & 3 : y & 3);
}
int main(){
int n;
using namespace std;
cout << "input:";
cin >> n;
cout << ((isleapyear(n))?"閏年":"平年") << endl;
return 0;
}
>>768 現在までの夏季能美なら、若干のifで可能。
ただし、拡張(冬季を追加、今後の夏季など)に柔軟に対応するためには、
開催年テーブルを持った方がいい。
まったく同じ問題がわずかな時期をずれて出題されるってどういうことなんだろう?
何をいまさら、どうでも良いことを。こんなの数年前から普通にあったし。 あとな、批判されるのが嫌だとか、間違ったソースをこのスレに残したくなかったら うpロダ使え、新入り初心者めが
>>772 お前の指示とか受けないよ
俺の好きなようにやらせてもらう
だってここは2ちゃんねるだもの
いちいち言い返さないと気が済まず、しかも指図だって、もう この新入り馬鹿は頭がいかれてんだろ。実社会じゃ 周りの空気が読めずに、自分勝手な行動をして孤立したタイプだろw
このスレはもう数年前からあったわけだが、必ず新学期を期に KYな基地外が現れるよな。どうせそれ以前に、質問して 答えてもらったからって、恩返しのつもりなんだろうけど 汚い素人未満のソースを長々と自己満足でこのスレに 残されても、他の回答者、質問者に迷惑なんだが。
お前以外にキチ外はいねーよw
で、プロである貴方は一体どういうつもりで布教しているんだい?
777をとり損ねた
[1]授業単元: 中級プログラミング [2] 問題文:クラスを作成して行列式を計算しろ。 行列Aの内容を自分で指定できるようにする。 実行画面で何行何列にするか、各要素の値をいくつにするかを決められるようにする。 それを使ってA+A, A*A, n(スカラー)*A, Aの逆行列, Aの転置行列を求める。 [3] 環境: [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual C++6.0 [3.3] 言語:C++ [4] 期限:19日 よろしくお願いします。
行列式を正方行列以外に定義するなんて、完全に上級を超えたキティちゃんの領域だw C++の練習問題としては余りにも不適当。出した教師はまともじゃないから スルーでおK
>>783 お前みたいな基地外はこのスレには要らない
>>783 正方行列以外に対応するのはそれほどまでに難しいことなの?
787 :
760 :2008/06/17(火) 18:59:38
>>590 >>761 #if AI_PLAYER
#else
#endif
enum
構造体
などを習っていないので使ってないプログラムをお願いしたいのですが
できるだけ簡単にお願いします
上級を超えた領域にいらっしゃるあなたにはきっと出来る!
789 :
デフォルトの名無しさん :2008/06/17(火) 19:01:01
[1] 授業単元: c言語 [2] 問題文(含コード&リンク):ある整数(2以上)を入力し 自分自身を除く最大の約数を返す、関数を含むプログラムを作れ。 例えば12を入力すると6が返る。5を入力すると1が返る。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:visual studio 2005 [3.3] 言語: C [4] 期限:今日中 [5] その他の制限: 特になし おねがいします
[1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク):while文を用いて求めよ 一、1から100までの整数の和を表示 二、1から100までの奇数の和を表示 三、1≦n≦50の任意の整数を入力し、nからn+50までの整数の和を表示 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:2008年06月18日が終わるまで [5] その他の制限:while文でお願いします。
てか正方行列じゃなきゃ、A*Aはできないし
>>789 #include <stdio.h>
int f(int n)
{
int i;
for(i=n/2; i>1; i--) if(n % i == 0) return i;
return 1;
}
int main(void)
{
int n;
do {
printf("2以上の整数を入力してください:");
scanf("%d", &n);
}while(n < 2);
printf("%dの自分自身を除く最大の約数は%d\n", n, f(n));
return 0;
}
まともな教師は、あいまいな仕様の問題は出さないな
>>790 #include <stdio.h>
int main(void)
{
int i, sum, n;
sum = 0;
i = 1;
while(i<=100) sum += i++;
printf("1から100までの整数の和:%d\n", sum);
sum = 0;
i = 1;
while(i<=100) {
sum += i;
i += 2;
}
printf("1から100までの奇数の和:%d\n", sum);
do{
printf("1≦n≦50の任意の整数を入力:");
scanf("%d", &n);
}while(n<1 || n >50);
i=0;
sum=0;
while(i<=50) sum += n + i++;
printf("%d から %dまでの整数の和:%d\n", n, n+50, sum);
return 0;
}
行、列を個別に指定できるようにすべきかどうかはさておき、
正方行列ではない場合に、積、逆行列、転置行列は出力しない、
もしくは計算できない旨のメッセージを出力すればいいわけでしょ?
>>781 が何を指してキティだといっているのかさっぱりわからん
常識的に考えれば正方行列の問題にしか見えないのに、 何行何列の表記だけで正方じゃないと決めつけるなんてw
プログラミングの世界での鉄則 自分たちの世界の常識は、他所では通用するとは限らない これだけは覚えておけ
799 :
デフォルトの名無しさん :2008/06/17(火) 19:21:52
800 :
デフォルトの名無しさん :2008/06/17(火) 19:24:14
うpロダ使えという言動に激しく噛み付いてくる基地外の特徴 やたらと バカ 死ね いね(去ね) お前には従わないよ(誰にだよ?) といった、とにかく何かと筋の通った販路はせず、お前が気に食わないと 罵倒レスをして反発をしないと気が済まない、集団社会に溶け込めない 孤立した自分勝手。相手に何かちょっとしたことでも指摘されるとファビョる。 前にもいたよな、蛇足とか言って、結局標準ライブラリの資料を提示されて 自分が無知だと晒した奴も。おまけに、自分が思ったことはすべて正しいということで 自分勝手な基準でキティとか言い出すし。お前くらいだぞ、基地外罵倒レスで 相手を威圧しているのは。だからKYって言われるんだよ。
正方行列から話をそらしたいんですね、わかります
>>797 とてもそうは見えないよ。たとえばn行n列などと書かれてるなら別だけど。
だから、正方行列以外も指定できるのだろうか?と解釈した人は、
行える処理だけ行うようなコードに仕上げればよく、
正方行列のみと解釈した人は次数を1つのみ入力させるようにすればよい。
まあ、以下が守られてなさそうな気はしてるんだけどね。
> ・問題文は、出題されたまま全文を書いてください。
>>796 自乗と逆行列はともかく、転置は任意の型の行列に定義されるだろ
>>802 一行目に行列式を計算しろって書いてあって正方行列の問題だと思えないの?
>>803 ごめんね、行列計算よく知らなくて適当にぐぐった知識で書いたんだ。ごめんね。
>>804 足し算とスカラー倍はできるんでないの?これは行列式じゃないの?
なんかちょっと前にも似た流れがあった気がするんだが、 「行列式」を「行列の式」の意味で使ってる奴がいるよな。 質問者にも野次馬にも。 一様連続を一様に連続だとか思ってるみたいな。
>>706 > まともに相手せず、「氏んだほうがいいよ」と白紙のレポートなりメールなり出すのが吉かと
> 「氏んだほうがいいよ」と
> 白紙のレポートなりメールなり出すのが吉かと
きっちっがっいって 分かりやすいよなぁ〜〜おいっw
行列式知らなきゃバカなのか? 言葉の端で判断するのには問題があるかもしれんが、 プログラマとしては全く信頼出来ない人間であるような気がしてならないな。 行列式知っていると、プログラマとしては信頼出来ないというものでは勿論ないが。
正方行列から話をそらしたいんですね、わかります
>>810 行列式は高校レベルの知識だってもはおいといても、
知らないことに対して適当なことを言うのはダメだろ。
わからないとこでもいい加減なコード書きそうでプログラマとして全く信頼できない。
別に行列式がどうとかどうでも良いし やる気があるならソース中に、明記されて無かったけれど このように解釈してやりました、とでもコメント入れてあげるか 条件をきっちりさせてくれなり言うかすれば良いし その気がないなら放って置けば良いじゃない
あーもしかして今って高校で行列式とか教えてない? それでも大学の一年生で習うと思うけど、どうなんだ?
行列式を計算する問題で行列式がどうでも良いってw
そうじゃなくて、知らないなら口を出さない 知ってて尚且つやってあげる気があるならそうすればいいって意味だよ 行列式一つとってどうこう言ってるんじゃない 一番性質が悪いのはただ馬鹿にすることだろ
知らないのに口を出したあげく引っ込みつかなくなってるのがお前だろw
とりあえず先生に謝れ。そうすれば丸く収まる。
枝葉の部分はスルーしてさっさとソース献上しやがれ。
証明する方法は無いけど別の人です あと誰かを擁護する気とか一切ありません 流れを見ててあんまりいいと思わなかったので口を出しました 変なこと言ってすまんかった
毎回毎回、質問者が放置するから荒れるんだよなあ。
C言語は数学研究向けの言語じゃないからね。システム記述がメインストリームだよ。 数学の研究用の言語は、FORTRANとかだろ? 問題意識は別のところにおいたほうがいいよ。 行列式知らなくても、Cプログラマーとして信頼出来る人は幾らでもいるし。
いい具合に荒れてきました!とりあえずここでお決まりのレスを。 ソースでなくても良いから、もうお前らの長文発言にも うpロダ使えw
行列式知らない人間なんて人間として信用できん
>>823 知らないことと、知らないことに適当に口を挟んでくるのとでは全く違うんだが。
ああそう
825は明らかにCプログラマ=数学至上主義だという意識を植え付けようとするプロパガンダ
線形代数やらないで計算機って勉強できるの?
>>831 ちなみに、このソースは自分でココとココ、と指定してその最短経路長を計算してくれます
それをノード0番から10番あるわけですので、
0-1、0-2、0-3、0-4・・・7-10、8-9、8-10、9-10みたいな感じにやってもらえると幸いです
833 :
790 :2008/06/17(火) 20:10:20
オッス、オラおじゃる。大学は理系に進んだのに、行列なんてさっぱりでおじゃ〜 そんな麻呂でもクソースは書けるでおじゃるよ?
それはプログラマーではなくコーダー。
だいたいさぁ、何のプログラムを作るかで必要な知識は違ってくる。 まず最低限必要なのは、当然言語の仕様。そして実装されている コンピュータの基本的な部分、仕様、構造。メモリのアドレス、 32ビット、デジタルデータが0と1の組み合わせで、それを複雑に オナペットしていることをまず知るべきだ。コードのみを見て わぁ〜数値計算の結果が立った、結果が立ったって ハイジみたいに喜んでも、なんだかなぁ〜ってなるぞw
数表の形式は?
>>838 すまん、底辺大学卒の俺でも、予備知識無しで普通に解けそうな感じだったんだが。
>>840 底辺とか、自分を低く見せてるだけやろぉ〜、ほんま、ぶっちゃけて、実は、
本当のところ、ランクCどころじゃない、BかAの大卒なんでしょ〜?またまたぁ〜
謙遜せんでもよかろうに。このこのっ、憎いねぇ〜。Fランク大学中退なめんなw
842 :
838 :2008/06/17(火) 20:52:52
>>840 俺まったく、プログラミングやったことなぃんょ
そもそも学科が全然違ってて・・
選択であったからとってみたら意味わからんすぎたぜ
解けるなら教えてくれるとありがたい・・単位が危ないんだ。
んじゃ、問題文の意味は分かるけどどういうコードにしたらいいかが分からんのでないの? 問題文が意味が分からんすぎてって書いてるからこういうレスがつく。
プログラミングの課題としてこれが出題される事はなかろ。 この1個前の課題および回答をあげてみ?
>>838 数表は横並びにxとyが並んでるものと仮定
#include <stdio.h>
#define N 100
int main(void)
{
double xn[N], yn[N], x, y;
int i, cnt;
FILE *fp;
if((fp=fopen("data.txt", "r"))==NULL) return 0;
for(i=0; fscanf(fp, "%lf%lf", xn + i, yn + i)==2; i++);
cnt = i;
scanf("%lf", &x);
if(x < xn[0] || xn[cnt-1] <= x) return 0;
for(i=0; xn[i] < x; i++);
y = (yn[i+1] - yn[i]) * (x - xn[i]) / (xn[i+1] - xn[i]) + yn[i];
printf("y = %f\n", y);
return 0;
}
847 :
838 :2008/06/17(火) 21:06:15
849 :
デフォルトの名無しさん :2008/06/17(火) 21:06:35
[1] 授業単元:システムソフトウェア [2] 問題文 連結リストを用いてキュー(queue)を以下の仕様に従って実装しなさい. 連結リストの初期化(0~99のランダムな整数を入れる),表示を行う関数を,「list_init.c」に実装しなさい. 連結リストを初期化する関数をlist_create(), 連結リストに格納されている整数を表示する関数をlist_disp()としなさい. 連結リストのノードの総数はキーボードから入力されるものとする. キュー(連結リスト)の値の格納をenqueue(),値の取り出しをdequeue(),値の検索をsearch()として,「list_op.c」に実装しなさい. list_init.c, list_op.cから動的ライブラリ(共有ライブラリ)libdata_s.soを作成しなさい. main関数を含むコードを「test_list.c」として作成し,libdata_s.soを用いてコンパイルしなさい. 実行形式のファイル名は「test_list」とする. ただし,libdata_s.soの関数は,dlfcn.hに含まれている関数と,関数ポインタを用いて呼び出しを行うこと. 作成したプログラムは以下の動作を行う. 1:キーボードからキューのノードの総数を受け取る 2:初期化したキューの内容を表示する. 3:キーボードからのコマンド待ち状態になる.コマンドは,0を入力するとenqueue, 1を入力するとdequeue, 2を入力すると値のsearchを行い,それ以外の数字を入力するとプログラムが終了する. 4:2., 3.を繰り返す [3] 環境 [3.1] OS:linux [3.2] gcc [3.3] 言語:C [4] 期限:明後日 おねがいします
合計 50 49 48 47 46 *** 45 44 43 42 41 *** 40 39 38 37 36 *** 35 34 33 32 31 : 30 29 28 27 26 : 25 24 23 22 21 : 20 19 18 17 16 : 15 14 13 12 11 : 10 9 8 7 6 : 5 4 3 2 1 合計 *** *** *** *** *** を表すプログラムってどの様に書けますか?一次元配列を使うということですが・・・
つ int i; for(i=1; i<=3; i++) putchar('*');
852 :
760 :2008/06/17(火) 21:08:56
できればすぐお願いします 20から30回で宝8個みつかるようお願いします
>>847 ああ、つまり、ここに頼ったはいいけど自分の身についてないから
どんどん被害が大きくなってるってわけね。
いつかしっぺ返しくらう前にちょっとずつ理解しような。
ソースコードはでき次第うpする
854 :
838 :2008/06/17(火) 21:14:52
>>845 FILE *fp;
if((fp=fopen("data.txt", "r"))==NULL) return 0;
がよくわからないんだが データテキストを呼び出すのか?
そのファイルを何処に置けばいいかもわからん・・
855 :
838 :2008/06/17(火) 21:17:20
>>853 そうだ・・まったくもって勉強してない成果がここで発揮されたぜ
ぅん・・これ以降は自分で出来る様にがんばるょ。
頼む!今のところ出来そうにない!
>>831 たぶんできましたんでやらんでいいです
おさわがせしました
>>760 改良してやろうと思ったけど…
問題内容、問題コードどれを取っても、お前が言ってる条件に当てはまらないだろ
だいたいポインタ使って関数渡しの値代入してるのに、構造体習ってないから使うな?
しねよ
お前が知らないだけだろ、その問題
860 :
766 :2008/06/17(火) 22:06:50
>>773 ご助言ありがとうございます。
しかしうまくプログラムが組めないorz
プログラムは組み物じゃないな 編み物 彼氏にマフラー編んだげてるの
>>850 #include <stdio.h>
int main(){
int a,b,z,i=0,d=0;
int c=50;
//1行目から10行目
printf("\t\t\t\t\t\t合計\n");
for(a=0; a<10; a++){
for(b=0; b<5; b++){
i += c;
printf("\t%d",c);
c--;
}
printf("\t%d",i);
printf("\n");
i=0;
}
//11行目
printf("合計");
for(a=5; a>0; a--){
for(b=0; b<10; b++){
c += a+5*b;
}
printf("\t%d",c);
d += c;
c=0;
}
printf("\t%d",d);
}
>>857 まあ落ち着け。
>>590 の回答に対して構造体とか#ifとか使うなって条件つけたんだよ。
条件の後出しがひどく迷惑であることを痛感する展開ではあるんだが。
>>862 ありがとうございます!!
ちなみに、これを関数で表せという問題も一緒に出されているのですが全く分かりません。。。
void disp(){
//
>>862 }
int main(){
disp();
return 0;
}
867 :
デフォルトの名無しさん :2008/06/17(火) 23:19:30
宝探しのやつ、takaraとかの盤面が周り1マス分大目に取ってあるとよかったのになあ。。。 とぼやきつつ、ぼちぼち。
869 :
デフォルトの名無しさん :2008/06/17(火) 23:34:10
[1] 授業単元:C言語プログラミング [2] 問題文(含コード&リンク):() 文字列aから文字bを取り除く。下までできたのですが。。。 #include<stdio.h> char a,b; void main() { scanf("%d\n",a); scanf("%d\n",b); printf("%d",a,b); return 0; } /* squeeze sからcをすべて取り除く */ void squeeze(char s[], int c) { int i,j; for(i=j=0; s[i] !='\0'; i++) if(s[i] !=c) s[j++]=s[i]; s[j]='\n'; } [3] 環境 [3.1] OS:XP [3.2] よくわかりません。ボーランド? [3.3] 言語: C言語 [4] 期限:明日中に。
>>867 おお、ありがとうございmす。
これを元に勉強させてもらいます。
871 :
760 :2008/06/17(火) 23:53:34
お願いできないでしょうか?問題変更で20から30回で 構造体使ってもいいのでおねがいします!
>>760 >>871 ちょっと待ってろw
しかし、人間がやっても20回くらいかかるぞ?
問題のレベルの割に、お前さんのレベルが低すぎる気が…
[1] 授業単元: C++ [2] 問題文(含コード&リンク): #include <stdio.h> main() { int ch; while(( ch=getchar()) != EOF) { printf("%02x", ch); } } このプログラムだけでは非常に長くなるので、'\n'を検出したら,出力にも改行文字を埋めたい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++
#include <stdio.h> printf("%02x", ch); なのに C++ とは、どんな授業をしてるでおじゃるか?
>>873 if(ch='\n'){
cout << endl;
}
>>657 さんの問題を
main関数のみで作っていただけないでしょうか?
[1] 授業[1] 授業単元:オペレーティングシステム [2] 問題文:mallocを用い、下記のプログラムを完成させて、次の仕様を満たすプログラムを作成せよ。 ・キーボードから可変数の英数字の行を読み込む ・最初に行数を入力させる ・1行の長さは最大256文字 ・全入力が終了したところで、全入力行をまとめて出力する #include <stdio.h> #define MAX_LINE 256 main(){ char *p; int n, i; scanf(“%d”, &n); p = --------------------; for (i = 0; i < n; i++) { scanf(“%s”, p + MAX_LINE * i);} ------------------------;} [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] 言語:C [4] 期限:明日まで 点線の部分の変更のみです。 よろしくお願いします。
879 :
760 :2008/06/18(水) 03:25:40
20回から30回のプログラムを 今日朝9時までにお願いできないでしょうか できそうにないんで…
>>878 p = malloc(MAX_LINE * n);
for(i = 0; i < n; i++) { printf("%s\n", p + MAX_LINE * i); }
881 :
414 :2008/06/18(水) 06:02:08
>>451 亀ですいません。
作成いただきありがとうございました。
問題のレベルと依頼者のレベルが余りにもかけ離れてる場合 よく他人に頼んで、提出できるよなっていつも思う あんまり無いのかも知れんが、内容に関して質問が来たらどうするつもりだろ?
まぁ〜〜〜た今さらなことを、独り言のようにてめぇが勝手に思っている疑問を わざわざ書き込むか、一言居士め。どうでも良いだろ、そんなの。 このスレの趣旨がわかってない新入りだろ、しねだのほざくガキって? もしそれで高卒以上の年齢だとしたら、かなり精神レベルが低いぞ、こいつ。
>>885 つまりレベルがかけ離れていて気に入らない質問はスルーしとけばいいのか
レベルなんぞ気にしているくらいなら、とことん初心者レベルに戻るべし。 本当にコードから○ンコのに臭いがぷんぷんと漂ってきそうな 麻呂のクソースを目指すでおじゃる!
初心者レベルの宿題しか解けないだけだろw
891 :
デフォルトの名無しさん :2008/06/18(水) 10:25:09
[1] 授業単元: 情報実験 [2] 問題文(含コード&リンク): クイックソートでは、値が等しい要素の位置を入力された順に保つことができない。 この問題を解決するプログラムを作成せよ。 ただし、以下の解決方法を用いよ。 •配列をリストに変換 •三つのリストを作る ー枢軸より大きい要素のリスト ー枢軸より小さい要素のリスト ー枢軸より等しい要素のリスト •三つのリストを統合する [3] 環境 [3.1] OS: Mac OS X [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:できれば今日まで よろしくお願いします
難し過ぎ
893 :
877 :2008/06/18(水) 11:19:28
在庫管理のプログラムを作りなさいっていう宿題なのですけれども よろしくお願いします。 1.クラス設計 データ定義:100件分(とりあえずの値としておく) 商品コード int(0〜999) 在庫数 int 登録商品数 int(新規商品を入庫するたびに+1される) 商品マスター:予め数件分を定数として定義しておく(-1がストッパー) (例) int master[ ]={1,3,5,10,11,12,100,200,900,-1}; メンバー関数: ・コンストラクタ:保持している商品数をクリアする。 ・データ設定関数:int add(int 商品コード、 int 入庫数) 商品マスターチェックNGなら戻り値にエラーを設定する。 チェックOKならデータ部に登録し、在庫数を加算、登録商品数を+1する ・在庫数取得関数:int get(int 商品コード) 商品コードが登録されていれば現在の在庫数を戻り値に返す。 登録されていない(入庫されていない)場合は-1を返す。 c++でお願いします。
895 :
デフォルトの名無しさん :2008/06/18(水) 13:11:58
そうなんじゃない? 在庫管理プログラムとして十分ではないけれど、題意を満たすソースは書けるでしょ。 作成されるものはチープかもしれないけど、それが課題というものかと。
899 :
デフォルトの名無しさん :2008/06/18(水) 15:31:59
商品コード int(0〜999)とか商品マスターとかはいいとして データ定義とか商品マスターチェックNGとか微妙に粒度と日本語がゴチャゴチャな気がする > 商品コードが登録されていれば現在の在庫数を戻り値に返す。 > 登録されていない(入庫されていない)場合は-1を返す。 商品コードの登録って実際はどういう動作なのかわからん. どうも在庫数を増やすだけじゃなさそうだが. まぁ作ったけど.
900 :
894 :2008/06/18(水) 15:43:53
たしかにゴチャゴチャですよね;
知識ないのに余計よくわからなくて此処で聞いてみました。
>>899 さん上げてもらえますか?
901 :
デフォルトの名無しさん :2008/06/18(水) 15:56:29
const int CODE_NOT_FOUND = -1; const int MASTER_ERROR = -1; const int MASTER_SUCCESS = 0; static int master[] = {1, 2, 3, 4, 5, CODE_NOT_FOUND}; static int checkCode(int code){ for(int i = 0; master[i] != CODE_NOT_FOUND; i++) if(code == master[i]) return code; return CODE_NOT_FOUND; } class Manager{ private: int *merchandise; public: Manager(){ merchandise = new int[100]; for(int i=0; i<100; merchandise[i++] = 0); } virtual ~Manager(){ delete[] merchandise; } int add(int code, int n){ if(checkCode(code) == CODE_NOT_FOUND) return MASTER_ERROR; else {merchandise[code] += n; return MASTER_SUCCESS; } } int get(int code){ if(checkCode(code) == CODE_NOT_FOUND) return MASTER_ERROR; if(merchandise[code] == 0) return -1; else return merchandise[code]; } }; こんな感じ
902 :
894 :2008/06/18(水) 16:10:57
すいません、、、 もっと分かりやすい簡単な漢字で書いてもらえないでしょうか、、?
903 :
894 :2008/06/18(水) 16:12:33
すいません、、、 もっと分かりやすい簡単な感じで書いてもらえないでしょうか、、?
分かりやすさは他人に求めるものじゃなくて自分で感じるものじゃね?
こういう分野はC/C++向きじゃないな。完全にデータベース向けと考えられてるね一般的には。 やはりこういう問題出した教師は現場を知らん◎フォだとしておこう。
マスタのコードが0-999でmerchandiseのインデックスにコード使っちゃうとだめなんじゃない?
原理を勉強するのに、一から書いてみるというのは悪い方法じゃないだろう
>>901 なんかそれだとcodeがmerchandiseのインデックスになるから
例題の
int master[ ]={1,3,5,10,11,12,100,200,900,-1};
のときmerchandise[200]とかになっておかしくないか?
/* 0thello Game */
ShowAllって次の手1個につき1画面なのかな 書き直してみる
914 :
911 :2008/06/18(水) 17:56:34
>>908 まあ宿題だからそれぐらいアバウトなほうがいいのかもしれないね
>>850 なんですがこの表示結果の合計を、前列の合計を次々に足していく風にしたいのですがどう書けますか?
よろしくお願いします。
合計
50 49 48 47 46 240
45 44 43 42 41 215
40 39 38 37 36 190
35 34 33 32 31 165
30 29 28 27 26 140
25 24 23 22 21 115
20 19 18 17 16 90
15 14 13 12 11 65
10 9 8 7 6 40
5 4 3 2 1 15
合計 275 265 255 245 235 1275
↑ずれて分かりにくくなってしまってすみません;;
918 :
878 :2008/06/18(水) 18:27:41
>>880 エラーが出てきます。
コンパイラ通してみた結果です。
10:error:プログラムとして逸脱した文字 '/226'
10:error:プログラムとして逸脱した文字 '/128'
10:error:プログラムとして逸脱した文字 '/156'
10:error:文法エラーが'%'トークンの前にあります
10:error:プログラムとして逸脱した文字 '/226'
10:error:プログラムとして逸脱した文字 '/128'
10:error:プログラムとして逸脱した文字 '/157'
15:error:プログラムとして逸脱した文字 '/226'
15:error:プログラムとして逸脱した文字 '/128'
15:error:プログラムとして逸脱した文字 '/156'
15:error:文法エラーが'%'トークンの前にあります
15:error:プログラムとして逸脱した文字 '/226'
15:error:プログラムとして逸脱した文字 '/128'
15:error:プログラムとして逸脱した文字 '/157'
>>862 を参考に、一次元配列を使うようにしたよ。
#include <stdio.h>
int main(){
int a,b,z,i=0,d=0;
int c=50;
int r[10];
//1行目から10行目
printf("\t\t\t\t\t\t合計\n");
for(a=0; a<10; a++){
for(b=0; b<5; b++){
i += c;
printf("\t%d",c);
c--;
}
printf("\t%d",i);
printf("\n");
i=0;
}
//11行目
printf("合計");
for(a=5; a>0; a--){
for(b=0; b<10; b++){
c += a+5*b;
}
printf("\t%d",c);
d += c;
c=0;
}
printf("\t%d",d);
}
>>920 ありがとうございます!
理解できました!
合計値についてなんですが前列の合計値も足してって次々に足して表示させたいんですがどうすればいいのですか?
>>921 理解できたか。それはよかった。次々にっていうのはこういうこと?
#include <stdio.h>
int main(){
int a,b,z,i=0,d=0;
int c=50;
int r[10];
//1行目から10行目
printf("\t\t\t\t\t\t合計\n");
for(a=0; a<10; a++){
for(b=0; b<5; b++){
i += c;
printf("\t%d",c);
c--;
}
printf("\t%d",i);
printf("\n");
// i=0;
}
//11行目
printf("合計");
for(a=5; a>0; a--){
for(b=0; b<10; b++){
c += a+5*b;
}
printf("\t%d",c);
d += c;
// c=0;
}
printf("\t%d",d);
}
>>922 そうです!
でも、どこをどういう風に考えたのか分かりません@@:
一行書くたびに合計をクリアしていたので、一行ごとの合計が右端に出てた。 これをクリアしないようにすることで、1行目の合計に2行目の数字が足されるようになって 1行目と2行目の合計が2行目に出るようになった。 列もおなじ。
>>924 初歩的な質問でごめんなさい。クリアを示す記号って何ですか?
どこも変わっていないような気がするのですが・・・
>>918 226=0xE2
128=0x80
156=0x9C
156=0x9D
E2 80 9C はUTF-8 で全角の “
E2 80 9D はUTF-8 で全角の ”
927 :
918 :2008/06/18(水) 19:04:43
自己解決しました。 スレ汚し申し訳ありません。
自己解決w
>>925 0を代入することでクリアしていた部分をコメントアウトすることでクリアしないようにした。
行、列の2箇所。
>>930 なるほど、そういう事だったんですね。ありがとうございました。
932 :
919 :2008/06/18(水) 19:12:07
>>836 うpしてから思ったがABC#DEF#HIJをABC#FED#HIJではなくABC#FED#JIHにするっぽいな
後者ならフラグ要らんからrev_flagを含む行(5行)は削っとくれ
>>850 #include <stdio.h>
#define ROW 10
#define COL 5
int main(void){
int row[COL]={0},tr,tc[COL]={0},r,c;
for(c=0; c<=COL; c++) printf("\t");
printf("合計\n");
// 各行
for(r=ROW; r>0; r--) {
for(c=COL-1; c>=0; c--) {
row[c]=r*COL-c;
tc[c]+=row[c];
}
for(c=0,tr=0; c<COL; c++) {
tr+=row[c];
printf("\t%d",row[c]);
}
printf("\t%d\n",tr);
}
// 各列の合計
printf("合計");
for(c=0; c<COL; c++) printf("\t%d",tc[c]);
puts("");
return 0;
}
#include <stdio.h>
int count_bits(unsigned)
{
int count = 0;
while (x){
if (x & 1U) count++;
x
>>1 ;
}
return (count);
}
int int_bits(void)
{
return (count_bits(~0U));
}
void print_bits(unsigned x)
{
int i;
for (i= int_bits() - 1; i >= 0; i++)
putchar(((x
>>1 ) & 1U) ? '1' : '0');
}
int main(void)
{
unsigned nx;
printf("非負の整数を入力してください :");
scanf("%u", &nx);
putchar('\n');
return 0;
}
というプログラムにおいて、int count_bits(unsigned)を int count_bits(signed x)とするとどのような現象が置きますか?
理由も書けという問題なのですが。
>>935 ありがとうございます!
合計値は、前列(行)の合計値を次々に足していく風にしなければならないのですが。。。
一次元配列に於いては次の列(行)にいく際どこでクリアされているのでしょうか。
>>938 >>850 #include <stdio.h>
#define ROW 10
#define COL 5
int main(void){
int row[COL]={0},tr,tc[COL]={0},tmp,r,c;
for(c=0; c<=COL; c++) printf("\t");
printf("合計\n");
// 各行
for(r=ROW,tr=0; r>0; r--) {
for(c=COL-1; c>=0; c--) {
row[c]=r*COL-c;
tc[c]+=row[c]; }
for(c=0; c<COL; c++) {
tr+=row[c];
printf("\t%-d",row[c]); }
printf("\t%-d\n",tr);}
// 各列の合計
printf("合計");
for(c=0,tmp=0,tr=0; c<COL; c++) {
tmp+=tc[c]; tr+=tmp;
printf("\t%-d",tmp);} printf("\t%d\n",tr);
return 0;
}
>>911-914 >>933 >>937 こんなにたくさん頑張って頂き本当にありがとうございます.
これが第一段階らしく,第二・三段階もあるみたいなので,もし良かったら
その時にも是非よろしくお願いします.
941 :
デフォルトの名無しさん :2008/06/18(水) 20:01:32
[1] 授業単元:コンピュータプログラミング
[2] 問題文(含コード&リンク):
標準入力(キーボード)から一つずつ数値(浮動小数点)を
読み込んで、データの数、平均値、標準偏差を出力するプロ
グラムを作成せよ。ただし、データ入力は、空行の入力で終
了するものとする。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6957.txt [3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年06月18日まで
[5] その他の制限:入力終了の判別方法は、このプログラムを参考にするとよいが、
今回の問題では、入力データを配列等に保存する必要がない
ことに注意。配列に保存することにすると、配列の大きさで
入力できるデータ数が制限されてるので、好ましくない。
よろしくお願いします。m(_ _)m
#include <stdio.h> #include <math.h> int main(void) { double s = 0, a = 0, temp, sigma2; int cnt = 0; char buff[256]; while(1) { fgets(buff, sizeof buff, stdin); if(buff[0]=='\n') break; sscanf(buff, "%lf", &temp); s += temp * temp; a += temp; cnt++; } a /= cnt; s = sqrt(s / cnt - a * a); printf("データ数:%d\n平均:%f\n標準偏差:%f", cnt, a, s); return 0; }
::
>>942 適当に改造してたら使ってない変数残った。
sigma2は消しといて
サセクア
[1] C演習 [2] 入力する3以上の整数nに対して、2以上n以下の整数の組の最大公約数を 「ユークリッドの互除法」を用いて計算するプログラムを作れ。 (例:n=6の場合、2と3、2と4、2と5、2と6、3と4、3と5、3と6 4と5、4と6、5と6の10通り) (表示例:n=6の場合) 3 4 5 6 2: 1 2 1 2 3: 1 1 3 4: 1 2 5: 1 [3] [3.1] LINUX [3.3] C [4]6月23日 [5]関数は習ってないので、if,while,forなどを使ってお願いします。 よろしくお願いします。
[1] C演習 [2] 入力する3以上の整数nに対して、2以上n以下の整数の組の最大公約数を 「ユークリッドの互除法」を用いて計算するプログラムを作れ。 (例:n=6の場合、2と3、2と4、2と5、2と6、3と4、3と5、3と6 4と5、4と6、5と6の10通り) (表示例:n=6の場合) 3 4 5 6 2: 1 2 1 2 3: 1 1 3 4: 1 2 5: 1 [3] [3.1] LINUX [3.3] C [4]6月23日 [5]関数は習ってないので、if,while,forなどを使ってお願いします。 よろしくお願いします。
>>943 inventory(char *item, double cost, int on_hand)
{
strcpy_s(inventory::item, item);
inventory::cost = cost;
inventory::on_hand = on_hand;
}
inventoryだけを上記のように変更。
namespaceによるローカル変数とメンバ変数の明示を問う問題っぽいけど実務では使うなよ。
1] 情報プログラミング演習: [2] 問題文(含コード&リンク):標準入力からのテキストデータ中に現れる単語の出現頻度数つき一覧を出力するプログラムを作成せよ。 [3] 環境 [3.1] OS: Windous [3.2] VC 6.0 [3.3] 言語: C++ [4] 期限:2008 6月いっぱい [5] ホントに困っていますのでどの問題でもかまいません 教えてください
952 :
951 :2008/06/18(水) 21:11:21
間違えました 1] 情報プログラミング演習: [2] 問題1 三角形の底辺の幅、あるいは段数(どちらか一つ)を入力すると、逆三角形を表示する。例えば、底辺5あるいは段数3を入力すると ***** *** * となる。 10個以下の任意のn個(データ数は入力)のデータを入力し、逆順に出力する。 実行結果は奇数と偶数個の例を示すこと。 。 [3] 環境 [3.1] OS: Windous [3.2] VC 6.0 [3.3] 言語: C++ [4] 期限:2008 6月いっぱい [5] ホントに困っていますのでどの問題でもかまいません 教えてください
953 :
951 :2008/06/18(水) 21:12:26
間違えました 1] 情報プログラミング演習: [2] 問題1 三角形の底辺の幅、あるいは段数(どちらか一つ)を入力すると、逆三角形を表示する。例えば、底辺5あるいは段数3を入力すると ***** *** * となる。 。 [3] 環境 [3.1] OS: Windous [3.2] VC 6.0 [3.3] 言語: C++ [4] 期限:2008 6月いっぱい [5] ホントに困っていますので教えてください
954 :
デフォルトの名無しさん :2008/06/18(水) 21:12:33
>>948 #include <stdio.h>
int main(void)
{
int i, j, n;
scanf("%d", &n);
printf(" ");
for(i=3; i<=n; i++) printf("%2d", i);
putchar('\n');
for(i=2; i<n; i++) {
printf("%2d:", i);
for(j=3; j<=i; j++) printf("  ");
for( ; j<=n; j++) {
int a = i, b = j;
while((a=a%b)!=0) {
b += a;
a = b - a;
b -= a;
}
printf("%2d", b);
}
putchar('\n');
}
return 0;
}
そういえば期末の時期だな。
>>954 #include <stdio.h>
int main(void)
{
char string[100];
char *p;
gets(string);
p=string;
while(*p!=' ') {
if(*p=='\0') return 0;
p++;
}
p++;
while(*p!='\0'){
putchar(*p);
p++;
}
putchar('\n');
return 0;
}
またwindousか
>>951 #include<iostream>
#include<string>
#include<map>
int main()
{
std::string tango;
std::map<std::string,int> tango_count;
while(std::cin >> tango)
{
tango_count[tango]++;
}
for(std::map<std::string,int>::iterator n=tango_count.begin();n!=tango_count.end();++n)
{
std::cout << n->first << " : " << n->second << std::endl;
}
return 0;
}
960 :
951 :2008/06/18(水) 21:24:50
[1] 授業単元:プログラム演習 [2] 引数を2つの実数値とし,その2つのうち大きいほうの値を返す関数max()および小さいほうの値を返す関数min()を作成せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年06月20日まで [5] コンパイルできたのですが、正しい値が帰ってきません。 どこがおかしいのか教えてください。 よろしくお願いします。 ↓
#include<stdio.h> double max(double a,double b); double min(double a,double b); main(){ double x,y,MAX,MIN; printf("実数を二つ入力してください\n"); scanf("%f",&x); scanf("%f",&y); MAX=max(x,y); MIN=min(x,y); printf("max=%f\n",MAX); printf("min=%f\n",MIN); } double max(double a,double b){ double z; if(a<b){z=b;}else{z=a;} return(z);} double min(double a,double b){ double z; if(a<b){z=a;}else{z=b;} return(z);}
>>954 > ただし,文字列の入力には関数 gets を用いること.
ダウト!!!!講師にやめれと抗議すべき
[1] 授業単元:暇潰し [2] 問題文(含コード&リンク): 平面上にn個の点について、それぞれ他の全ての点に対し2点を結ぶ辺を作り、その重みをユークリッドノルムとして計算し、昇順にソートする。 nは10万以上のため、全ての重みをメモリ上で保持してソートするのは現実的でない。現実の計算機上で高速に計算しソートする方法を示せ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: C++ [4] 期限: (無期限] [5] その他の制限: なし
>>966 (n-1)! 個の重みを昇順にソートするって事?
#ifdef gets #undef gets #endif #define gets fgets ...
>>965 その後の講義でバッファオーバーフローの説明があるのかもしれない
>>967 n(n-1)個の辺の重みです。重みは可換ですからn(n-1)/2個で済みますが
972 :
954 :2008/06/18(水) 21:46:13
>>957 ありがとうございました<m(__)m>。
>>970 そんなもん後から知ればいいこと。
道具の良し悪しよりも道具の使い方を知るタイミングだ
>>963 scanf("%f",...); →scanf("%lf",...);
scanf の変換指定%f はfloat型 %lfはdouble型
>>973 いちいち客観的にタブーとされているものを擁護するレスがうぜーよ素人
玄人ktkr
オーバーランについて理解していて、使うことを容認するような意見するか・・・ 明らかに考え方がおかしい。敢えて使わせることなんてせず、問題があるなら それは授業で説明すれば良いこと。問題を起こさせる課題だとしても 万が一生徒のコンピュータにトラブルが起こったら、賠償モンだよw
979 :
951 :2008/06/18(水) 22:02:16
getsなんて最初からなかったものとして教えなければいいのにな。 scanfのほうがいくらか安全だろう。
宿題くらいにしか使えないんだからスルーしてやれ
>>975 玄人か。すげえな。
一応俺もプログラムでご飯食べてるけど、まあどんな関数でも
いつobsoluteになるかわからんよね。
がんばってな。応援してるよ。
obsolute の検索結果 約 33,900 件中 1 - 10 件目 (0.18 秒) obsolete の検索結果 約 28,200,000 件中 1 - 10 件目 (0.18 秒)
Oberfoot取りイクナイ
[1] 授業単元:プログラム演習 [2] int型配列x,yを次のように宣言する。 int x[5]={3,-2,-4,2,3}; int y[7]={1,3,3,-2,3,0,5}; このとき,xおよびyの配列の各要素の合計を返す関数ArraySum()を作成せよ。 なお,xとyとで2つの異なる関数を作る必要はない。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年06月20日まで [5] これも、コンパイルできたのですが、正しい値が帰ってきません。 どこがおかしいのか教えてください。 よろしくお願いします。 ↓
#include<stdio.h> int ArraySum(int data[]); main(){ int x[5]={3,-2,-4,2,3}; int y[7]={1,3,3,-2,3,0,5}; int sumx=ArraySum(x); int sumy=ArraySum(y); printf("配列xの合計は%d",sumx); printf("配列yの合計は%d",sumy); } int ArraySum(int data[]){ int i,sum=0; for(i=0;i<sizeof(data)/sizeof(data[0]);i++){ sum=sum+data[i]; } return(sum); }
>>986 printf("%d\n", sizeof(data));
を追加してみ
>>984 Oberfootの検索結果 1 件中 1 - 1 件目 (0.02 秒)
>>984 120でした。
ということは、i<30になってるんでしょうか
990 :
989 :2008/06/18(水) 22:30:12
>>986 int ArraySum(int data[], int size)
{
int i, sum = 0;
for(i=0; i<size; i++) sum += data[i];
return sum;
}
配列を関数に渡すときは、サイズも渡さないと。
この予想外の展開に玄人はどう答えるのか楽しみである
自分が指摘されると、相手にお前はどうすんだと意見を請うところも 性格が捻くれているのがバレバレ。いちいちそういうこと言うから嫌われるんだよw おまけに、わけの分からない擁護。勝手な憶測でつじつま合わせにもならん 無駄な戯言を。
994 :
989 :2008/06/18(水) 22:35:38
配列を関数に渡してから、サイズを測ることはできますか?。
ポインタ一個で120B…ねーよ
>>993 俺はあんたみたいなわけ分からんヤツには何も請うてない。
玄人の意見が聞きたいだけだ。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。