トップページ⇒tech
1001コメント485KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/04/20(金) 00:35:41
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

【前スレ】
C/C++の宿題を片付けます 85代目
http://pc11.2ch.net/test/read.cgi/tech/1175129517/
0002デフォルトの名無しさん2007/04/20(金) 00:35:55
2
0003デフォルトの名無しさん2007/04/20(金) 00:36:15
ANSI、ISO準拠など標準スタイルの話は禁止!した奴は罰金ね
0004デフォルトの名無しさん2007/04/20(金) 00:36:42
>>前スレ945

#include <iostream>
#include <fstream>
#include <string>
#include <cctype>

int main()
{
const int N = 100;

std::ifstream fin("infile1.txt");
int c[N];
int count = 0;
std::string str;

std::getline(fin, str);
while (fin >> c[count]) count++;

for (std::string::const_iterator pos = str.begin(); pos != str.end(); ++pos) {
if (std::isalpha(*pos)) {
std::cout << *pos << " ";
}
}
std::cout << std::endl;
0005デフォルトの名無しさん2007/04/20(金) 00:37:01
for (int i = 0; i < count; i++) {
if (c[i] >= 80)
std::cout << "優 ";
else if (c[i] >= 70)
std::cout << "良 ";
else if (c[i] >= 60)
std::cout << "可 ";
else
std::cout << "不可 ";
}
std::cout << std::endl;
}
0006デフォルトの名無しさん2007/04/20(金) 00:37:55
>>前スレ945
#include <stdio.h>
char* Gakusei[9] = {"A", "B", "C", "D", "E", "F", "G", "H", "I"};
int TokuPoint[9] = {90, 73, 55, 60, 45, 66, 75, 40};
int main(void){
int i;
for(i=0; i!=9; i++){
printf("%s ", Gakusei[i]);}
printf("\n");
for(i=0; i!=9; i++){
if(TokuPoint[i] >= 80) printf("優 ");
else if(TokuPoint[i] >= 70) printf("良 ");
else if(TokuPoint[i] >= 60) printf("可 ");
else printf("不可 ");}}
0007デフォルトの名無しさん2007/04/20(金) 00:37:55
>>1
乙
00089452007/04/20(金) 00:40:02
>>4>>5>>6
ありがとうございました。
0009デフォルトの名無しさん2007/04/20(金) 00:41:49
あーしまった入力はファイルではなくて配列に決め打ちしてよかったのか
0010デフォルトの名無しさん2007/04/20(金) 00:44:02
>>9
よぉ、俺!!
0011デフォルトの名無しさん2007/04/20(金) 00:45:28
前スレの余韻が冷めやらん
ビールでも買ってくるか('A`)
0012デフォルトの名無しさん2007/04/20(金) 00:45:37
>>6
> int TokuPoint[9] = {90, 73, 55, 60, 45, 66, 75, 40};
int TokuPoint[9] = {90, 73, 55, 60, 45, 88, 66, 75, 40};

間違って不合格になる人間が発生する瞬間に立ち会ってしまった。
0013デフォルトの名無しさん2007/04/20(金) 00:46:43
>>3ルールの徹底を求む。
0014デフォルトの名無しさん2007/04/20(金) 00:47:24
>>13
>>1
> 気に入らない質問やその他や発言はスルーの方向で。
0015デフォルトの名無しさん2007/04/20(金) 08:13:11
ttp://www.geocities.jp/ky_webid/cpp/library/index.html
っつーかね、CよりC++の方が扱いが楽だわ。
0016デフォルトの名無しさん2007/04/20(金) 14:03:56
[1] 授業単元:数値解析
[2] 問題文(含コード&リンク):下記
[3] 環境 
 [3.1] OS: WindowsXP
 [3.2] Visual Studio .NET
 [3.3] 言語: C
[4] 期限: 4月末
[5] その他の制限: 基本的なCの知識しか習っていません(曖昧ですいません)。
副プログラム(サブルーチン)構造体、モジュールなども習っていません。
今持っている基本的な知識(if文、for文、配列)でこれを解けと言われました…。

ポアソン方程式の5点差分法による求解を考える。
ただし領域は、
0≦x≦1,  0≦y≦1,  とし、
境界条件は
φ[i,0]=φ[i,Ny]=0 (i=0,1,2,...,Nx)
φ[0,j]=φ[Nx,j]=0 (j=0,1,2,...,Ny)
とする。
またx方向の分割数をNxとし、y方向の分割数をNyとし
Nx*Nyが格子点数。
ポアソン方程式は
φ[i+1,j]-2φ[i,j]+φ[i-1,j]/(Δx)^2+φ[i,j+1]-2φ[i,j]+φ[i,j-1]/(Δy)^2=-13π^2sin(3πx)sin(2πy)
で与えられる。
上式をAφ=bの形に変形し、その連立一次方程式をガウスの消去法で未知数φを求める
プログラムを作成せよ。

0017デフォルトの名無しさん2007/04/20(金) 21:15:08
たかし!宿題が出てるよ
早くやっちゃいな
0018デフォルトの名無しさん2007/04/20(金) 21:19:25
>>17
かーちゃん、俺たけしだってばぁ
たかしは弟だろ〜
0019デフォルトの名無しさん2007/04/20(金) 21:25:07
ccmath.h のdeqsy関数の使い方さえわかれば解ける!
誰か教えてくれ!
0020デフォルトの名無しさん2007/04/20(金) 21:44:38
>>16
http://oshiete1.goo.ne.jp/qa2919426.html
これ?
0021デフォルトの名無しさん2007/04/20(金) 21:46:19
偏微分方程式の専門知識はないから、せめて連立一次方程式への
変形まではやってくれぇ。
0022デフォルトの名無しさん2007/04/20(金) 22:20:43
[1] 授業単元:C言語
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3846.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:月曜朝7時まで
[5] 制限:なし。
よろしくお願いします。


0023162007/04/20(金) 23:26:37
>>21
やりました。設問と少し変わってしまったのですが、
分割数は同じ(Δx=Δy=h)にして、これを連立一次方程式にしました。

φ[i+1,j]+φ[i-1,j]+φ[i,j+1]+φ[i,j-1]-4φ[i,j]=-13π^2sin(3πx)sin(2πy)*h^2

-φ[i+1,j]-φ[i-1,j]-φ[i,j+1]-φ[i,j-1]+4φ[i,j]=f(x,y)*h^2

x=ih,y=jh

h=1/N

分割数N=3の場合、格子点は9個存在し
φ[1,1] φ[2,1] φ[3,1] φ[1,2] φ[2,2] φ[3,2] φ[1,3] φ[2,3] φ[3,3]
と各々の格子点の値を求めます。
0024162007/04/20(金) 23:28:19
この場合(N=3)の連立一次方程式Aφ=bは、

A: 
 4  -1  0 -1  0    0   0   0   0
-1   4 -1  0 -1   0    0   0   0
 0  -1  4  0   0  -1   0   0   0
-1   0  0  4  -1   0   -1   0   0
 0  -1  0 -1  4   -1   0  -1   0
 0   0 -1  0  -1  4     0   0   -1
 0   0   0  -1 0   0    4   -1   0 
 0   0   0  0  -1  0   -1   4   -1
 0   0   0  0   0  -1   0   -1  4
0025162007/04/20(金) 23:29:10
φ:
φ[1,1]
φ[2,1]
φ[3,1]
φ[1,2]
φ[2,2]
φ[3,2]
φ[1,3]
φ[2,3]
φ[3,3]

b:
h^2*f[1,1]
h^2*f[2,1]
h^2*f[3,1]
h^2*f[1,2]
h^2*f[2,2]
h^2*f[3,2]
h^2*f[1,3]
h^2*f[2,3]
h^2*f[3,3]

境界条件より、
φ[i,0]=φ[i,N]=0 (i=0,1,2,...,Nx) 
φ[0,j]=φ[N,j]=0 (j=0,1,2,...,Ny) 
です。



0026162007/04/20(金) 23:33:24
つまり、格子点の数は分割数をNとすると
φ=(φ[1,1],φ[2,1],...,φ[N,1],φ[1,2],φ[2,2],...,φ[N,2],...φ[1,N],φ[2,N],...,φ[N,N])
となります。
0027162007/04/20(金) 23:34:21
参考URLです…
http://www.coins.tsukuba.ac.jp/~itosho/NC05/chap4.pdf
0028162007/04/20(金) 23:39:26
プログラムとしては、

xの値を決める→yの値を決める→x,y方向の分割数Nを決める
→出来た連立一次方程式をガウスの消去法を用いて解く

だと思います…。

正直、自分には全く作れるような気がしません…よろしくお願いします・・・。
0029デフォルトの名無しさん2007/04/20(金) 23:41:28
>>20
それです
0030デフォルトの名無しさん2007/04/20(金) 23:43:19
>>22
(1)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

enum { NC_MAX = 10, NLEN = 11 };

int cmp(const void *a, const void *b) {
    return strcmp(*(char(*)[NLEN])a, *(char(*)[NLEN])b);
}

int main(void) {
    char *p, names[NC_MAX][NLEN] = {{ 0 }}, buff[BUFSIZ];
    int i, nc;
    for (nc = 0; nc < NC_MAX; ) {
        fputs("name => ", stdout);
        if (!fgets(buff, sizeof buff, stdin) || buff[0] == '0')
            break;
        if ((p = strchr(buff, '\n')))
            *p = '\0';
        strncat(names[nc++], buff, NLEN - 1);
        printf("累計%d件\n", nc);
    }
    qsort(names, nc, NLEN, cmp);
    for (i = 0; i < nc; ++i)
        printf("%d:%s\n", i + 1, names[i]);
    return 0;
}
0031デフォルトの名無しさん2007/04/20(金) 23:53:36
>>22 (2)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
enum { NC_MAX = 10, NLEN = 10 };
int cmp(const void *a, const void *b) {
  return strcmp(*(char**)a, *(char**)b);
}
char *strndup(const char *s, size_t n) {
  char *ss;
  size_t len = strlen(s);
  if (len < n) n = len;
  ss = malloc(n + 1);
  return strncat(ss, s, n);
}
int main(void) {
  char *p, *names[NC_MAX] = { 0 }, buff[BUFSIZ];
  int i, nc;
  for (nc = 0; nc < NC_MAX; ) {
    fputs("name => ", stdout);
    if (!fgets(buff, sizeof buff, stdin) || buff[0] == '0') break;
    if ((p = strchr(buff, '\n'))) *p = '\0';
    names[nc++] = strndup(buff, NLEN);
    printf("累計%d件\n", nc);
  }
  qsort(names, nc, sizeof(char*), cmp);
  for (i = 0; i < nc; ++i) {
    printf("%d:%s\n", i + 1, names[i]);
    free(names[i]);
  }
  return 0;
}
0032312007/04/20(金) 23:56:12
すまん、>>31ちと修正。
char *strndup(const char *s, size_t n) {
  char *ss;
  size_t len = strlen(s);
  if (len < n) n = len;
  ss = malloc(n + 1);
  ss[0] = '\0'; <-- これを追加
  return strncat(ss, s, n);
}
0033デフォルトの名無しさん2007/04/21(土) 00:17:02
>>30-31
どうもありがとうございました。助かります。
0034デフォルトの名無しさん2007/04/21(土) 00:52:47
[1] 授業単元: C
[2] 問題文:
一次不定式の一般解を求めるコンソールプログラムを作る。
例えば A,B という形で整数値が入力された場合、
Ax+By=gcd(A,B)←最大公約数
↑のような式を作ってxとy(整数解)を求め、それらから一般解を求めるプログラム。
[3] 環境
 [3.1] OS:Ubuntu
 [3.2] gcc
 [3.3] C
[4] 来週くらい
[5] scanf使っても大丈夫です
0035デフォルトの名無しさん2007/04/21(土) 11:58:06
> #include <stdio.h>
> #include <math.h>
> main()
> {
> double a,b,degree,radian,s,n;
> printf("三角形の二つの長さを入力せよ:");
> scanf("%lf%lf",&a,&b);
複数の変数の入力を行う場合は、それぞれ1つずつscanf文で入力した方が良い。
> printf("その間の角度を入力せよ:");
> scanf("%lf",°ree);
> radian=3.1416*degree/180.0;
> s=sin(radian);
> n=a*b*s*0.5;
> printf("面積は%0.3lfです\n",n);
> }
関数を使ったプログラムにしてください。


↑この関数を使ったプログラムって何ですか?><わかりません
訂正してください><
0036デフォルトの名無しさん2007/04/21(土) 12:01:43
>>16
具体的な数値は質問者に任せてガウス法(掃き出し法のほうだよね?)だけ
でも実装しようかと思ったが、自分がすっかり退化していることに気づ
いた。添え字がゴチャゴチャしてどっちが行でどっちが列だか分からな
くなるぅ。
0037デフォルトの名無しさん2007/04/21(土) 12:37:13
>>34
#include <stdio.h>
int main() {
int A, B;
printf("input two non-zero numbers\n");
scanf("%d %d", &A, &B);
if (A==0 || B==0) { printf("zero\n"); return 0; }
int a, b, x1, x2, y1, y2, w;
a = A; b = B; x1 = y2 = 1; x2 = y1 = 0;
while (b != 0) {
w = x2; x2 = x1 - x2 * (a/b); x1 = w;
w = y2; y2 = y1 - y2 * (a/b); y1 = w;
w = b; b = a%b; a = w; }
printf("%dx+%dy=%d\n\tx=%d%+dt\n\ty=%d%+dt\n", A, B, a, x1, B/a, y1, -A/a);
}
0038デフォルトの名無しさん2007/04/21(土) 13:37:20
>>37
おお、ちゃんと計算できるけど何やってるのか全然わかんねえw
0039デフォルトの名無しさん2007/04/21(土) 14:24:43
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 下の関数を用いて、与えられたデータの平均と標準偏差を計算
するプログラムを作成し、与えられたデータの平均と標準偏差を求めよ。また、与えられたデータに
関して正常に計算できない場合には(関数を)修正せよ。
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Borland
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 次の月曜
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
「与えられたデータ」は、1073741823.000000が並んでいて、最後が1073741822.000000
のデータです。
void average_stddev(double *data, int count)
{
double a, a_square, mean, var, std_dev;

a = a_square = 0.0;
for (i=0; i<count; i++){
a += data[i];
a_square += data[i]*data[i];
}

mean = var = std_dev = 0.0;
if ( count > 0 ){
mean = a / (double)count;
var = a_square / (double)count - mean * mean;
std_dev = sqrt(var);
}
printf("mean = %.16f std_dev = %16f\n", mean, std_dev);
}
0040デフォルトの名無しさん2007/04/21(土) 15:14:12
C言語で中置記法から後置記法に変換する
一番スマートなやり方ってどんなのがありますか?
0041デフォルトの名無しさん2007/04/21(土) 15:29:28
>>34
負数の剰余に対応してなかった.一応修正.
#include <stdio.h>
int main() {
int A, B;
printf("input two non-zero numbers\n");
scanf("%d %d", &A, &B);
if (A*B == 0) return printf("zero\n");
int a, b, x1, x2, y1, y2, w;
a = A; b = B; x1 = y2 = 1; x2 = y1 = 0;
while (b != 0) {
int q = a/b, r = a%b;
if (r<0) {
if (b>0){ q--; r+=b; }
else { q++; r-=b; }}
w = x2; x2 = x1 - x2 * q; x1 = w;
w = y2; y2 = y1 - y2 * q; y1 = w;
w = b; b = r; a = w; }
printf("%dx%+dy=%d\n\tx=%d%+dt\n\ty=%d%+dt\n", A, B, a, x1, B/a, y1, -A/a);
}

>>40
すれちがい
ttp://en.wikipedia.org/wiki/Shunting_yard_algorithm
0042デフォルトの名無しさん2007/04/21(土) 16:17:39
[1] 授業単元:C言語入門(Linux)
[2] 問題文 (含コード&リンク) :

1) Cプログラムファイル名 「one.c」 
以下の条件でプロセスIDを出力するプログラムを組みなさい。呼び出しプロセスはfork()関数を使用し、子、孫プロセスを作る物とする。
1) 呼び出しプロセス自身のプロセスIDを出力しなさい。
2) 孫プロセスから自分、親、祖父のIDを出力しなさい。
※補足として、流れを描いた画像をアップしておきます。
ttp://up.tseb.net/src/up11246.jpg

2) Cプログラムファイル名 「two.c」
two.cは二つのサブプロセスを生成出来る。
それぞれのサブプロセスを呼び出し、動作するプログラムを組みなさい。ただし、exec関数を使用する事。
動作例:例えば、プログラムにて 「ls」コマンドを呼び出すようにした場合、
コンソール画面にて、「./two -l -lt」と入力したら、
「ls –l」、「ls-lt」 の出力結果が表示される。

ヒント: ttp://up.tseb.net/src/up11247.txt

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C言語
[4] 期限:2007年04月23日08:00まで
[5] その他の制限:特にありませんが、
初級クラスなのでその辺で使われるであろう関数を使っていただけるとありがたいです。

丸投げでよろしくお願いします。
0043デフォルトの名無しさん2007/04/21(土) 20:39:33
[1] 授業単元: プログラミング演習�U
[2] 問題文(含コード&リンク):
・メインで用意した文字列上の適当な位置を指定して、
その位置から逆向き(先頭方向)に1文字ずつ出力するプログラムを書け。
-文字列は"Back to the (Double) Feature"を使用する
-適当な位置は配列の添え字を入力する
-添え字の範囲をチェックする
-逆向きに出力する関数backwardを用意する
-文字列の先頭位置と出力する最初の配列要素の位置
を引数にし、出力した文字数を戻り値にする:
int backward(char *s,int pos);
backwardではポインタが指す文字を出力させる
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: 特にありませんが初歩的な関数で書いていただけると
有難いです。
0044デフォルトの名無しさん2007/04/21(土) 21:41:33
>>43
#include <stdio.h>
#include <string.h>
int backward(const char *s,int pos) {
for(pos--;pos>=0;pos--)
printf("%c",s[pos]);
return 0; }
int main(void) {
char *str={"Back to the (Double) Feature"};
int pos,nx=strlen(str);
printf("Input position (%d以下) > " ,nx );
scanf("%d",&pos);
if(pos>nx) return 1;
else backward(str,pos);
return 0; }
0045デフォルトの名無しさん2007/04/22(日) 03:53:10
>>16
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3849.txt
0046デフォルトの名無しさん2007/04/22(日) 04:19:29
>>39
#include <stdio.h>
#include <math.h>

#define N 10

void average_stddev(double *data, int count)
{
double a, a_square, mean, var, std_dev;
int i;

a = a_square = 0.0;
for (i=0; i<count; i++)
a += data[i];

mean = var = std_dev = 0.0;
if ( count > 0 ){
mean = a / (double)count;

for(i = 0; i < count; i++)
a_square += pow((data[i] - mean), 2);
var = a_square/count;
std_dev = sqrt(var);
}
printf("mean = %.16f std_dev = %16f\n", mean, std_dev);
}
0047デフォルトの名無しさん2007/04/22(日) 12:39:08
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3853.c
問題はこちらに書いてあります。よろしくお願いいたします。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: [2007年4月23日00:00(深夜)まで]
0048デフォルトの名無しさん2007/04/22(日) 16:31:42
プログラマーにとってEditorの操作が重要
0049デフォルトの名無しさん2007/04/22(日) 23:48:25
>>47
これは同じ問題をやったことある香具師じゃなきゃ無理だろ。
参考URLとかもってきてくれ。
0050デフォルトの名無しさん2007/04/23(月) 01:25:16
>>49
やはり無理ですか...orz
私もよく理解ができなかったので
どの参考URLを探せば良いのかわからなくて困っています
数字が
0123456
1234567
2345678
の様な感じで並んでいたのは覚えているのですが、参考にもならなくてすみません。
今からまた調べてみます
0051デフォルトの名無しさん2007/04/23(月) 02:54:13
前スレの945なんですけど>>6のchar* Gakusei[9] = {"A", "B", "C", "D", "E", "F", "G", "H", "I"};
の部分が他の表し方だって言われたんですけどどうしたらいいんでしょうか?
あとint main(void)ではなくてvoid main(void)って言われたんですけど・・・
0052デフォルトの名無しさん2007/04/23(月) 03:06:51
>>51
int main , void main についてはすでに前スレでどういうことなのかについての結論は出ている。

ttp://www.kouno.jp/home/c_faq/c11.html
ttp://kbs.cs.tu-berlin.de/~jutta/c/c-faq/c-5.html
ttp://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200211/02110028.txt
ttp://his.luky.org/ML/linux-users.a/msg00056.html

世界的な標準を決めている団体、ANSI、ISO準拠だと、プログラムの開始のfunctionは
mainと名づけられていて、その戻り値はint型とされている。
個人の報告によれば、void mainでコンパイルエラーを起こした開発環境があっても
int main(最後にreturn (int型変数);でエラーが起きたという報告は皆無。
自分が使っている環境でvoid mainが通るならそれでも良いが、値を返す関数じゃないからといって
void mainという理由を通すなら、それはもはやANSI、ISOに従ったmainではないということになるが。
0053デフォルトの名無しさん2007/04/23(月) 03:13:16
>>51
char *Gakusei2 = {"ABCDEFGHI"};   < こうですか?それとも
char Gakusei2[9] = {"ABCDEFGHI"};  < こうですか?わかりません ><;
0054デフォルトの名無しさん2007/04/23(月) 03:23:59
>>51
授業で習ったものに、文字配列の初期化や格納について参考になるものはない?
出来るのにそれじゃダメとか言い出す講師は、ただ単にそういうんじゃなくて
どういうことに則って記述するのか、ちゃんと聞いてみるしかないかと。
0055デフォルトの名無しさん2007/04/23(月) 03:33:05
>>52<<53
すいません。無知なんで詳しいことがよくわかんないんですけど
charってのは使わないみたいです。あとはfor構文を使うとしか聞いていません。
0056デフォルトの名無しさん2007/04/23(月) 03:45:21
前スレには

すいませんでした。
A  B  C  D  E  F  G  H  I 
90 73  55 60  45 88  66 75  40
です。

実行結果が下のようになるようにお願いします。
A  B  C  D  E  F  G  H  I
優 良 不可 可 不可 優  可 良 不可

と書いてあるけど、文字配列を使っちゃダメならA〜Iを何で表示しろと?
まさか↓のようにやれと?
for(i=65; i<=73; i++) printf("%c  ",i);
0057デフォルトの名無しさん2007/04/23(月) 04:46:37
誰に言われたんだろう
TAか教授か・・・
0058デフォルトの名無しさん2007/04/23(月) 05:17:16
>>55
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3854.txt
0059デフォルトの名無しさん2007/04/23(月) 05:21:53
九九の表で
1 2 3 4 5 6 7 8 9
  4 6 8 10 12 14 16 18
    9 12 15 18 21 24 27
      16 20 24 28 32 36
        25 30 35 40 45
          36 42 48 54
            49 56 63
              64 72
                81
というように表示させたいんですけどうまくいきません。
0060デフォルトの名無しさん2007/04/23(月) 05:23:10
#include <stdio.h>
int main()
{
int i;
int j;
for (i=1; i <= 9; i++) {
for(j=1; j <= 9; j++) {
 if(i <= j){
printf("%3d,",i*j);
}
}
printf("\n");
}
return 0;
}

ここまではできたのですが表がどうしても左詰めになってしまいます。
どこがいけないんでしょうか?それ以外にも直したほうがいいところ
があればおねがいします。
0061デフォルトの名無しさん2007/04/23(月) 05:28:48
>>60
#include <stdio.h>

int main()
{
int i, j;

for(i = 1; i < 10; i++){
for(j = 1; j < i ; j++)
printf(" "); /* 半角の空白3つ分を出力 */
for(j = i; j < 10; j++)
printf("%3d", i*j);
puts("");
}

return 0;
}
0062デフォルトの名無しさん2007/04/23(月) 05:39:39
>>61
表示されないんですけど・・・
0063デフォルトの名無しさん2007/04/23(月) 05:41:03
>>62
> printf(" "); /* 半角の空白3つ分を出力 */
この中に半角の空白をあと2つ足して3つに汁!
0064デフォルトの名無しさん2007/04/23(月) 05:42:15
>>62
printfの中を半角のスペース3つにしといて。
2ch投稿時にまとまったスペースはひとつにされてしまう。
0065デフォルトの名無しさん2007/04/23(月) 05:43:53
    < どうだぁ
0066642007/04/23(月) 05:46:23
ええ、べつにいいんです。
なじられるのにはなれてますから。
0067デフォルトの名無しさん2007/04/23(月) 05:49:37
&nbsp; <これの半角にしたコードを使うのも面倒やしなぁ・・・
ちうか、俺流の書式の指定
#include <stdio.h>
int main() {
int i, j,t=3;
for(i = 1; i < 10; i++){
for(j = 1; j < i ; j++)
printf("%*c",t,32);
for(j = i; j < 10; j++)
printf("%*d", t,i*j);
puts(""); }
return 0; }
0068デフォルトの名無しさん2007/04/23(月) 05:50:45
printf("%*c",t,NULL); でも良いかな。戯言すまそ。
0069デフォルトの名無しさん2007/04/23(月) 05:54:31
表示できました。ありがとうございました。
ただputs(""); っていうのをまだ習ってないんですけど
これを使わずに表示することはできないんですか?
0070デフォルトの名無しさん2007/04/23(月) 05:55:19
int main論議なんかよりも、>>67 >>68みたいな情報をもっと書いて欲しい。
0071デフォルトの名無しさん2007/04/23(月) 05:55:54
>>69
printf("\n");に置き換えて
0072デフォルトの名無しさん2007/04/23(月) 12:43:14
>>68
NULLを%cで表示ってバカ?
0073デフォルトの名無しさん2007/04/23(月) 15:15:41
どうせやるなら、printf("%*s", t, "")だな。
0074422007/04/23(月) 16:27:31
42です。どなたかお願いできないでしょうか?
0075デフォルトの名無しさん2007/04/23(月) 16:32:53
>>72
http://www.psl.ne.jp/perl/pdojo00b.html
バカじゃないだろ、ちゃんとコードに割り当てられているし
単に文字が無いんではなく、空文字として存在してんだよぉ〜
無知は黙ってろ、クソカス低学歴(プ
お前は一生void mainに0^0=1を使ってろw
0076本年度のバカ6、7号2007/04/23(月) 16:36:42
72 名前:デフォルトの名無しさん 投稿日:2007/04/23(月) 12:43:14
>>68
NULLを%cで表示ってバカ?


73 名前:デフォルトの名無しさん 投稿日:2007/04/23(月) 15:15:41
どうせやるなら、printf("%*s", t, "")だな。
0077デフォルトの名無しさん2007/04/23(月) 16:40:06
>>73
""が示す文字、すなわち空文字=NULLじゃねーかYO!
0078732007/04/23(月) 17:12:16
>>76>>77
やってみれば判るけど、"%s"に""を渡しても何も出力しないが
"%c"にNULLを渡すとナル文字が出力されるのよ。
つまり、非可読文字が出力されちゃうわけ。判る?
#あ、標準出力をリダイレクトしてodするなんて知恵も無いDozerには理解できるわけ無いか。
0079732007/04/23(月) 17:13:37
おっと、>78を若干訂正。

×>>76>>77
○>>75>>76>>77
0080デフォルトの名無しさん2007/04/23(月) 17:29:43
>>78
> #あ、標準出力をリダイレクトしてodするなんて知恵も無いDozerには理解できるわけ無いか。
> Dozerには理解できるわけ無いか。
> Dozer
さすがにこれはどうかと思うぞ。
関係ない人間にまで喧嘩売ってるとしか思えん。
0081デフォルトの名無しさん2007/04/23(月) 17:33:35
全てのDozerが理解できないのではなくて、知恵の無いDozerが理解できないのだろうよ。
0082デフォルトの名無しさん2007/04/23(月) 17:34:58
Dozerなんて蔑称使ってる時点で論外。
0083デフォルトの名無しさん2007/04/23(月) 17:35:08
>>78
お前ってさぁ、自分の間違いを指摘されると何か言い返して相手の間違い(だと思ったこと)を
指摘しないと気がすまない基地外だろ?w
バカじゃね?出力結果が物語っているのに、何自分勝手な自論をこんなところで提言してんだよw
何これ↓?知ったかぶり?
> やってみれば判るけど、"%s"に""を渡しても何も出力しないが
> "%c"にNULLを渡すとナル文字が出力されるのよ。
だからその通りになってんじゃんwwwwwwwwwwww
> つまり、非可読文字が出力されちゃうわけ
お前のやっている %s と "" の方がどう見てもおかしいし理解不能だろwwwwww
これだからわけのわからねぇ〜知ったか理論を持ち出して説明する専門学校卒は困るんだよ!視ねw
0084頭の上にウンコを乗せたバカの今日の名言2007/04/23(月) 17:36:30
72 名前:デフォルトの名無しさん 投稿日:2007/04/23(月) 12:43:14
>>68
NULLを%cで表示ってバカ?
NULLを%cで表示ってバカ?
NULLを%cで表示ってバカ?
NULLを%cで表示ってバカ?
NULLを%cで表示ってバカ?
NULLを%cで表示ってバカ?
NULLを%cで表示ってバカ?

"" を %s で表示の方がバカだよwwwwww
文字列じゃねーだろ "" はw あっ、お前の場合ダブルクォートが文字列のつもりか?w
0085デフォルトの名無しさん2007/04/23(月) 17:36:54
端から見てりゃ>>76も>>78も同類。同じ馬鹿だよ。
脳みそ硬化してる連中はどっかよそへいけ。
0086デフォルトの名無しさん2007/04/23(月) 17:40:29
>>84
> 文字列じゃねーだろ "" はw あっ、お前の場合ダブルクォートが文字列のつもりか?w
どうみても0文字以上の文字を含む文字列では?
0087デフォルトの名無しさん2007/04/23(月) 17:42:05
誰かまとめ頼む!
0088デフォルトの名無しさん2007/04/23(月) 17:44:09
各自であぼーんして無かったことにするのが吉。
0089デフォルトの名無しさん2007/04/23(月) 17:48:20
>>73はおそらく、文字列の終わりに終端を示す\0が入るのは分かっているのだろうか?
まぁ、それについてはともかく、以下のソースをコンパイルして実行してみろ。
お前がやったこともNULLの引用と変わらんことだと気づくよw

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

int main(void)
{
char *buf={"ABC"},*a="";
unsigned int i;

for(i=0; i<=strlen(buf); i++)
printf("buf[%d] : \"%c\" / %d \n",i,buf[i],buf[i]);
printf("a[0] : \"%c\" / %d \n",a[0],a[0]);
printf("NULL : \"%c\" / %d \n",NULL,NULL);
return 0;
}
0090デフォルトの名無しさん2007/04/23(月) 17:50:54
ナルターミネートされて出力されないことと、ナル文字が出力されることの区別がつかない香具師数名。
0091デフォルトの名無しさん2007/04/23(月) 17:51:18
>>85はぁ?一緒?そりゃやっていることは一緒だろうけどさぁ、考え方は明らかに
>>73の方が浅はか、無知、知ったかw
実証してみりゃ結論が出るのに、やらずに勝手な自論を持ち出して相手の不適切を
  指  摘  し  た  つ  も  り  が  
自分がやったことが相手のやったことの違うやり方だったことに過ぎないという
お間抜けなことに気づかないアホw
やれやれ、ここはやたらとint mainにかみついたり、C言語スタイルで記述したソースを
C++コンパイラでコンパイルできればそれもC++のソースとか平気で言っちゃう香具師らが多いなんて
もはや終わってんなここw 所詮、プロのプログラマーになれなかった落ちこぼれ
負け組みの集団だろ?俺なんて趣味でやっている程度だが、確実にボケ老人より知識は上だなw
経験はまだ浅いが、いずれプロにも匹敵するくらいにはなるぜw
0092デフォルトの名無しさん2007/04/23(月) 17:56:14
>>91
で、出力結果は? 勿論、出力をリダイレクトしてダンプしてね。
0093デフォルトの名無しさん2007/04/23(月) 17:57:46
>>92
出力結果を聞くなんておかしいね?お前がコンパイルしてやってないってことは
結局""も脳内コンパイルか?脳みそこねこねコンパイルw
0094本日のボケ老人2007/04/23(月) 17:58:32
72 名前:デフォルトの名無しさん 投稿日:2007/04/23(月) 12:43:14
>>68
NULLを%cで表示ってバカ?


73 名前:デフォルトの名無しさん 投稿日:2007/04/23(月) 15:15:41
どうせやるなら、printf("%*s", t, "")だな。

↑こいつら死刑なw
0095デフォルトの名無しさん2007/04/23(月) 18:02:28
#include <stdio.h>

int main()
{
printf("%%s:%s\n", "");
printf("%%c:%c\n", NULL);
return 0;
}
#if 0
% gcc foo.c
% ./a.out
%s:
%c:
% ./a.out | od -t x1
00000000 25 73 3a 0a 25 63 3a 00 0a
00000011
%
#endif
0096422007/04/23(月) 18:07:57
論争で流れてしまったみたいなので。

お願いします。どなたか>>42の課題をやっては戴けないでしょうか?
0097デフォルトの名無しさん2007/04/23(月) 18:10:27
>>96
残念、参考資料が両方とも流れてしまっている。
0098422007/04/23(月) 18:14:04
補足画像とヒントコードが流れてしまっているみたいなので、

画像:ttp://www.uploda.org/uporg784837.jpg.html
   ttp://user.ftth100.com/log/up/log/4352.jpg

ヒントコード:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3854.txt
0099デフォルトの名無しさん2007/04/23(月) 18:15:04
printf("\"\" : \"%c\" / %d \n","","");
これやったらおかしな数値が表示されたぞ?
0100422007/04/23(月) 18:18:54
>>97
アップをしました。

ヒントコードの方、文字化けをしているみたいなのでもう一度アップしました。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3856.txt
0101422007/04/23(月) 18:20:01
>>98のヒントコード、誤爆ですorz
スレ汚しすいません。
■ このスレッドは過去ログ倉庫に格納されています