C/C++の宿題を片付けます 58代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/01/18(水) 03:35:45【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【前スレ】
C/C++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/l50#tag993
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0446デフォルトの名無しさん
2006/01/22(日) 15:17:48#include<stdio.h>
int main()
{
int a,b;
scanf("%d,%d",&a,&b);
printf("%dは%dの%d%です\n",a,b,a*100/b);
return 0;
}
0447デフォルトの名無しさん
2006/01/22(日) 15:17:48#include<stdio.h>
int main(void){
long a,b;
double par;
printf("Aを入力:");scanf("%ld",&a);
printf("Bを入力:");scanf("%ld",&b);
par = (double)a*100/b;
printf("AはBの%f%\n",par);
return 0;
}
0448デフォルトの名無しさん
2006/01/22(日) 15:19:450449デフォルトの名無しさん
2006/01/22(日) 15:27:47ダメ。
printf()の書式中では'%'は"%%"としないといけない。ついでに言えば、percentなんだからparはないだろ。
0450デフォルトの名無しさん
2006/01/22(日) 15:28:46>>447
有り難うございます〜。
447の中には習ってないのがあったので
446を使わせてもらいます。
二人とも有り難うございました〜^^
0451デフォルトの名無しさん
2006/01/22(日) 15:30:55あ・・\\だけじゃなかったか
スペルは英語できないから勘弁
0452デフォルトの名無しさん
2006/01/22(日) 15:37:06ハズカシス
0453デフォルトの名無しさん
2006/01/22(日) 15:39:05'\\'はいつでもそう書かなければならないけど、
'%'はprintf()系scanf()系の書式文字列内のみだから念のため。
0454444
2006/01/22(日) 15:44:060455デフォルトの名無しさん
2006/01/22(日) 15:48:01お、本当だputsだと%2個出る
0456デフォルトの名無しさん
2006/01/22(日) 15:55:58俺通ってるガッコの先生の課題だな俺は
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1522.txt
で出したんだが俺バカチンなのでこのスレの諸兄の方々の熱い煽りとツッコミをお待ちしています
0457デフォルトの名無しさん
2006/01/22(日) 15:59:570458デフォルトの名無しさん
2006/01/22(日) 16:02:02それを直すんなら
訂正前>while(s1[i]==s2[i]){
訂正後>while(s1[i] != '\0' && s1[i]==s2[i]){
だな。
0459デフォルトの名無しさん
2006/01/22(日) 16:05:42s2 もチェックな
あと関数名がキモい
0460デフォルトの名無しさん
2006/01/22(日) 16:10:05不要。
あと関数名がキモいのは同意。
0461デフォルトの名無しさん
2006/01/22(日) 16:14:580462デフォルトの名無しさん
2006/01/22(日) 16:19:020463デフォルトの名無しさん
2006/01/22(日) 16:28:020464デフォルトの名無しさん
2006/01/22(日) 16:28:02[2] 問題文(含コード&リンク):
球の半径r(倍精度浮動小数点型の変数)の値を関数scanfで入力して、
その面積S1と表面積S2(S1,S2は倍精度浮動小数点型変数)を計算し、
表示(出力)するという作業を繰り返すプログラムを作成せよ。
ただし、半径rとして数値0が入力されたときには、その処理を終了することとする。
また、面積はS1=π(r*r)、表面積はS2=4π(r*r)で計算されるものとする。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:StudyC
[3.3] 言語:C
[4] できれば火曜までに
[5] 宿題とかじゃなく、テスト勉強のですがお願いします。
0465デフォルトの名無しさん
2006/01/22(日) 16:37:580466デフォルトの名無しさん
2006/01/22(日) 16:38:330467デフォルトの名無しさん
2006/01/22(日) 16:42:00#include<stdio.h>
#define pi 3.14159
void kyu(double r){
printf("S1 = %f\n",pi*r*r);
printf("S2 = %f\n",4*pi*r*r);
}
int main(void){
double r;
while(1){
scanf("%lf",&r);
if(r==0.0)break;
kyu(r);
}
return 0;
}
0469デフォルトの名無しさん
2006/01/22(日) 16:49:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1524.txt
0471デフォルトの名無しさん
2006/01/22(日) 17:19:49[2] 問題文:
要素数20、char型の配列mojiを用意し、入力する。ポインタ変数を用いて
文字数を求めるプログラムを作成しなさい。
char moji[20];
char *mp = moji; //ポインタ変数
int cnt; //文字数
実行結果
文字列入力==>ABCD
文字数:4
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 明日の午前まで。
[5]標準関数strlenは使わないこと。
0472デフォルトの名無しさん
2006/01/22(日) 17:20:57[2] 問題文:
char型の配列mojiを用意し、初期化する。ポインタ変数を用いて大文字、
小文字、数字の文字数を求めるプログラムを作成しなさい。
char moji[]="AB12aDy3";
char *mp = moji; //ポインタ変数
int alphl; //大文字の数
int alphs; //小文字の数
int num; //数字の数
実行結果
英大文字:3
英小文字:2
数字:3
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 明日の午前まで。
この2つです。お願いします。
0473デフォルトの名無しさん
2006/01/22(日) 17:30:43int strlen(char *lpStr)
{
int count=0;
while(lpStr[count]) ++count;
return count;
}
こんなんでいいんじゃない?
>>472
2バイト文字は含むの?
0474デフォルトの名無しさん
2006/01/22(日) 17:31:16#include<stdio.h>
int main(void)
{
char moji[20];
char *mp = moji; //ポインタ変数
int cnt; //文字数
printf("Input string\n");
gets(moji);
for(cnt=0;*(mp+cnt)!='\0';cnt++)
{}
printf("count:%d\n",cnt);
return 0;
}
0475デフォルトの名無しさん
2006/01/22(日) 17:35:142バイト文字は含まないです。
0476デフォルトの名無しさん
2006/01/22(日) 17:38:24#include<stdio.h>
int main(void)
{char moji[]="AB120aDy3";
char *mp = moji; //ポインタ変数
int alphl; //大文字の数
int alphs; //小文字の数
int num; //数字の数
int cnt;
alphl=0;
alphs=0;
num=0;
for(cnt=0;*(mp+cnt)!='\0';cnt++){
if(*(mp+cnt)>='A'&&*(mp+cnt)<='Z'){
alphl++;
}
else if(*(mp+cnt)>='a'&&*(mp+cnt)<='z'){
alphs++;
}
else if(*(mp+cnt)>='0'&&*(mp+cnt)<='9'){
num++;
}
}
printf("大文字:%d\n",alphl); printf("小文字:%d\n",alphs); printf("数字:%d\n",num);
return 0;
}
0477デフォルトの名無しさん
2006/01/22(日) 17:41:06#include<stdio.h>
int main(void){
char moji[]="AB12aDy3";
char *mp = moji; //ポインタ変数
int alphl=0; //大文字の数
int alphs=0; //小文字の数
int num=0; //数字の数
while(*mp!='\0'){
if(*mp>='A'&&*mp<='Z')alphl++;
else if(*mp>='a'&&*mp<='z')alphs++;
else if(*mp>='0'&&*mp<='9')num++;
mp++;
}
printf("英大文字:%d\n",alphl);
printf("英小文字:%d\n",alphs);
printf("数字:%d\n",num);
return 0;
}
0478デフォルトの名無しさん
2006/01/22(日) 17:47:590479デフォルトの名無しさん
2006/01/22(日) 17:56:160480デフォルトの名無しさん
2006/01/22(日) 17:59:11提出する本人が知っていて使う分には問題ないと思うが
0481デフォルトの名無しさん
2006/01/22(日) 18:00:160482デフォルトの名無しさん
2006/01/22(日) 18:00:22出てこない授業も少なくない希ガス
0483デフォルトの名無しさん
2006/01/22(日) 18:06:220484デフォルトの名無しさん
2006/01/22(日) 18:07:54俺も思った 頑張ろう
0485デフォルトの名無しさん
2006/01/22(日) 18:11:250486デフォルトの名無しさん
2006/01/22(日) 18:12:560487デフォルトの名無しさん
2006/01/22(日) 18:15:170488デフォルトの名無しさん
2006/01/22(日) 18:18:110489デフォルトの名無しさん
2006/01/22(日) 18:18:45ガンガル。
>>485
いや素でかっこいい。知識ある者への敬う気持ちが生まれた。
モチベーションの確保にも役に立つし。
てかマジかっけ〜よ・・・。>>487くれ!!DNAを。
0490デフォルトの名無しさん
2006/01/22(日) 18:20:350491デフォルトの名無しさん
2006/01/22(日) 18:23:100492デフォルトの名無しさん
2006/01/22(日) 18:26:46俺20秒あれば昇天できんだけど・・・OTL
0493デフォルトの名無しさん
2006/01/22(日) 18:27:260494デフォルトの名無しさん
2006/01/22(日) 18:33:03「C言語を使って実行すると特定のレジストリを書き換えるプログラムを作れ」
というのが出題されたのですが、どうしたらいいのでしょうか?
0495デフォルトの名無しさん
2006/01/22(日) 18:34:09ちんぽ剥いてしこしこ汁
0496デフォルトの名無しさん
2006/01/22(日) 18:34:17api
0497デフォルトの名無しさん
2006/01/22(日) 18:39:15RegCreateKeyEx
とか
RegSetValueEx
とか
0498デフォルトの名無しさん
2006/01/22(日) 19:23:41できれば具体例を教えていただけないでしょうか?
0499デフォルトの名無しさん
2006/01/22(日) 19:25:260500デフォルトの名無しさん
2006/01/22(日) 19:37:11[1] 授業単元: プログラミング�V
[2] 問題文(含コード&リンク): C言語を使って実行すると特定のレジストリを書き換えるプログラムを作れ
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: ([2006年2月04日午後まで]
[5] その他の制限: 特になし
0501デフォルトの名無しさん
2006/01/22(日) 19:39:17[2] 問題文
次のようなLISPプログラムを書け
アトムとして整数のみを含むs表現wを入力とし、w中に現れる0以外の整数を全て掛け合わせた結果を計算する関数MULTALL(w)を帰納的に定義せよ
帰納的でないプログラムは回答と見なさない
例 w=((3.((1.0).−2)).(2.0))のとき、MULTALL(w)=−12。
LISPの文法の詳細については問わないが、なるべく読みやすく書くこと。
なお、整数の乗算には、以下のLISPの組み込み関数TIMESを使うこと。
TIMES(m、n) =m×n
[3] 環境
[3.1] OS: Windows
[3.2] ごめんなさい、わかりません
[3.3] 同上
[4] 期限:今月中
超初心者なので、教科書とか読んでもサッパリです、出来ればどなたかどうかお願いします。
0502デフォルトの名無しさん
2006/01/22(日) 19:45:230503デフォルトの名無しさん
2006/01/22(日) 19:50:23正直コンピューター系とかは皆同じに見えてしまう…
スレ違いになるかもしれないど、その違いだけでも教えてもらえますか?
0504デフォルトの名無しさん
2006/01/22(日) 20:07:23[2] 問題文(含コード&リンク):自由課題、ただし条件判断と繰り返し命令、配列は
かならず用いること。関数、ポインターなどは必要に応じて用いればよい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: 1月23日12:00まで
[5] その他の制限:なし
C言語の授業が分からなかったため最終課題ながら
全然思いつきませんでした、よろしくお願いします。
0505デフォルトの名無しさん
2006/01/22(日) 20:09:54オセロ
#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;int k(){if(m[p]==0)for(i=m;*i;i
++){for(v=p+*i;m[v]==9-t;v+=*i){}if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v+=*
i;while(m[v]-t);}return 0;}int main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a
=d=0){for(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9
:s?s=0,puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}}
0506デフォルトの名無しさん
2006/01/22(日) 20:16:370507デフォルトの名無しさん
2006/01/22(日) 20:42:08#include <stdio.h>
#include <string.h>
int main()
{
char s[256];
int len;
int i;
char tmp;
printf(" input string: ");
scanf("%s",s);
if ((strlen(s))==1){ return 0; }
len = strlen(s);
for (i = 0; i < len/2; ++i) {
tmp = s[i];
s[i] = s[len-1-i];
s[len-1-i] = tmp;
}
printf("output string: %s\n", s);
return 0;
}
これは前の文字入れ替え課題の誰かが作った(どこにあるかわからんw)ソースに
ifを付け足した奴でつ。
たぶん大丈夫
0508デフォルトの名無しさん
2006/01/22(日) 20:50:45[2] 問題文(含コード&リンク): 1+2*3-4を標準入力から入力し計算順に
((1+(2*3))-4)とカッコをつけて出力
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 無期限
[5] その他の制限: 二分木で表現をお願いします。あと演算子の優先度と
左結合でお願いします。
ずっと出来なくて悩んでいます。どなたか教えてください。
0509デフォルトの名無しさん
2006/01/22(日) 20:52:070510デフォルトの名無しさん
2006/01/22(日) 20:52:480511デフォルトの名無しさん
2006/01/22(日) 20:55:42じゃあ俺も書いたけど結局貼らなかったやつ貼っとく
#include <stdio.h>
#include <string.h>
void strswap(char *s,int n)
{
int i,n1,n2;
char temp[256];
if(n%2==0){
n2=n/2;
}
else{
n2=n/2+1;
temp[n/2]=s[n/2];
}
for(i=0;i<n/2;i++){
temp[i]=s[n2+i];
temp[n2+i]=s[i];
}
temp[n]='\0';
strcpy(s,temp);
}
int main()
{
char s[256];
printf("-->");
scanf("%s",s);
strswap(s,strlen(s));
printf("-->%s\n",s);
return 0;
}
0512デフォルトの名無しさん
2006/01/22(日) 20:55:57ここであってますかね(´・ω・`)
0513デフォルトの名無しさん
2006/01/22(日) 20:57:340514デフォルトの名無しさん
2006/01/22(日) 20:58:220515デフォルトの名無しさん
2006/01/22(日) 20:59:380516515
2006/01/22(日) 21:00:360517デフォルトの名無しさん
2006/01/22(日) 21:00:59とりあえずLispスレへ行け。
Lispは方言が多種多様で、「Lisp」だけでは何もわからんという点にも留意しろ。
授業で使うならおそらくまともに規格があるCommonLispかSchemeだろうが…
0518デフォルトの名無しさん
2006/01/22(日) 21:03:29おそらくそんなスレないだろうからやるとしたらここじゃね?
とりあえず問題書いてみれ
0519512
2006/01/22(日) 21:04:200520デフォルトの名無しさん
2006/01/22(日) 21:04:580521デフォルトの名無しさん
2006/01/22(日) 21:06:41エラーの対処がよくわからなくて困ってる
使ってるフリーのコンパイラ(lsic330c)だとエラーを通してしまう上に
ウィンドウズエラーに発展するのでVC++にエラーチェックしてもらった
エラー箇所
NODE_T *new_node;
new_node=malloc(sizeof(NODE_T));
if(new_node == NULL){
fprintf(stderr,"malloc_ERR\n");
exit(1);
}
出力
1>.\tester.cpp(34) : error C2440: '=' : 'void *' から 'NODE_T *' に変換できません。
1> 'void*' から非 'void' 型への変換には明示的なキャストが必要です。
0522デフォルトの名無しさん
2006/01/22(日) 21:07:350523デフォルトの名無しさん
2006/01/22(日) 21:11:09C言語ではvoid *型から他のポインタへの変換は自由にやってよい。コンパイラもエラー報告しなくていい。
C++言語ではvoid *型から他のポインタへの変換には明示的なキャストが必要。
具体的には>>522のようにする。
0524デフォルトの名無しさん
2006/01/22(日) 21:11:12お前、CとC++を混同してるだろ?
0525デフォルトの名無しさん
2006/01/22(日) 21:11:39ありがとう、こいつが直接の原因じゃなかったみたいだ
もうちょっと悩むとしよう
0526デフォルトの名無しさん
2006/01/22(日) 21:12:110527デフォルトの名無しさん
2006/01/22(日) 21:13:15いや、してないつもりが親切なメッセージが出るので原因がわからないエラーを対処するのに使ってる
0528デフォルトの名無しさん
2006/01/22(日) 21:16:31ただ、ここは添削はスルーされることも多いんで、スルーされても文句言うな。
0529デフォルトの名無しさん
2006/01/22(日) 21:19:59C++でエラーになってもCでは正当なこともある。
尤も、CよりC++の方が安全寄りな警告をくれる傾向にあるので、
それを参考にするのは悪くないと思う。
でも、それなら最初からC++で書けばいいんじゃね?
0530512
2006/01/22(日) 21:24:40[2] 問題文 BASICをCに書き直す
[3] 環境
[3.1] OS:windows
[3.2] VC6.0
[3.3] C
[4] 期限: 無期限
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1525.txt
よろしくお願いします
0531デフォルトの名無しさん
2006/01/22(日) 21:28:41全文貼るには少々長すぎる
先生の作ったプログラムに関数を付け足す課題でね
printfで順にチェックすることにするよ
>>529
Cの課題だし、それは怒られそうな気がする
0532デフォルトの名無しさん
2006/01/22(日) 21:29:20mallocの戻り値はvoid *なので、明示的なキャストが必要。
0533デフォルトの名無しさん
2006/01/22(日) 21:31:40gcc入れるって選択肢は無かったのか?
-Wall -ansi(もしくは-std=c99)付ければちゃんとメッセージ吐いてくれるが
0534デフォルトの名無しさん
2006/01/22(日) 21:32:30漏れはBASICわからないのについつい見てしまう、
PRINT程度しかわからんw
0535デフォルトの名無しさん
2006/01/22(日) 21:32:410536504
2006/01/22(日) 21:33:510537530
2006/01/22(日) 21:37:570538デフォルトの名無しさん
2006/01/22(日) 21:38:31あれ、gccってwinで使えるのあるの?
0539デフォルトの名無しさん
2006/01/22(日) 21:39:220540デフォルトの名無しさん
2006/01/22(日) 21:41:390541デフォルトの名無しさん
2006/01/22(日) 21:48:19猫だけど参考になるかな
http://www.kumei.ne.jp/c_lang/sdk2/sdk_129.htm
0542デフォルトの名無しさん
2006/01/22(日) 21:55:00猫のをそのままパクって作った
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1526.txt
0543デフォルトの名無しさん
2006/01/22(日) 21:55:31お前はCygwinを知らないのかと小一時間ry
それにVMwarePlayerでLinuxって手もあるしな
0544デフォルトの名無しさん
2006/01/22(日) 22:02:18ぼちぼちやってるんで、てきとーに。>>536
1行1行をそのまま手作業てトランスレートするんで。今日は2行やったところでおしまい。
期限があるなら、明示しといて。
0545デフォルトの名無しさん
2006/01/22(日) 22:07:35[2] 問題文下に書きます
[3] 環境
[3.3] 言語: C
[4] 期限:2006年1月24日まで
[5] その他の制限:特にないです
長文になりますが申し訳ありません。
よろしく御願いします。
■ このスレッドは過去ログ倉庫に格納されています