C/C++の宿題を片付けます 93代目at TECH
C/C++の宿題を片付けます 93代目 - 暇つぶし2ch918:デフォルトの名無しさん
07/07/25 21:22:18
>>908のように打ち込んだのですが、gets以外でfunction mainでエラーが発生し
printf("Converted: %s\n", conv);のconvの部分が出力されません
URLリンク(newjizou.s6.xrea.com)

919:デフォルトの名無しさん
07/07/25 21:27:47
>>918
これじゃコンパイルできんだろ?

920:デフォルトの名無しさん
07/07/25 21:29:33
>>919
コンパイルはできたのですが、その部分が出力されないのです。

921:デフォルトの名無しさん
07/07/25 21:30:11
>>909の通りに置換されきれてない上に置換された文字が間違ってる
置換すらまともにできないのかYO

922:デフォルトの名無しさん
07/07/25 21:36:52
>>902
度々すみません。コンパイルがうまくできてないようなんですが
どこが間違っているのかわからないのですが。
お教え願いないでしょうか?

923:デフォルトの名無しさん
07/07/25 21:43:05
int main(int argc, char *argv[]) → int main(void)

にするといいかもNE!

924:デフォルトの名無しさん
07/07/25 21:43:11
>>921
コンパイルはできたのはこっちでした
URLリンク(newjizou.s6.xrea.com)

925:デフォルトの名無しさん
07/07/25 21:49:44
だからね・・・
置換された文字が間違ってるからダメなんだ

926:デフォルトの名無しさん
07/07/25 21:53:32
>>925
落ち着いて見てみると修正した部分以外にも違っていた
すみません、本当に自分が馬鹿でした・・・


927:デフォルトの名無しさん
07/07/25 21:57:13
>>924
折角変換処理を通した後で '\0' で上書きするということは
memset(dest, '\0', strlen(str));
と等しい。

928:デフォルトの名無しさん
07/07/25 22:04:12
>>927
>>908のstc[i]='\0';の部分を修正したところ、正常に動作しました
ありがとうございました、お世話かけました。

929:デフォルトの名無しさん
07/07/25 22:08:37
[1] 授業単元:OS概論
[2] 問題文(含コード&リンク):
Linuxでは、mmap()システムコールを使うと、
複数のプロセス間で仮想アドレス空間の一部を共有することができる。
このようなプログラムを作成し、
実際に仮想アドレス空間の一部が共有されていることを確認しなさい。

[3] 環境
 [3.1] OS: LINUX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年7月26日まで

さっぱり見えてきません。
何卒宜しくお願い致します。

930:デフォルトの名無しさん
07/07/25 22:20:51
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
正の整数nを入力して、1からnまでの積(階乗)を求めるプログラムを
作成さいなさい
[3] 環境
 [3.1] OS: Windows
 [3.2] 言語: C言語
[4] 期限: 2時間以内
よろしくお願いします

931:デフォルトの名無しさん
07/07/25 22:34:26
#include <stdio.h>
int main(void)
{
unsigned int n, val = 1;

scanf("%d", &n);
while (n > 0) {
val *= n--;
}
printf("%d\n", val);
return 0;
}

こんなんでいいの?
unsigned intを超える値を表示させろというなら面倒だな。

932:デフォルトの名無しさん
07/07/25 22:39:03
>>930
#include <stdio.h>
int main(void) {
int n,i,r;
printf("n = ");
scanf("%d",&n);

for(i=1,r=1; i<=n; i++)
printf("%d! = %d\n",i,r*=i);
return 0;
}

933:デフォルトの名無しさん
07/07/25 23:10:40
>>930 ちょっと変わったところで、こんなのはどう?
>>931の言うように、任意のnには無理だけど。
#include <stdio.h>

int fact(int n){
return n>1?n*fact(n-1):1;
}

int main(){
int n;
printf("n = ");
scanf("%d",&n);
printf("%d\n",fact(n));
return 0;
}


934:プログラミング初心者
07/07/25 23:23:39
[1]授業単元:c言語

[2]問題文(含コード&リンク): 2つの符号なし整数a,b(ただし、a>bとする)を
キーボードから読み込み
①a,bを2進表示し、配列の中にビットを格納しなさい
②a,bの四則演算
c=a+b
d=a-b
e=a*b
f=a/b(商f1と余りf2)を計算しその結果を出力しなさい

[3]環境
 [3.1] OS: Windows
 [3.2] 言語: C言語

[4]期限:2007年7月28日まで
全然見えてきません。
よろしくお願いします。

935:デフォルトの名無しさん
07/07/25 23:34:59
[1] 授業単元: C言語演習
[2] 問題文:
自分で作成したデータファイルを読み込みんで以下のような出力が出るようにする。
abc efg abc hijkl efg xxxxxxxxx これを
abc, 3 efg, 3 hijkl, 5 xxxxxxxxx, 9 のようにする。
同じ文字は二度も表示させない。それぞれの文字数をカウントする。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C++
[4] 期限:7月30日まで

よろしくお願いします。

936:デフォルトの名無しさん
07/07/25 23:54:44
>>934
こんなんでいいかい?

#include <stdio.h>
void dtob(unsigned int n, char *s) {
unsigned int i = 32;
s[i] = '\0';
for (i = 31; i >= 0; i--) {
s[i] = (((n >> (31 - i)) & 1) + '0');
}
}

int main(void) {
unsigned int a, b;
char buf[33]; /* for 32bit */

scanf("%d %d", &a, &b);
dtob(a, buf);
printf("%s\n", buf);
dtob(b, buf);
printf("%s\n", buf);
printf("%d + %d = %d\n", a, b, a+b);
printf("%d - %d = %d\n", a, b, a-b);
printf("%d * %d = %d\n", a, b, a*b);
b && printf("%d / %d = %d(%d)\n", a, b, a/b, a%b);
return 0;
}


937:デフォルトの名無しさん
07/07/26 00:17:33
>>929 やっつけなので、かなりアレだかけど、一応、課題は満たせると思う。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
使い方
1:4748と4749を同じディレクトリ内でコンパイルする。
さらに、同じディレクトリ内に、hogeという名前のファイルを作る。
2:端末を二つ立ち上げ、片方で4748を、もう片方で4749を実行する。
3:4748で2,3文字入力してエンターしたあと、4749で'x'以外で何か一文字入力してエンター
4:すると、4748で入力した文字列が4749のプログラムに出力される。

938:デフォルトの名無しさん
07/07/26 00:18:31
どなたか>>929を御願いします…

939:938
07/07/26 00:20:49
リロードし忘れorz
>>937のを試してみます
ありがとうございました

940:686
07/07/26 00:26:12
>>702
URLリンク(sa-wiki.com)

>期限: ([2007年7月23日9:00まで] )
もうとっくに切れているし、必要ないかもしれませんが、一応作ったので
極力ソースの変更はしないようにしたつもりです
コメントは入れてませんし、メモリの開放が失敗しているかもしれません
問題の「その後、木のノードからつながる住所データを表示する。」の意味が分からなかったので手を付けていません
素人(自分)がやったのできれいではありません

941:デフォルトの名無しさん
07/07/26 00:26:38
>>935
「同じ文字は二度も表示させない」ってのは何のこと?
「同じ単語は…」のことか?


942:デフォルトの名無しさん
07/07/26 00:41:47
>>810
dataType* f(nodeType *p,int k) {
int n=k;
if(k<1)return NULL;
if(p->left!=sentry)n-=(p->left->offspring+1);
if(n==1)return &(p->data);
if(n<1)return f(p->left,k);
if(p->right!=sentry)return f(p->right,n-1);
return NULL;
}
dataType* RBSTfindKth(int k){
return f(head,k);
} 該当箇所にコピー,ヘッダにf()の宣言追加,
メニュー文字列に5:find追加でおk

943:デフォルトの名無しさん
07/07/26 01:39:43
[1] 授業単元:プログラミング演習I
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7/31まで
[5] その他の制限:特になし


締め切り間近です。
どうか皆さんの力を貸してください。


944:デフォルトの名無しさん
07/07/26 01:45:29
[1] 授業単元: プログラミング言語論
[2] 問題文:
読み込んだ分数を連分数として出力せよ。全ての分子が1になったときに連分数にする計算はとめればよい。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C++
[4] 期限:明日(正確には今日)まで・・・

お願いします。

945:デフォルトの名無しさん
07/07/26 02:18:38
>>944
まず
> 読み込んだ分数
っていう前提条件をよこせ

946:944
07/07/26 02:21:10
問題があやふやですいません。

float a, b, c;
std::cin >> a;
std::cin >> b;

c = a/b;

上記でいうcが読み込んだ分数です。
よろしくお願いします。

947:デフォルトの名無しさん
07/07/26 02:26:58
>>943
なんとなく lexico だけ
#define lwstr(x) (isupper(x)?tolower(x):(x))
int lexico(char *a,char *b){
int i=0;
while(*a && *b)
i=lwstr(*a)-lwstr(*b),a++,b++;
return i;
}

948:デフォルトの名無しさん
07/07/26 02:33:59
>>943
ヒント・参考のとおりに書いたつもり
くそーすだが
URLリンク(kansai2channeler.hp.infoseek.co.jp)

949:デフォルトの名無しさん
07/07/26 02:35:07
>>944
よりによってfloatか.微妙な誤差が出るかも
記法はwikiにならった
#include <iostream>
using namespace std;
int main() {
float A, B;
cout << "input numerator (A in A/B)" << endl;
cin >> A;
cout << "input denominator (B in A/B)" << endl;
cin >> B;
if (A == 0) {
cout << 0 << endl;
} else if (B == 0) {
cout << "error" << endl;
} else {
cout << "[" << (int)(A/B) << "; ";
A = A-(int)(A/B)*B;
while (A != 1) {
if (B-(int)(B/A)*A == 0) { B /= A; break; }
cout << (int)(B/A) << ", ";
float w = A; A = B-(int)(B/A)*A; B = w; }
cout << (int)B << "]" << endl; } }


950:944
07/07/26 02:46:42
>>949

ありがとうございます!このアルゴリズムを理解して寝ますwww
本当に助かりました☆

951:948
07/07/26 02:53:49
lexico関数の中の int k はいらないから消しといて><

952:デフォルトの名無しさん
07/07/26 05:58:29
クソースってのは俺が最初に使った言葉だ、一回使うたびに¢10徴収するニダ

953:デフォルトの名無しさん
07/07/26 06:38:34
どう考えてもブルドックソースのほうが先

954:デフォルトの名無しさん
07/07/26 09:04:59
んじゃブルドックソースに一部を納めるから、クソースを使うたびに¢50徴収する二ダ

955:デフォルトの名無しさん
07/07/26 09:10:02
だれかクイックソートのフローチャートを図付きで詳しく説明してください
俺の頭じゃわかりません><

956:デフォルトの名無しさん
07/07/26 09:10:39
>>955 ¢50払え

957:デフォルトの名無しさん
07/07/26 09:11:48
>>955
URLリンク(www.google.co.jp)

958:デフォルトの名無しさん
07/07/26 09:21:14
ググってもわかりやすいフローチャートが出ないんだ(´・ω・`)

959:デフォルトの名無しさん
07/07/26 09:23:06
あれで理解できないなら諦めろ。所詮、才能の無い奴、理解力の無い奴は
一応学校の規定で単位はもらえるが、適切に行動が起こせないから困る。
今はなんだかんだ言ってもバカでも金で学歴が買える時代だしな。

960:デフォルトの名無しさん
07/07/26 13:40:50
>>955
要は再帰呼び出しが理解できないでハマってるんだろうけど
フローチャートで書いてもそこんところは分かりやすくならんのよ

961:デフォルトの名無しさん
07/07/26 13:44:20
寧ろ、フローチャートなんか使うから余計に理解しにくくなると思うんだが。

962:デフォルトの名無しさん
07/07/26 13:56:20
トランプかなんかで、試してみれ

963:デフォルトの名無しさん
07/07/26 13:57:03
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): URLリンク(s-io.mydns.jp) PASS:c
四則演算のプログラムとして提出したのですがgets関数を使って書き換えろといわれ返されてしまいました
上のプログラムを元にして文字入力(取得)にgets関数を使った物を作ってください。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C言語
[4] 期限: 7月27日
[5] その他の制限: gets関数をつかっていればそれ以外には特に指定なし

よろしくお願いします。

964:デフォルトの名無しさん
07/07/26 14:02:17
教育目的とはいえ今時gets使えとかどこのアホ教授だ

965:デフォルトの名無しさん
07/07/26 14:36:12
>>963
void readch(void) /* 1文字を読む、空白は読み飛ばす */
{
#if 0
do {
if ((ch = getchar()) == EOF) return;
} while (ch == ' ' || ch == '\t');
#else
static char buf[1000];
static int index;
if (index == 0) gets(buf);
do {
if ((ch = buf[index++]) == '\0') {
ch = '\n';
return;
}
} while (ch == ' ' || ch == '\t');
#endif
}

966:デフォルトの名無しさん
07/07/26 14:41:22
>>965
改悪にしかなってないのがwarosu

教官どんだけアホなのかと

967:デフォルトの名無しさん
07/07/26 14:45:15
>>965
ありがとうございます。
やっぱり無理に書き換えても無駄が増えるだけですよね・・・
最初から新しく書き直したほうがいいんでしょうか?

968:デフォルトの名無しさん
07/07/26 14:47:15
板谷だろ

969:デフォルトの名無しさん
07/07/26 14:52:53
>>967
どう書き直そうがgets()を使う限り改悪にしかならんから諦めろ
(というかこのコードなら、例えfgets()であろうと同じことが言える)

970:デフォルトの名無しさん
07/07/26 15:26:16
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
プログラム問題文に沿って作ったものと、それに2つの要素を追加修正した
2つのプログラムの作成をお願いします。

[3] 環境
 [3.1] OS: windows XP
 [3.2] visual studio 2005
 [3.3] 言語: C++
[4] 期限: 2007/07/26 13:00まで
[5] その他の制限: 特に無し

よろしくお願いします


971:デフォルトの名無しさん
07/07/26 16:12:59
投稿時すでに期限切れなのか

972:デフォルトの名無しさん
07/07/26 16:15:21
ほんとだwこれは新しいww

973:デフォルトの名無しさん
07/07/26 16:27:04
ごめんなさい、ごめんなさい。
>>970 の期限は
[4] 期限: 2007/07/30 13:00まで です。
先生方、お願いしまつ。

974:デフォルトの名無しさん
07/07/26 17:32:00
[1] 授業単元:C言語
[2] 問題文

文字列が回文かどうか判定をするプログラムを作成せよ

実行例

文字列を入力してください。
abcdcba(Return)
abcdcbaは回文です。

文字列を入力してください。
unko6yy6oknu(Return)
unko6yy6oknuは回文です。

文字列を入力してください。
abcdefg(Return)
abcdefgは回文ではありません。

[3] 環境
 [3.1] Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7/30まで
[5] その他の制限:特になし

ポインタを使わなければいけないみたいですがさっぱり分かりません。
先生方、もしよろしければお助けください。お願いします。


975:デフォルトの名無しさん
07/07/26 17:58:32
>>974
スレリンク(tech板:598番)

976:デフォルトの名無しさん
07/07/26 18:12:28
>>974
釣りはとっとけこのクソッタレ野郎
URLリンク(kansai2channeler.hp.infoseek.co.jp)

977:デフォルトの名無しさん
07/07/26 18:15:23
ワザとやってんのかな

978:デフォルトの名無しさん
07/07/26 18:17:28
// >>974
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

bool isPalindrome(const char * word)
{
unsigned len = strlen(word);
if (len == 0) return false;
for (unsigned ic = 0; ic < len / 2; ++ic) {
if (word[ic] != word[len - 1 - ic]) return false;
}
return true;
}

int main()
{
char buf[200];
scanf("%199[^\n]", buf);
printf("%s is%s palindrome.\n", buf, isPalindrome(buf) ? "" : " not");
return 0;
}


979:974
07/07/26 19:52:31
>>975
>>976
>>978
ありがとうございました

980:943
07/07/26 20:05:11
>>947
>>948

返事遅れてすいませんでした
明日実行してみます
ありがとうございました

981:デフォルトの名無しさん
07/07/26 20:21:04
>>970
URLリンク(kansai2channeler.hp.infoseek.co.jp)
問題文に沿って作ったものと、2つの各要素を個別に追加したもの計3ファイル
2つの要素を両方追加したファイルが必要なら自分で作ってくろ。

982:デフォルトの名無しさん
07/07/26 21:28:47 BE:94671252-2BP(12)
次スレ立てました
C/C++の宿題を片付けます 94代目
スレリンク(tech板)

983:プログラミング初心者
07/07/26 22:18:40
>>936
ありがとうございます。
一度やってみましたがデバッグ後に何すればいいのかわかりません

984:デフォルトの名無しさん
07/07/26 22:27:32
とりあえず、分かるところまででいいから解読しようとしようよ。

985:デフォルトの名無しさん
07/07/26 23:11:17
>>935 同じディレクトリのwc_test.txtを読み込んで、単語数を数えて出力する。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

986:デフォルトの名無しさん
07/07/27 00:04:02
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
以下の円周率を求めるプログラムに、
ニュートン法を適用し、加減乗算のみに書き換えなさい。

URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 特になし
 [3.3] 言語: C
[4] 期限: 2007年7月27日23:00まで
[5] その他の制限: よろしくお願いします。

987:デフォルトの名無しさん
07/07/27 00:33:50
[1] 授業単元: プログラム言語
[2] 問題文:
再帰関数を用いて以下のような三角形を印字せよ。
入力:3

**
***
*の個数も印字せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2007年7月23日22:00まで
[5] その他の制限:
forで以下のように作ったのですが、再帰の場合の書き方がわかりません。以下を再帰に書き換えるような形で作っていただけると、大変有り難いです。
よろしくお願い致します。

#include<stdio.h>
int kazu(int n);
main()
{ int a,b;
scanf("%d",&a);
b=kazu(a); }
int kazu(int n)
{ int i,j;
for(i=1;i<=n;i=i+1)
{ for(j=0;j<i;j=j+1)
{ printf("*"); }
printf("\n"); }
}

988:デフォルトの名無しさん
07/07/27 00:42:55
>>815
URLリンク(kansai2channeler.hp.infoseek.co.jp)
凝りに凝りまくったぜぇ
誰かに丸投げしたのが一目瞭然なほどにな
本当に丸投げスレは地獄だぜフウハァハー

989:デフォルトの名無しさん
07/07/27 00:47:56
>>987
#include<stdio.h>
int kazu(int n);
main()
{ int a,b;
scanf("%d",&a);
b=kazu(a);
printf("%d\n",b);}
int kazu(int n)
{ int i,j;
if(n<1)return 0;
j=kazu(n-1);
for(i=0;i<n;i=i+1)
{ printf("*"); }
printf("\n");
return j+n;}

990:デフォルトの名無しさん
07/07/27 00:58:54
>989さん
どうもありがとうございます。
本当に助かりました。

991:デフォルトの名無しさん
07/07/27 01:07:29
おねがいします
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
空白または改行で区切られている単語だけからなる文章があるとする。
これを列は15文字以内(全角を1文字、半角は0.5文字とする)
にして、最小の行に納めるようにせよ。
注意:単語の途中で改行をはさむことはできない。
(例)
123456789012345<-15文字分はここまで
--------ここから-----------------
日本 中国 アメリカ インド
フランス イタリア スペイン
メキシコ ドイツ カナダ イギリス スイス
サウジアラビア 南アフリカ共和国 ブラジル
--------ここまで----------------
(実行結果)
日本 中国 アメリカ インド
フランス イタリア スペイン
メキシコ ドイツ カナダ イギリス
スイス サウジアラビア
南アフリカ共和国 ブラジル

[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc2.95-3
 [3.3] 言語: C
[4] 期限: 8月1日
[5] その他の制限:
無制限(授業でならっていないものでも、自分で勉強して理解したのなら何をつかってもいい)

992:デフォルトの名無しさん
07/07/27 01:10:50
丸投げってことは何も使っちゃ駄目ってことか・・・

993:デフォルトの名無しさん
07/07/27 01:24:04
>>991
面白そうな問題だ。ちょっと時間がないんで解けないが・・・
これってナップサック問題っていうんだっけ?
あれみたいな感じで、入力内容によっては全パターン検索
しようとしたら膨大な時間になりそうな風に感じるんだが。
そういうの詳しい人いない?

994:デフォルトの名無しさん
07/07/27 01:33:03
ナップサックというより組み合わせ計画問題。
グリーディ法でいけそうな問題だね。めんどくさそうだけど

995:デフォルトの名無しさん
07/07/27 03:03:10
>>935
#include<iostream>
#include<string>
#include<vector>

using namespace std;

int main(void){
    vector<string> v;
    string word;
    int i;

    while(1){
        cin >> word;
        if(cin.eof() || cin.fail()) break;
        for(i=0;i<v.size();i++){
            if(v[i]==word) break;
        }
        if(i>=v.size()) v.push_back(word);
    }
    for(i=0;i<v.size();i++){
        cout << v[i] << "," << v[i].size() << " ";
    }
    cout << endl;

    return 0;
}

996:デフォルトの名無しさん
07/07/27 04:18:53
#include <iostream>
#include <set>
#include <string>

int main( int argc, char ** argv ) {
typedef std::set< std::string > dict_t;
dict_t wc;
while ( 1 ) {
std::string word;
std::cin >> word;
if ( std::cin.eof() || std::cin.fail() ) break;
wc.insert( word );
}
for ( dict_t::iterator it = wc.begin(); it != wc.end(); it++ ) std::cout << *it << ", " << it->length() << " ";
std::cout << std::endl;
return 0;
}
set<> なり,map<> なりじゃなきゃ遅くてどうしようもないだろうに

997:デフォルトの名無しさん
07/07/27 08:13:33
>>988
指定にgets使わないといけないとか言ってクレームした出題者がいるから
それもgets使わないといけないと思われ。

998:デフォルトの名無しさん
07/07/27 08:51:42
>>991
URLリンク(kansai2channeler.hp.infoseek.co.jp)
全角半角の判定のために非標準の関数wcwidthを使った。

999:998
07/07/27 08:54:04
>if(feof(stdin) || ferror(stdin))
>  break;
これは消し忘れ。

1000: ◆mM9WALL8Ws
07/07/27 08:54:13
1000GET

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch