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

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2005/11/30(水) 23:32:21
[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;
}
956デフォルトの名無しさん:2005/12/01(木) 01:26:56
>>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
959デフォルトの名無しさん:2005/12/01(木) 02:23:42
素数って素数で割れなければいいんだっけ
あんまり覚えてないからフォルダ漁ったら出てきた

#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;
}
960デフォルトの名無しさん:2005/12/01(木) 02:33:30
素数は素数で割れませんよ
961デフォルトの名無しさん:2005/12/01(木) 03:21:30
そーすね
962デフォルトの名無しさん:2005/12/01(木) 04:02:10
割れますが何か。
つーか、自分自身で割れない数は0だけですが。
963デフォルトの名無しさん:2005/12/01(木) 05:02:50
もっとも単純な方法は
ある奇数整数nが素数かを判断するには
3からルートnまでで割り切れるかどうかを調べればいい
964デフォルトの名無しさん:2005/12/01(木) 06:17:03
√nなら割り切れますね
965デフォルトの名無しさん:2005/12/01(木) 06:20:04
>>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;
}
966デフォルトの名無しさん:2005/12/01(木) 06:33:26
>>965
非常に無駄の多いエラトステネスですね
967デフォルトの名無しさん:2005/12/01(木) 06:47:04
効率なんか考えてねぇよ
968デフォルトの名無しさん:2005/12/01(木) 08:13:45
>>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;
}
969デフォルトの名無しさん:2005/12/01(木) 08:38:34
970デフォルトの名無しさん:2005/12/01(木) 09:32:07
971970:2005/12/01(木) 09:35:44
<memory.h>か<string.h>
を#includeし忘れた。
972948: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];
}
}
どなたかご指導のほどよろしくお願いします。
974デフォルトの名無しさん:2005/12/01(木) 10:22:38
スレタイ半年読み返して来い。
975デフォルトの名無しさん:2005/12/01(木) 10:26:00
意味なくglobal変数使っている時点で終了。
findIndexでnを返り値にしろ。
976973: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] 期限: 明日まで
よろしくお願いします。
977973:2005/12/01(木) 10:47:34
>>975
>>意味なくglobal変数使っている時点で終了。
ごもっともです・・・。
なんせ初心者なんでいろいろ試してみてるんですが
その分無駄も多いですよね。
>>findIndexでnを返り値にしろ。
すいません、もう少し分かりやすくお願いできますでしょうか。
nを返り値にとはどうのようにすればできますか・・・?
978デフォルトの名無しさん:2005/12/01(木) 10:54:16
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)のプログラムのつくり方がわかりません。
どなたかわかるかた今したら教えていただけないでしょうか。
980デフォルトの名無しさん:2005/12/01(木) 11:07:14
981デフォルトの名無しさん:2005/12/01(木) 11:22:53
元も子もないかもワカランが、最小値なら
std::min_elementで一発だろ
最初は使い方覚えるだけでいいし、
自作するより遙かにマシなはず
982デフォルトの名無しさん:2005/12/01(木) 11:28:12
激初心者スレにも書いたんですが。。。。

Z1=2.5+3.2i
Z2=1.3+0.4i

この和と積を求めて、結果を打ち出すプログラムはどうなりますか?
自分でやってみたんですが、うまくいきません。
誰かわかる方教えてください
983デフォルトの名無しさん:2005/12/01(木) 11:46:53
>>982
スレ終了間際になってマルチとはいい根性してるジャマイカ。
http://pc8.2ch.net/test/read.cgi/tech/1129043264/932
984デフォルトの名無しさん:2005/12/01(木) 11:47:52
>>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);
}
985984:2005/12/01(木) 11:48:43
おっと、和もか。
適宜追加してくれ。
986デフォルトの名無しさん:2005/12/01(木) 12:04:20
>>985
>1に則っていない、しかもマルチに回答すんじゃね。
#しかし、C99って便利になってんだな。
987973:2005/12/01(木) 12:05:36
>>978
なるほど!findIndexをvoidじゃなくてintにすればreturnできますね。
しかもret=nをifの{}の中に入れるとは思いつきませんでした!
ret=nみたいなことは試したのですが{}がなかったので
どんな数字入れても配列の一番最後の「4」が表示されるだけだったんです。
早速試してみます。
>>981
すみません、まだそういうの習ってないんでわかんないです・・・。
それは最小値を見つけてくれるんですか?だったらかなり使えそうですね。
勉強してきます。ありがとうございます。
988デフォルトの名無しさん:2005/12/01(木) 12:09:48
次スレ立ててみる
無理ならまた書き込む。
989988:2005/12/01(木) 12:12:55
次スレ
C/C++の宿題を片付けます 54代目
ttp://pc8.2ch.net/test/read.cgi/tech/1133406672/
990デフォルトの名無しさん:2005/12/01(木) 12:57:20
>970
ありがとうございました、ソースの大本はわかったのでこれを元に
改変してみます。
991デフォルトの名無しさん:2005/12/01(木) 16:57:01
スタックを
1.配列を利用して
2.また、構造体を用いたリストを応用して
実装してください。
プッシュ、ポップの関数を定義してください。
992デフォルトの名無しさん:2005/12/01(木) 16:57:47
>>991
>>1 やり直し。
993デフォルトの名無しさん:2005/12/01(木) 17:14:59
1] 授業単元:プログラム演習C
[2] 問題文(含コード&リンク):getchar関数を使用して文字を読み取り、ピリオドが出てきたら改行する
プログラムを作りなさい。(ファイルの終わりを入力したらプログラムを終了させる)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2005年12月2日17時
[5] その他の制限: ポインタと標準入出力関数の初歩しか習っていません
よろしくお願いします
994デフォルトの名無しさん:2005/12/01(木) 17:23:16
#include <stdio.h>

int main(void)
{
  int ch;
  while (ch = getchar(), ch != EOF) if (ch == '.') puts("");
  return 0;
}
995デフォルトの名無しさん:2005/12/01(木) 17:48:39
>>988 乙。
996デフォルトの名無しさん:2005/12/01(木) 20:53:35
次スレ?
997デフォルトの名無しさん:2005/12/01(木) 20:55:36
>>996
C/C++の宿題を片付けます 54代目
http://pc8.2ch.net/test/read.cgi/tech/1133406672/
998デフォルトの名無しさん:2005/12/01(木) 20:57:01
(・∀・)カエレ!
999デフォルトの名無しさん:2005/12/01(木) 20:57:32
                \ │ /
                 / ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )< ぱいそんぱいそん!
                 \_/   \_________
                / │ \
                    ∩ ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいそんぱいそんぱいそん!
ぱいそん〜〜〜!   >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」               ̄     / /


1000デフォルトの名無しさん:2005/12/01(木) 20:58:00

                \ │ /
                 / ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )< ぱいそんぱいそん!
                 \_/   \_________
                / │ \
                    ∩ ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいそんぱいそんぱいそん!
ぱいそん〜〜〜!   >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」               ̄     / /
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。