[1] 授業単元:プログラミングU [2] 問題文: 1.最初にnの値を入力して、各入力を行った後、それぞれの目的を実行する以下のプログラムを作成しなさい。 ただし、nの大きさは100を超えないものとする。 n人の点数を入力した後、不可(60点以下)の人の数を調べるプログラム ただし一次元配列を引数で渡すと各計算をして結果を返してくれる関数を作り、この関数を使って、 その計算を表示するプログラムを作りなさい。 2. 最初に行列の次元nの値を入力し、配列を使って次の計算をするプログラムを 作りなさい。ただし、nは100以内で、n次の正方行列とする。 行列AとBを入力すると、その掛け算A×Bを計算するプログラム ただし二次元配列を引数で渡すと各計算する関数を作り、この関数を 使って、その計算を表示するプログラムを作りなさい。ただし、計算した 結果は、引数で渡した行列Aで戻すものとする。 [3] 環境 [3.1] OS:xp [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:12/1まで 行列同士の規則性を見つけ出してプログラムで表してとくようなのですが、 いまいちよくわかりません。よろしくお願いいたします。
953 :
デフォルトの名無しさん :2005/12/01(木) 01:01:58
[1] プログラミング演習 [2] 1〜100万までの整数から素数全てを表示せよ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限:明後日 [5]整数の表示から素数の導きについて何を使えば分からずもし、よろしければ 説明もお願いします 長々と書きましたがどうぞよろしくお願いします
954 :
デフォルトの名無しさん :2005/12/01(木) 01:05:01
955 :
デフォルトの名無しさん :2005/12/01(木) 01:22:36
>>953 こんなでどう?
だけど、計算時間がものすごくかかるね
#include <stdio.h>
#define MAXNUM 1000000
int isprime(int pr)
{
int i;
for (i = 2; i < pr; i++) {
if (pr % i == 0) break;
}
return i == pr? 1: 0
}
int main(void)
{
int i;
for (i = 2; i <= MAXNUM; i++) {
if (isprime(i)) {
printf("%d\n", i);
}
}
return 0;
}
>>953 眠たいので適当に書いた。
アルゴリズムは エラトステネスのふるい でググッて
#include<stdio.h>
int t[1000000],x,y;
int main(){
for(x=t[0]=t[1]=2;x<1000000;++x)
for(y=x+x;y<1000000;y+=x)t[y]=2;
for(x=y=0;x<1000000;++x)t[x]||(printf("%7d ",x),++y%8||puts(""));
return 0;
}
957 :
デフォルトの名無しさん :2005/12/01(木) 01:27:36
>>953 printf("2, 3, 5, 7, 11,..............,999983\n");
958 :
デフォルトの名無しさん :2005/12/01(木) 01:35:57
みなさんありがとうございます
参考にして頑張ります
>>957 えwwwwwwwwww
素数って素数で割れなければいいんだっけ あんまり覚えてないからフォルダ漁ったら出てきた #include <stdio.h> int main(void) { int i, n; static int prime[1000000]; int ptr = 0; int flag; prime[ptr++] = 2; prime[ptr++] = 3; for (n = 5; n <= 1000000; n += 2) { flag = 0; for (i = 1; prime[i] * prime[i] <= n; i++) { if (n % prime[i] == 0) { flag = 1; break; } } if (!flag) { prime[ptr++] = n; printf("%d\n", n); } } return 0; }
素数は素数で割れませんよ
そーすね
割れますが何か。 つーか、自分自身で割れない数は0だけですが。
もっとも単純な方法は ある奇数整数nが素数かを判断するには 3からルートnまでで割り切れるかどうかを調べればいい
√nなら割り切れますね
>>953 エラトステネスの素直なプログラム
#include <stdio.h>
#define N 1000000
int main (void)
{
char t[N+1];
int i, j, count;
printf("%d\n", 2);
count = 1;
for (i=0; i<=N; ++i) t[i] = 0;
for (i=3; i<=N; i += 2)
{
if (t[i] == 0)
{
printf("%d\n", i); ++count;
for (j=i; j<=N; j += i) t[j] = i;
}
}
printf("count = %d", count);
return 0;
}
効率なんか考えてねぇよ
>>952 (1)
int damecount(int*point,int n,int low){
int i; int m;
m=0;
for(i=0;i<n;i++)if(point[i]<=low)m++;
return m;
}
971 :
970 :2005/12/01(木) 09:35:44
<memory.h>か<string.h> を#includeし忘れた。
972 :
948 :2005/12/01(木) 09:54:36
>>949 ありがとうございます。
解決しました。
973 :
デフォルトの名無しさん :2005/12/01(木) 10:16:38
初めまして。C++を最近習い始めた超初心者なのですが、 ひとつ質問があります。 今授業で配列(x[ ]など)を学んでいるのですが、それの問題で 「5つ数字を入力してその内の最小値を見つけ、画面にその最小値の 配列番号を表示させる」というのがなかなかできません。 例えばx[4]={10,45,23,8,14}の場合x[3]が最小値を持ってるので 画面に「3」と出したいのですが・・・。 以下のようにやってみたところ表示されるのは最小値であって 配列の番号ではないんです。 void findIndex(int x[], int size); int min; int main() { int score[4]; cout << "Enter 4 numbers: " << endl; cin >> score[0]; min = score[0]; findIndex(score, 4); cout << "The index of the array which has the smallest number is: " << min << endl; return 0; } void findIndex(int x[], int size) { int n; for (n = 1; n < size; n++) { cin >> x[n]; if (x[n] < min) min = x[n]; } } どなたかご指導のほどよろしくお願いします。
スレタイ半年読み返して来い。
意味なくglobal変数使っている時点で終了。 findIndexでnを返り値にしろ。
976 :
973 :2005/12/01(木) 10:29:35
>>974 申し訳ございません。半年も読み返したら期限過ぎちゃうんでご勘弁を・・。
[1] 授業単元:Problem Solving with C++
[2] 問題文(含コード&リンク):上記
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: win visual studio 6.0
[3.3] 言語: C++
[4] 期限: 明日まで
よろしくお願いします。
977 :
973 :2005/12/01(木) 10:47:34
>>975 >>意味なくglobal変数使っている時点で終了。
ごもっともです・・・。
なんせ初心者なんでいろいろ試してみてるんですが
その分無駄も多いですよね。
>>findIndexでnを返り値にしろ。
すいません、もう少し分かりやすくお願いできますでしょうか。
nを返り値にとはどうのようにすればできますか・・・?
int findIndex(int x[], int size) { int n,ret=0; int min = x[0]; for (n = 1; n < size; n++) { cin >> x[n]; if (x[n] < min) { min = x[n];ret=n; } } return ret; }
979 :
デフォルトの名無しさん :2005/12/01(木) 10:54:28
スレ違いかと思いますがCASL2で 6×11-(4×8÷2)のプログラムのつくり方がわかりません。 どなたかわかるかた今したら教えていただけないでしょうか。
元も子もないかもワカランが、最小値なら std::min_elementで一発だろ 最初は使い方覚えるだけでいいし、 自作するより遙かにマシなはず
982 :
デフォルトの名無しさん :2005/12/01(木) 11:28:12
激初心者スレにも書いたんですが。。。。 Z1=2.5+3.2i Z2=1.3+0.4i この和と積を求めて、結果を打ち出すプログラムはどうなりますか? 自分でやってみたんですが、うまくいきません。 誰かわかる方教えてください
>>982 #include <stdio.h>
#include <complex.h>
int main(void)
{
double _Complex Z1 = 2.5 + 3.2i;
double _Complex Z2 = 1.3 + 0.4i;
double _Complex R = Z1 * Z2;
printf("%lf+%lfi\n", __real__ R, __imag__ R);
}
985 :
984 :2005/12/01(木) 11:48:43
おっと、和もか。 適宜追加してくれ。
>>985 >1に則っていない、しかもマルチに回答すんじゃね。
#しかし、C99って便利になってんだな。
987 :
973 :2005/12/01(木) 12:05:36
>>978 なるほど!findIndexをvoidじゃなくてintにすればreturnできますね。
しかもret=nをifの{}の中に入れるとは思いつきませんでした!
ret=nみたいなことは試したのですが{}がなかったので
どんな数字入れても配列の一番最後の「4」が表示されるだけだったんです。
早速試してみます。
>>981 すみません、まだそういうの習ってないんでわかんないです・・・。
それは最小値を見つけてくれるんですか?だったらかなり使えそうですね。
勉強してきます。ありがとうございます。
次スレ立ててみる 無理ならまた書き込む。
989 :
988 :2005/12/01(木) 12:12:55
>970 ありがとうございました、ソースの大本はわかったのでこれを元に 改変してみます。
991 :
デフォルトの名無しさん :2005/12/01(木) 16:57:01
スタックを 1.配列を利用して 2.また、構造体を用いたリストを応用して 実装してください。 プッシュ、ポップの関数を定義してください。
1] 授業単元:プログラム演習C [2] 問題文(含コード&リンク):getchar関数を使用して文字を読み取り、ピリオドが出てきたら改行する プログラムを作りなさい。(ファイルの終わりを入力したらプログラムを終了させる) [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2005年12月2日17時 [5] その他の制限: ポインタと標準入出力関数の初歩しか習っていません よろしくお願いします
#include <stdio.h> int main(void) { int ch; while (ch = getchar(), ch != EOF) if (ch == '.') puts(""); return 0; }
次スレ?
(・∀・)カエレ!
\ │ / / ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ─( ゚ ∀ ゚ )< ぱいそんぱいそん! \_/ \_________ / │ \ ∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいそんぱいそんぱいそん! ぱいそん〜〜〜! >( ゚∀゚ )/ | / \__________ ________/ | 〈 | | / /\_」 / /\」  ̄ / /
\ │ / / ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ─( ゚ ∀ ゚ )< ぱいそんぱいそん! \_/ \_________ / │ \ ∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいそんぱいそんぱいそん! ぱいそん〜〜〜! >( ゚∀゚ )/ | / \__________ ________/ | 〈 | | / /\_」 / /\」  ̄ / /
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。