トップページ⇒tech
982コメント315KB

宿題手伝いますYO!!

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
宿題とか手伝いますけど、以下の事項は守ってほしいです。
・マルチポストは厳禁です。
・キーワードが分かっているなら、http://www.google.co.jp を活用すること。
・質問内容がちゃんと日本語になっていること。
・言語名を入れること。
・自分の力で頑張ってみたことを伝えられる人。
・どこまでわかったのかを書くこと。
以上です。

前スレ http://pc3.2ch.net/test/read.cgi/tech/1029422194/

新
↑
│ http://pc3.2ch.net/test/read.cgi/tech/1027756023/
│ http://pc3.2ch.net/test/read.cgi/tech/1026138039/
│ http://pc.2ch.net/test/read.cgi/tech/1024592344/
│ http://pc.2ch.net/test/read.cgi/tech/1007902384/
│ http://pc.2ch.net/tech/kako/1003/10038/1003838158.html
│ http://pc.2ch.net/tech/kako/982/982853418.html
│ http://piza.2ch.net/tech/kako/972/972032579.html
↓
古

長いソースを張れるBBS
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
0284 ◆F52DmOxJlc NGNG
いわゆる MDI っぽいアプリケーションとか。
子ウインドウを不特定数 create したり free したりせにゃならん。
ゲームもいいよね。とくにシューティングとか。
0285デフォルトの名無しさんNGNG
笑わせるな
0286デフォルトの名無しさんNGNG
すいません。C言語について質問なんですが、
最大値選択法により、大きな数から配列に格納していく以下のソートプログラムを
1回1回の交換ではなく、内側のループで最大値の場所だけを覚えておいて
ループの終了時点で1回だけ交換するように変更したいのですが、どのように
変更してやればいいのでしょう?

#include <stdio.h>
#define MAX_SIZE 100
void simple_sort(int table [], int table_size);
int main(void)
{
int array[MAX_SIZE] , size, i;
for(size=0; size<MAX_SIZE; size++){
printf("%d番目の数は?", size+1);
scanf("%d", &array[size]);
if (array [size]<0){
break;
}
}
0287デフォルトの名無しさんNGNG
simple_sort(array, size);
for(i=0; i<size; i++){
printf("%d\n", array[i]);
}
}
void simple_sort(int table [], int table_size)
{
int i, j, work;
for(i=0; i<table_size-1; i++){
for(j=i+1 ; j<table_size; j++){
if(table [i] <table [j]){
work=table [i] ;
table [i]=table [j] ;
table [j]=work;
}
}
}
}
0288デフォルトの名無しさんNGNG
自分では、
int i, j,k, work;
for(i=0; i<table_size-1; i++){
for(j=i+1 ; j<table_size; j++){
if(table [i] <table [j])
work=j ;
else work=i;
}
k=table [i] ;
table [i]=table[work];
table[work]=k;

に変えてみたんですが上手くいきません。
0289デフォルトの名無しさんNGNG
>>286-288
int i, j,k, work;
for(i=0; i<table_size-1; i++){
for(j=i+1 ; j<table_size; j++){
if(table [i] <table [j])
work=j ;
else
work=i;
}
k=table [work] ;
table [work]=table[i];
table[i]=k;
}

0290デフォルトの名無しさんNGNG
>>289
間違い!!
0291デフォルトの名無しさんNGNG
>>286
これは選択ソートじゃなくてバブルソート。

    work = i;
    for(j = i + 1; j < table_size; j++) {
        if (table[i] <table[j])
            work = j;
    }
    if (work != i) {
        k=table [i] ;
        table [i]=table[work];
        table[work]=k;
    }
0292デフォルトの名無しさんNGNG
すいません、教えてください。
Borland C++ Compiler 5.5.1でパラレルポート制御する
プログラムを組めるものなのでしょうか。
とりあえず、アセンブラは使いたくないなと思ってます。
よろしくお願いします。
0293デフォルトの名無しさんNGNG
>>283
そもそも、あなたはオブジェクト指向そのものの
メリットをきちんと理解しているだろうか?
そこがわかれば、適用可能な分野がある程度はわかるはず。
0294デフォルトの名無しさんNGNG
>>291

ご返答有難うございます。早速実行してみましたが、
この場合、1,2,3,4,5・・・などのようにインクリメントやデクリメントする数値を入力した場合には
上手くいくのですが、真ん中に最大値が来た場合などは上手くいきませんでした。

それで、改めて自分で以下の通りに直してみたのですが、やはりダメでした。
再びで申し訳ないんですが、間違いなどございましたら教えていただければと思います。お願いします。

work = i;
for(j = i + 1; j < table_size; j++) {
if (table[i] <table[j])
i = j;
}
k=table[work];
table[work]=table[i];
table [i]=k;
0295 NGNG
0296デフォルトの名無しさんNGNG
>>294
void simple_sort(int table[], int table_size)
{
for(int i = 0; i < table_size-1; i++)
{
int work = i;
for(int j = i+1; j < table_size; j++)
{
if(table[work] < table[j])
work = j;
}
int temp = table[i];
table[i] = table[work];
table[work] = temp;
}
}
これでどう?
0297デフォルトの名無しさんNGNG
>>294
最大値の位置を覚えておく工夫をせにゃならんよ。
0298 NGNG
>>296

無事上手くいきました。誠に有難う御座います。
0299デフォルトの名無しさんNGNG
C言語について質問です。
以下の2つの文字列が同じかどうかを判定するプログラムを使って
2つの文字列が何文字目まで等しいかを判定するプログラムを作りたいのですが
どうすればいいのでしょう?

#include<stdio.h>

#define SIZE 100

int string_equal_length(char str1[],char str2[]);

int main(void)
{
int i,j,k;
char str1[SIZE],str2[SIZE];
printf("文字列を入力してください。:");
scanf("%s",str1);
printf("文字列を入力してください。:");
scanf("%s",str2);

0300デフォルトの名無しさんNGNG
if(string_equal_length(str1,str2)==0){

printf("2つの文字列は同じです。\n");
}

else{
printf("2つの文字列は同じではありません。\n");
}
}

int string_equal_length(char str1[],char str2[])
{
int i=0;
while(1){
if(str1[i]=='\0'&&str2[i]=='\0'){
return(0);
}
if(str1[i]!=str2[i]){
return(-1);
}
i++;
}
}
0301デフォルトの名無しさんNGNG
自分では以下のようにしたのですがだめでした。

#include<stdio.h>

#define SIZE 100

int string_equal_length(char str1[],char str2[]);

int main(void)
{
int i,j,k;
char str1[SIZE],str2[SIZE];
printf("文字列を入力してください。:");
scanf("%s",str1);
printf("文字列を入力してください。:");
scanf("%s",str2);
0302デフォルトの名無しさんNGNG
k=1;
if(string_equal_length(str1,str2)==0){
for(i=0;i<SIZE;i++){
if(str1[i]=str2[i]){
k=k++;}
else { break;
}
}
printf("2つの文字列は%d文字目まで同じです。\n",k);
}

else{
printf("2つの文字列は同じではありません。\n");
}
}

int string_equal_length(char str1[],char str2[])
{


if(str1[0]==str2[0]){
return(0);
}
if(str1[0]!=str2[0]){
return(-1);
}

}
0303怜NGNG
int string_equal_length(char str1[],char str2[])
の中で何やってるかはわかる?
一文字ずつ比べていって、もしも途中で違ったら-1を返して、
最後まで一緒だったら0を返してるよね。
で、一文字同じだったらそのたびにiを1増やしてる。

ということは、iは何文字一緒だったかカウントしてることになるんだから、
途中で違ったら-1を返すのではなく、iを返すようにすれば・・

>>302のだと、全文字一緒のときしか
for(i=0;i<SIZE;i++){
if(str1[i]=str2[i]){
k=k++;}
else { break;
}
が実行されないから上手くいかないのね。

だから、if文とっちえばできると思う。
あと、k=0から始めないと変かも。
0304デフォルトの名無しさんNGNG
int string_equal_length(char *str1, char *str2)
{
  int count = 0;

  do {
    if (*str1 != *str2) { break; }
    count++;
  } while (*++str1 && *++str2);

  return count;
}
0305304NGNG
すまん。バグ入ってた。
上のコード両方に長さ0の文字列渡したときに1が帰る。
0306304NGNG
よく考えたら、1が帰るとは限らないね。ひょっとしたらそのまま突っ走る可能性も…
すまんかった、逝ってくる
0307デフォルトの名無しさんNGNG
size_t strmatchlen( const char *s1, const char *s2 ) {
size_t c = 0;
while ( *s1 && *s1++ == *s2++ ) c++;
return c;
}
0308デフォルトの名無しさんNGNG
Cです。
下のプログラムはクイックソートの一部なのですが、while文やif文が{}でくくってないので、どういう風に理解すればいいのかわかりません。
ifはbreak;のためにあると思うのですが、この場合のwhileはどういう意味になるのでしょうか?
他の変数などは無視して構わないので、whileについて教えてください。

for(;;){
while(a[++i] < v);
while(i<j-- && a[j] > v);
if(i>=j)
break;
t=a[i];a[i]=a[j];a[j]=t;
}
0309デフォルトの名無しさんNGNG
while(a[++i] < v);
は
while (a[i] < v) i++;

while(i<j-- && a[j] > v);
は

while (i < j)
if(a[--j] <= v) break;

とでも読み替えればよいか。
0310デフォルトの名無しさんNGNG
スマソ

while (i < j--)
if(a[j] <= v) break;

だね。
0311デフォルトの名無しさんNGNG
while(a[++i] < v);
は
while(a[++i] < v){}
0312デフォルトの名無しさんNGNG
>>309-310
breakの条件が違うだろ?
0313デフォルトの名無しさんNGNG
>>308
while(a[++i] < v);
バラして書くと、
i = i + 1;
while(a[i] < v)
{
i = i + 1;
}
で、ようするにaの内容とvを比較していき、
aの内容がvよりも大きくなった時にwhileから
抜けるっていう意味で
0314デフォルトの名無しさんNGNG
>>308
for(;;){
while(a[++i] < v);
while(i<j-- && a[j] > v);
if(i>=j)
break;
t=a[i];a[i]=a[j];a[j]=t;
}
vを基準に、
a[i]は値の小さい方から(イメージとしては左から?)、
a[j]は値の大きい方から近づく(右から?)。
この作業が終わった時に、i,jの大小関係が食違っていたら(if)、何もせず抜け、
で、なければ、取り替えなければならない状況なので、取り替える。vという値を基準に、
左右に不適切に混ざっている。ランダムに並んでいる。
0315デフォルトの名無しさんNGNG
従業員の給料を計算するプログラムをつくりたいんですが、
structureのデータの削除の仕方がわかりません。
データは以下の構成です。
:名姓(first name, last name)
:社会保障番号(12桁)
:性別(男性または女性)
:労働時間
:時給
:給料
労働時間が40時間以上は超過勤務時間であると考えられます。
超過勤務時間の場合、普通の1.5倍得ます。
例えば
通常時給20ドル
超過勤務時の時給20*1.5=30ドル
50時間働いた時の給与は
20*40+30*10=1100ドル

メニューは次の選択を含んでいるべきです
1. 給料と従業員をすべてリストします。
2. 給料支払簿に従業員を加えます。
3. 給料支払簿から従業員を削除します。
4. 女性の従業員をすべてリストしてください。
5. 超過勤務時間の従業員をすべてリストしてください。
6. 従業員のリストをアルファベット順に並べてください。
7. 誰が一番もらってるか。
8. 終了&保存。
0316デフォルトの名無しさんNGNG
#include <stdio.h>
struct xrec{
char fname[10], lname[10];
char ssn[12];
char gender;
double hours,salary;
}
struct xrec* add_list(struct xrec* list, struct xrec temp);
int main(){
struct xrec employee[100];
struct xrec temp;
struct xrec* first;
FILE* infile;
int size=0;
infile=fopen("DATA.c","r");
first=NULL;
while(fscanf(infile,"%10s %10s %12s %c %lf", temp.fname, temp.lname, temp.ssn,
&temp.gender, &temp.hours)==5){
temp.fname[9]=NULL;
temp.lname[9]=NULL;
temp.ssn[11]=NULL;
employee[size++]=temp;
first=add_list(first,temp);
}
0317デフォルトの名無しさんNGNG
void computesalary(struct xrec x[], int n){
int i,rate;
for(i=0; i<n; i++){
if(x[i].hours>=40)
x[i].salary=x[i].hours*rate*1.5;
else
x[i].salary=x[i].hours*rate
}
}
do{
com=displaymenu();
switch(com){
case 1: printlist(employee,size); break;
case 2: add_list; break;
case 3: delete_data; break;
case 4: printroses; break;
case 5: printovertime; break;
case 6: alphabetize; break;
case 7: printhighest; break;
case 8: quitsave; break;
default;displaymenu();
}
}while(com<>8)
0318デフォルトの名無しさんNGNG
int displaymenu(){
int choice;
printf("1. List all employees to the screen with their salary.\n");
printf("2. Add an employee to the payroll.\n");
printf("3. Delete an employee from the payroll.\n");
printf("4. List all the female employees(Roses of the G-ds).\n");
printf("5. List all employees with overtime.\n");
printf("6. Alphabetize the list of the employees.\n");
printf("7. Who gets the highest salary.\n");
printf("8. Quit and Save.\n");
scanf("%d",&choice);
return choice;
}
void printlist(struct xrec* list){
while(list!=NULL){
printf("%s %s %lf", list->fname,list->lname, list->salary);
list=list->next;
}
}
0319デフォルトの名無しさんNGNG
struct xrec* add_list(struct xrec* list, struct xrec temp){
struct xrec* new_node;
new_node=(struct xrec*)malloc(size of (struct xrec));
*(new_node)=temp;
new_node->next=list;
return new=node;
}
void printroses(struct xrec x[], int n){
int i;
for(i=0; i<n; i++){
if(x[i].gender=='F')
printf("%s %s\n", x[i].fname, x[i].lname);
}
}
void printovertime(struct xrec x[], int n){
int i;
for(i=0; i<n; i++){
if(x[i].hours>40)
printf("%s %s %lf\n", x[i].fname, x[i].lname, x[i].hours);
}
}
void quitsave(){
fclose(infile);
}
0320デフォルトの名無しさんNGNG
一応自分でやったコードです
よろしくおねがいします
0321デフォルトの名無しさんNGNG
>>320
上記のプログラムってコンパイルできますか?
0322デフォルトの名無しさんNGNG
>320
線形リストって知ってる?
0323デフォルトの名無しさんNGNG
>320

http://www.google.co.jp/search?q=cache:0iCTpmtd3kAC:www9.plala.or.jp/sgwr-t/c/sec15-5.html+%E8%87%AA%E5%B7%B1%E5%8F%82%E7%85%A7%E3%80%80%E6%A7%8B%E9%80%A0%E4%BD%93&hl=ja&lr=lang_ja&ie=UTF-8
0324デフォルトの名無しさんNGNG
レスありがとうございます。
>321
コンパイルはできません。エラーが6個ほどでてしまって。。。
>323
ありがとうございます。参考にします

自分で修正し、残すはリストからデータの削除の仕方だけになりました。
リストからデータの削除の仕方を教えてもらえないでしょうか?
よろしくおねがいします。
0325デフォルトの名無しさんNGNG
>>324
やり方だけ。コードは読んでないけど感覚で。
ポインタは理解してる?

リストの先頭から順に辿っていく。
先頭が対象のデータの場合は別処理するとして・・
現在のデータ(list)の次のデータ(list->next)が、削除したいデータ
の場合は、
list->next->nextがさしているポインタを一次保存しておいて。
list->nextのデータをfreeした後に、
list->nextに、先ほど保存したデータを入れる。

a -> b -> c となっていたのを
a -> c として、bをfreeすればいいわけだから。
0326デフォルトの名無しさんNGNG
>324 簡単な例でやったほうがええよ まずはこれを理解する
typedef struct List{
 int id;
 struct List *next;
} List;
void main()
{
 List list1,list2,list3;
 List *top=NULL,*list=NULL,*prev=NULL;
 top=&list1;
 list1.id=1; list1.next=NULL;
 list2.id=2; list2.next=NULL;
 list3.id=3; list3.next=NULL;
// 連結
 list1.next = &list2; list2.next = &list3;
// 取りはずし (list2の取り外し)
 list1.next=&list3; list2.next=NULL;
// スキャン
 for(list=top;list != NULL;list=list->next){ printf("%d,",list->id);}
// スキャンによる取りはずし id==2をはずす
 for(list=top,prev=NULL;list != NULL;){
  if (list->id==2){
   if (prev!=NULL){list=prev->next=list->next;}
   else {top=list->next;}
  }else{prev=list,list=list->next;}
 }
}
取り外しのところでメモリ開放が必要なら入れる。>325さんとはちと違うが、同じこと
03271024NGNG
FORTRANで
正規分布の確率密度を
ある点Xから無限まで積分で
求めるプログラムを教えてください。
できれば、シンプソンと台形公式(2重積分)の2通り
お願いします。
0328アフォNGNG
ヒープを辞書として用いるとき、MEMBER(x)の実行方法を考察せよ。
現在探索中の接点の要素をyとするとき
1、x=yならば、x∈Aを結論し、yesを出力する。
2、x>yならば左の子へ進む。
  x<yならば親に戻る。子がいない場合も親に戻る。
3、親に戻ったとき、左の子から戻ったときは右の子へ進む。
  右の子から戻ったときは、また親に戻る。
4、右の子から親に戻ったとき、noを出力する。
5、根の要素>xのとき、noを出力する。

手直しお願いします。あと、ハッシュ表による辞書と比べて
どのような点で劣っているか教えていただきたいです。
0329デフォルトの名無しさんNGNG
どなたか教えて下さい。問題は↓です

/* 実数を入力し、それぞれ以下のように変換する

小数第3位以下を切り捨てる
小数部のみに変換
小数第2位を四捨五入して小数第1位までに変換
10の位を四捨五入して100の位までに変換

※出力はすべて、printf("%f\n", x)とすること*/

0330デフォルトの名無しさんNGNG
(int)(x*1000.0)/1000.0
x-(int)x
round(x*100.0)/100.0
round(x/100.0)*100.0
0331329NGNG
>>330さん
ありがとうございます
やってみたら、「警告: 関数 round は宣言されていないので、int 型とみなす」
とエラーが出てしまったんですが^ ^;
0332デフォルトの名無しさんNGNG
int printf(char *dummy, char*str)
{
puts( str ); return 0;
}

//小数部のみに変換
int main(){
char str[80];char *x;
scanf("%s", str );
x = strchr( str, '.' );
printf("%f\n", x);
}
0333デフォルトの名無しさんNGNG
C言語で、インターネットにあるデータ(画像などなんでも)をダウンロードしてファイル
に保存するというソースを書いてほしいんです。お願いします。
0334デフォルトの名無しさんNGNG
だから環境を書けといいたい。
それと相手はhttpか、ftpか。gopherか。
0335333NGNG
自分の環境はwindows98で、相手はhttpです。お願いします。
0336デフォルトの名無しさんNGNG
面倒臭いので、
http://www.nakka.com/lib/inet/httpc.html
あたりで。
0337デフォルトの名無しさんNGNG
>>331
マニュアルくらい読め
0338333NGNG
>>336
ありがとうございます!
0339デフォルトの名無しさんNGNG
VB詳しい人にお願いです
テキストファイルからデータを読み込んで
二次元配列にいれて
その値それぞれ作った四角の中のグレースケールの塗りつぶしの値として
それを二次元配列分フォーム上に画像表示するようなPG作りたいんですけど
手を貸していただけませんか?
よろしくお願いします。
0340DNGNG
>339
>その値それぞれ作った四角の中のグレースケールの塗りつぶしの値として
>それを二次元配列分フォーム上に画像表示するようなPG作りたいんですけど
もう少し詳しくしてもらわないとちょっと...
四角形の座標はどう指定するのか、並べるのか重ねるのか、二次元配列は何を格納するのか
等つっこみどころ満載です。
0341デフォルトの名無しさんNGNG
C言語 ose gane ose ganeと表示をしたいです。
#include <stdio.h>
void strcpy1(char *p, char *q){
while(*p != '\0') *q++ = *p++; *q = '\0';}
void strext1f(char *p, int n, int m, char *q){ int i; n--;
for(i=1; i<=n; i++) p++;for(i=1; i<=m; i++) *q++ = *p++;
*q = '\0';}void strext1w(char *p, int n, int m, char *q){
n--;do{p++;n--;}while(n); do{*q++ = *p++;m--;}while(m);*q = '\0';
}void strext2f(char **p, int n, int m){char *pw; int i; n--;
for(i=1; i<=n; i++) (*p)++;pw = *p;for(i=1; i<=m; i++) (*p)++;
**p = '\0';*p = pw;}void strext2w(char **p, int n, int m)
{char *pw; n--;do{(*p)++;n--;}while(n);
pw = *p; do{(*p)++;m--;}while(m); **p = '\0';*p = pw;
}int main(void)
{ char a[]="Hosei";char b[]="Koganei";char c[256], d[256];
char e[256], f[256];char **pe, **pf; strext1f(a, 2, 3, c);strext1w(b, 3, 4, d);
printf("%s\n", c);printf("%s\n", d); strcpy1(a, e); strcpy1(b, f);
*pe = e;*pf = f;strext2f(pe, 2, 3);strext2w(pf, 3, 4);
printf("%s\n", *pe); printf("%s\n", *pf); return 0;
}
0342デフォルトの名無しさんNGNG
>341
puts("ose gane ose gane");
0343デフォルトの名無しさんNGNG
>>342
正解!!
0344デフォルトの名無しさんNGNG
このスレならおしえてくれる??
いや、どーにかおしえて!!

VBSで書いたバッチをWin2000で動かします。
クリスタルレポート使ってファイル出力してるんですが、(Adobe destiller)
クリレポのバージョンを8から9にあげたら動かなくなりました。
どーやら原因はOCX。仕方ないので、RDCっていうのを
使うことになったのですが、VBでの移行はある程度リファレンスが
あったものの、VBSでの方法はちっとも見つかりません。
VBS側から渡すパラメータ、オブジェクトの宣言方法など、
なるべく詳細にお願いします。
だいたい、RDC使うにはレポート以外に何かファイルが必要だったり、
DLL登録しなくてはならなかったりしますか?
また、ランタイムだけの場合と、クリスタルデザイナ?が
ある場合と両方聞けると嬉しいです。
0345こんなの見つけたよNGNG
http://momolin.fc2web.com/
ちょっと気分転換してみませんか
あなたの探してるもの見つかるかも
おすすめメニューの中に何か隠されているみたい
あとはカテゴリから探してね 秘密のチャット
ネットアイドルと楽しくおしゃべり テレビ電話感覚のビデオチャット
全国にメルトモ作ろう メルトモ天国
やすらぎアイランド 〜出会いの島〜
30歳からの☆億千万の出会い
交換日記 運命の出会いがあなたを待っています
多機能メールアドレスを無料プレゼント
そのほか、WEB電子商取引関連、コンピュータ・家電、インターネットサービスプロバイダ、ソフトウェア
金持ちお父さんのビジネススクールなど
ネットビジネス、サイドビジネス紹介 PC情報
各種ネットショッピング 各種クレジット、ローン、キャッシング
ドメイン480円から取得、懸賞・プレゼント・ポイントサービスなど
見逃せない情報満載 一度覗いてみて下さい
http://momolin.fc2web.com/
0346デフォルトの名無しさんNGNG
Perlで書かれたハフマン符号化を行うスクリプト無いでしょうか?
Cとかはよく見かけるのですが、Perlで書かれたものが欲しいのです。
自分がCを理解できないのと、オンラインで使いたい理由がありまして。
0347デフォルトの名無しさんNGNG
ネタが増えてきたなぁ
0348デフォルトの名無しさんNGNG
今日は新鮮なのが入ってるよ!!
0349デフォルトの名無しさんNGNG
Aho-Corasikのプログラム書ける人いますか?パターンマッチのやつです。
0350349NGNG
やっぱいいや自殺しますさようなら
0351デフォルトの名無しさんNGNG
自殺する前に一度スカイダイビングを・・・
0352デフォルトの名無しさんNGNG
パラシュート無しで・・・
0353339NGNG
>>340
わかりづらくてすいません
16×16の文字を表示したいんですが、
256階調のデータはテキストファイルにあるのでそれを読み込んで
適当な大きさの四角形にその値の白黒階調の色を塗りつぶして並べていって
16×16の字にするっていうことをしたいんですけども
お手をお貸し下さい。
0354デフォルトの名無しさんNGNG
C言語の課題で「1000000 (百万) までの素数を表示するプログラムを書きなさい. 」
というのがでました。

#include <stdio.h>
main ( ) {
   int n,m,l,o;
   2<=n<=1000,2<=m<=500000;
   i=n*m;
      /*iに該当しないものをoとする*/
   while (2<=o<=1000000){
    printf( "%\n" , o );
    0++;
   }
}
なんとか自分的にはそれらしくなったつもりです。。。
/*iに該当しないものをoとする*/
これはどう表現したらいいのでしょうか?
それと、これでできるでしょうか?
0355デフォルトの名無しさんNGNG
>>354
Cじゃなくて関数型言語でも習ったら?
0356デフォルトの名無しさんNGNG
>>354
不思議言語ですね。
どこがCよ?
0357デフォルトの名無しさんNGNG
>>354
なぜoを++したり500000が出てきたりするのか理解に苦しむ。
その命題だと簡単なアルゴリズムだとこんなとこ?

#include <stdio.h>
main ( ) {
   int i,j,c = 0;
   for(i = 2; i > 1000000; i++){
      for(j = 1; j <= i; j++){
         if(!(i % j)) c++;
      }
      if(c==2) printf("%d\n", i);
      c = 0;
   }
}

ただこれだと実行時間は相当かかる。
なぜかは自分で調べましょう。
0358354NGNG
根本的に違うってことですか?
C言語の講義だったのですが・・・
0359デフォルトの名無しさんNGNG
>>358
あんたがおかしい。
0360デフォルトの名無しさんNGNG
>>354
文法からして全く違う言語だ。
入門書をちゃんと読め。だいたい、
>   2<=n<=1000,2<=m<=500000;
こんな記述はできん。
講義した先生がかわいそうだな。
0361357NGNG
甘やかしちゃったかな
0362354NGNG
>>357
ありがとうございます。

>>360
入門書はないです。。。
4時間だけだったんで。。。
0363354NGNG
>>361
大丈夫です。
十分理解できません,,´ ω `)
0364デフォルトの名無しさんNGNG
つーか、この手のお決まりな問題は、ここで聞くより探したほうが早いぞ。
http://www.google.co.jp/search?num=20&hl=ja&ie=UTF-8&oe=UTF-8&q=%E7%B4%A0%E6%95%B0+%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E3%81%B5%E3%82%8B%E3%81%84+array&lr=lang_ja

答えるほうとしてもこの手のやつは面白くないので、先に自分で調べてくれ。
0365354NGNG
>>364
ヽ(,,´・ д ・`)ノワーイ♪ヽ(´・ д ・`,,)ノワーイ♪
サパーリわからないのでレポートはあきらめました。
皆様ありがとうございました。
0366デフォルトの名無しさんNGNG
学ぼうという姿勢が全然見えないから諦めたほうがいいよ
0367デフォルトの名無しさんNGNG
>>360
> >   2<=n<=1000,2<=m<=500000;
> こんな記述はできん。

できなくはないだろ。全く意味はないが(藁
0368339,353NGNG
取っ掛かりだけでもお知恵をお貸しください。おながいします。
0369デフォルトの名無しさんNGNG
べた組(改行、スペースなし)のテキストファイルの単語の出現頻度
をアルファベット順に表示しなさい。
という課題が学校のPERLの授業で出されました。
参考書を買い、ネットを調べ、何とかやろうと思いましたが、まるで
理解できません。誰か、救いの手を差し伸べてくださらないでしょうか?
お願いいたします・・・。
0370デフォルトの名無しさんNGNG
>>369
ほらよ。
ttp://www.mysticwall.com/software/oasobi-perl/
0371デフォルトの名無しさんNGNG
>>368
>256階調のデータはテキストファイルにあるのでそれを読み込んで
どういう形式でかいてあるのかわからん。
open / close / input / split / Form.PSet
0372339,353NGNG
>>371
どうもです。
VBは良くわからんのですが、
Cでバイナリじゃなくってテキスト形式で出力させたファイルです。
0373DNGNG
>>379
Private Const BoxSizeX = 100'ドットの幅
Private Const BoxSizeY = 100'ドットの高さ
Private Sub Command1_Click()
DrawIMG 1'<-イメージ番号1〜
End Sub
Private Sub DrawBOX(X As Long, Y As Long, FColor As Long)
Dim Cl As Long
Cl = FColor& + FColor& * &H100 + FColor& * &H10000
Me.Line (X * BoxSizeX, Y * BoxSizeY)-((X + 1) * BoxSizeX, (Y + 1) * BoxSizeY), Cl, BF
End Sub
Private Sub DrawIMG(TXNo As Long)
Dim i As Long, j As Long
Dim Buff As String
Open "data.txt" For Input As #1
For i = 1 To (TXNo - 1) * 16 'Seek #1, (TXNo - 1) * 34 * 16 + 1と言う手もある
Line Input #1, Buff
Next i
For i = 0 To 15
Line Input #1, Buff
For j = 0 To 15
DrawBOX j, i, Val("&h" & Mid$(Buff, j * 2 + 1, 2))
Next j
Next i
Close #1
End Sub
0374354NGNG
悲惨な354がいるスレはここですか?
>>357
forは習ってないけどwhileで書き換えられるんですね。

>>360
&&をつかうんでしたっけ?
0375DNGNG
つづき・・・
データのレイアウトが分からないので勝手に作りました。Data.txtというファイルに
000f2f3f4f5f6f7f8f9fafbfcfdfefff
000f2f3f4f5f6f7f8f9fafbfcfdfefff
000f2f3f4f5f6f7f8f9fafbfcfdfefff
って感じで1文字につき16行のデータを用意します。
複数の文字がある場合は続けて入れておきます。
指定したファイルを読み出してフォームに描画します。
OPEN〜の次の行のForからNext迄はコメントのコードで代用できます。(高速)
0376339,353NGNG
Dさん大変どうもです。
参考にさせてもらいますです。
0377339,353NGNG
>>375さん
再び教えて君ですみません
フォームはどのような構成を想定されているんでしょうか?
まっさらで良いんでしょうか?
0378デフォルトの名無しさんNGNG
>>361
大丈夫。バグってるから。
0379354NGNG
#include <stdio.h>
main ( ) {
   int i,j,check ;
   printf("2");
   while(i = 3; i < 1000000; i+2){
      while(j = 3; j < √i; j++){
         if(i % j ==0 ) {
          check = 1
         }
         else (check = 0 )
      }
   }
   if(check = 0){
printf("%d,",i);
   }
}
でけたd(゚-^*)♪
感動もんですな。
0380DNGNG
>>354
コード見る限り、考え方以前の問題だけど..
考え方は、
素数を格納する配列を用意する。
配列の最初の値を2にする。
3から1000000までカウントし次の行を繰り返す。
配列にしまってある全ての数字で割って余りが無ければ配列にその数字を追加する
カウントが終わった時点で配列に格納されている数値が全て素数

このあたりは数学の基礎だから知っておいたほうがよい。
何処かのスレでサンプル出したけど覚えてないしソースも無い。
ま、がんばって
0381DNGNG
>>377
真っ白でいいよ。ただAutoredrawをTrueにしといたほうがいい。
フォームの変わりにPictureBoxにしてもいいかも。(Me.を変更してね)
配列にって書いてたのを忘れてたけど方法はさほど変わらないから参考にして
0382デフォルトの名無しさんNGNG
>>379
ネタとしては>>354のほうがインパクトあった。
0383デフォルトの名無しさんNGNG
csa(carry save adder)関数を次の手順に従って作れ。
(1)入力データa,bをそれぞれ2ビットとし、入力キャリーcを1ビットとする。
出力データdを2ビットとし出力キャリーeを1ビットとするときの真理値表を書け。
(2)その真理値表を実行できる2ビットcsa関数を作れ。関数名をcsaとし関数型をvoidとせよ。
(3)csa2を利用して4,8ビットcsa関数を作れ。
(4)作成した3種類の関数の動作をテストするmain関数を作れ。
0384339,353NGNG
>>381
大変どうもありがとうございますです。
がむばります。
■ このスレッドは過去ログ倉庫に格納されています