トップページ⇒tech
1001コメント416KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/06(月) 09:04:35
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html

【前スレ】
C/C++の宿題を片付けます 75代目
http://pc8.2ch.net/test/read.cgi/tech/1161257941/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0552デフォルトの名無しさん2006/11/14(火) 22:45:39
>>551
そうか、がんばってくれ
0553デフォルトの名無しさん2006/11/14(火) 22:48:58
デバイスファイル AUX
0554デフォルトの名無しさん2006/11/14(火) 22:54:22
>>547
URLありがとうございます。
しかし、残念ながら内容が難しく
理解できなかったですorz

失礼ですが、C言語でのRSA暗号実装紹介のサイトは
ご存知じゃありませんか?
0555デフォルトの名無しさん2006/11/14(火) 22:59:03
>>548
#include<stdio.h>
#define N 52 /* トランプの枚数 */
int main( void )
{
int k, i;
int cards[ N ]; /* トランプ */
int temp[ N ]; /* 一時的にトランプの札を移動 */
int count = 0; /* 切った回数 */
int cards_at_begining[N];
for( k=0; k<N; k++ ) {
cards[ k ] = k+1;
cards_at_begining[k] = k+1;
}
while( 1 ) {
loop_start:
count++; /* 回数を一回増分 */
for (i=0; i<N/2; i++) { /* shuffle */
temp[i]=cards[2*i];
temp[i+M]=cards[2*i+1];
}
for (i=0; i<N; i++)
cards[i]=temp[i];
for (i=0; i<N; i++) { /* check */
if (cards[i] != cards_at_begining[i])
goto loop_start;
}
break;
}
printf( "%d 回目で元に戻る", count );
return 0;
}
0556デフォルトの名無しさん2006/11/14(火) 23:15:57
>>>555
ありがとうございます。
0557デフォルトの名無しさん2006/11/14(火) 23:16:19
>>548
for(k=0; k<N; k++) temp[k] = i%2?cardsk/2+M]:cards[k/2];
for(k=0; k<N; k++) if(temp[k]!=k+1) break;
if(k==N) break;
for(k=0; k<N; k++) cards[k] = temp[k];
0558デフォルトの名無しさん2006/11/14(火) 23:18:44
cardsk/2+M] →cards[k/2+M]

>>555
切り方間違ってない?
0559デフォルトの名無しさん2006/11/14(火) 23:28:12
>>542
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2935.c
昔書いたのの使いまわしで、ちょっと大げさかもしれないが。
C99依存だけど、どうしても問題になるなら書き換えるから言ってくれ。
0560デフォルトの名無しさん2006/11/14(火) 23:33:01
お願いします
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):整数値nを読み込み、1からnまでで、2で割り切れて3で割り切れない数値の個数を出力するプログラムを作成せよ。
実行例 読み込み数値20の場合
INPUT INTEGER:20
7 integers can be divided by 2 and not by 3
(2,4,8,10,14,16,20の7個)

[3] 環境
 [3.1] OS:windows
 [3.3] 言語:c++
[4] 期限: 明日
0561デフォルトの名無しさん2006/11/14(火) 23:38:52
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
�@ int a,b,c,d;
のように、文字が来ればコンマの繰り返しで セミコロンが来たら終了というプログラムを作れ
�A int a,b;
int x;
のように、改行できるプログラムを作る
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限 明日の14時まで
[5] その他の制限: なし
0562デフォルトの名無しさん2006/11/14(火) 23:41:51
>>560
# include <iostream>

int main(void)
{
  int n;
  std::cout << "INPUT INTEGER:";
  std::cin >> n;
  std::cout << (n / 6) * 2 + (n % 6 >= 2) + (n % 6 >= 4)  << " integers can be devided by 2 and not by 3\n";
}
0563デフォルトの名無しさん2006/11/14(火) 23:43:08
>>560
#include<stdio.h>
main(){
int i,N,kosuu;
printf("INPUT INTEGER:");
scanf("%d",&N);
for (i=0;i<=N;i=i+2){
if(i%3==0) kosuu=kosuu+1;
}
printf("%d integers can be divided by 2 and not by 3",kosuu);
}
05645622006/11/14(火) 23:43:42
>devided
dividedね。
0565デフォルトの名無しさん2006/11/14(火) 23:44:20
>>561
意味がわからん
0566デフォルトの名無しさん2006/11/14(火) 23:45:54
if(i%3==0) kosuu=kosuu+1;

if(i%3!=0) kosuu=kosuu+1;

matigaeta
0567デフォルトの名無しさん2006/11/14(火) 23:47:12
よろしくお願いします。

[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
最大8桁の整数を2つ入力し、int型配列に格納。
入力後2つの数の和を求める。負の数、整数以外、スペースのみが入力された場合
エラーメッセージを表示
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11/18まで
[5] その他の制限: gets,scanfは禁止

05685612006/11/15(水) 00:01:12
for文でお願いします
ちょっと説明不足でしたか・・・
0569デフォルトの名無しさん2006/11/15(水) 00:03:19
>>568
それで説明が足りたと思う神経を自分で疑ったことが無いのか?
0570デフォルトの名無しさん2006/11/15(水) 00:07:08
>>569
ぶっふぉん
0571デフォルトの名無しさん2006/11/15(水) 00:07:58
>>568
せめてI/Oぐらいちゃんと書けってこった
0572デフォルトの名無しさん2006/11/15(水) 00:08:48
>>568
はっきり言って何を言ってるのか全く分からん
問題文をそのまま一字一句間違いなく写してくれ
0573デフォルトの名無しさん2006/11/15(水) 00:13:11
>>568
どうせ、goto でループつくってもいいんでしょ?
0574デフォルトの名無しさん2006/11/15(水) 00:16:28
>>559
わざわざありがとうございます。量が膨大で
自分のヘタレのせいで
中身もまったく理解できない始末でしたorz
また、VC6.0でコンパイラしようとしたらエラーになって
しまいました。

お時間あれば助力お願いします。
05755452006/11/15(水) 00:21:51
>>550
実際に走らせて見たところちゃんとできててビックリしました。
なぜこれでできるかは明日じっくり考えたい思います。
ありがとうございました。
0576デフォルトの名無しさん2006/11/15(水) 00:23:26
>>568

#include <stdio.h>

int main()
{
printf("int ");
printf("a,");
printf("b,");
printf("c,");
printf("d;");/* <-セミコロンが来た */
printf("\n");
printf("終了します\n");
for(;0;);
return 0;
}
0577デフォルトの名無しさん2006/11/15(水) 00:23:54
>>561 >>568 エスパーでも探してるのか?
#include<stdio.h>
int main(void){
char buf[1024];
int i;

printf("Input string : ");
gets(buf);
for(i=0;buf[i]!='\0';i++){
if(buf[i]==';') break;
printf(",");
}
return 0;
}

#include<stdio.h>
int main(void){
char buf[1024];
int i;

printf("Input string : ");
gets(buf);
for(i=0;buf[i]!='\0';i++){
printf("%c", buf[i]);
if(buf[i]==';') printf("\n");
}
return 0;
}
0578デフォルトの名無しさん2006/11/15(水) 00:25:26
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):BM法を作って比較とジャンプの履歴を表示する。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
BM法のプログラミングは作ってみましたが、ジャンプと比較の履歴の表示
の仕方がわかりません。 よろしくおねがいします。
0579デフォルトの名無しさん2006/11/15(水) 00:26:48
BM法のプログラミングです。
#include <stdio.h>
#include <string.h>
#include <limits.h>
int bm_match(const char txt[], const char pat[])
{
int pt;
int pp;
int txt_len = strlen(txt);
int pat_len = strlen(pat);
int skip[UCHAR_MAX + 1];
for (pt = 0; pt <= UCHAR_MAX; pt++)
skip[pt] = pat_len;
for (pt = 0; pt < pat_len - 1; pt++)
skip[pat[pt]] = pat_len - pt - 1;
while (pt < txt_len) {
pp = pat_len - 1;
while (txt[pt] == pat[pp]) {
if (pp == 0)
return (pt);
0580デフォルトの名無しさん2006/11/15(水) 00:28:15
pp--;
pt--;
}
pt += skip[txt[pt]];
}
return (-1);
}
int main(void)
{
int idx;
char s1[80];
char s2[80];
printf("テキスト:");
scanf("%s", s1);
printf("パターン:");
scanf("%s", s2);
idx = bm_match(s1, s2);
if (idx == -1)
puts("テキスト中にパターンは存在しません。");
else
printf("%d文字目に見つかりました。\n", idx + 1);
return (0);
}
0581デフォルトの名無しさん2006/11/15(水) 00:32:42
↑のプログラミングにジャンプと比較の履歴を表示
したいのですがわかりません。 よろしくおねがいします m(__)m
05825612006/11/15(水) 00:37:58
>>577
ありがとうございます。
俺日本語から勉強し直します・・・
0583デフォルトの名無しさん2006/11/15(水) 00:41:49
>>574
VC6でコンパイルできるようにするだけなら、
28行目
# else /* C99 */
の前に、
# elif defined _MSC_VER
typedef unsigned __int16 smallint;
typedef unsigned __int32 middleint;
typedef unsigned __int64 largeint;
の4行を追加すればたぶん問題ない。
gccでは-std=c99フラグを付ければコンパイルできる。
こういう小細工をせずにC89標準の機能のみで動くようにするのは厄介だけど、できなくはない。
0584デフォルトの名無しさん2006/11/15(水) 00:43:50
>>577
すげぇエスパー。元の問題知ってるとしか思えない。
0585デフォルトの名無しさん2006/11/15(水) 00:56:11
>>578 こういうことでいいのかな?
while (txt[pt] == pat[pp]) {
↓
while (1) {
printf("compare : txt[%d]=%c and pat[%d]=%c\n", pt, txt[pt], pp, pat[pp]);
if(txt[pt] != pat[pp]) break;

pt += skip[txt[pt]];
↓
pt += skip[txt[pt]];
printf("jump : %d to %d\n", pt, pt+skip[txt[pt]]);
05865782006/11/15(水) 01:10:52
>>585
どうも回答ありがとうございます!!
変更後エラーはでましたが、ここまでヒントをくれれば
あとはなんとかなりそうです。
本当にありがとうございました☆
0587デフォルトの名無しさん2006/11/15(水) 01:53:36
すみません
533 お願いします
0588デフォルトの名無しさん2006/11/15(水) 02:09:38
>>574
気をとりなおしてC98準拠にした。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2936.c
VC6、gccでそのままコンパイルできるはず。
遅いけど、我慢してくれ。
0589デフォルトの名無しさん2006/11/15(水) 02:50:51
>>587
Cでつくったが問題見たらC++でcin使ってとか書いてあった。
眠くなったからおやすみ
0590デフォルトの名無しさん 2006/11/15(水) 02:56:57
>>507
どっち方向がお望みか知らんけど螺旋にしてみた
#include <stdio.h> #define N 9 //サイズ
void print(int ary[N][N]);int right(int ary[N][N],int x,int y, int n, int past);int up(int ary[N][N],int x,int y, int n, int past);
int down(int ary[N][N],int x,int y, int n, int past);int left(int ary[N][N],int x,int y, int n, int past);void answer(int ary[N][N], int n);
int main(){ int ary[N][N] = {0}; int n = 0; answer(ary, n); print(ary); return 0;}void answer(int ary[N][N], int n){ int i,j;
for(j =0,i = 1; i <= (N/2 + 1) ; i++,j++){ n = right(ary,j,j,n, i); n = down(ary,i ,N-i,n, i); n = left(ary,N-i,N - i - 1,n, j); n = up(ary,N - i - 1,j, n,j);
}} int right(int ary[N][N],int y,int x, int n, int past){ if(x > N - past || y > N || x < 0 || y < 0)return n; ary[y][x] = n ; right(ary, y, x+1, n +1 , past );
} int down(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N - past || x < 0 || y < 0)return n; ary[y][x] = n; down(ary, y+1,x , n+1 , past );
} int left(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N || x < past || y < 0)return n; ary[y][x] = n; left(ary, y, x-1, n+1 , past );
} int up(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N || x < 0 || y <= past)return n; ary[y][x] = n; up(ary, y-1, x, n+1 , past );
} void print(int ary[N][N]){ int *p = &ary[0][0],i; for(i = 1,p = &ary[0][0]; p <= &ary[N-1][N-1]; p++,i++){ printf("%3d ", *p);
if(!(i % N))putchar('\n');}}
0591 ◆sUfWYz9MSA 2006/11/15(水) 09:30:23
[1] 授業単元: プログラミング
[2] 問題文:2つの自然数 a, b に対し, a と b の最大公約数を
  求める関数 int gcm(int a, int b) とその公約数をすべて表示する関数
  void print_gcm(int , int) を作成せよ.
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2006年11月15日12:00まで
[5] その他の制限:関数まで習いました。
0592デフォルトの名無しさん2006/11/15(水) 09:45:39
>>501
前スレ>>532-533

>>591
前スレ>>508-513
0593デフォルトの名無しさん2006/11/15(水) 10:38:39
>>588
ありがとうございます。
相変わらず中身はさっぱりでしたorz

VC6でコンパイルしたところエラー1が
以下のように出てしまいました。

273行目
'return' : 'void *' から 'unsigned int *' に変換することはできません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。

ヘタレでホントすいません。お願いします。
0594たか2006/11/15(水) 10:53:01
[1] 授業単元: プログラミング実習
[2] 問題文:キーボードから入力される100個の整数のうち、
2桁の数がいくつあるかを数えて、その個数を表示する。
 文字配列にアルファベットで適当な文字を10文字入れたとき、
入力順序と逆順で表示する。
(配列やポインタを使って記述する。)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Microsoft VisualStudio6.0
 [3.3] 言語: C++
[4] 期限: 2006年11月17日まで
[5] その他の制限:


お願いします!!
0595デフォルトの名無しさん2006/11/15(水) 11:08:50
曖昧な仕様だな。
0596デフォルトの名無しさんNGNG?2BP(200)
>>594
using namespace std;
#include<iostream>
int main(void){for(int i=0,int c=0;i<10;i++){int n;cin>>n;if(n>=10 && n<100)c++;}cout<<c<<endl;return 0;}
0597デフォルトの名無しさん2006/11/15(水) 11:56:06
↑こいつ最高にアホ
0598デフォルトの名無しさん2006/11/15(水) 13:07:09
[1] 授業単元: プログラミング演習
[2] 問題文
キーボードから入力した複数の英単語を連結して行くプログラムを書け。
ただし、
(1)単語は一度に1つずつ入力し(各単語の入力は改行で終る)、EOFの入力で単語入力を終了とする。
(2)連結する時に、直前の単語との間に区切り文字としてスペースを1つ置き 9 (そうすると英文として読める)、連結した文字を最後に入力する。

ヒント:連結単語を置くために十分長い配列を用意しておいて、入力単語を順番に、その配列にコピーして行けば良い。

[3.1] OS:unix
[3.3] 言語:c
[4] 期限: 午後6時まで

期限が短すぎるし私には解けそうにありません。
お願いします。
0599デフォルトの名無しさん2006/11/15(水) 13:12:17
[1] 授業単元: プログラミング�T
[2] 問題文:
0〜100までの間の数をランダムに5つ入力し、
最小値、最大値、合計、平均値を求めるプログラムを
for文とif文を用いて作りなさい。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: Microsoft VisualStudio2005
 [3.3] 言語:C++
[4] 期限:2006年11月17日17:00まで
[5] その他の制限:表示させるだけの(Printfを使った)基本的なプログラミングから、if、for構文のみ習っています。

宜しくお願いします。
0600デフォルトの名無しさん2006/11/15(水) 13:15:20
#include <stdio.h>
int main(){
int c;
while ((c=getc(stdin))!=EOF){
if (c=='\n')c=' ';
putc(c,stdout);
}
fflush(stdout);
return 0;
}
0601デフォルトの名無しさん2006/11/15(水) 13:17:37
>>600は>>598
0602デフォルトの名無しさんNGNG?2BP(200)
>>599
using namespace std;
#include<iostream>
int main(void){int max=0,min=100,sum=0,n;
for(int i=0;i<5;i++){cin>>n;sum+=n;if(min>n)min=n;if(max<n)max=n;}
cout<<"最小値:"<<min<<endl<<"最大値:"<<max<<endl<<"合計:"<<sum<<endl<<"平均値:"<<(double)sum/5.0<<endl;
return 0;}
0603デフォルトの名無しさん2006/11/15(水) 13:32:04
>>598
これでいいのか?単語長はMAXCHARS、単語数はMAXWORDSをいじればよい。
#include <stdio.h>
#define MAXCHARS 10
#define MAXWORDS 1000
int main (void) {
    int i = 0, j;
    char words[MAXWORDS][MAXCHARS];
    while (scanf("%s", words[i++]) != EOF) {}
    for (j = 0; j < i - 1; j++) printf("%s ", words[j]);
    return 0;
}
0604デフォルトの名無しさん2006/11/15(水) 13:43:26
>>603
>連結した文字を最後に入力する

>>598
「スペースを1つ置き 9 」って何?
0605デフォルトの名無しさん2006/11/15(水) 13:52:25
>>591
ちょっと遅れた
#include <stdio.h>
int gcm(int a, int b) {
    if (b == 0) return a; else return gcm(b, a % b);
}
void print_gcm(int a, int b) {
    int i = gcm(a, b);
    do if (a % i == 0 && b % i == 0) printf("%d ", i); while (--i != 0);
}
int main (void) {
    int a, b;
    printf("a b?:");scanf("%d%d", &a, &b);
    print_gcm(a, b);
    return 0;
}
0606デフォルトの名無しさん2006/11/15(水) 13:55:19
期限過ぎてるじゃねーかこの愚図!
0607デフォルトの名無しさん2006/11/15(水) 14:20:04
>>605
ありがとうございます!
0608デフォルトの名無しさん2006/11/15(水) 16:45:54
>>602
ようやくできました。有り難うございます。
0609デフォルトの名無しさん2006/11/15(水) 16:58:57
>>603
ありがとう御座います。おかげで助かりました。
>>604
すみません。ミスタイプです。
0610デフォルトの名無しさん2006/11/15(水) 18:22:22
634 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/15(水) 18:19:30
C++ガウス関数作れって言われたんだけど、渡された本は読んだんだけど
おすすめな初心者解説サイトないですぁ?

お返事もらえないのでこっちで質問します。
0611デフォルトの名無しさん2006/11/15(水) 18:32:54
>>610
ざんねんですが ありません
0612デフォルトの名無しさん2006/11/15(水) 18:52:10
>>593
それはVC6がおかしいような。Cとしてコンパイルしてる?

ともあれ、修正版。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2938.c
0613デフォルトの名無しさん2006/11/15(水) 19:04:21
[1] プログラミング
[2] ゲーム http://sage.math.washington.edu:9010/la4[3]  
 [3.1] windowsXP
 [3.2] Visual Studio 2003
 [3.3] C ++
[4] 2006年 11月17日
[5]クラスを使った問題です。問題の意味がわからないときは訳します。お願いします。
0614デフォルトの名無しさん2006/11/15(水) 19:07:07
>>613
This page does not exist yet.の意味がわからないので
訳してください
0615デフォルトの名無しさん2006/11/15(水) 19:08:46
>>614
Before creating the page, please check if a similar page already exists.
Here are some existing pages with similar names:
* la3
* la4
0616デフォルトの名無しさん2006/11/15(水) 19:14:53
おまいらどんだけ凄いんだよ・・・英語の問題とか見てると劣等感が・・・
それを澄ました顔でペラペラと・・・く・・・
0617デフォルトの名無しさん2006/11/15(水) 19:16:47
>>616
実際のところ>>615だって必死に辞書ひいて書いてるに違いない。
と、思っておけ
0618デフォルトの名無しさん2006/11/15(水) 19:26:56
re-entrantってなんすか?
0619デフォルトの名無しさん2006/11/15(水) 19:34:05
>>618
ttp://e-words.jp/w/E383AAE382A8E383B3E38388E383A9E383B3E38388.html
0620 ◆mI7lo1ZRb6 2006/11/15(水) 19:43:02
C++やP2P技術に卓越したプログラマの方々
宜しければ一度で良いので拝見して頂きたいです
当企画の成立には貴方の力が必要です

次世代コミュニティ製作 C++,mod_perl,P2Pが使えるコーダ、グラフィッカ募集中
http://pc8.2ch.net/test/read.cgi/tech/1163349367/
0621デフォルトの名無しさん2006/11/15(水) 20:34:34
mod_perlもP2Pも言語じゃねえ
あ、釣られた
0622デフォルトの名無しさん2006/11/15(水) 20:36:18
津波警報発令
http://disaster.yahoo.co.jp/1163590520/meteo.yahoo.co.jp/weather/jp/tsunami/index.html
0623デフォルトの名無しさん2006/11/15(水) 21:48:59
>>617
そう思いたい現実が俺にも・・・。
0624宜しくお願いします。2006/11/15(水) 22:44:01
[1] ファイル入出力
[2]
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2939.zip
[3]  
[3.1] WindowsXP(HomeSP2)
[3.2] Visual Studio 2005
[3.3] C言語
[4] 2006年11月16日 PM4:30
[5] Break,Goto,Continue,ファイル入力にfscanf()関数の使用禁止
0625デフォルトの名無しさん2006/11/15(水) 23:23:59
[1]プログラミング
[2]与えられた文字列a,bを交互に入れ替えて表示する関数の作成
[3] 環境
 [3.1]リナックス
 [3.2]gcc
 [3.3]C
[4]無期限
[5]文字列に関したライブラリ関数使用禁止

↓以下自分で作ったヤツ。どこがおかしい??
#include<stdio.h>
void irekae(char *a, char *b, char *kekka)
{
while(*a != '\0'){
*kekka++ = *a;
*a++;
*kekka++ = *b;
*b++;
}
}
int main(void)
{
char a[]="12345";
char b[]="abcde";
char kekka[11];

irekae(a,b,kekka);
printf("%s",kekka);

return(0);
}
0626デフォルトの名無しさん2006/11/15(水) 23:28:14
>>612
コンパイルできました。
誠にありがとうございます。
なんとか提出期限には間に合いそうです。

残りの期間で必死に中身を理解しなければ…
たぶんムリだがorz

0627デフォルトの名無しさん2006/11/15(水) 23:59:02
>>624
こんなところに上げられたWordのファイルを誰が読むんだ?
テキストにせぃ。
0628デフォルトの名無しさん2006/11/16(木) 00:01:26
>>627
wordなのかよ
zipな時点で俺はダウンロード諦めた
0629デフォルトの名無しさん2006/11/16(木) 00:09:59
>>625
ポインタ
0630デフォルトの名無しさん2006/11/16(木) 00:16:48
>>625

@@ -7,6 +7,7 @@
 *kekka++ = *b;
 *b++;
 }
+*kekka=0;
 }
 int main(void)
 {
06316252006/11/16(木) 00:28:58
ありがとうございます。
m(_ _)m
0632デフォルトの名無しさん2006/11/16(木) 01:47:28
>>624
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct field_tag {
    char word[32];
    int count;
    struct field_tag *next;
} field;
int myfget(FILE *fp, char *s) {
    int c, p = 0;
    while (1)
        if ((c = fgetc(fp)) == EOF) return c;
        else if (!isalnum(c)) {
            s[p++] = '\0';
            return 1;
        }
        else s[p++] = (char)c;
}
int isword(char *s) {
    int p = 0;
    while (1) {
        if (!isalnum(s[p]))
            if (s[p] == '\0' && p != 0) return 1;
            else return 0;
        p++;
    }
}
void search_and_insert(field *dest, const field *src){
    field *temp;
    if (dest->next == NULL) {
0633632(続き)2006/11/16(木) 01:47:59
        dest->next = (field*)malloc(sizeof(field));
        memset(dest->next, 0, sizeof(field)); strcpy(dest->next->word, src->word); dest->next->count++;
    }
    else if (!strcmp(dest->next->word, src->word)) dest->next->count++;
    else if (!(strcmp(dest->next->word, src->word) < 0)) {
        temp = (field*)malloc(sizeof(field));
        memset(temp, 0, sizeof(field)); strcpy(temp->word, src->word); temp->count++; temp->next = dest->next; dest->next = temp;
    }
    else search_and_insert(dest->next, src);
}
void free_all(field *ptr){
    if (ptr->next != NULL) free_all(ptr->next);
    free(ptr);
}
int main(int argc, char *argv[]){
    field *root= (field*)malloc(sizeof(field)), *cur = root, temp;
    FILE *fp = fopen(argv[1], "r");
    memset(root, 0, sizeof(field)); temp.next = NULL;
    while(myfget(fp, temp.word) != EOF){
        if (isword(temp.word)) search_and_insert(cur, &temp);
        memset(&temp, 0, sizeof(field));
    }
    cur = root->next;
    while (cur != NULL){
        printf("%s : %d\n", cur->word, cur->count);
        cur = cur->next;
    }
    if (root != NULL) free_all(root);
    return 0;
}
0634デフォルトの名無しさん2006/11/16(木) 02:12:40
>>625
リナックスはOSじゃねーだろ。
0635デフォルトの名無しさん2006/11/16(木) 02:18:31
Linux Is Not UniXである
UNIXはOSである
したがってLinuxはOSではない

こうですか わかりません
0636デフォルトの名無しさん2006/11/16(木) 02:19:43
>>635
三段論法の要件満たしてないだろそれじゃ
0637デフォルトの名無しさん2006/11/16(木) 04:39:32
連立方程式をとくサブ関数をお願いします!
x1*a + y1*b=0
x2*a + y2*b=0
のように引数にx1 x2 y1 y2をとる感じの関数をお願いします><
0638デフォルトの名無しさん2006/11/16(木) 04:50:33
すいません!>>637ですが引数は右辺の0も引数にとって6個でお願いします。
付け加えてしまって本当にすいません!
0639デフォルトの名無しさん2006/11/16(木) 04:52:02
>>613
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2941.zip
サンプルプログラムと同じ動作するように作ってみた。
なんか「動けばいいというものではなく、よい設計でよいコードでなければならない」
とか書いてあるが、どういうのがよい設計なのか正直よく分からんのですよ。
0640デフォルトの名無しさん2006/11/16(木) 04:53:26
謝る暇があったらテンプレにそって書き直せクズ
0641デフォルトの名無しさん2006/11/16(木) 04:53:35
>>637
ガウスの消去法
ガウス・ジョルダン消去法
反復法

いろいろあるね(・∀・)
0642デフォルトの名無しさん2006/11/16(木) 05:04:26
>>640 へへ、すいやせん!
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):2元連立方程式を解きなさい
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC2005
 [3.3] 言語: C++
[4] 期限: 今週まで
[5] その他の制限:>>637 >>638 です

>>641
ガウス・ジョルダン法ができればいいですけど答えがでればなんでいいです。ガウスジョルダンは頭では理解できるんですけど
プログラムにかけません><
0643デフォルトの名無しさん2006/11/16(木) 05:07:09
しかしx、yの方が係数なのか 変わってるな

引数6つって答えはどうやって返すの?
構造体?
0644デフォルトの名無しさん2006/11/16(木) 05:10:03
>>643
いや、気になるならabを係数にしていただいても( ;・∀・)
答えはどうやって返しましょう?素人に一番わかりやすい形で返していただければ・・・
0645デフォルトの名無しさん2006/11/16(木) 05:16:15
#define BEST 5.058548
.
.
.
if(fy[0] == BEST || s > N)
break;
プログラムの先頭でBESTを定義しておいて、ループの中の条件で
breakさせたいのですが、ループから抜け出せません。
printfで確認しましたが、配列fy[0]の中身は確かに5.058548でした。
おしえてください><
0646デフォルトの名無しさん2006/11/16(木) 05:17:13
>>645
>>1
0647デフォルトの名無しさん2006/11/16(木) 05:21:51
>>645
てけとーにεとればいいお
0648大学生2006/11/16(木) 08:46:42
「問題16」eの値を実数として計算し表示せよ。
「問題17」πの値を実数として計算し表示せよ。

「問題18」eの値を小数点以下60桁まで求めよ。
「問題19」πの値を小数点以下60桁まで求めよ。
この問題16.17.18、19のC言語プログラム(C++)でお願いします。
それと多倍長少数を利用して作ってください。


0649デフォルトの名無しさん2006/11/16(木) 08:47:29
>>648
>>1
0650デフォルトの名無しさん2006/11/16(木) 09:36:45
>>645
fabs(fy[0]-BEST)<0.000001
0651デフォルトの名無しさん2006/11/16(木) 13:55:14
>>648
問題19 :printf("3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647");
0652デフォルトの名無しさん2006/11/16(木) 14:42:00
[1] 授業単元: 卒業研究
[2] 問題文(含コード&リンク): フレーム間差分
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2003
 [3.3] 言語: C++
[4] 期限: 今週まで
[5] その他の制限: ありません。
aviファイルを取り込んで、フレーム間差分を実行できるプログラムを希望します。
■ このスレッドは過去ログ倉庫に格納されています