[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 07/11 00:14 / Filesize : 118 KB / Number-of Response : 333
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 120代目



1 名前:デフォルトの名無しさん [2008/12/16(火) 19:45:29 BE:198809273-PLT(36020)]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

前スレ
C/C++の宿題を片付けます 119代目
pc11.2ch.net/test/read.cgi/tech/1228313292/

75 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:46:56 ]
>>68
なんで?事実だよ。0と1とはっきり記述されていはいないが、
磁気で記録するメディアには+か-、CDではレーザーの反射を読み取る仕組みが
挙げられ、穴が開いているかいないか、さらに、PC内部では電気信号で
やはり+か-かで、あとはそれらの組み合わせで、より多くのパターンを表現しているんだし。
ビットくらい、知っているだろ?そういうこと。



76 名前:デフォルトの名無しさん [2008/12/17(水) 00:49:26 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
文字列をコピーする関数を作成せよ。
char *my_strncpy(char *s1, char *s2, int n);
ただし、s2の文字列をs1へ、最大でn文字未満コピーするようにし、
s1がCの文字列の条件を満たすように作成せよ。
また、return valueはコピーした文字のポインタとする。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 17日まで
[5] その他の制限: ポインタを習っています。
ポインタの考え方が難しくてよくわかりません。
詳しい説明も付けてくれるとありがたいです。
よろしくお願いします。


77 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:50:08 ]
>>67
そこまで言うなら、wikiに事実無根や間違いがあるなら指摘しな。
他の資料を見ても、単純に言い切れない過去の歴史と仕様は存在しているし。
あと、何かと笑うだけの奴も無能。説明と言う説明が出来ていないから。
頼む、ランクはともかく、大学で実験や研究をしていない奴は黙っていてくれ。
そういう機関でそれなりのものを見てくれば、汎用電子計算機に対する考えは変わるよ。
少なくとも、目の前の色や画像データでウハウハやったり、KI・MO・I!文字データで
ウヒウヒやっている奴らが、0と1のデジタルデータに翻弄されているように見えるから。
その文章や画像も、真面目なものなら良いけどさ。例え風景を撮影した写真も、
所詮は0と1の組み合わせの数値データ。それをハードなりソフトで展開して
人間が認識できるある形になっているが、もとは無機質なデジタルメディアに記録された数値データ。

78 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:51:29 ]
>>63 お前が無知だということは、よーく分かった。お前が説明できないなら、黙っていれば良いだろw
あと、お前にお似合いのプレゼント。ちゃんとコンパイルして実行してくれw

#include <stdio.h>
int main(void) {
int num[]={89,111,117,32,105,115,32,97,32,98,105,103,32,102,111,111,108,32,109,97,110,46,32,72,97,104,97,104,97,46},i;
for(i=0; i<sizeof(num)/sizeof(num[0]); i++) putchar(num[i]);
return 0;
}


79 名前:14 mailto:sage [2008/12/17(水) 00:52:26 ]
>>69
おかげ様で納得のいくプログラムになりました。
ご助力ありがとうございました。

80 名前:デフォルトの名無しさん [2008/12/17(水) 00:54:22 ]
step  f1 f2 f3 f4
10 2.434 4.234 3.242 4.566
20 2.767 4.756 3.666 4.867
30 2.534 4.555 3.777 4.555
40 2.777 5.355 4.244 5.424
というデータファイルがあり、これをファイル入力して離散し、最終的に
0か1のデータにしたいです。そのためにまずこのテキストからf1,f2,f3,f4の
最大値(2.777,5.335,4.244,5.424)と最小値(2.434,4.234,3.242,4.555)を
見つけ出し、(データの値−最小値)/(最大値−最小値)で各値を算出し
step  f1 f2 f3 f4
10  1  0    1   1
20  1  1    1   1
30  0   1    0   1
40  1   1    0   0
とう具合の結果を出したいのですが、できるかたよろしくお願いします。
自分で作ったものの頓珍漢な結果しか算出されません。TT



81 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:57:12 ]
>>77
いつになったら大学名教えてくれんだよw

82 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:58:54 ]
>>79
j=strlen(s);
は要らない

83 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 01:04:06 ]
>>80
宿題なのかな?
まずは頓珍漢なコードを見せてもらおうか



84 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 01:04:07 ]
0と1が思い浮かばなくても、ファイルのダンプをすれば、実行プログラム、テキストファイル、
画像データ、その他ファイルも、数値データの塊で、それを扱っているハードが
0と1の組み合わせで扱っていることくらい、普通に理解できる。
テレビを見て、画面の中に人がいるとは思わんだろ?w
あの映像も、何かハードウェアが映し出した映像を展開しているように、
数値データ(ファイル)をソフトに応じて実装された性能の範囲内で
処理を行っているのだよ、ワトソン君。

85 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 01:06:52 ]
この説明で相手より優位に立てると思ってる知能の低さが泣けてくる。

86 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 01:11:08 ]
cns-guide.sfc.keio.ac.jp/2002/2/1/1.html
> コンピュータ内部のすべての情報は ``デジタルデータ'' という情報形式で保存されています.
> デジタルデータとは,数字に置き替えられる形式の情報のことを指し,
> `0'と`1'の2通りの数字によって表現できます.文章や写真,映像,音声など
> 現実にあるさまざまな形式の情報は,デジタルデータに変換できます.
そういうこと。間違っていないことを、自分はそうは思いませんでは通用しないのが、
客観的な考えや意見が必要な人間社会で適合するには、重要なスキルだぞ。
嘘を言っていない人を嘘つき呼ばわりは、干されるだけ。もちっと理解力を身に着けような。

87 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 01:25:21 ]
>>74
#include <stdio.h>
int main()
{
int r = 0, x, y;
char op;
if (scanf("%d%d %c", &x, &y, &op) != 3)
return 1;
switch (op)
{
case '+': r = x + y; break;
case '-': r = x - y; break;
case '*': r = x * y; break;
case '/': r = x / y; break;
}
printf("%d\n", r);
return 0;
}


88 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 01:27:20 ]
ぶっちゃけ、ここで聞いて要らん薮蛇出した奴には一緒っていっててもいいだろ。

89 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 01:30:35 ]
誰と戦ってるんだお前。

90 名前:デフォルトの名無しさん [2008/12/17(水) 01:51:40 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
「果物名 単価 個数」の形式の取引のデータのファイルを読み込む。ファイルを読み込み終わった後に、「取引の総数」、
「合計の金額」、「金額が最大であった取引の(整数計算でする)」、「1取引あたりの平均金額(整数計算でする)」、
「金額の最大であった取引(最初を1とする)の番号」と「その金額」をprintfを用いて標準出力に表示するプログラムを作れ。
入力データファイルには /home/sample/PE1/2008/e12.txt を用いる。(ファイル名はfopenの因数に文字列定数として書いてよい)
ファイルの全データを格納できるような大きな配列を用いてはいけない。(平均は、金額の合計と取引の総数から計算できる)
個数と金額は、ゼロまたは府の値にならないとする。また、取引金額の最大値が複数の取引に現れることはないものとする。

出力の形式は次の実行結果の例を参考にせよ。
取り引数10
合計金額6424円 合計個数57個
平均112円/個 642円/取引
最大の取引は6番目で2064円
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 2008年12月18日20時まで
[5] その他の制限:制限なし

よろしくお願いします。

91 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:02:09 ]
これをc++のiostreamを使ったものに書き換えてください


#include <stdio.h>
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};
void k(){if(m[p]==0)
for(i=0;i<8;i++){
for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;
if(c&&m[v]==t){a+=c;v=p;
if(d)do m[v]=t,v+=r[i];
while(m[v]!=t);
}}}
char*h="・○●\n";
int main(){for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0){for(p=9;p<82;++p)k(),printf("%.2s",&h[m[p]*2]);
if(a)for(d=a=s=p=8;a==8;k())t-2?(scanf("%d %d",&p,&i),p+=i*9):++p;
else if(s)s=0,printf("pass");
else break;t=3-t;
}
return 0;
}



92 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:06:54 ]
>>76
strncpy と同じ仕様でよければこうかな
#include <stdio.h>
char *my_strncpy(char *s1, char *s2, int n){
int i;
for(i = 0; *s2 != '\0' && i < n; i++)
s1[i] = *s2++;
while(i < n)
s1[i++] = '\0';
return s1;
}
int main()
{
char *p, s1[257] = "zzzzzzzzzzzzzzz";
p = my_strncpy(s1, "sample", 7);
printf("p: %s s1: %s \n", p, s1);
return 0;
}


93 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:10:21 ]
>>73
7行オセロを適当に改行してみたの?



94 名前:デフォルトの名無しさん [2008/12/17(水) 02:15:25 ]
>>93
はい、分かりやすいように改行してみて、色々いじくってみたんですがエラーになってしまってお手上げで…

95 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:16:40 ]
>>91
#include <stdio.h> ⇒ #include <iostream>
printf("%.2s", &h[m[p]*2]); ⇒ cout << h[m[p]*2];
scanf("%d %d", &p, &i) ⇒ cin >> p >> i

余計なことだが、カンマで 1つの文に複数の式書くのってなんかきもいな

96 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:17:05 ]
改行しただけで諦めただろwwwwww


97 名前:>>83 前半 [2008/12/17(水) 02:18:18 ]
#include <stdio.h>
#include <stdlib.h>
#define MAX 4
int main(void)
{
FILE*fp;
char fname[80];
int step, a, b, c, d;
int f1[MAX], f2[MAX], f3[MAX], f4[MAX];
double max1, max2, max3, max4;
double min1, min2, min3, min4;
printf("入力ファイル名:");
gets(fname);
fp=fopen(fname,"r");
if(fp==NULL){
printf("%sをオープンできません\n",fname);
exit(1);
}


98 名前:>>83 中半1 [2008/12/17(水) 02:20:41 ]

while(fscanf(fp,"%d%d%d%d%d%", &step, &a, &b, &c, &d)!=EOF){
max1=f1[0]; /*データの最大値*/
for(i=1;i<MAX;i++){
if(f1[i]>max1)
max1=f1[i];
}
max2=f2[0];
for(i=1;i<MAX;i++){
if(f2[i]>max2)
max2=f2[i];
}
max3=f3[0];
for(i=1;i<MAX;i++){
if(f3[i]>max3)
max3=f3[i];
}
max4=f4[0];
for(i=1;i<MAX;i++){
if(f4[i]>max4)
max4=f4[i];
}


99 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:21:30 ]
FILE*fp;
char fname[80];
int step, a, b, c, d;
int f1[MAX], f2[MAX], f3[MAX], f4[MAX];
double max1, max2, max3, max4;
double min1, min2, min3, min4;
printf("入力ファイル名:");
gets(fname);
fp=fopen(fname,"r");
if(fp==NULL){
printf("%sをオープンできません\n",fname);
exit(1);
}


100 名前:>>83 中半2 mailto:sage [2008/12/17(水) 02:22:11 ]
max1=f1[0]; /*データの最大値*/
for(i=1;i<MAX;i++){
if(f1[i]>max1)
max1=f1[i];
}
max3=f3[0];
for(i=1;i<MAX;i++){
if(f3[i]>max3)
max3=f3[i];
}

max2=f2[0];
for(i=1;i<MAX;i++){
if(f2[i]>max2)
max2=f2[i];
}
max4=f4[0];

101 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:23:35 ]
おお、俺大人気。延々01の話されたよ!
もっとハードウェアに落ちた話かと思って、閾を超える超えないで判断していて、それを便宜上01に
してるだけ、といいたかった。
物理的な話だと思いこんでたからピットのtypoかと思ったりもしたのに。

デジタルデータは0と1なんだよ!とかここで講釈しても何になるというのかね。

102 名前: ◆MiJ.aMrglc mailto:sage [2008/12/17(水) 02:23:48 ]
[1] 授業単元:自分の勉強のため
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8363.txt
[3] 環境
 [3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:無期限ですが、できるだけ早く解決したい

103 名前:>>83 中半2 [2008/12/17(水) 02:25:14 ]
min1=f1[0]; /*データの最小値*/
for(i=1;i<MAX;i++){
if(f1[i]<min1)
min1=f1[i];
}
min2=f2[0];
for(i=1;i<MAX;i++){
if(f2[i]<min2)
min2=f2[i];
}
min3=f3[0];
for(i=1;i<MAX;i++){
if(f3[i]<min3)
min3=f3[i];
}
min4=f4[0];
for(i=1;i<MAX;i++){
if(f4[i]<min4)
min4=f4[i];
}




104 名前:>>83 last [2008/12/17(水) 02:26:39 ]
for(i=0;i<MAX;i++) /*離散データ算出*/
f1[i]=(f1[i]-min1)/(max1-min1);
for(i=0;i<MAX;i++)
f2[i]=(f2[i]-min2)/(max2-min2);
for(i=0;i<MAX;i++)
f3[i]=(f3[i]-min3)/(max3-min3);
for(i=0;i<MAX;i++)
f4[i]=(f4[i]-min4)/(max4-min4);
printf("%d %d %d %d %d ",step,f1[i],f2[i],f3[i],f4[i]);
}
fclose(fp);
return(0);
}


105 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:31:09 ]
>>101
いや、普通に比喩としても、仕組みの説明でも0と1の話は出るよ。
有るか無いか?あるいは符号化の話では矩形はなども用いられて。
まぁ、デジタル機器の仕組みを知る上では、重要な知識だよ。

106 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:32:07 ]
ただ、本当に0と1という文字の形や、画像にしてもアナログ方式みたいな
形式ではなく、あくまでも 信号 や 符号 ということで用いられる。

107 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:34:12 ]
何を0として、何を1とするか、そこから考えないとだめじゃない?という
ハードよりの視点になってしまってたです。ごめんなさい。

108 名前:デフォルトの名無しさん [2008/12/17(水) 02:37:48 ]
1を3で割れば仕組みが分かる。

109 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:40:13 ]
>>102
for (k=1; k<=512; k++) {
 int idx=-1;
 /* ransu配列に一致するデータがあるか探す */
 for (l=0; l<=15; l++){
  if (k == ransu[l]) {
   idx = l;
   break;
  }
 }
 if (idx != -1)
 {
  /* 見つかってたならransu1の値で振り分け */
  switch (ransu1[l]) {
   case 0:
    for (b=0; b<=14; b++) {
     fprintf(fpw1,"%d\n", dt15[b]);
    }
    break;
   case 1:
    for (c=0; c<=16; c++) {
     fprintf(fpw1,"%d\n", dt17[c]);
    }
    break;
  }
 }
 /* elseなのかどうかあまり解説見てない */
 for (d=0; d<=15; d++) {
  fprintf(fpw1,"%d\n", dt16[d]);
 }
}

110 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:41:47 ]
って麻呂みたいに書いてすぐミスに気づくとかorz
- if (idx != -1)
+ if (idx != 16)
です。

とりあえずこういう風に分けてみるのはどうでしょうか。

111 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:42:59 ]
ほんとだめだわ。。
>>110無しでお願いします。

吊ってくる

112 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 04:35:14 ]
>>102
大雑把にこういうことがしたいのか?と思た

void fukumarete_ita_tokino_shori(int k) {
  if (ransu1[k] == 0)
    printf("dt15を書き込む処理\n");
  else
    printf("dt17を書き込む処理\n");
}

void fukumarete_inai_tokino_shori(void) {
  printf("dt16を書き込む処理\n");
}

// 含まれたら1、無いなら 0
int ransu_ni_fukumareru_ka_douka(int k) {
  int i;
  for (i=0; i<16; i++)
    if (ransu[i] == k)
      return 1;
  return 0;
}

//メイン処理〜
  for (k=1; k<=512; k++)
  {
    if (ransu_ni_fukumareru_ka_douka(k))
      fukumarete_ita_tokino_shori(k);
    else
      fukumarete_inai_tokino_shori();
  }

113 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 05:52:47 ]
for (k=1; k<=512; k++) {
for (l=0; l<=15; l++){
if (k == ransu[l]) {
switch (ransu1[l]) {
case 0:
for (b=0; b<=14; b++) {
fprintf(fpw1,"%d\n", dt15[b]);
}
break;
case 1:
for (c=0; c<=16; c++) {
fprintf(fpw1,"%d\n", dt17[c]);
}
break;
}
break;
}

}
if(l==16){
for (d=0; d<=15; d++) {
fprintf(fpw1,"%d\n", dt16[d]);
}
}
}



114 名前:デフォルトの名無しさん [2008/12/17(水) 06:35:56 ]
[1]授業単元:C言語
[2]問題文: 文字列をバイナリファイルに書き込み、書き込んだデータをテキストファイルへ書き込め。
[3]環境
[3.1]OS:WindowsXP
[3.2]コンパイラ名: visualC++2005
[3.3]言語:C
[4]期限:2008年12月19日AM9時00分まで
[5]特にありません。

115 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 06:47:26 ]
>>80
長いコードは炉だでよろしく
変数の型がでたらめだったり、a, b, c, d に取り込んだ値をいつ使うのか不明だったり
いろいろ突っ込みどころがあるけど、

> (データの値−最小値)/(最大値−最小値)で各値を算出し

これ整数(0, 1)にならないんだけど、何をもって1を出力したいのか書いてください禿
いちおう、何らかの意味の 0, 1 を出力するコードはできている

116 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 06:53:50 ]
>>114 UNIX環境だとどちらも違いでないな
#include <stdio.h>
#include <string.h>
int main()
{
char *s = "we will complete your home work!\n";
FILE *fb = fopen("data.bin", "wb"), *ft = fopen("data.txt", "w");
fwrite(s, sizeof(char), strlen(s), fb);
fprintf(ft, "%s", s);
return 0;
}


117 名前:デフォルトの名無しさん [2008/12/17(水) 09:33:20 ]
[1]授業単元:プログラミングC
[2]問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8364.txt
[3]環境
[3.1]OS:windows XP
[3.2]コンパイラ名: gcc
[3.3]言語:C
[4]期限:2008年12月20日 18時30分

よろしくお願いします


118 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 09:43:26 ]
>>117
コンパイルしてないからミスったらごめん
void getAverage(int kokugo[], int sansuu[], int rika[], float result[], int length)
{
int i;
for (i=0; i<length; i++)
result[i] = (float)(kokugo[i] + sansuu[i] + rika[i]) / 3;
}


119 名前:デフォルトの名無しさん [2008/12/17(水) 10:43:46 ]
>>95
ありがとうございます!
>>96
いえ、いじくってみますた!

120 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:52:32 ]
>>119
あとね、
using namespace std;
をincludeの下に書いておこう
もしくは
std::cout
みたいにstd:: をつける

121 名前:デフォルトの名無しさん [2008/12/17(水) 11:10:31 ]
>>120
ありがとうございます!

using namespace std;
っての授業で使ってたんでこれを使うと自然に習った事を使ってるように見えるのですごく助かります!

122 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:38:13 ]
前すれ>>461どなたかお願いします(;´д`)


[1] 授業単元:プログラミング応用演習
[2] 問題文:
  データベースのソート機能プログラム
   ・商品のデータ(名前と個数)を各項目で昇順・降順でソートできるようにする。
   ・まずどのフィールドでソートするか尋ねる文を表示し、
    入力されたら、次に表示を降順か昇順か選ばせる文を表示する。
    二つが入力されたら全フィールドでのソートを実行する。
   ・商品の名前はポインタ配列で宣言する。
   ・ソートにはバブルソートを用いる。
   ・個数の数値の入れ替えにはswap関数を用いる。
   (商品名(ポインタ配列)の入れ替えは外部関数でなくてもよい)
   ・文字列の比較には標準のstrcmp関数を使う。(昇順はA-Z、降順はZ-A)

     <商品名>   <個数>
     bread     199
     rice      74
     potate     33
     egg      284
     meat      131
         
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C言語
[4] 期限:12月22日(月)


123 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:53:08 ]
>>72
ありがとうございました



124 名前:デフォルトの名無しさん [2008/12/17(水) 12:36:28 ]
[1] 授業単元:
[2] 問題文(含コード&リンク):
"TOKYO"などの文字列を扱うにはchar型の配列を用いる。
ただし、文字列はNULL文字を含むので、"TOKYO"を配列で
表現するにはchar s[6]; あるいは char[]="TOKYO";
と宣言する。このとき、初期化方法は、
char s[6]="TOKYO"; あるいは char s[]="TOKYO";
であり、また
char[6]={'T','O','K','Y','O','\0'};  /* \0はNULL文字*/
としてもよい。
このとき、文字数をカウントするプログラムを関数を用いて
どなたか作成しなさい。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc32)
 [3.3] 言語: (C)
[4] 期限: ([2008年12月21日18:00まで] )
[5] その他の制限: (なし)


よろしくお願いします。

125 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 12:36:51 ]
>>122
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8365.txt

126 名前:デフォルトの名無しさん [2008/12/17(水) 12:46:25 ]
>>124
#include <stdio.h>
int mystrlen(const char *s) {
int c = 0;
while(*s++) c++;
return c;
}
int main(void) {
char s[] = "TOKYO";
printf("%sの文字数は%d\n", s, mystrlen(s));
return 0;
}

127 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 14:13:45 ]
[1] 授業単元:
[2] 問題文:

個人データを表す構造体personは、氏名、年齢、身長、体重、BMI(= 体重 / 身長^2)のメンバからなる。
BMIからは肥満度を判別することができる(プログラム中に場合分けしてあるのでそちらを参考)。
以上から、肥満度と標準体重(= 22 * 身長^2)を求めるプログラムを作成せよ。

ただし、(リダイレクト)入力した値とBMIを構造体メンバに格納し、それらメンバの値、肥満度、標準体重を出力すること。
また、BMIおよび標準体重を計算する関数と肥満度を計算する関数を作成して利用すること。

[3] 環境
 [3.1] OS:win
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:リダイレクト処理を行ってプログラムを実行する。


頑張ってはみたものの、自分の力ではこれが精一杯でした。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8366.txt

改善点など、助言をいただきたいです。

128 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 14:32:54 ]
申し訳ないですが2問お願いしたいです。。。
while文を使うということは分かるのですが

@
キーボードから文字列を1行(改行するまで)読み込み、文字列を逆向きに出力するプログラムを作成しなさい。
【実行例】
文字列を入力: This is a pen.
逆向き出力 = .nep a si sihT

A
キーボードから文字列を1行(改行するまで)読み込み、つぎに検索する文字keyを1文字読み込む。
最初に入力した文字列の中に、文字keyと一致する文字が何文字あるかを数えて出力するプログラムを作成しなさい。
ただし、空白や記号などを全てカウントして構わない。

ただし、キーボードから文字を(文字列ではなく)1文字読み込むには、getchar文を使う。
 char key;
 key = getchar();
と記述すれば、キーボードから文字を1文字だけ読み込んで key の中に代入してくれる。
 scanf("%c",&key);
を使っても構わない。

【実行例】
文字列を入力: This is a pen.
文字key:s

文字sの頻度=2

129 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 14:54:11 ]
>>127
助言はちょっとめんどいので、とりあえず動きそうな感じに。
合ってるかは分からないけど

int level(person * p)
{
if (p->bmi < 18.5) return 0;
else if (p->bmi >= 18.5 && p->bmi < 25) return 1;
else if (p->bmi >= 25 && p->bmi < 30) return 2;
else if (p->bmi >= 30 && p->bmi < 35) return 3;
else if (p->bmi >= 35 && p->bmi < 40) return 4;
else return 5;
}
int main()
{
person p[N];
int i;
double NW;
char * hogehoge[] = { "Light", "Normal", "Heavy 1", "Heavy 2", "Heavy 3", "Heavy 4" };
for(i = 0; i < N; i++)
{
fscanf(stdin, "%s %d %lf %lf", p[i].name, &p[i].age, &p[i].height, &p[i].weight);
NW = func(p[i].height, p[i].weight, &p[i]);
printf("%10s %3d歳 %fcm %fkg | 肥満度は「%s」, 標準体重 = %fkg です。\n", p[i].name, p[i].age, p[i].height, p[i].weight, hogehoge[level(&p[i])], NW);
}
return 0;
}

130 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:09:04 ]
[1] 授業単元:
[2] 問題文:

個人データを表す構造体personは、氏名、年齢、身長、体重、BMI(= 体重 / 身長^2)のメンバからなる。
BMIからは肥満度を判別することができる(プログラム中に場合分けしてあるのでそちらを参考)。
以上から、肥満度と標準体重(= 22 * 身長^2)を求めるプログラムを作成せよ。

ただし、(リダイレクト)入力した値とBMIを構造体メンバに格納し、それらメンバの値、肥満度、標準体重を出力すること。
また、BMIおよび標準体重を計算する関数と肥満度を計算する関数を作成して利用すること。

[3] 環境
 [3.1] OS:win
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:リダイレクト処理を行ってプログラムを実行する。


頑張ってはみたものの、自分の力ではこれが精一杯でした。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8366.txt

改善点など、助言をいただきたいです。


131 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:21:12 ]
すみません、>>130はスルーして下さい(^^;

>>129
ありがとうございます。どうやら大丈夫そうです。
実は、関数で場合分けして数値を返して・・・というのは考えていたのですが、返り値をどうにか文字列にできないかとググり、真似したものが投稿したものです。
課題は>>129で提出しようと思いますが、もし文字列を返す関数で定義できるのであれば、教えていただきたいです。

132 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:28:31 ]
>>131
char * level(person * p)
{
static char * hogehoge[] = { "Light", "Normal", "Heavy 1", "Heavy 2", "Heavy 3", "Heavy 4" };
if (p->bmi < 18.5) return hogehoge[0];
else if (p->bmi >= 18.5 && p->bmi < 25) return hogehoge[1];
else if (p->bmi >= 25 && p->bmi < 30) return hogehoge[2];
else if (p->bmi >= 30 && p->bmi < 35) return hogehoge[3];
else if (p->bmi >= 35 && p->bmi < 40) return hogehoge[4];
else return hogehoge[5];
}


133 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:35:30 ]
>>131
もしかしたら見当はずれかもしれませんが、関数内でポインタ配列を定義しても、関数を抜けると消滅してしまうということはないのでしょうか??



134 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:37:48 ]
>>133
staticだから大丈夫

135 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:41:49 ]
>>134
そうなんですか!! (@o@
ちょっとstaticについてググってきます。ありがとうございました。

136 名前:デフォルトの名無しさん [2008/12/17(水) 15:47:10 ]
[1] 授業単元:
[2] 問題文(含コード&リンク):
aのx乗(a>0,a≠1,x∈Z)を求める関数power(a,x)を
作成してくなさい。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc32)
 [3.3] 言語: (C)
[4] 期限: ([2008年12月20日18:00まで] )
[5] その他の制限: (なし)

137 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:50:22 ]
>>136
返り値どうやって返せばいいの?

138 名前:デフォルトの名無しさん [2008/12/17(水) 15:51:14 ]
環境 unixだったけ? 言語: C 期限: 今日 12月17日16:30まで^^;
次のプログラムは、階乗計算の関数factを作りsin(x)をテーラー展開した式でsin(30°)をもとめるプログラムです、抜けている所があります。(___)を埋めて完成しなさい
           2k-1
5    k-1    x
Σ  (-1)     ーーーーーー
k=1       (2k-1)!
※うまく指数が表せませんでした、見にくくて申し訳ないです。
#include<stdio.h>
#include<(____)>
int (___)(int m);
int main(void);
int main(void){
double x, s;
int k;
x =(___*________________)/180.0;
s =(__);
for( k=__; k <=__ k++){
s__ pow(___,___)*pow(__,_______)/fact(____);
}
printf("sin=%.7__\n",s);
return(0);
}
int fact(int m)
{
int s = 1, i;
if (m___0) return (__);
else for(i=1;i<=m;i++) s (___) i;
return (___);
}

139 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:56:25 ]
授業中かよw

140 名前:デフォルトの名無しさん [2008/12/17(水) 15:59:25 ]
Unixな奴です。 C言語
1.正整数nを入力し、nまでで4で割り切れる数(4の倍数)の和を出力するfor文を利用したプログラムをつくりなさい
4+8+12+・・・・= ???
2.1の問題でfor文の変わりにWhile文を利用して作りなさい。
3.ある駐車場の駐車料金は、1時間(60分まで)350円で、以降15分ごとに90円です。
 入庫時刻と出庫時刻を入力し、駐車料金を算出すプログラムを作りなさい。
次のプログラムは、階乗計算の関数factを作りsin(x)をテーラー展開した式でsin(30°)をもとめるプログラムです、抜けている所があります。(___)を埋めて完成しなさい
です、お願いします。なにもわからず瀕死状態です。テスト中です;;

141 名前:デフォルトの名無しさん [2008/12/17(水) 16:05:10 ]
>136
全然わからないんです。
ヒントに
A=aのx乗
両辺の対数をとる
loge A=xloge a
となり
A=eのloge a
となる
log xはlog(x)と書く.

と書いてありました。


142 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:16:40 ]
>>136
#include <stdio.h>

double power(int a, int x)
{
if (x == 0) return 1.0;
if (x < 0) return power(a, x + 1) / a;
if (x > 0) return power(a, x - 1) * a;
}
int main()
{
printf("%g\n", power(2, -3));
return 0;
}


143 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:23:05 ]
>>140
今テスト中なの?



144 名前:テスト中 [2008/12/17(水) 16:23:45 ]
>>143
そうです>_<

145 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:24:24 ]
すげえ。

146 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:25:50 ]
そろそろタイムリミットなんじゃないの?テスト。
テスト中に2chリロードしまくってるとか超笑える

147 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:28:30 ]
提出の余裕をもってる可能性も考慮しろ

148 名前:テスト中 [2008/12/17(水) 16:29:05 ]
もう\(^o^)/ オワタ ...

149 名前:テスト中 [2008/12/17(水) 16:30:52 ]
ぐは OUT のゴング(チャイム)

150 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:41:27 ]
>>140 (1)
#include <stdio.h>
#define HOGE 4
int main(void)
{
  int n=50;
  int num;
  int result = 0;
  for (num = n / HOGE; num>0; num--)
    result += num * HOGE;
  printf("n=%d sum=%d\n", n, result);
  return 0;
}

151 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:42:17 ]
無茶しやがって・・・

152 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:42:42 ]
>>140 (2)
#include <stdio.h>
#define HOGE 4
int main(void)
{
  int n=50;
  int result = 0;
  int num = n / HOGE;
  while (num>0)
    result += num-- * HOGE;
  printf("n=%d sum=%d\n", n, result);
  return 0;
}

153 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:50:59 ]
[1] 授業単元:プログラミング演習
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8367.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Borland
  [3.3] 言語:C++
[4] 期限:2008年12月22日(12:00)までです。

よろしくお願いします。



154 名前:デフォルトの名無しさん [2008/12/17(水) 16:57:45 ]
>>128
1.
#include <stdio.h>

int main(void){
char c[100] = "";
int i;
printf("文字列を入力:");
gets(c);
printf("逆向き出力:");
for(i = 99; i >= 0; i--) putchar(c[i]);
putchar('\n');
return 0;
}

155 名前:デフォルトの名無しさん [2008/12/17(水) 16:58:42 ]
>>128
2.
include <stdio.h>

int main(void){
char c[100] = "";
char key;
int i, j = 0;
printf("文字列を入力:");
gets(c);
printf("文字key:");
key = getchar();
printf("文字%cの頻度=", key);
for(i = 0; i < 100; i++) if(c[i] == key) j++;
printf("%d\n", j);
return 0;
}


156 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 17:00:56 ]
>>140 (3)
#include <stdio.h>
int main(void)
{
  int time0, time1, temp;
  int result = 350;
  printf("入庫");
  scanf("%2d:%2d", &time0, &temp);
  time0 = time0 * 60 + temp;
  printf("出庫");
  scanf("%2d:%2d", &time1, &temp);
  time1 = time1 * 60 + temp;
  if (time0 >= time1)
    return 1;
  time1 -= (time0 + 60);
  if (time1 > 0)
    result += 90 * (time1 / 15 + 1);
  printf("%d円\n", result);
  return 0;
}

157 名前:デフォルトの名無しさん [2008/12/17(水) 17:09:50 ]
>>119です。
>>91をiostreamを使った型に>>95>>120を参考に書き直してみたのですが以下
のようなエラーが出ます。
21行目は「t-2?(cin >> p >>i),p+=i*9:):++p;」なのですが)の前に;を入れた
ら余計に沢山エラー文が出てしまいます。どうかお助けください!


#include <iostream>
using namespace std;

int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};
void k(){if(m[p]==0)
for(i=0;i<8;i++){
for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;
if(c&&m[v]==t){a+=c;v=p;if(d)do m[v]=t,v+=r[i];
while(m[v]!=t);}}}
char*h="・○●\n";int main(){for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;
for(;;a=d=0){for(p=9;p<82;++p)k(),cout<<h[m[p]*2];
if(a)
for(d=a=s=p=8;a==8;k())
t-2?(cin>>p>>i),p+=i*9):++p;else if(s)s=0,cout<<"pass";
else break;
t=3-t;
}return 0;}
エラー文
In function 'int main()':last.cpp:21: error:expected primary-expression before ')' token
last.cpp:21: error: expected `;'before ')' token

158 名前:デフォルトの名無しさん [2008/12/17(水) 17:14:35 ]
あ、改行が多すぎて書き込めなくて改行を消したので21行目ではないですが、該当ヶ所は同じです。

宜しくお願いします!

159 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 17:17:57 ]
括弧の数がおかしいじゃん
っつーか、やめとけ。

160 名前:デフォルトの名無しさん [2008/12/17(水) 17:23:03 ]
>>159
なにがやめとけなんですか?

161 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 17:23:44 ]
そんなペースでやってるようじゃらちがあかんということ。
1年ぐらいかけるつもりなら止めないけど

162 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 17:26:30 ]
レイアウトを整えて
変数の意味を理解し次第replaceして
短くするための記述方法を開く。i++*9とか。
理解してないうちにprintfをcoutにしてみました!とか何でそう無謀な方向に進むのかがわからんよ。

163 名前:デフォルトの名無しさん [2008/12/17(水) 17:38:54 ]
>>161-162
必修だから仕方なくやってるだけなんで、自分のものにしたいなんて思ってないんです。
どう直せばよろしいんでしょうか…('`)



164 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 17:44:24 ]
>>163
>必修だから仕方なくやってるだけなんで、自分のものにしたいなんて思ってないんです。
その心意気が気に入ったのでコンパイル時にエラーが出ないようにしといた。

#include <iostream>
using namespace std;int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};
void k(){if(m[p]==0)for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;if(
c&&m[v]==t){a+=c;v=p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);}}}char*h="・○●\n"
;int main(){for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0
){for(p=9;p<82;++p)k(),cout<<h[m[p]*2];if(a)for(d=a=s=p=8;a==8;k())t-2?(cin>>p
>>i),(p+=i*9):++p;else if(s)s=0,cout<<"pass"; else break;t=3-t;}return 0;}

165 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 17:48:59 ]
>>163
元のソースは他人のだな。

ttp://pc11.2ch.net/test/read.cgi/tech/1087979678/1-25

21

166 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 17:54:08 ]
前スレ868です。
遅くなってすみません。
970さん、ありがとうございました。
しかし、問題文が不十分だったため、もう一度お尋ねします。
すみませんが、よろしくお願いします。

[1] 授業単元:プログラミングII
[2] 問題文:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8368.txt
[3] 環境
 [3.1] OS:WinVista
 [3.2] コンパイラ名とバージョン:VC++2008
 [3.3] 言語:C言語
[4] 期限:2008年12月17日18:00
[5] その他の制限:問題文のテキストファイルに、例を載せておきました。

何度もすみませんが、どうかよろしくお願いします。

167 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:00:22 ]
>>166
pc11.2ch.net/test/read.cgi/tech/1228313292/972
じゃね?

168 名前:前スレ987 [2008/12/17(水) 18:02:50 ]
何度もすいません。自分では解らないので
再度、できる方がいればよろしくお願いしますm(-_-)m

[1] 授業単元: プログラミングU
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8353.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] VC 6.0
 [3.3] 言語: C++
[4] 期限: 2008年12月17日3:00まで
[5] その他の制限:

課題2のみお願いします。
課題2で使う課題1のソースは自作して問題文に張っておいたので
それを使用して作成おねがいします。


169 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:03:46 ]
>>154-155
ありがとうございます!


170 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:06:11 ]
>>90
ほい。過去の資産流用。(笑)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8369.c

後から表示例見たんで、もうそのままにしてある。
表示ぐらいは何とかしてくれ。必要な要素は揃ってるはず。
後、整数で計算ということだが、作ったテストデータで都合が悪かったんで、
double でやってる。これも気に入らんかったら変えてくれ。

しかしお前、誤字多いな。w

171 名前:デフォルトの名無しさん [2008/12/17(水) 18:06:57 ]
>>164
ありがとうございます!
>>165
このスレの119代目で教えてもらいましたw
そのスレの中身も参考になりました。どうやって動くか分からなかったのでw



あ、>>162さんの短くする方法を使って申し訳ないんですがまた書いて欲しいです…学校で習った記述と違う部分があるので…

本当にすいません'`


172 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:15:15 ]
>>163
なーんだ。じゃあそれが必修であるような学科に入ったのが間違いだよ

173 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:15:20 ]
>>153
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 128
#define Y 15
#define H 5
int main(void)
{
char buff[N];
int year[Y], height[H];
int i, j;
FILE *fp = fopen("cshukudai.csv", "r");
for (i = 0; i < Y; ++i) year[i] = 0; for (i = 0; i < Y; ++i) height[i] = 0;
while (fgets(buff, N, fp) != NULL) {
strtok(buff, ",");
year[atoi(strtok(NULL, ",")) - 1975]++;
height[(atoi(strtok(NULL, ",")) - 166) / 5]++;
}
puts("生まれた年のヒストグラム");
for (i = 0; i < Y; ++i) {
printf("%4d:", 1975 + i);
for (j = 0; j < year[i]; ++j) putchar('*'); puts("");
}
puts("\n身長のヒストグラム");
for (i = 0; i < H; ++i) {
printf("%3d-%3d:", 166 + 5 * i, 170 + 5 * i);
for (j = 0; j < height[i]; ++j) putchar('*'); puts("");
}
fclose(fp);
return 0;
}



174 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:16:32 ]
1箇所間違えてた
>for (i = 0; i < Y; ++i) year[i] = 0; for (i = 0; i < Y; ++i) height[i] = 0;
for (i = 0; i < Y; ++i) year[i] = 0; for (i = 0; i < H; ++i) height[i] = 0;


175 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:18:10 ]
>>153
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8370.txt






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<118KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef