[1] 授業単元:プログラミング [2] 問題文(s構造体配列のプログラムであるがこのプログラムには間違いがあるので間違いを述べなさい): [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC6.0 [3.3] 言語: C [4] 期限:11月20日 #include<stdio.h> main(){ int idx; struct s_type{ int i; long l; }s[10]; for (idx=0;idx<10;idx++){ s.i[idx]=0; s.l[idx]=0; } } どなたかよろしくお願いします。
>#include<stdio.h> >main(){ 戻り値の型がない。 >int idx; >struct s_type{ >int i; >long l; >}s[10]; > >for (idx=0;idx<10;idx++){ >s.i[idx]=0; []演算子の使い方がおかしい。 >s.l[idx]=0; []演算子の使い方がおかしい。 >} >} 戻り値がない。
[1] 授業単元:プログラム [2] 問題文(含コード&リンク): 配列a[ ]のすべての要素に1を代入する。 この代入する部分を独立させ配列名とアドレスが一致してることを利用するやりかたで書け。 (配列で渡してポインタで受け取る) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2005年11月16日まで [5] その他の制限:なし よろしくおねがいします
どういうことだろうか
>>954 #include <stdio.h>
void fill(int *p, int n)
{
int i;
for (int i = 0; i < n: i++)
{
p[i] = 1;
}
}
#define N 16
int main(void)
{
int i;
int array[N];
fill(array, N);
for (int i = 0; i < n: i++)
{
printf("array[%d] == %d\n", i, array[i]);
}
return 0;
}
957 :
デフォルトの名無しさん :2005/11/15(火) 17:58:20
最近、冗長なプログラムが読みやすいプログラムだ、とか思ってるひと多くない?
int iの重複は冗長だと思うがこんなもんだろ 具体的に指摘できるところある?
959 :
名無し :2005/11/15(火) 18:30:27
>>951 C/C++の宿題を片付けます 51代目の時です
[問題4/中級]文字列 MOJI に代入されている文字の中から、数字(0から9)だけ を取り出して、それを小さい順に表示するプログラムを作りなさい。 例えば、MOJI[]="9B2C3ADC31" ならば 12339 と表示する。 と 「問題6/上級]次の問題の中から、どれか1つを選び、プログラムを作成して答えを 求めなさい。 (問題6−1)太郎君が9歳になるまで,花子さんの年齢が太郎君の年齢の整数倍にな る年がちょうど7回ある。このとき、太郎君と花子さんの年齢差はいくつか?
962 :
952 :2005/11/15(火) 19:01:15
>>953 様
ありがとうございます。
申し訳ありませんがよかったら正しい書き方を教えていただけませんでしょうか?
お願いします。
>>956 は冗長とは思わんけど、fill って名前で 1 を代入する関数を作るのは犯罪だと思う。fill_one とかにしようよ。
そういう問題か?
>>961 問題4
#include <stdio.h>
#include <ctype.h>
int main() {
char *p, MOJI[] = "9B2C3ADC31";
int i, j, tbl[10];
for (i = 0; i < 10; ++i) tbl[i] = 0;
for (p = MOJI; *p != '\0'; ++p)
if (isdigit(*p)) ++tbl[*p-'0'];
for (i = 0; i < 10; ++i)
for (j = 0; j < tbl[i]; ++j) printf("%d", i);
}
968 :
963 :2005/11/15(火) 19:18:05
>>964 分かると思うけど 963 ≠ 957 だよ。指摘とか書いてたのでものすごく気になったとこだけ指摘してみた。割り込んでごめんね。
#include <stdio.h> int main(void) { int i,j,a; for (i=1;i<=5;i++) { j=i*i; {for (a=1;a<=j;a++) printf("たま〜"); } printf("%d\n",j);} return 0; } よろぴく
ok
「問題]九九の計算ドリルです。メインプログラムから、次の2つの関数を呼 び出しています。各関数を指示通りに作成し、プログラムを完成させなさい。 (1)関数 kakezan x と y を使って、この問題の配点と「九九の問題」を表示させなさい。配点とは、 この問題ができたときに獲得する点数です。易しい問題のときは配点を小さく、難しい 問題のときは配点を大きくしなさい。(配点は、この関数の終わりに return tensu; で返すこと。) (2)関数 hyouka 問題数、得点、回答時間を評価し、適切なメッセージを表示する関数を作成しなさい。
#include<stdio.h> #include<stdlib.h> #include<time.h> /* 関数プロトタイプ宣言 */ int kakezan(int x, int y); void hyouka(int mondai,int tokuten,int byou2); /* メインプログラム */ void main() { int x,y,kotae,tensu,mondai=0,tokuten=0,yes=1; int byou1,byou2; srand(time(0)); while (yes) { /* yes の値が 1 のとき繰り返す */ mondai++; /* 問題数のカウント */ x=rand()%9+1; /* x は1〜9までの乱数 */ y=rand()%9+1; /* y は1〜9までの乱数 */
byou1=time(0); /* 回答前の時間(秒) */ tensu=kakezan(x,y); /* tensu は配点、kakezan は関数 */ scanf("%d",&kotae); /* kotae は入力した答え */ byou2=time(0)-byou1; /* 回答するのに要した時間(秒) */ if(x*y==kotae) /* 入力した答えが正解かどうか? */ {printf("---> 正解です\n"); tokuten+=tensu; } else printf("---> 間違いです\n"); /* tokuten は、正解の時に配点分を加算する */ /* hyouka は関数(問題数・得点・回答時間) */ hyouka(mondai,tokuten,byou2); printf("続けますか?<1:はい 2:いいえ>"); scanf("%d",&yes); if(yes!=1) {printf("おしまい\n"); return;} }}
/* 九九の問題を表示し配点を返す kakezan */ int kakezan(int x, int y) { int tensu; ????? return tensu; } /* 問題数・得点・回答時間を評価して表示 hyouka */ void hyouka(int mondai,int tokuten,int byou2) { ????? } どうしてもわからないので教えてください。
976 :
974 :2005/11/15(火) 20:34:58
事故解けうしました。
どうしても分からないのに自己解決
978 :
デフォルトの名無しさん :2005/11/15(火) 21:38:49
[1] 授業単元:プログラミング処理 [2] 問題文(含コード&リンク):ファイルから連立方程式を読み込み、行列の計算を利用して解を求めるプログラムを作成する。 [3] 環境 [3.1] OS:標準環境はソラリス8 [3.2] コンパイラ名とバージョン:gcc バージョンは申し訳ないですが判りません。 [3.3] 言語:C言語です。 [4] 期限:2006年1月11日まで [5] その他の制限:解はLU分解法とガウスザイデル法でそれぞれ求める。読み込むファイルはax1+bx2+…=y1のa,b…をすべて一行に記入し、スペースで区切る。 二次元配列を動的確保するサブ関数とファイルからstrtok関数などを用いた一行の要素を二次元配列の行要素にそれぞれ格納するサブ関数がわかりません。 よろしくお願いします。
【質問テンプレ】 [1] 授業単元: 不明 [2] 問題文(含コード&リンク): @キーボードから文字列を入力し(入力は繰り返しできるように)、結果を表示するプログラムを作成。 入力終了を判定する文字列(endなど)が入力されたら処理を終了。 A @番に入力した文字列を、逆転した文字列に変換するサブ関数を加えて処理し、結果を表示するプログラムを作成。(入力は繰り返す@と同じ) B "harumi","Ryouko","Syouko","keiko","Akina","Miyu"これらの名前を2次元配列で初期化し、アルファベット順にソートして表示。(大文字小文字をまぜてます。main()関数のみ使用) C "harumi","Ryouko","Syouko","keiko","Akina","Miyu"これらの名前を文字列ポインタで初期化し、Bで作成したプログラム(ソートのね)をポインタで作成。(main()関数のみ使用) [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: [2005年11月16日10:30まで] [5] その他の制限: プログラムにはGOTO文を使用してはいけない。
980 :
名無し :2005/11/15(火) 22:34:01
文字列ポインタのみで初期化、っつったら いちいちmallocして一個一個代入していけっつーのか めんどいぞ
[1] 授業単元: ヒューマンインターフェイス [2] 問題文(含コード&リンク): 構造体を用いて、50音順に並んだ辞書ファイル(26万弱)を読み込み簡単な変換 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: bcc32 [3.3] 言語: C [4] 期限:16日正午 [5] その他の制限: typedef struct _node{ charyomi[100]; charhyouki[100]; charhinshi[100]; }NODE; お願いしたいことは、上記構造体のポインタを格納をする配列の作り方を教えていただきたいです。 NODE *p[260000]; とかしても実行してくれません・・・
>>981 たぶん、その解釈じゃなくて、char*a[]と書けっちゅうてるだけじゃね?
984 :
名無し :2005/11/15(火) 23:49:24
>>982 typedef struct _node{
charyomi[100];
charhyouki[100];
charhinshi[100];
}NODE,*PNODE;
PNODE p[260000];
でもできれば動的に
PNODE* p = malloc(260000)
にした方がいいかも。
>>985 malloc(sizeof(PNODE) * ...
987 :
985 :2005/11/16(水) 00:07:58
988 :
984 :2005/11/16(水) 00:12:20
985-987 サンクス
printfで表示するときに中央寄せにしたいのですが、どうすればいいんですか?
自分で余白を計算して整形する。 すれ違い。
表示幅がn、文字列がsだとしたら for(i=0;i<(strlen(s)-n)/2;i++)printf(" "); こんな漢字か? printf("%-5s",s); みたいな昨日はないよ
994 :
979 :2005/11/16(水) 01:48:54
さっさと答えろやボケナス共。
>>992 MAX〜〜とかはいらないような気がします・・私もどう伝えたらいいのか分からないのですが、
初歩的な解き方でいいんです〜〜初歩的な解き方ができない私は一体・・すいません;;ありがとうございました。
これを参考に頑張ってみます。
おまいが出された課題のレベルは下の下の上くらいだ #defineは下の下の中くらいで習うはずだ 教官に文句いってやれ
次スレは?
998 :
ボケナスA :2005/11/16(水) 07:15:51
なんでオレが居るのを知ってるんだ?
>>994 #include <stdio.h>
#include <string.h>
#include <ctype.h>
void reverse(char *c){/* A */ char *p;
for(p=c+strlen(c);p>=c;p--) if(isprint(*p))printf("%c",*p);printf("\n");
}
int main(int argc, char* argv[]){
// char c[100]; /* @ A */
// for(;fgets(c,sizeof(c),stdin)!=NULL&&strcmp(c,"end\n");printf("%s",c));/* @ */
// for(;fgets(c,sizeof(c),stdin)!=NULL&&strcmp(c,"end\n");reverse(c));/* A */
/* B */
/*
char name[7][7]={"harumi", "Ryouko", "Syouko", "keiko", "Akina", "Miyu", };
for(int i=0;i<6;i++)
for(int j=i;j<6;j++)
if(strcmp(name[i],name[j])>0)
{strcpy(name[6],name[i]);strcpy(name[i],name[j]);strcpy(name[j],name[6]); }
for(i=0;i<6;printf("%d %s\n",i,name[i++]));
*/
/* C */
char *name[6]={"harumi", "Ryouko", "Syouko", "keiko", "Akina", "Miyu", },*tmp;
for(int i=0;i<6;i++)
for(int j=i;j<6;j++)
if(strcmp(name[i],name[j])>0){
tmp=name[i];name[i]=name[j];name[j]=tmp;
}
for(i=0;i<6;printf("%d %s\n",i,name[i++]));
return 0;
}
999 :
ボケナスB :2005/11/16(水) 07:22:46
1000 :
ボケナスC :2005/11/16(水) 07:23:40
っつーことで、ボケナス軍団(一人)が1000ゲット。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。