C/C++の宿題をやらせて、お兄ちゃん 22代目

このエントリーをはてなブックマークに追加
カンマ区切りの意味が
分かってないんじゃないだろーな?
953デフォルトの名無しさん:04/05/21 03:35
はい、K&R第二版も見てるのですが見つけきれずにお聞きしたしだいです。
すみません、これも分からないくらいなら聞かずにもっと自分で
勉強するべきですよね。別の本を探してみます!ありがとうございました!
954デフォルトの名無しさん:04/05/21 03:40
main関数への戻り値は1つだけなんですか?
それだと他の関数で順番を計算した結果をmain関数で表示させたくても出来ないのでは。
配列を使えば順番を計算した結果を複数mainに戻せて便利だと思ったんだけど。
955デフォルトの名無しさん:04/05/21 03:53
配列を使ったつもりなのですが・・・。すみません、力量不足です!
戻り値を配列であらわすということですか?詳しくお聞かせください
956デフォルトの名無しさん:04/05/21 04:07
4つの整数を簡単にソートできるプログラム教えて。
>>956
実行モジュールをish変換して張っておくから適当な展開ツールで展開してくれ。
<<< sort4int for MS-DOS ( use non-kana ish ) [ 8 lines ] >>>
!!C(!!9Q!4"P$nkn>GKz<u+d9o!d!$"Hrn[[Q~!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?/@e
!!C(!!9Q!4"P$nkn>GKz<u+d9o!d!$"Hrn[[Q~!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?/@e
!!C(!!9Q!4"P$nkn>GKz<u+d9o!d!$"Hrn[[Q~!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?/@e
"mv緜&=<jo:"q壇3各巖烙@鶏幾揖"HB@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!DH!+
gap0F@=髪_/(}b&岌=郡<濫m3LP@幹d硯!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1@
iW%}b;6止P:l杣V=克摶畛槊w'<n福淞IM斐t掟壯hV:騾睥内H*ScaQ曼fJCJ臻寨訓32e&翆珀些/
--- sort4int (8/8) ---
>>949
すげぇおかしい。
配列の内容表示すらまともにできてねぇ。
駄目駄目。

ホレ,これでも見て勉強しろ。

#include <stdio.h>
#include <string.h>

//int配列にカンマ区切りで入力した数値を取得する関数(すげぇ適当)
//返り値:実際に取得した値の数
int get_value(int v[], int v_size){ //v:配列, v_size:配列の要素数
int n;
char buf[1024];

fgets(buf,sizeof(buf),stdin);
char *ptr;
for( n=0,ptr=strtok(buf,","); n<v_size && ptr!=NULL; ++n,ptr=strtok( NULL, "," ) ) {
v[n] = atoi(ptr);
}
return n;
}

//配列の内容をカンマ区切りで表示する関数
void print_value(int v[], int v_size){ //v:配列, v_size:配列の要素数
int n;
for(n=0; n<v_size-1; ++n){
printf("%d,", v[n]);
}
printf("%d\n", v[n]);
}
959デフォルトの名無しさん:04/05/21 05:33
文字を比較して小さい順に表示するプログラム作って。
ただし、比較処理は比較関数でして結果をmainに戻す。
名前 name1='tanaka' name2='suzuki' name3='satou' name4='isihara'

マジお願いもう眠いもう駄目
960デフォルトの名無しさん:04/05/21 07:00
#include <stdio.h>
#include <string.h>
int main(void)
{
char *name1="赤沢太郎";
char *name2="松本三郎";
char *name3="山川四郎";
char *name4="岩下次郎";
char *temp="abcdefghijklmn";
if(strcmp(name1,name2)<0){        /*ここから
}else if(strcmp(name1,name2)>0){
temp=name1;
name1=name2;
name2=temp;
}else{
}                          /*ここまで*4回繰り返してます。
printf("1.%s\n2.%s\n3.%s\n4.%s\n",name1,name2,name3,name4);
return 0;
}
やったぜぇええええええええええええ!!!!!!!!!徹夜した甲斐があった揉んだむほっつ22
でもさ上記の通りnameナンバーこそ違えど同じ処理を繰り返してるわけ。
compare関数を用いたいところなんだけど別の関数からの戻り値は1つだけじゃん?
このプログラムは戻り値1つじゃ成り立たないじゃんがんぐ?
compare関数に纏めれそうなら教えれ。無理っぽいならこのまま亭主打つwwwwwwwwwwwww低所津wwww亭主打つwwwwwwwwwwうはははhw提出ニダ━━━━━━<ヽ`∀´>━━━━━━ !!!!!
>>959
さっさとねなさい。

#include <stdio.h>
int main(int argc, char argv)
{
char *tmp, *name[4] = { "tanaka", "suzuki", "satou", "ishihara" };
int i, j;

for(i = 0; i < 4; i++) {
for(j = i + 1; j < 4; j++) {
if(strcmp(name[i], name[j]) > 0) {
tmp = name[i]; name[i] = name[j]; name[j] = tmp;
}
}
}
for(i = 0; i < 4; i++)
printf("%s\n", name[i]);

return 0;
}

> このプログラムは戻り値1つじゃ成り立たない
下の条件
> ただし、比較処理は比較関数でして結果をmainに戻す。
は「比較関数で求めた(比較)結果をmainに戻すということだろう。
>>959
配列にして qsort() でソートして解決!(w
963デフォルトの名無しさん:04/05/21 14:54
以下の結果はエラーになる。
理由を述べなさい。
#include <iostream>
using namespace std;
int main(){
char *a;
a = (char*)malloc(256);
a = "ppp";
strcpy(a, "ABCDE");
cout << a << endl;
return 0;
}
どうして?
エラーにゃならないかもな。
ただ、メモリは破壊する。
>>963
a = "ppp";が無用の介だから。

(教育用とはいえ、いやなスタイルだな)
966デフォルトの名無しさん:04/05/21 15:11
char *a = "ppp";
と最初にやっておくと、普通に出力できるのはなぜですか?
そんなの実装依存に決まってんだろボケ!
>>963
文字列リテラルの内容を書き換えようとしているからだろ
969デフォルトの名無しさん:04/05/21 16:06
うげ。処理系依存ですか・・・=するな
ってことですね。
>>969
処理系依存以前にリテラルは書き換えるな。
971357:04/05/21 16:38
>>359 様
ものすごく遅レスですが、本当に有難うございましたm(__)m
972デフォルトの名無しさん:04/05/21 16:39
>>969
> a = "ppp";

これでaが書き換えられていることに注目しろ。
だからmallocで得た領域を指していない。
973デフォルトの名無しさん:04/05/21 16:42
Kitty on your lapの人が同じ間違いをしていたな。
もう直ったけど。
974デフォルトの名無しさん:04/05/21 17:09
整数型の変数a,b,cの値をプログラム上で
a=1,b=2,c=3と設定した上で、実数型の変数xをキーボードから入力し、
y=ax^2+bx+c、を計算し、yを出力するプログラム
なおこの問題では、実数はdouble型変数で表すものとする。

問題文そのままです。よろしくお願いします。
975デフォルトの名無しさん:04/05/21 17:13
>>974
>>273を参考に。
ただ、その問題はa=0などの場合を考えなくていいようなので
if(a) 〜 else 〜
は別にいらない。
976975:04/05/21 17:14
あ、悪い、解を求める問題じゃなかったか・・・・
それじゃ全然違うな。
int a = 1, b = 2, c = 3;
double x, y;
scanf("%lf", &x);
y = a*x*x + b*x + c;
printf("y=%lf\n", y);
>>963
http://www.google.co.jp/search?q=cache:6-PJjsqopxAJ:www9.plala.or.jp/sgwr-t/c/sec10-3.html+%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB&hl=ja
文字列リテラルを知らないなら,これ読んどけ。

あと,デバッガが使えないなら,こんな風にprintf埋めまくって
値の動きやどこまで動いているのかを観察してみろ。
#include <iostream>

int main(){
char *a = "ppp";
printf("1 %p\n", a);
a = (char*)malloc(256);
printf("2 %p\n", a);
a = "ppp";
printf("3 %p\n", a);
strcpy(a, "ABCDE");
printf("4 %p\n", a);
cout << a << endl;
printf("5 %p\n", a);
return 0;
}
>>977
ありがとうございます。
しかし何度見直してもエラーが出ました。
>>979
エラー内容くらい書け
main()
{
>>977
}
#include <stdio.h>
>>981
main() とか stdio.h とかを知らないような人にもやさしく教えてあげなければいけないスレなんでしょうか。
ここの答えを丸写しして終了、みたいな香具師は、きっと何度も何度もここに来て、毎回アホな質問ばかりするでしょうに。
別に、回答者も自己満足でやってるんだから。
面倒なら回答しなきゃいいだけ。
>>983
そうやってだめぽなやつが量産されて
社会に出た時今いるPGに迷惑かける罠

つーことで漏れとしてはあんまよくないと思うんだけどね
宿題の丸投げってのは

最低限、
自分はこれこれこう思うんですが、
こうこうなってしまって駄目です。
とか、自分がどこが分かってないのか
分かるやつの質問にしか答えないほうがいいと思うんだけど。
厳しいようでも、結局は質問したやつのためになると思うんだけど
ここで宿題○投げなやつって、PGなんかにならないだろ?
第三者が回答者にケチつけるのは
解答が間違っている場合を除けば大きなお世話でしかないな。
>>987
ハゲドウ。
房が必死だな
990デフォルトの名無しさん:04/05/21 23:24
makenewthread(>>999)
誰か次スレ頼む
漏れたてようとしたけど無理だった
次スレたつまで1000getすんなよ
>>990
できてた

C/C++の宿題は私におまかせくださいませ 23代目
http://pc5.2ch.net/test/read.cgi/tech/1085149383/

しかし、このスレタイは・・・
993784:04/05/21 23:25
>>784で質問させてもらったんですが
for文を使ったときの模範解答みたいなのを教えてもらえませんか

int find(int a[], int n, int b)
{
int x;

for(int i=0; i<n; i++){
if(b == a[i]){
break;
}
}

if(i == n){
x = -1;
}
else if(i != n){
x = i;
}

return x;
}

こんな風でいいんでしょうか
>>993
そんな面倒なことしなくても、
int find(int a[], int n, int b) {
int ret = -1;
for(int i=0; i<n; i++) {
if(b == a[i]) {
ret = i;
break;
}
}
return ret;
}
関数の途中でreturnするのに耐えられるなら、
int find(int a[], int n, int b) {
for(int i=0; i<n; i++) {
if(b == a[i]) return i;
}
return -1;
}
「10進数を入力し、8ビットの2進数で出力しなさい。」
if分とforを使って作るそうですが・・・・・駄目だす・・・
>>993
実数型を==で比較するよーな回答をしそうだ>漏れ
とりあえず、整数型だけね。
int find(int a[], int n, int b)
{
  if (a == NULL || n < 1)
    return -1;
  for (int i = 0; i < n; i++)
    if (a[i] == b)
      return i;
  return -1;
}
>実数型

fabs(a-b) とかやってほにゃらら未満なら一致とみなす、とか?
/* >>996 ただし、x が 256以上の場合は知らん */
int i, x;
/* ... */
for (i = 128; i > 0; i >>= 1) {
  if (x / i) {
    x -= i;
    printf("1");
  } else {
    printf("0");
  }
}

では、終了
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。