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

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2005/11/15(火) 17:11:23

[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;
}
}
どなたかよろしくお願いします。
953デフォルトの名無しさん:2005/11/15(火) 17:19:00
>#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;
[]演算子の使い方がおかしい。
>}
>}
戻り値がない。
954デフォルトの名無しさん:2005/11/15(火) 17:23:16
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):
配列a[ ]のすべての要素に1を代入する。
この代入する部分を独立させ配列名とアドレスが一致してることを利用するやりかたで書け。
(配列で渡してポインタで受け取る)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2005年11月16日まで
[5] その他の制限:なし
よろしくおねがいします
955デフォルトの名無しさん:2005/11/15(火) 17:50:01
どういうことだろうか
956デフォルトの名無しさん:2005/11/15(火) 17:57:00
>>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
最近、冗長なプログラムが読みやすいプログラムだ、とか思ってるひと多くない?
958デフォルトの名無しさん:2005/11/15(火) 18:21:16
int iの重複は冗長だと思うがこんなもんだろ
具体的に指摘できるところある?
959名無し:2005/11/15(火) 18:30:27
>>951
C/C++の宿題を片付けます 51代目の時です
960デフォルトの名無しさん:2005/11/15(火) 18:49:26
961デフォルトの名無しさん:2005/11/15(火) 18:59:02
[問題4/中級]文字列 MOJI に代入されている文字の中から、数字(0から9)だけ
を取り出して、それを小さい順に表示するプログラムを作りなさい。
例えば、MOJI[]="9B2C3ADC31" ならば 12339 と表示する。

「問題6/上級]次の問題の中から、どれか1つを選び、プログラムを作成して答えを
求めなさい。
(問題6−1)太郎君が9歳になるまで,花子さんの年齢が太郎君の年齢の整数倍にな
る年がちょうど7回ある。このとき、太郎君と花子さんの年齢差はいくつか?
 

962952:2005/11/15(火) 19:01:15
>>953
ありがとうございます。
申し訳ありませんがよかったら正しい書き方を教えていただけませんでしょうか?
お願いします。
963デフォルトの名無しさん:2005/11/15(火) 19:02:56
>>956 は冗長とは思わんけど、fill って名前で 1 を代入する関数を作るのは犯罪だと思う。fill_one とかにしようよ。
964デフォルトの名無しさん:2005/11/15(火) 19:04:12
そういう問題か?
965デフォルトの名無しさん:2005/11/15(火) 19:06:31
>>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);
}
966デフォルトの名無しさん:2005/11/15(火) 19:08:28
>>965
>>961はマルチ。放置汁
967デフォルトの名無しさん:2005/11/15(火) 19:15:42
>>966 スマソ&サンクス
968963:2005/11/15(火) 19:18:05
>>964 分かると思うけど 963 ≠ 957 だよ。指摘とか書いてたのでものすごく気になったとこだけ指摘してみた。割り込んでごめんね。
969デフォルトの名無しさん:2005/11/15(火) 19:42:22
#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;
}

よろぴく
970デフォルトの名無しさん:2005/11/15(火) 19:44:05
ok
971デフォルトの名無しさん:2005/11/15(火) 20:08:42
「問題]九九の計算ドリルです。メインプログラムから、次の2つの関数を呼
び出しています。各関数を指示通りに作成し、プログラムを完成させなさい。
(1)関数 kakezan
 x と y を使って、この問題の配点と「九九の問題」を表示させなさい。配点とは、
この問題ができたときに獲得する点数です。易しい問題のときは配点を小さく、難しい
問題のときは配点を大きくしなさい。(配点は、この関数の終わりに return tensu;
で返すこと。)
(2)関数 hyouka
 問題数、得点、回答時間を評価し、適切なメッセージを表示する関数を作成しなさい。

972デフォルトの名無しさん:2005/11/15(火) 20:09:25
#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までの乱数 */

973デフォルトの名無しさん:2005/11/15(火) 20:10:14
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;}
}}

974デフォルトの名無しさん:2005/11/15(火) 20:10:44
/* 九九の問題を表示し配点を返す kakezan */
int kakezan(int x, int y)
{ int tensu;
?????
return tensu; }

/* 問題数・得点・回答時間を評価して表示 hyouka */
void hyouka(int mondai,int tokuten,int byou2)
{ ????? }
どうしてもわからないので教えてください。
975デフォルトの名無しさん:2005/11/15(火) 20:14:09
>>1を101回読め
976974:2005/11/15(火) 20:34:58
事故解けうしました。
977デフォルトの名無しさん:2005/11/15(火) 20:56:46
どうしても分からないのに自己解決
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関数などを用いた一行の要素を二次元配列の行要素にそれぞれ格納するサブ関数がわかりません。
よろしくお願いします。
979デフォルトの名無しさん:2005/11/15(火) 21:41:48
【質問テンプレ】
[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
>>948 >>949 >>950
はどのような構造になっているのですか?
981デフォルトの名無しさん:2005/11/15(火) 23:19:50
文字列ポインタのみで初期化、っつったら
いちいちmallocして一個一個代入していけっつーのか

めんどいぞ
982デフォルトの名無しさん:2005/11/15(火) 23:43:20
[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];
とかしても実行してくれません・・・
983デフォルトの名無しさん:2005/11/15(火) 23:48:16
>>981
たぶん、その解釈じゃなくて、char*a[]と書けっちゅうてるだけじゃね?
984名無し:2005/11/15(火) 23:49:24
>>980
flagの意味がわからないのですが
985デフォルトの名無しさん:2005/11/15(火) 23:51:25
>>982
typedef struct _node{
charyomi[100];
charhyouki[100];
charhinshi[100];
}NODE,*PNODE;

PNODE p[260000];

でもできれば動的に
PNODE* p = malloc(260000)
にした方がいいかも。
986デフォルトの名無しさん:2005/11/15(火) 23:54:28
>>985
malloc(sizeof(PNODE) * ...
987985:2005/11/16(水) 00:07:58
>>986
(*^ー゚)b グッジョブ!!
988984:2005/11/16(水) 00:12:20
985-987

サンクス
989デフォルトの名無しさん:2005/11/16(水) 00:17:44
printfで表示するときに中央寄せにしたいのですが、どうすればいいんですか?
990デフォルトの名無しさん:2005/11/16(水) 00:19:16
自分で余白を計算して整形する。
すれ違い。
991デフォルトの名無しさん:2005/11/16(水) 00:57:51
>>984
旗。

>>988
あんたが>984なのだとしたら、阿呆なのか?

>>989
中央寄せの定義をしてくれ。
992デフォルトの名無しさん:2005/11/16(水) 01:00:06
>>979
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1098.c

こういうことでいいのかな?
違う、とかいわれても作り直す気はさらさらないけど
993デフォルトの名無しさん:2005/11/16(水) 01:03:18
表示幅がn、文字列がsだとしたら
for(i=0;i<(strlen(s)-n)/2;i++)printf(" ");

こんな漢字か?
printf("%-5s",s);
みたいな昨日はないよ
994979:2005/11/16(水) 01:48:54
さっさと答えろやボケナス共。
995デフォルトの名無しさん:2005/11/16(水) 02:02:13
>>992
MAX〜〜とかはいらないような気がします・・私もどう伝えたらいいのか分からないのですが、
初歩的な解き方でいいんです〜〜初歩的な解き方ができない私は一体・・すいません;;ありがとうございました。
これを参考に頑張ってみます。
996デフォルトの名無しさん:2005/11/16(水) 02:20:42
おまいが出された課題のレベルは下の下の上くらいだ
#defineは下の下の中くらいで習うはずだ

教官に文句いってやれ
997デフォルトの名無しさん:2005/11/16(水) 04:52:15
次スレは?
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
ばかだなぁ、>>992 で回答済みじゃないか
1000ボケナスC:2005/11/16(水) 07:23:40
っつーことで、ボケナス軍団(一人)が1000ゲット。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。