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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けない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
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 91代目
http://pc11.2ch.net/test/read.cgi/tech/1182607405/
2デフォルトの名無しさん:2007/07/04(水) 10:28:19

         v――.、
      /  !     \
      /   ,イ      ヽ
..    /  _,,,ノ !)ノリハ    i
    i  jr三ミ__r;三ミ_   ヽ
    l  ,iヾ二ノ ヽ二 ハ   ノ  / ̄ ̄\
    ヽ、.l  ,.r、_,っ、  !_,    /ヽ、___ノ|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.      !  rrrrrrrァi! L_./⌒( i  " i | ./ <  >>1 糞スレ立てんな、蛆虫、氏ね。
   ヾヾ ゝ、^'ー=~''"' ;,/.     | i | i  >   \______________
 ゞ","",,ヽ  >、__,r    /  ヽ | i ″)
 ヾ ,, ,, ヽ          ノ  | i i .丿
 /ヾ ,,  ,,ヽ (      / )/ | ‖i /
 | ヾ ,,,,  ヽ "──""  ノ(/| ii  | )
 ヽ ヾ ,, ,, ,,.ヽ      ノ ./ .|__ii___|ヽ
  ヽ ヾ ,,,  ,,  \    /  i⌒( ̄ ~  |
  /   )==(○)==(  ヽ- ̄ ̄ /
 (⌒-/",,--______-- ",, ヽ ゝ─-- /
.(__/ヾヾヾ ,,,  ,,, ,,-ゞヾ/  ヽ.,,_,,/
 ヽ(    ソ""""\    ヽ  i_/
<(⌒""`--.,__)   /ヽ    )
<(~`─"   \ (~    /
<(_,,,__,,,,    ) \    ̄ゝ
      ̄"""   ヽ.,,__ゝ
3デフォルトの名無しさん:2007/07/04(水) 10:52:26
[1] 問題文:入力した人の年齢の合計と平均を出力させるプログラムを作成して下さい。
※入力時に累積の人数を表示 ※年齢入力時に数字属性と範囲のチェックを行う※nullは不許可とする
※0 〜 9 の文字のみで、かつ 1 〜 99 の範囲のみを許可する※年齢の平均は小数点第二位まで出力する※名前に空が入力された場合に年齢の合計と平均を出力してプログラムを終了する
−実行結果−

1人目の名前:human1
1人目の年齢:
入力エラー(年齢を入力してください)
1人目の年齢:30

2人目の名前:human2
2人目の年齢:abc
入力エラー(年齢は数字のみで入力してください)
2人目の年齢:20

3人目の名前:human3
3人目の年齢:0
入力エラー(年齢は1から99の範囲で入力してください)
3人目の年齢:25

4人目の名前:
年齢の合計は75歳、年齢の平均は25.00歳


[2] OS: Windows2000
[3] 期限:2007年7月4日13時まで
4デフォルトの名無しさん:2007/07/04(水) 11:04:29
[1] 授業単元: オペレーティングシステム
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4494.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年07月06日まで
[5] その他の制限: 特に制限はありませんが、
簡単なコメントをつけていただけると助かります。
5デフォルトの名無しさん:2007/07/04(水) 11:04:44
前スレ>>999
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[]="aiai";
char b[]="ai";
int i,count;
count=0;
for(i=0;i<strlen(a)-strlen(b);i++)
if(strncmp(a,b,strlen(b))==0)count++;
printf("%d",count);
}

多分こんな感じ。ループの度にstrlen(b)やるので大量データに向いてないとかあるけど。
6デフォルトの名無しさん:2007/07/04(水) 11:05:12
>>前スレ999
>if(a&&b)count++;

とりあえず、これは無いだろうw
aとbが有効なポインタだから (a && b)がtrueになっているだけであって、
決して "aiai"の先頭が "ai"だから trueになっている訳ではないぞw

もし自力で実装するなら、以下の様に考えると、ベタでも動くものが作れるかと。
0: 捜索開始場所を aとする
1: まず bの先頭1文字を aから捜索する
2: 1文字目から不一致なら aを+1して 1へ
3: 発見した場合、その場所から +n文字目は bの+n文字目と同じか比較し、
 bが終わるまでチェックする
4: すべて一致すれば ++countして、捜索開始場所を a+strlen(b)に変更し、1へ
5: 途中で不一致だった場合は、捜索開始場所を +1して 1に戻る
7デフォルトの名無しさん:2007/07/04(水) 11:06:08
あ、間違い。
-if(strncmp(a,b,strlen(b))==0)count++;
+if(strncmp(&a[i],b,strlen(b))==0)count++;
8デフォルトの名無しさん:2007/07/04(水) 11:15:54
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 線形探索
次の表は、平成19年のお年玉付き年賀葉書の当選番号である。
1等 157788、457190
2等 5161、7093、7485、9614
3等 64、79
手元に届いた年賀状の抽選番号をキーボードから入力し、
当選したかどうかチェックして結果を表示するプログラムを作成する。
ただし、ここでは簡単のため下2桁だけを扱うものとする。

当選番号(の下2桁)は、キーの配列に初期値として格納する
キーボードから2桁の数字を入力してターゲットに格納し、線形探索を行う。
探索結果を画面に出力する。当選した場合は何等が当たったか、も出力すること。
【発展】
余力のある人は、下2桁に限らず、全桁を初期値として格納し、当選のチェックを実行するプログラムを作成してみること。
[3] 環境
 [3.1] OS: WindowsXP 
[3.2] コンパイラ名とバージョン: VS 2005
 [3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: [発展]の方でお願いします
9デフォルトの名無しさん:2007/07/04(水) 11:29:04
>>前スレ999
”aaaa"と"aa"を比較した時に3回文字列が出現したと数えるか、
2回出現したと数えるかで文字列発見時のポインタ、配列参照の仕方が変わる
10デフォルトの名無しさん:2007/07/04(水) 12:18:44
授業単元:C言語
環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
問題
文字列を入力して偶数番目の要素数と奇数番目の要素を別の配列に格納し、文字列として表示しなさい

実行画面
文字列入力==>ABC123def
偶数要素:AC2df
奇数要素:B13e
11デフォルトの名無しさん:2007/07/04(水) 12:28:38
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク):

2次方程式 ax*x+bx+c=0
の係数a,b,cを与え、方程式の解を求めて出力せよ(関数は使わなくてよい)
係数の値によって3つの場合分けをする
zの平方根yの計算はy=sqrt(z)で計算する。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:visual studio2005
 [3.3] 言語: C++
[4] 期限: 7月6日
[5] その他の制限:特になし。

ネットで2次方程式を探しましたが、よくわからないので上の問題の条件で回答いただけると幸いです。
お願いいたします。
12デフォルトの名無しさん:2007/07/04(水) 12:41:01
>>10 ってね、前にも同じ問題があったけど、偶数要素は入力された奇数番目なんよ。
要するに、入力された文字列を格納した配列の要素番号が奇数か偶数かってことだよね?
13デフォルトの名無しさん:2007/07/04(水) 13:03:33
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
5 名の体重をキーボードから読み込んで,5 名の平均値以上の
値を持つ人の番号と体重を表示するプログラムを作成しなさ
い.
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 7月5日

実行結果
1 番目の体重= 60.5
2 番目の体重= 57.3
3 番目の体重= 68.1
4 番目の体重= 52.4
5 番目の体重= 65.2
----------------
平均値: 60.7kg
3 番目: 68.1kg
5 番目: 65.2kg

よろしくお願いします
14デフォルトの名無しさん:2007/07/04(水) 13:04:22
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
5 名の体重をキーボードから読み込んで,それらの値を小さい
順に表示するプログラムを作成しなさい.
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 7月5日

(実行結果例)
1 番目の体重= 60.5
2 番目の体重= 57.3
3 番目の体重= 68.1
4 番目の体重= 52.4
5 番目の体重= 65.2
----------------
(1): 52.4kg
(2): 57.3kg
(3): 60.5kg
(4): 65.2kg
(5): 68.1kg
よろしくお願いします
15デフォルトの名無しさん:2007/07/04(水) 13:05:59
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
5 名の体重をキーボードから読み込んで,値の小さい順に,何
番目の人かと,その体重を表示するプログラムを作成しなさ
い.なお,同じ値があれば,番号の小さい方を先に表示する.
(ヒント:番号を保存する配列を別途用意して,体重データを入れ替え
る時に番号も入れ替える)
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 7月5日
(実行結果例)
1 番目の体重= 60.5
2 番目の体重= 57.3
3 番目の体重= 68.1
4 番目の体重= 52.4
5 番目の体重= 65.2
----------------
(1) 3 番目: 52.4kg
(2) 1 番目: 57.3kg
(3) 0 番目: 60.5kg
(4) 4 番目: 65.2kg
(5) 2 番目: 68.1kg

よろしくお願いします
16デフォルトの名無しさん:2007/07/04(水) 13:07:16
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
三角形の「底辺の長さ」と「高さ」を仮引数として,三角形
の面積(底辺の長さ×高さ÷2)を返却値とする関数triangle
を定義しなさい.この関数triangle を用いてキーボートから
読み込んだ底辺の長さ,高さの三角形の面積を表示するプロ
グラムを作成しなさい.
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 7月5日

(実行結果例)
三角形の面積計算
底辺の長さ:10.8
高さ:8.6
----------------
面積: 46.44
よろしくお願いします
17デフォルトの名無しさん:2007/07/04(水) 13:08:57
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
3つの整数tanka,kosu,pay を仮引数として,
pay − tanka×kosu
の値を返す関数otsuri を定義しなさい.この関数otsuri を用
いて,キーボートから読み込んだ単価,購入個数,支払金額
に対して,おつり(=支払金額 − 単価×個数)を表示するプ
ログラムを作成しなさい.
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 7月5日
(実行結果例)
単価:129
購入個数:17
支払金額:5000
-----------------
おつり:2807 円

よろしくお願いします
18デフォルトの名無しさん:2007/07/04(水) 13:09:29
夏休み前のラッシュ 必死だな とだけレスしとく、すまんw
19デフォルトの名無しさん:2007/07/04(水) 13:11:59
同じ書き込みを繰り返しやがってとおもったら少しずつ違ったのね
20デフォルトの名無しさん:2007/07/04(水) 13:14:38
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
要素数がnum であるdouble 型の配列xv の全要素に,値c
を代入する関数SetValue を定義しなさい(関数SetValue は
値を返さないvoid 型).この関数SetValue を用いて,要素数
10 のdouble 型配列buf_A とbuf_B の全要素を,それぞれキ
ーボードから読込んだ値に設定するプログラムを作成しなさ
い.(設定後のbufA とbufB の全要素を画面に表示する)

 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 7月5日
(実行結果例)
bufA に設定する値= 1.23
bufB に設定する値= 3.45
-------------------
bufA[0]=1.23 bufB[0]=3.45
bufA[1]=1.23 bufB[1]=3.45

bufA[9]=1.23 bufB[9]=3.45

よろしくお願いします
21デフォルトの名無しさん:2007/07/04(水) 13:19:15
>>3
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 256
typedef struct{
char name[N];
int age;
}ID;
int main(void){
ID data[N];
char str[N];
int i,sum=0;
for(i=0;;i++){
printf("%d人目の名前:",i+1);
fgets(data[i].name,N-1,stdin);
if(data[i].name[0]==' ')break;
printf("%d人目の年齢:",i+1);
while(1){
data[i].age=strtol(fgets(str,N-1,stdin),NULL,0);
if(data[i].age<100&&data[i].age>0)break;
printf("入力エラー(年齢は数字のみで入力してください)\n");}
sum+=data[i].age;}
printf("年齢の合計は%d歳、年齢の平均は%.2f歳\n",sum,(double)sum/(i+1));
return 0;
}
22デフォルトの名無しさん:2007/07/04(水) 13:21:11
string.hは前書いてたコードの消し忘れorz
23デフォルトの名無しさん:2007/07/04(水) 13:29:41
>>10 MAX文字までの制限つきだけど、良いのかしらん。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 512

int main(void) {
char str[MAX] , str_e[MAX/2]={"\0"} , str_o[MAX/2]={"\0"} , ch;
unsigned int i;
printf("文字列入力==> ");
fgets(str,sizeof(str)/sizeof(str[0]),stdin);

for(i=0; i<strlen(str)-1; i++) {
if(i%2) str_o[i/2]=str[i];
else str_e[i/2]=str[i];
}
printf("偶数要素:%s \n",str_e);
printf("奇数要素:%s \n",str_o);
return 0;
}
24違ってたらゴメン:2007/07/04(水) 14:03:16
>>20
#include <stdio.h>
#define NUM 10

void SetValue(int num,double *xv,double *c){
for(;-1<num;num--)
*(xv+num) = *c;
}

void main(void)
{
int i;
double c,buf_A[NUM],buf_B[NUM];
printf("bufA に設定する値= ");
scanf("%lf", &c);
SetValue(NUM,buf_A,&c);
printf("bufB に設定する値= ");
scanf("%lf", &c);
SetValue(NUM,buf_B,&c);
for(i=0;i<10;i++)
printf("bufA[%d]= %lf bufB[%d]= %lf \n",i,buf_A[i],i,buf_B[i]);
}
25デフォルトの名無しさん:2007/07/04(水) 14:13:10
7.4課題
次のプログラムを元にして、足し算などの式を入力すると計算結果を
表示するプログラムを考える
(1)現在の内容を理解しコメントをつけよ
(2)たとえば式1+2「ENTER」を入力すると結果の3が表示されるような
のにつくりなおせ。他の演算が出来るようになっているとさらにいい評価

#include <stdio.h>
#include <ctype.h>
main() {
char c[10];
char *p;
int i=0;
printf("Enter a number");
fgets(c,6,stdin);
p = &c;
while(isdigit(*p)){
i=i*10+(*p++)-48;//←これよくわからない
}
printf("You have entered:%d\n",i);
}
26間違ってたらゴメン:2007/07/04(水) 14:15:20
#include <stdio.h>

int Otsuri (int tanka,int kosu,int pay){
return pay - tanka * kosu;
}

void main(void)
{
int otsuri,tanka,kosu,pay;
printf("単価> ");
scanf("%d", &tanka);
printf("購入個数> ");
scanf("%d", &kosu);
printf("支払金額> ");
scanf("%d", &pay);

printf("(実行結果例)\n 単価:%d \n 購入個数:%d \n 支払金額:%d \n----------------- \n おつり:%d 円\n",tanka,kosu,pay,Otsuri(tanka,kosu,pay));
}
27デフォルトの名無しさん:2007/07/04(水) 14:15:27
授業単元:C言語
環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:標準関数の利用
問題1
文字列を入力し、文字列中の英字と数字の文字数をカウントしなさい
使用する標準関数:isdight()
実行画面
文字列入力==>AB123CDEF45G
英字:7
数字:5
2826:2007/07/04(水) 14:16:42
>>26>>17
29デフォルトの名無しさん:2007/07/04(水) 14:23:29
>>27
#include <stdio.h>
#include <ctype.h>

int main(void) {
int cnt_a=0, cnt_n=0 , ch;
printf("文字列入力==>");
while( (ch=getchar()) != '\n') {
if( isdigit(ch) ) cnt_n++;
else if ( isalpha(ch) ) cnt_a++;
}
printf("英字:%d \n",cnt_a);
printf("数字:%d \n",cnt_n);
return 0;
}
30デフォルトの名無しさん:2007/07/04(水) 14:26:54
すみませんが、前スレの
>>914
をお願いします。
31デフォルトの名無しさん:2007/07/04(水) 14:29:35
[1] 授業単元:C言語実習&基礎
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4487.txt
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語: C
[4] 期限: 2007/7/4 15:30
[5] その他の制限: 特になし


すみません。前スレ938です。
どうしても今日提出しなければいけないので・・・
よろしくお願いいたします。


32デフォルトの名無しさん:2007/07/04(水) 14:29:44
914 名前:デフォルトの名無しさん 投稿日:2007/07/03(火) 15:36:08
[1] 授業単元:プロC
[2] 問題文(含コード&リンク):
1. コマンドライン引数でファイル名をn個指定し、 ファイル1からファイルnまでの内容をこの順に連結し、
その結果を標準出力に出力するプログラムを書け。 入力ファイルに関してエラーが発生した場合、
そこで処理を終了せず、残りのファイルの処理を続けること。
ただし、以下のオプションをとることができるようにせよ。
-u 出力の際に、アルファベット小文字を対応する大文字に変換する。
-l 出力の際に、アルファベット大文字を対応する小文字に変換する。
-e 出力の際に、空行を除去する。
-s 出力の際に、#から始まる行を除去する。
*入出力を行うシステムコールを直接使用すること。
2.コマンドライン引数でファイル名を2個指定し、 標準入力からテキストを入力し、
#で始まる行をファイル1に出力し、 それ以外の行をファイル2に出力せよ。
ただし、以下のオプションをとることができるようにせよ。
-a 同名のファイルがすでに存在する場合は、末尾に追加するようにする。 このオプションがない場合は、上書きする。
-e ファイル2への出力の際に、 空行を除去する。
-s ファイル1への出力の際に、 行頭の#一文字を除去する。
*入出力を行うシステムコールを直接使用すること。
*ただし、複数のオプションが同時にしていされているときは、両方なるように
すること。
ファイルをコピーするプログラム。入力と出力にはシステムコールを直接使用する。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4485.c
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 木曜日まで
[5] その他の制限:ないです

どうかよろしくお願いします。
33デフォルトの名無しさん:2007/07/04(水) 14:45:42
>>32
この順って、どの順?

前スレで久々「ありがとう」の言葉をもらった
嬉しいもんだ
34デフォルトの名無しさん:2007/07/04(水) 14:54:11
>>33さん
ファイル1→ファイル2→ファイル3
ということです。
35間違ってたらゴメン:2007/07/04(水) 14:57:16
>>25 足算と引算だけやってみたが何かおかしいかもしれない・・
#include <stdio.h>
#include <ctype.h>
#define BUF 100
void main(void){
char *p,c[BUF];
int i=0,ii=0,f=0;
printf("計算式入力(足算/引算):");
fgets(c,BUF,stdin);
p = &c;
do{
while(isdigit(*p)){
i=i*10+(*p++)-48;//←これよくわからない
}
if(f){
if(f == 1) ii = ii + i;
if(f == 2) ii = ii - i;
}
else
ii = i;
if((*p) == '+') f = 1;
if((*p) == '-') f = 2;
i = 0;
*p++;
}while(*p);
printf("計算結果:%d\n",ii);
}
(実行結果)
計算式入力(足算/引算):10+10-1-1
計算結果:18
36デフォルトの名無しさん:2007/07/04(水) 15:27:22
前スレの942さんのプログラムをコンパイルすると、
mainの戻り値の型がintではありません。と警告が出るのですが
これは出ちゃうものなんでしょうか?
37デフォルトの名無しさん:2007/07/04(水) 15:29:39
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):
文字型配列のstr1とstr2を用意しておき、str1に文字列をキーボードから
読み込んだ後、ポインタを用いてstr2に逆順に文字を格納し、表示せよ。
なお最終的な表示部は「printf("%s\n" ,str2);」を用いること。
(実行例)
文字列を入力せよ:Tanaka Tarou
結果:uoraT akanaT

(ヒント)
配列を読み込んだ文字を一文字づつ切り出して格納する。
このとき配列要素の指定はポインタを介して行うこと。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc Ver,?
 [3.3] 言語: C言語
[4] 期限: 7/5 PM12:00
38デフォルトの名無しさん:2007/07/04(水) 15:36:53
>>36
ISO、ANSI準拠で int main(void) { return 0; } といったスタイルにしないと
エラーが出ちゃうようなコンパイラだと でっ、でちゃうぅ〜〜〜
39デフォルトの名無しさん:2007/07/04(水) 15:41:29
倍精度実数が 0 であるかどうかを判定しても いいでしょうか
40デフォルトの名無しさん:2007/07/04(水) 15:46:52
>>37
#include<stdio.h>
#include<string.h>
#define N 256
int main(void)
{
char str1[N],str2[N];
int i=0,l,k;
printf("文字列を入力せよ:");
scanf("%s",str1);
k=strlen(str1);
while(str1[i]!='\0')
*(str2+i++)=*(str1+k-i-1);
str2[k]='\0';
printf("結果:%s\n",str2);
return 0;
}

41デフォルトの名無しさん:2007/07/04(水) 16:06:08
>>40
ありがとうございます。
ただこれ実行すると
文字列を入力せよ:Tanaka Tarou
結果:akanaT
という感じでスペース以降が逆順で表示されないのですが、
スペース以降含めて文字列全て逆表示にできないでしょうか?
結果:uoraT akanaT
みたいに
42デフォルトの名無しさん:2007/07/04(水) 16:09:39
>>41
ごめん、なんかlとかよく分からないの入ってたり色々…。

#include<stdio.h>
#include<string.h>
#define N 256
int main(void)
{
char str1[N],str2[N];
int i=0,k;
printf("文字列を入力せよ:");
fgets(str1,N-1,stdin);
k=(int)strlen(str1);
while(str1[i]!='\0')
*(str2+i++)=*(str1+k-i-1);
str2[k]='\0';
printf("結果:%s\n",str2);
return 0;
}
43デフォルトの名無しさん:2007/07/04(水) 16:17:51
>>42
早い手直しありがとうございます。
もしかして前スレの>>991さんでしたら、そちらもありがとうございます。
違ってたらすいません。
44デフォルトの名無しさん:2007/07/04(水) 16:18:38
>>42
早い手直しありがとうございます。
もしかして前スレの>>991さんでしたら、そちらもありがとうございます。
違ってたらすいません。
45デフォルトの名無しさん:2007/07/04(水) 16:32:01
35様、ありがとうございます。
掛け算割算も工夫してみます
4631:2007/07/04(水) 17:17:04
分かる方いらっしゃらないでしょうか・・・?
47デフォルトの名無しさん:2007/07/04(水) 17:28:40
>>46
そのままコピペしたらエラー出まくり。
プログラムの仕様くらい書け。
おまけに長いくせに別関数にするだけ。

自分でやった方が早いと思うよ。
48デフォルトの名無しさん:2007/07/04(水) 17:30:32
>>25
あまり綺麗ではないが、四則演算とカッコ対応
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4496.txt
49デフォルトの名無しさん:2007/07/04(水) 17:33:42
あの・・・
>>32
をお願いできますでしょうか?
50デフォルトの名無しさん:2007/07/04(水) 17:35:19
前スレ>>965の人へ
前スレにもある通り、与えられたそのままの条件でプログラムを書くと
出力が滅茶苦茶になる。

もう一度良く問題文を確かめて欲しい。
51デフォルトの名無しさん:2007/07/04(水) 17:36:00
>>46
gets_s()だのstrcpy_s()だの、VC++8.0専用のソースのようだが
引数が足りなくてコンパイルエラーになる箇所があるようだねえ
52デフォルトの名無しさん:2007/07/04(水) 17:37:54
数値を入力しIEEE754のビットパターンを出力するCのプログラ
ム頼む!
漏れの命がかかってるorz
53デフォルトの名無しさん:2007/07/04(水) 18:05:56
>>38さん
エラー表示が出なくなりました。ありがとです
コンパイラによって違うのですね・・・
54デフォルトの名無しさん:2007/07/04(水) 18:10:35
>>53
警告とエラーは別物だぞ
55デフォルトの名無しさん:2007/07/04(水) 18:10:52
gets_s使うくらいならfgets使え
56デフォルトの名無しさん:2007/07/04(水) 18:48:43
>>52
#include <stdio.h>
void putbin(unsigned char n)
{
    int i;
    for (i = 1 << 7; i > 0; i >>= 1)
        putchar((n & i) ? '1' : '0');
}
int main()
{
    int i = 1;
    unsigned char *s = (unsigned char *)&i;
    int islittle = s[0];
    double x;
    while (scanf("%lf", &x) == 1) {
        s = (unsigned char *)&x;
        if (islittle) {
            for (i = sizeof(x)-1; i >= 0; --i)
                putbin(s[i]);
        } else {
            for (i = 0; i < sizeof(x); ++i)
                putbin(s[i]);
        }
        putchar('\n');
    }
    return 0;
}
57デフォルトの名無しさん:2007/07/04(水) 18:53:10
あの・・・ 何回もすみませんが
>>32
をお願いできますでしょうか?
58デフォルトの名無しさん:2007/07/04(水) 18:55:40
[1] 授業単元:C演習
[2] 問題文(含コード&リンク):abc.txt には、データが何行にも分けて
書いてある。それを1行ずつ読んで、
1)先頭に&がついていたら a.txt に追記(書込み)
2)先頭に&がついてなかったら b.txt に追記(書込み)
するプログラムを作れ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 7月8日
[5] その他の制限:30行以下

よろしくお願いします。
59デフォルトの名無しさん:2007/07/04(水) 18:56:53
>>57
ここは基本的に問題出す方も投げ出しっぱなし、
説く方も気が向き次第なスレです。
そんな必死に頼りにする所ではありませんカス。
60デフォルトの名無しさん:2007/07/04(水) 18:59:44
>>58
データって
111
&222
333
444
&555
こんな感じでいいの?
61デフォルトの名無しさん:2007/07/04(水) 19:02:18
>>60
多分、そうだと思います。

その場合だと、
&222
&555が、a.txtへ

111
333
444が、b.txtへ
という感じだと思います。

お願いします。
62前スレ999:2007/07/04(水) 19:04:13
>>5
>>6
>>9

ありがとうございます。これを理解して応用していけるようにがんばります。
63デフォルトの名無しさん:2007/07/04(水) 19:07:50
>>58
#include <stdio.h>
int main(void)
{
    FILE *fabc, *fa, *fb, *current;
    int c, prev;
    if (!(fabc = fopen("abc.txt", "r"))
            || !(fa = fopen("a.txt", "w"))
            || !(fb = fopen("b.txt", "w")))
        return fputs("can't open files\n", stderr), 1;
    current = fb;
    for (prev = '\n'; (c = getc(fabc)) != EOF; prev = c) {
        if (prev == '\n' && c == '&') current = fa;
        else if (prev == '\n') current = fb;
        putc(c, current);
    }
    fclose(fabc), fclose(fa), fclose(fb);
    return 0;
}
64デフォルトの名無しさん:2007/07/04(水) 19:11:46
>>63
とても早くて助かります。
ありがとうございました。
65デフォルトの名無しさん:2007/07/04(水) 19:13:23
>>58
#include<stdio.h>
#define N 256
int main(void)
{
FILE *abc,*a,*b;
int n=0;
char str[N];
fopen_s(&abc,"abc.txt","r");
fopen_s(&a,"a.txt","a");
fopen_s(&b,"b.txt","a");
while(fgets(str,N-1,abc)!=NULL&&n<30){
if(str[0]=='&')
fprintf(a,"%s",str);
else fprintf(b,"%s",str);
n++;
}
fclose(abc);
fclose(a);
fclose(b);
return 0;
}
66デフォルトの名無しさん:2007/07/04(水) 19:17:13
>>52
#include <stdio.h>
#include <string.h>

int main()
{
float f;
unsigned int bitf;
int i;
char buff[sizeof(int)*8 + 1] = {'\0'};
scanf("%f",&f);
memcpy(&bitf,&f,sizeof(int));
for(i = sizeof(int)*8-1; i >=0 ; i--)
{
if(bitf%2)
buff[i] = '1';
else
buff[i] = '0';
bitf /= 2;
}
printf("%s\n",buff);
return 0;
}
67デフォルトの名無しさん:2007/07/04(水) 19:19:52
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク): ttp://www.vipper.org/vip548391.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland
 [3.3] 言語: C
[4] 期限: 7月6日(金)12:00まで
ttp://www.vipper.org/vip548389.c
作ってみたのですが後半値が変化しません。どこが違ってるでしょうか。
よろしくお願いします。
68デフォルトの名無しさん:2007/07/04(水) 19:23:41
[1] 授業単元:プロC
[2] 問題文(含コード&リンク):
まず、 pwd を実行し、成功すれば、 ls を実行する。
ただし、コマンドライン引数はすべてls にそのまま渡すものとする。

pwdを実行し、成功すれば、その後、ls -lを実行するプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4501.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:今週中
[5] その他の制限: ないです

よろしくお願いします。
69デフォルトの名無しさん:2007/07/04(水) 19:31:30
>>67
double型なのに徹頭徹尾%dを使ってるとことか。
70デフォルトの名無しさん:2007/07/04(水) 19:40:27
>>69
ありがとうございました。
基本的なところで間違ってたのかorz
71デフォルトの名無しさん:2007/07/04(水) 20:41:42
もう居ないかもしれんが>>31
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4503.c
もっとできるだろうが飽きたからこれで終わりにする
72工房・・・:2007/07/04(水) 20:53:43
[1] 授業単元:While文
[2]スーパーのレジの処理を行うプログラム。
品物の値段を入力していき、最後に0(ゼロ)を入力すると消費税を加算した金額を表示する。
さらに、預かり金を入力すると、お釣りを表示する。
<出力結果例>
いらっしゃいませ
XXX←値段を入力
小計=XXX円
XXX←値段を入力
小計=XXX円

小計=XXXX円 消費税XX円 合計金額XXXX円
お預かり金額(入力させる)
お釣り XXX円(お釣りは1万円何枚、5000円何枚などを表示させる)
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン:UNIX
 [3.3] 言語: C言語
[4] 期限: 2007年07月04日24:00まで
[5] その他の制限: While文、scan,printfだけを関数では使うようにしてください・・・
73デフォルトの名無しさん:2007/07/04(水) 21:14:45
全スレ955ですが、お願いします。
[1] 授業単元:C言語
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4488.txt
[3]
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語: C
[4] 期限: 2007/7/4 
[5] その他の制限: 特になし
74デフォルトの名無しさん:2007/07/04(水) 21:26:17
>>72
#include <stdio.h>
int main(void)
{
int sum=0;
int x,azukarikin,goukei,turi,man,gosen,sen,gohyaku,hyaku,gojyu,jyu,go,iti;
printf("いらっしゃいませ。\n");
while(1){
scanf("%d",&x);
if(!x)break;
sum+=x;
printf("小計:%d\n",sum);}
goukei=(int)sum*1.05;
printf("小計:%d 消費税:%.0f 合計:%d\n",sum,sum*0.05,goukei);
printf("お預かり金額:");
scanf("%d",&azukarikin);
turi=azukarikin-goukei;
printf("お釣り:%d\n",turi);
man=turi/10000;turi%=10000;
gosen=turi/5000;turi%=5000;
sen=turi/1000;turi%=1000;
gohyaku=turi/500;turi%=500;
hyaku=turi/100;turi%=100;
gojyu=turi/50;turi%=50;
jyu=turi/10;turi%=10;
go=turi/5;turi%=5;
iti=turi;
printf("一万円:%d枚 五千円:%d枚 千円:%d枚\n",man,gosen,sen);
printf("五百円:%d枚 百円:%d枚 五十円:%d枚\n",gohyaku,hyaku,gojyu);
printf("十円:%d枚 五円:%d枚 一円:%d枚\n",jyu,go,iti);
return 0;
}
75デフォルトの名無しさん:2007/07/04(水) 21:26:22
>>73
だから問題が雑すぎ
76デフォルトの名無しさん:2007/07/04(水) 21:32:20
>>73
1番目
#include <stdio.h>
int main(void)
{
char str[256],str2[256];
int n,i;
printf("str:");
scanf("%s",str);
printf("n:");
scanf("%d",&n);
for(i=0;i<n;i++)
str2[i]=str[i];
str2[n]='\0';
printf("%s\n",str2);
return 0;
}
77デフォルトの名無しさん:2007/07/04(水) 21:42:54
ジョブショップスケジューリングにおいて、ディスパッチングルールとして、EDDを用いたスケジューリングを作成するプログラムを作成しなさい
という宿題が出たんですけど、もしわかるひとがいたらよろしくお願いします。
78デフォルトの名無しさん:2007/07/04(水) 21:44:53
>>72

>>74とほぼ同じだけど
#include <stdio.h>
int main(void)
{
int price, subtotal = 0, tax, pay, change;
int ichiman, gosen, sen, gohyaku, hyaku, goju, ju, go, ichi;
printf("いらっしゃいませ\n");
while(price) {
scanf("%d", &price);
if(price) printf("小計 = %d円\n", price);
subtotal += price;
}
tax = 0.05*subtotal;
printf("小計 = %d円 消費税%d円 合計金額%d円\n", subtotal, tax, subtotal+tax);
printf("お預かり金額 : ");
scanf("%d", &pay);
change = pay-(subtotal+tax);
if(change < 0) {
printf("お金が足りません");
return 0;
}
ichiman = change/10000; change -= ichiman*10000; gosen = change/5000; change -= gosen*5000;
sen = change/1000; change -= sen*1000; gohyaku = change/500; change -= gohyaku*500;
hyaku = change/100; change -= hyaku*100; goju = change/50; change -= goju*50;
ju = change/10; change -= ju*10; go = change/5; change -= go*5; ichi = change;
printf("1万円 : %d枚 5千円: %d枚 千円 : %d枚\n", ichiman, gosen, sen);
printf("5百円 : %d枚 100円: %d枚 50円 : %d枚\n", gohyaku, hyaku, goju);
printf("10円 : %d枚 5円: %d枚 1円 : %d枚", ju, go, ichi);
return 0;
}
79デフォルトの名無しさん:2007/07/04(水) 21:45:40
80デフォルトの名無しさん:2007/07/04(水) 21:49:27
>>68
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
void execpwd(char **argv) { execlp("pwd", "pwd", (char*)0); }
void execls(char **argv) { execvp("ls", argv); }
void (*execfn[])(char **argv) = { execpwd, execls, 0 };
int main(int argc, char **argv) {
    pid_t pid;
    int    i, status;
    for (i = 0; execfn[i]; ++i) {
        if ((pid = fork()) == 0) {
            (*execfn[i])(argv);
            _exit(1);
        }
        if (pid == -1) return perror("fork"), 1;
        waitpid(pid, &status, 0);
        if (!WIFEXITED(status) || WEXITSTATUS(status) != 0)
            return fprintf(stderr, "command failed\n"), 1;
    }
    return 0;
}
81デフォルトの名無しさん:2007/07/04(水) 21:54:51
>>16
#include <stdio.h>
#include <stdlib.h>
double triangle(double a, double h)
{
    return a * h / 2;
}
int main(void)
{
    char buf[256];
    double a, h;
   
    printf("三角形の面積計算\n");
    printf("底辺の長さ:");
    if (fgets(buf, 256, stdin) == 0) {
        return 1;
    }
    a = atof(buf);
   
    printf("高さ:");
    if (fgets(buf, 256, stdin) == 0) {
        return 1;
    }
    h = atof(buf);
   
    printf("----------------\n");
    printf("面積:%g", triangle(a, h));
    return 0;
}
82デフォルトの名無しさん:2007/07/04(水) 22:21:03
>>72
2000円札忘れてたぜ

#include <stdio.h>
int main(void) {
int price, subtotal = 0, tax, pay, change;
int ichiman, gosen, nisen, sen, gohyaku, hyaku, goju, ju, go, ichi;
printf("いらっしゃいませ\n");
while(price) {
scanf("%d", &price);
if(price) printf("小計 = %d円\n", price);
subtotal += price;
}
if(subtotal == 0) {
printf("何も買ってません"); return 0;
}
tax = 0.05*subtotal;
printf("小計 = %d円 消費税%d円 合計金額%d円\n", subtotal, tax, subtotal+tax);
printf("お預かり金額 : ");
scanf("%d", &pay); change = pay-(subtotal+tax);
if(change < 0) {
printf("お金が足りません"); return 0;
}
ichiman = change/10000; change %= 10000; gosen = change/5000; change %= 5000;
nisen = change/2000; change %= 2000; sen = change/1000; change %= 1000;
gohyaku = change/500; change %= 500; hyaku = change/100; change %= 100;
goju = change/50; change %= 50; ju = change/10; change %= 10;
go = change/5; change %= 5; ichi = change;
printf("壱万円紙幣 : %d枚 五千円紙幣 : %d枚 弐千円紙幣 : %d枚 千円紙幣 : %d枚\n", ichiman, gosen, nisen, sen);
printf("五百円硬貨 : %d枚 百円硬貨 : %d枚 五十円硬貨 : %d枚\n", gohyaku, hyaku, goju);
printf("十円硬貨 : %d枚 五円硬貨 : %d枚 一円硬貨 : %d枚", ju, go, ichi); return 0;
}
83デフォルトの名無しさん:2007/07/04(水) 22:53:33
84デフォルトの名無しさん:2007/07/04(水) 23:00:06
85デフォルトの名無しさん:2007/07/04(水) 23:39:54
86デフォルトの名無しさん:2007/07/04(水) 23:41:44
[1] 授業単元:C言語
[2] 問題文: #include<stdio.h>
#include<ctype.h>
main(){
char c[10];
char *p;
int i=0;
printf("Enter a number; ");
fgets(c,6,stdin);
p=&c;
while(isdigit(*p)){
i=i*10+(*p++)-48;
printf("You have entered; %d\n",i);
}
}

上記のプログラムを元にして、足し算が出来るプログラムにせよ。

1+2を入力しENTERを押すと3が出力されるようにせよ。
また、足し算のほかにも引き算、掛け算、割り算のプログラムも作れ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2007年07月05日まで
[5] その他の制限:特になし
87デフォルトの名無しさん:2007/07/04(水) 23:49:56
88デフォルトの名無しさん:2007/07/05(木) 00:01:22
>>87
86です。
引き算、掛け算、割り算も出来るプログラム教えてください。
89デフォルトの名無しさん:2007/07/05(木) 00:02:24
>>87
すいません。掛け算と割り算です
90デフォルトの名無しさん:2007/07/05(木) 00:25:46
91デフォルトの名無しさん:2007/07/05(木) 00:27:04
92デフォルトの名無しさん:2007/07/05(木) 00:35:46
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
最小二乗法は計測データの分析に使われる方法である.
ある測定で,xとyのn組のデータ(x1,y1),(x2,y2), .......(xn,yn)が得られたとする.それらの点は一次関数y=ax+bで表される直線の近傍で誤差を持ってばらついているとみなされるとき,一般に最小二乗法を用いる事でこの直線を推定できる.
それによれば,a,bは以下の式で求められる.
式→http://vista.crap.jp/img/vi8356319177.jpg

1行にxとyのそれぞれ値がスペースで区切られ,n組のデータがn行となって書かれたテキストデータを受け付け,最小二乗法でa, bを求めるプログラムを書け.
ファイル名の長さは最大で(マクロ定数で定義された)FILENAME_MAX文字までとしてよい.
データの行数は最大128行とする.
読み込んだデータはdouble型として扱い,配列x[], y[]に代入する.
最小二乗法でa, bを求める関数linestをプロトタイプ宣言し,x, yの配列の先頭アドレスとデータ数を渡す.
main関数以外の関数内で配列は使用せず,for文とポインタを利用すること.
出力する傾きと切片は,それぞれ"a = ","b = "の後に続けて小数第4位まで一行ずつ表示する.

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

よろしくお願いします。
93デフォルトの名無しさん:2007/07/05(木) 00:37:04
もし>>25>>86が違う人なら2人とも同じプログラムで死亡だな
94デフォルトの名無しさん:2007/07/05(木) 00:56:00
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4509.txt

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月5日9時まで
[5] その他の制限:

実行結果
/home]% ./calender
2007 7
sun mon tue wed thu fri sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
/home]% ./calender
2006 7
sun mon tue wed thu fri sat
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
/home]%

よろしくお願いします。
95デフォルトの名無しさん:2007/07/05(木) 01:22:06
96デフォルトの名無しさん:2007/07/05(木) 01:26:27
>>94
その実行画面でWindows…?
それにしても横に長い問題文だなw
97デフォルトの名無しさん:2007/07/05(木) 01:30:47
98デフォルトの名無しさん:2007/07/05(木) 01:40:35
>>95
早く消せよ
99デフォルトの名無しさん:2007/07/05(木) 01:45:26
っつか、カレンダーの問題である年月日の曜日が何曜日であって、それを基点に合計日数を求めて
とかって問題があるが、俺それは苦手だw まぁ、グレゴリオ暦が1582年10月15日(金)から始まっているから
そこからの合計日数を求めちゃえば良いんでね?
100デフォルトの名無しさん:2007/07/05(木) 02:17:55
101デフォルトの名無しさん:2007/07/05(木) 02:19:47
>>95 >>97ありがとうございます^^
102デフォルトの名無しさん:2007/07/05(木) 02:20:20
>>95 >>97 ありがとうございます^^
103デフォルトの名無しさん:2007/07/05(木) 02:22:00
>>95 >>97 ありがとうございます^^
104デフォルトの名無しさん:2007/07/05(木) 02:23:04
>>101 >>102 >103 いえいえ ^ω^
105デフォルトの名無しさん:2007/07/05(木) 02:45:10
>>95 >>97 ありがとうございます^^
106デフォルトの名無しさん:2007/07/05(木) 02:46:35
>>100 ありがとうございますOTL
107デフォルトの名無しさん:2007/07/05(木) 02:50:10
>>105 >>106 `・ω・´イェッサー シャキーン
108デフォルトの名無しさん:2007/07/05(木) 05:55:43
>>99
>グレゴリオ暦が1582年10月15日(金)
どこの話? 世界中で切り替わったわけではないのだけれど。
#だから、古いカレンダーを作らせる課題は現実的じゃない。
109デフォルトの名無しさん:2007/07/05(木) 06:03:07
>>108
http://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%AC%E3%82%B4%E3%83%AA%E3%82%AA%E6%9A%A6
どこの話とかいってねーで自分で調べろよ。お前はこう言いたいんだろ。
日本では取り入れた時期が違うと。そんなの知ってるわうぜぇ
110本日の揚げ足取り厨:2007/07/05(木) 06:05:51
108 名前:デフォルトの名無しさん 投稿日:2007/07/05(木) 05:55:43
>>99
>グレゴリオ暦が1582年10月15日(金)
どこの話? 世界中で切り替わったわけではないのだけれど。
#だから、古いカレンダーを作らせる課題は現実的じゃない。
どこの話? 世界中で切り替わったわけではないのだけれど。
#だから、古いカレンダーを作らせる課題は現実的じゃない。
どこの話? 世界中で切り替わったわけではないのだけれど。
#だから、古いカレンダーを作らせる課題は現実的じゃない。
どこの話? 世界中で切り替わったわけではないのだけれど。
#だから、古いカレンダーを作らせる課題は現実的じゃない。

グレゴリオ暦の話だよ?????現在使用されているグレゴリオ暦の起源だよ?
何で 言ってもいないこと まで言ったことになってんの?
そうだよ、世界中でなんて誰も言ってないよ?w
早とちり揚げ足厨乙。お前ってさぁ、日ごろそういう、相手のあら探しをしようとして
逆に相手に深いな思いをさせて嫌われて干されているタイプだろ?
俺の方が知ってるぜぇ〜みたいな。あぁきめぇ。
111デフォルトの名無しさん:2007/07/05(木) 06:11:13
>>109
> 委員会の作業の末、完成した新しい暦は1582年2月24日に発布され、
> 同年10月4日(木曜)の翌日を10月15日(金曜)とすることが決定した。
何も間違ってないじゃん。グレゴリオ暦については。何が言いたいんだ >>108 こいつは?
いつ誰がどこで日本でもなんて書いた?お前の妄想って痛すぎ。
112デフォルトの名無しさん:2007/07/05(木) 06:21:42
>>108
> どこの話?
どこのじゃなくてグレゴリオ暦の始まりの話。どこのとかじゃなくて、グレゴリオ暦についての話。
なんでどこの国がいつ導入したって話しまでしなきゃだめみたいな言い方してんだ?
グレゴリオ暦はグレゴリオ暦だろ。存在は日本が導入する前からあったってことで良いじゃん。
なんなら、日本で有効とするために、そのグレゴリオ暦のカレンダーを算出するプログラムに
日本で導入した年月日以上の値が入力されなきゃ無効にするコードを追加すりゃええやろ。
そんなの自分でやれよ、初心者
113デフォルトの名無しさん:2007/07/05(木) 06:36:07
>>94
> 少なくとも、うるう年の判断を1800年から2200年まで正しく行うものとする.
ふぅ、やれやれ。

> # 1873年(明治6年)1月1日 - 日本
んじゃ、この課題は日本では今使われているグレゴリオ暦が使われていなかった頃にも
対処しなきゃならないのか。グレゴリオ暦以前のカレンダーってさぁ
閏年もグレゴリオ暦と違っていて、しかもそれ以前の暦の法則を間違えて使っていたって
話しだし、どうすりゃええのん?
114デフォルトの名無しさん:2007/07/05(木) 06:44:21
>>108
(・∀・)ニヤニヤ 反論まだかにゃ〜?いつ誰が日本でもグレゴリオ暦を
制定通りに施行されたと言ったのかにゃ〜?どこの話じゃなくてグレゴリオ暦の話ね。
115デフォルトの名無しさん:2007/07/05(木) 06:54:10
>>108
フォルツァ!何とか言えや、小僧。いつだれが日本でも導入したって言うた?あぁん?
口の穴から手ぇ突っ込んで痔核ガタガタ言わせてやんよ?
116デフォルトの名無しさん:2007/07/05(木) 07:13:01
>>108さんハァハァ、出ておいで、いじめたりしないからハァハァ
ちょっとぼくちん、君の事が気になって「しょうがない」んだよ。
君がこのスレの住人に注目されても「しょうがない」んだよ。
しょうがないけど、僕は辞任しませんよ。だって、僕は大臣じゃないから。
君ってグレゴリオ暦の詳細について知っていてすごいね。それを学校で言ったら
先生に褒められて成績も+αのボーナスがもらえるんでしょ?これで成績優秀はバッチリだね ♥
117デフォルトの名無しさん:2007/07/05(木) 07:21:57
つーかあれだ、グレゴリオ暦の起源から日数を数えるのがナンセンスなのよね。
別に現行暦で1年1月1日を想定してそこから数えりゃ充分でしょ。
#time_tは1970年、Excelあたりは1900年、一部の処理系は1904年基準だったかな?
118デフォルトの名無しさん:2007/07/05(木) 07:29:03
でたよ、行頭に # をつける気持ち悪い奴。お前か、通りで。マジきめぇ。
119デフォルトの名無しさん:2007/07/05(木) 07:36:51
授業単元:C言語
環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:文字配列の操作
問題
文字列を入力して偶数番目の要素と奇数番目の要素を別の配列に格納し、文字として表示しなさい
実行画面
文字列入力==>ABC123def
偶数要素:AC2df
奇数要素:B13e
120デフォルトの名無しさん:2007/07/05(木) 07:39:15
>>119
>>23
なんか同じ課題がやたらと出るな。書き方が同じだから同一人物か?
121デフォルトの名無しさん:2007/07/05(木) 09:50:01
>>117
> つーかあれだ、グレゴリオ暦の起源から日数を数えるのがナンセンスなのよね。
> 別に現行暦で1年1月1日を想定してそこから数えりゃ充分でしょ。
んなこたーねーけど、仮に今の暦の法則を過去にも適用して戻した場合の
1年1月1日からの合計日数を割ったあまりを曜日にするってのは俺も同意する。
が、お前はきめぇ。妄想ぶっこく前に勝手なことを言うのは慎み給え。
自分にとって価値があるないだの、そういう話はナンセンス。
グレゴリオ暦は1582年10月15日を金曜日としてスタートしているんだし
122デフォルトの名無しさん:2007/07/05(木) 11:49:56
[1] 授業単元: プログラミングU
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc最新版
[3.3] 言語:C
[4] 期限:07年7月9日まで
[2] 問題文
直線x=0, y=1, y=x^2で囲まれた部分の面積を求めよ。また, この図形をy軸のまわりに回転させた図形の体積を求めよ。
[5] その他の制限:
面積は下記のように求められたのですが体積の値が分りません。ご教授願います。

for(x=0; x<1; x+=0.001) for(y=0; y<1; y+=0.001)
if(x*x<=y) count1++;
s=count/1000000.0;
123デフォルトの名無しさん:2007/07/05(木) 12:06:20
授業単元:C言語
環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:文字配列の操作
問題1:キーボードより表示開始文字と表示開始文字と表示終了文字を入力し、開始〜終了までの文字を表示しなさい
char moji[]="ABCDEF〜XYZ"; /*大文字26*/
実行画面
moji:ABCDEF〜XYZ
開始位置==>B
終了位置==>F
表示:BCDEF

moji:ABCDEF〜XYZ
開始位置==>D
終了位置==>D
表示:0

moji:ABCDEF〜XYZ
開始位置==>E
終了位置==>B
表示:EF〜XYZAB

124123の続き:2007/07/05(木) 12:13:46
授業単元:C言語
環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:文字配列の操作
問題:文字列と検索文字、置換文字を入力し文字列の検索文字を置換文字に置き換えなさい
実行画面
文字(m1)入力==>ABCDEFAABCDABC
削除文字==>A
置換文字==>*
結果文字列(m1):*BCDEF**BCD*BC

問題2:文字列と削除文字列を入力し文字列中から削除文字を排除しなさい
実行画面
文字列入力(m1)==ABCDEFAABCDABC
削除文字==>A
結果文字列(m2)==>BCDEFBCDBC

125デフォルトの名無しさん:2007/07/05(木) 12:29:25
>>122
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(void)
{
    double v = 0.0, y, dy = 1.0/1024;
    for (y = 0.0; y < 1.0; y += dy)
        v += dy * M_PI * y;
    printf("%g\n", v);
    return 0;
}
126デフォルトの名無しさん:2007/07/05(木) 12:41:10
[1] 授業単元:実プロC
[2] 問題文(含コード&リンク):
1.xclock -update 1 を何個か起動し、 指定された間隔で一つずつSIGTERMで停止させる
プログラムを書け。 ただし、個数と間隔は、コマンドライン引数で次のように指定できるものとする。
オプション
-n n n個起動する。デフォルト値は6。
-t t 約t秒間隔で停止させる。デフォルト値は10。

2.emacs と xclock -update 1 を起動し、 emacs が終了すると
xclockをSIGTERMで停止させるプログラムを書け。

↓xclock -update 1 を起動し、約30秒後にSIGTERMで停止させるプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4513.c
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:来週の火曜日まで。
[5] その他の制限: ないです。

どうかよろしくお願いします。
127デフォルトの名無しさん:2007/07/05(木) 13:08:54
授業単元 C のプログラム
問題文double func(double x) という関数funcについて
x=x0からx=x1までの範囲について数値積分した値を返す
関数areaをつくれ

積分の計算方法は、x0からx1の範囲をn等分し、各分点xでの
関数値func(x)に刻み幅をかけた矩形の面積を足し合わせて
求めるものとする。

double area(double x0, double x1, int n)
環境 LINUX
期限 早めに
お願いします
128デフォルトの名無しさん:2007/07/05(木) 13:11:37
>>127 はC言語です
129デフォルトの名無しさん:2007/07/05(木) 13:21:37
[1]単元:プログラミング技術
[2]問題:アップローダーNo.4514に載せておきました。
[3]環境
  OS:リナックス
  コンパイラ:gcc
言語:C
[4]期限:できれば今日中にお願いします
130デフォルトの名無しさん:2007/07/05(木) 13:33:09
[1] 授業単元: プログラミング2
[2] 問題文:
2つの整数の配列(aとbとする)を引数とし、配列aの有効な全ての要素bの先頭から
コピーする関数を作りなさい。ただし、配列aには先頭から正の整数データが格納されている
ものとし、データの最後には必ず0が入ってる。また、配列bは呼び出し側で配列aの値を
コピーする十分な大きさが与えられているものとする。この条件を満たさずにこの関数が
呼び出された場合、動作は保証しなくてよい。
この関数を呼び出す適当なmain関数を作って動作を確かめなさい。main関数には
配列を3つ(m1,m2,m3)作りm1にデータを入力(または初期値で設定)し、関数を2回呼び出して、
m1をm2にコピーし、さらに、m2をm3にコピーしなさい

[3] 環境
 [3.1] OS: WindowsXP home
 [3.2] コンパイラ名とバージョン:gpp
 [3.3] 言語:c++
[4] 期限:本日17時まで
[5] その他の制限:関数についての習ってるところの課題です


よろしくお願いします
131デフォルトの名無しさん:2007/07/05(木) 13:48:07
>>129
#include <stdio.h>

void zz(char *array, int n, int r, int min)
{
    int i;
    if (r == 0)
        puts(array);
    else
        for (i = min; i < n; ++i) {
            if (array[i] == '-') {
                array[i] = 'O';
                zz(array, n, r - 1, i + 1);
                array[i] = '-';
            }
        }
}
int main(int argc, char **argv)
{
    int n, r;
    char array[10] = "---------";
    zz(array, 9, 3, 0);
    return 0;
}
132デフォルトの名無しさん:2007/07/05(木) 14:16:01
>>127
double area_(double (*fn)(double), double x0, double x1, int n)
{
    int i;
    double s = 0.0, dx = (x1-x0)/n;
    for (i = 0; i < n; ++i)
        s += dx * (*fn)(x0 + (x1-x0)*i/n);
    return s;
}
double area(double x0, double x1, int n) { return area_(func, x0, x1, n); }
133デフォルトの名無しさん:2007/07/05(木) 14:23:41
>>132
もっと早く
double area_(double (*fn)(double), double x0, double x1, int n)
{
int i;
double s = 0.0, x = x0, dx = (x1-x0)/n;
for (i = 0; i < n; ++i) {
s += dx * (*fn)(x);
x += dx;
}
return s;
}
134デフォルトの名無しさん:2007/07/05(木) 14:32:59
>>133
それだと誤差が累積してしまうのでは
135sage:2007/07/05(木) 14:33:26
>>131
ありがとうございました☆
136デフォルトの名無しさん:2007/07/05(木) 14:34:12
>>130
#include <iostream>
#include <iterator>
template <typename InputIterator, typename OutputIterator, typename Type>
OutputIterator
zcopy(InputIterator src, OutputIterator dst, Type value)
{
    for (;;) {
        *dst = *src;
        if (*src == value)
            break;
        ++dst;
        ++src;
    }
}
int main()
{
    int m1[] = { 1, 2, 3, 4, 5, 0 }, m2[10], m3[10];
    zcopy(m1, m2, 0);
    zcopy(m2, m3, 0);
    zcopy(m3, std::ostream_iterator<int>(std::cout, " "), 0);
    std::cout << '\n';
}
137136:2007/07/05(木) 14:36:11
すまん
#include <iostream>
#include <iterator>
template <typename InputIterator, typename OutputIterator, typename Type>
OutputIterator
zcopy(InputIterator src, OutputIterator dst, Type value)
{
    for (;;) {
        *dst = *src;
        if (*src == value)
            break;
        ++dst;
        ++src;
    }
    return dst;
}
int main()
{
    int m1[] = { 1, 2, 3, 4, 5, 0 }, m2[10], m3[10];
    zcopy(m1, m2, 0);
    zcopy(m2, m3, 0);
    zcopy(m3, std::ostream_iterator<int>(std::cout, " "), 0);
    std::cout << '\n';
}
138デフォルトの名無しさん:2007/07/05(木) 14:38:39
何方か123 124お願いします
139デフォルトの名無しさん:2007/07/05(木) 14:39:28
140デフォルトの名無しさん:2007/07/05(木) 14:39:27
>>132-133
本当にありがとうございました!
141デフォルトの名無しさん:2007/07/05(木) 14:48:32
何方か123 124お願いします
142デフォルトの名無しさん:2007/07/05(木) 14:49:34
>>137
こんな短時間でありがとうございます
助かりました
143デフォルトの名無しさん:2007/07/05(木) 14:53:10
>>123
#include <stdio.h>
char moji[]="ABCDEF〜XYZ"; /*大文字26*/
int main(void)
{
 char c1, c2;
 printf("moji:%s\n", moji);
 printf("開始位置==>");
 c1 = getchar();
 printf("終了位置==>");
 c2 = getchar();
 printf("表示:");
 moji[c2 - 'A' + 1] = '\0';
 printf("%s", &moji[c1]);
 if(c2 < c1)
 printf("%s", &moji[0]);
 return 0;
}
144takeru:2007/07/05(木) 15:48:01
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):幅優先探索を行うプログラムを作成、改良し、開始ノードと開始ノードから最も遠いノードの距離を求めよ。
               対象となるグラフのデータは以下のURLにある。
               http://www.ipl.t.u-tokyo.ac.jp/~kmatsu/lectures/2007B3ExperimentC/problem2.txt
               
[3] 環境
 [3.1] OS: Windows 
 [3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 2007.7.10
[5] その他の制限: 特になし

よろしくお願いします。
145デフォルトの名無しさん:2007/07/05(木) 15:53:15
東京大学かよ
146デフォルトの名無しさん:2007/07/05(木) 16:10:28
[1] 授業単元:c言語
[2] 問題:キーボードから1桁の整数データを順次入力しデータを印刷し
入力データの和を求め、最後にゼロのデータが入力されたら処理を終了し
入力データの和と個数を出力するプログラムをwhile文を用いて作成せよ

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ Microsoft Visual Studio 2005

 [3.3] 言語: C
[4] 期限:07年7月5日24時まで
[5] その他の制限:特になし
よろしくお願いします
147デフォルトの名無しさん:2007/07/05(木) 16:11:38
C言語
大文字を小文字に変換、小文字を大文字に変換するプログラムを関数を使ってしめせ。
ソラリス8
gcc
4時半までにお願いします。初心者なのでできれば詳しくお願いします。
148デフォルトの名無しさん:2007/07/05(木) 16:23:33
>>144
天下の東大の宿題なんて、3流大の俺には出来ないぽ
149デフォルトの名無しさん:2007/07/05(木) 16:43:40
CとC++の区別もつかず
2chに宿題丸投げするような東大工学部の学部学生がいるんだな
150デフォルトの名無しさん:2007/07/05(木) 17:35:34
何方か>>126をお願いします。
151デフォルトの名無しさん:2007/07/05(木) 18:24:21
[1] 授業単元:c言語
[2] 問題:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4515.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ Microsoft Visual Studio 2005
 [3.3] 言語: C
[4] 期限:07年7月6日AM10時
[5] その他の制限:特になし
よろしくお願いします
152デフォルトの名無しさん:2007/07/05(木) 18:54:16
>>146
#include <stdio.h>
int main(void){
  #define  BUF_SIZE  10
  char c[BUF_SIZE];
  int sum=0,cnt=0,ch;
  while(fgets(c,BUF_SIZE,stdin) && c[0]!='0'){
    if ('1'<=c[0]&&c[0]<='9') {
      sum+=c[0]-'0';
      cnt++;
      printf("input: %c\n",c[0]);
    }
    else
      printf("(´・ω・`)\n");
  }
  printf("count: %d, sum: %d\n",cnt,sum);
  return 0;
}
153151:2007/07/05(木) 19:42:51
制限つきました。
・同じ処理は関数化して処理するようにする。
・プロトタイプ宣言した関数内で使う変数が4つ以上の場合
変数を構造体にする。

という制限と共に、問題1と2を一緒にやる結果になりました。
あと問題の内容というか処理としては、
1を入力したらIPアドレスの表示
2を入力したらホスト名の取得
3を入力したら終了
という処理にすることになりました。

よろしくお願いいたします。
154デフォルトの名無しさん:2007/07/05(木) 19:51:17
何方か>>126をお願いします。
155デフォルトの名無しさん:2007/07/05(木) 20:07:06
>>154
あまり催促すると回答者の心証が悪くなるから気をつけようぜ

まあ俺はさっぱりわからんがググったら同じ問題があった
http://bbslog.realint.com/?serverid=2&bbsid=pointc&page=79
156デフォルトの名無しさん:2007/07/05(木) 20:17:42
>>155さん
はい。申し訳ありませんでした・・

どうもありがとうございます。
157デフォルトの名無しさん:2007/07/05(木) 23:13:23
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
以下をメンバに持つ構造体を定義し、仮想商品20個の商品名と利益率を利益率の高い順に一覧表にせよ。但し、利益率とは(利益/仕入値)である。

・商品コード(整数)
・商品名(文字列)
・価格の構造体(仕入値、売値(共に整数)からなる)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: [2007年7月6日17:00まで]
[5] その他の制限:91代目で書き込んだのですが、力不足で理解できませんでした。
         もう一度お願いします。
158デフォルトの名無しさん:2007/07/05(木) 23:31:21
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4516.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:BCC 2.4.1.0
 [3.3] 言語:C
[5] その他の制限:まだ初歩段階レベルの学習

よろしくお願いします
159デフォルトの名無しさん:2007/07/05(木) 23:40:02
前スレの993ですが、
iの公式が間違っていたので正しい式に直したらきちんとした値が出力されました。
アドバイスしていただいた方々ありがとうございました。

#include <iostream>
int main()
{
double i, i2, v3 = 0.0, v32, tk, v0 = 0.0, t1, t2, dt = 0.0001, t;
int N = 100;
i = 0.0;
v3 = 0.0;
t = dt;
std::cout << "t(" << t << "), i = " << i << ", V3 = " << v3 << std::endl;
do {
if (v3 < 5)
v0 = 10.0;
else if (v3 > 7)
v0 = 0.0;
i2 = i + (v0 - 100.0 * i - v3)*dt;
v32 = v3 + 1000.0 * i * dt;
i = i2;
v3 = v32;
t += dt;
std::cout << "t(" << t << "), i = " << i << ", V3 = " << v3 << std::endl;
} while (--N);
}
作りなおしたソースが以上になったのですが、この出力の結果をfprintf関数でファイルに出力するにはどうすればいいのでしょうか?
160デフォルトの名無しさん:2007/07/05(木) 23:40:29
>>158
変数の範囲(-2147483648〜2147483648)で正常な計算が行えることを確認する
-2147483648〜2147483647
の間違いだろなこれ
161デフォルトの名無しさん:2007/07/06(金) 00:01:22
>>158
(2)

#include <stdio.h>
#include <stdlib.h>

int main() {
int a, b;
char i, buf[64];

printf("変数a >");
scanf("%s", buf);
a = atoi(buf);

printf("変数b >");
scanf("%s", buf);
b = atoi(buf);

printf("a + b: %d\n", a+b);
printf("a * b: %d", a*b);
return 0;
}
162デフォルトの名無しさん:2007/07/06(金) 00:47:33
>>158
(1)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4517.txt

>>161
> char i, buf[64]
この i は消し忘れの残りカス。sry
163デフォルトの名無しさん:2007/07/06(金) 00:52:37
うほ、また残りカスがあったわ。申し訳ねえ。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4517.txt
8行目 char i, j, flg, buf[64];
ここ -flg
164デフォルトの名無しさん:2007/07/06(金) 01:07:49
>>159
例えば 1.txt に出力する場合
#include <iostream>
#include <fstream>

int main()
{
double i, i2, v3 = 0.0, v32, v0 = 0.0, dt = 0.0001, t;
int N = 100;

std::ofstream ofs("1.txt");

i = 0.0;
v3 = 0.0;
t = dt;
ofs << "t(" << t << "), i = " << i << ", V3 = " << v3 << std::endl;
do {
if (v3 < 5)
v0 = 10.0;
else if (v3 > 7)
v0 = 0.0;
i2 = i + (v0 - 100.0 * i - v3)*dt;
v32 = v3 + 1000.0 * i * dt;
i = i2;
v3 = v32;
t += dt;
ofs << "t(" << t << "), i = " << i << ", V3 = " << v3 << std::endl;
} while (--N);
}
165デフォルトの名無しさん:2007/07/06(金) 01:33:11
>>158
初心者っぽくやってみた

#include <stdio.h>
int main(void){
int num,i,j=2,temp_min,temp_max,min[3],max[3];
while(num){
while(j){
scanf("%d",&num);
min[j]=num;
max[j]=num;
j--;
}
scanf("%d",&num);
temp_min=min[0]; temp_max=max[0];
for(i=0;i<3;i++){
if(min[i]>temp_min) temp_min=min[i];
if(max[i]<temp_max) temp_max=max[i];
}
for(i=0;i<3;i++){
if((min[i]==temp_min)&&(min[i]>num)) min[i]=num;
if((max[i]==temp_max)&&(max[i]<num)) max[i]=num;
}
}
for(i=0;i<3;i++) printf("%d ",min[i]);
printf("\n");
for(i=0;i<3;i++) printf("%d ",max[i]);
return 0;
}
166デフォルトの名無しさん:2007/07/06(金) 02:04:29
>>48
48のだと結果が0になっていまうんですけど。
何をいれても0
167デフォルトの名無しさん:2007/07/06(金) 02:16:18
>>166
普通に正しい結果が出るが・・・
168デフォルトの名無しさん:2007/07/06(金) 02:18:36
なんで私のはダメなんでしょう・・・?
169デフォルトの名無しさん:2007/07/06(金) 02:20:06
[1] 授業単元:c言語
[2] 問題: 対象ファイルより基数ソートでの並び替えならびに出力を行い時間を計る
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ Microsoft Visual Studio 2005
 [3.3] 言語: C
[4] 期限:07年7月6日AM12時
[5] その他の制限:関数の使用
         入力ファイル: sort.txt
出力ファイル: sort_c.txt
補足:並べ替えする対象は1-99999の数値がランダムに1001個ならんでおり
   一つずつ改行されている

初めてお願いします。説明等不足があるかもしれませんがよろしくお願いします。
   
170デフォルトの名無しさん:2007/07/06(金) 02:22:08
>>168
コンパイラ何?
171デフォルトの名無しさん:2007/07/06(金) 02:23:47
確かgccです
172デフォルトの名無しさん:2007/07/06(金) 02:27:02
gccでも問題なし
もう一回コンパイルしてみれば?
173デフォルトの名無しさん:2007/07/06(金) 02:29:34
エラーが出て、全部のプログラム見ても大丈夫なんですけど。
174デフォルトの名無しさん:2007/07/06(金) 02:34:28
じゃあ入力の仕方が変なんじゃね?
175デフォルトの名無しさん:2007/07/06(金) 02:37:58
そうかも知れないですね。可能性はあります。いちいち再起動が憂鬱です。
176デフォルトの名無しさん:2007/07/06(金) 04:54:13
[1] 授業単元: Cプロ
[2] 問題文
キーボードから順次入力された正の整数を0が入力されるまで、配列に順番に格納し、入力された(0を除く)値の平均値(実数)に、最も近い値が何番目に入力されたどういう値であるかを表示するプログラムを作成せよ。

[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン:(gcc)
 [3.3] 言語:C
[4] 期限: 7月9日(月)
[5] 実行例
  数字(1)を入力してください 2
  数字(2)を入力してください 5
  数字(3)を入力してください 3
  数字(4)を入力してください 1
  数字(5)を入力してください 0
  入力された数字の平均は2.75です
  これは、3番目に入力された3に最も近いです

よろしくお願いします。

  
177デフォルトの名無しさん:2007/07/06(金) 04:59:18
>>176
その課題、そのままそっくりのを少し前に見かけた気がする・・・ちと過去ログあさってくる。
178デフォルトの名無しさん:2007/07/06(金) 05:38:05
>>176
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4518.c

2つ前のスレにあったけど、レスがされていなかったんでやってみた。
きんもぉ〜☆なソースですまそ。平均に近い数値が2つあったとしても
入力された順番が先の方のみ対応。
179デフォルトの名無しさん:2007/07/06(金) 05:41:00
180176:2007/07/06(金) 06:35:52
>>177 >>178 >>179
解答ありがとうございます。実は、最初に書いておかなくて、申し訳ないんですが、179の解答で使用されているatoi関数、fgets関数、malloc関数、stdin関数、realloc関数、sizeof演算子はまだ授業で習っておりません。
別の方法(できれば初歩的な方法で)表現できないでしょうか…
181デフォルトの名無しさん:2007/07/06(金) 06:47:24
182デフォルトの名無しさん:2007/07/06(金) 06:56:01
int nNewmeric = (int)(cBuf[0]-'0');
if( 0 <= nNewmeric && nNewmeric <= 9 )
{// 整数だった
// バッファに格納
}
else
{// それ以外
  printf("整数って言ってるだろボケ\n");
}

atoiの代わりは上のコードでなんとかなる
malloc習ってないなら固定長でもいいんじゃ?
ちと、会社行くんであとはまかせた。
183デフォルトの名無しさん:2007/07/06(金) 06:58:48
>>182
今日は行頭の # はないんですか?w
184デフォルトの名無しさん:2007/07/06(金) 07:19:16
【即会い!!】

管理人が使用してみて、即出会えた出会い系サイトのみを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトを厳選して薦めております。
↓↓↓
【ブログ】http://deaiload.blog109.fc2.com/
185デフォルトの名無しさん:2007/07/06(金) 07:34:01
>>183
シャープフォビア?w
186デフォルトの名無しさん:2007/07/06(金) 07:43:38
187デフォルトの名無しさん:2007/07/06(金) 07:47:09
188デフォルトの名無しさん:2007/07/06(金) 08:00:06
単語帳から、少なくとも2語以上の単語を含む合成語を
削除するプログラムを教えてください!!

ひと 人
やま 山
た 田
やまだ 山田
たろう 太郎
かんり 管理
かんりにん 管理人
かんりにん 管理者
やまだたろう 山田太郎
やまだはなこ 山田花子

↓ 使用後

ひと 人
やま 山
た 田
やまだ 山田
たろう 太郎
かんり 管理
かんりにん 管理者
やまだはなこ 山田花子
189108:2007/07/06(金) 08:10:39
失礼な、私がそんなスペリングミスなどするものか。
190デフォルトの名無しさん:2007/07/06(金) 08:25:38
>>189 釣れたw
191デフォルトの名無しさん:2007/07/06(金) 10:08:38
>>188
山と田はあるが山田を消さないためには山田は合成語ではない、という
情報が必要だ。それだけでは無理だな。
192188:2007/07/06(金) 11:01:46
少なくとも2語以上の単語を含む合成語です
193デフォルトの名無しさん:2007/07/06(金) 11:05:34
>>192
だから、山田は山と田を含んでいるだろう
意味分かってる?
194デフォルトの名無しさん:2007/07/06(金) 11:06:05
>>188の結果はそれに応じて処理されていないと思うんだが・・・
195188:2007/07/06(金) 11:25:02
>>193
山田は、一語の単語しか含みません

山田人、山田山は2語の単語を含みます
山田川は、2語の単語を含みますが、単語帳から合成できません
196デフォルトの名無しさん:2007/07/06(金) 11:30:10
>>195
> 山田は、一語の単語しか含みません
で、それをどうやったら知ることができるんでしょうか?
えーと、素のCだけで、日本語の「単語」を認識できると思ってるの?
197188:2007/07/06(金) 11:31:16
単語帳(合成語を含む)は188にのっています
198デフォルトの名無しさん:2007/07/06(金) 11:32:48
>>197
で、>>188のデータの単語と合成語をどうやって区別すんの?
山田は単語で、管理人は合成語、と。
どっちも単語帳の別の二語を足したもんだよね?
199デフォルトの名無しさん:2007/07/06(金) 11:34:07
まさか二語以上って二文字以上って意味?
200デフォルトの名無しさん:2007/07/06(金) 11:34:33
>>199
天才現る
201188:2007/07/06(金) 11:34:46
合成語は、2文字以上の単語を含むものです
202デフォルトの名無しさん:2007/07/06(金) 11:53:01
>>188
げんご かんきょう とかも かいたほうがいいと おもうよ
203188:2007/07/06(金) 11:55:06
標準のC++でおねがいします
204デフォルトの名無しさん:2007/07/06(金) 13:28:15
>>161 >>162 >>165
ありがとうございました
205デフォルトの名無しさん:2007/07/06(金) 13:32:09
>山田は、一語の単語しか含みません
>>188を見ると、管理って単語と人って単語があるよね。これらを合わせた管理人は合成語になるんだよね。
でも山って単語と田って単語があるようだけど、山田は山って単語と田って単語を合わせた合成語ににはならないんだよね。何で?
管理+人は合成語で山+田は合成語じゃないって事をどうやって知るの?
206デフォルトの名無しさん:2007/07/06(金) 13:32:40
[1] 授業単元:C言語
[2] 問題
[2.1] 問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4523.txt
[2.2] 対象ファイル http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4522.txt
 [2.3] 雛形ソース http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4524.txt
[3] 環境
 [3.1] OS: windows xp
 [3.2] VC 6.0
 [3.3] 言語:C言語
[4] 期限: ([2007年07月06日15:00まで]
[5] その他の制限:無し

169です。課題の提出が少し遅くなったのでもう一度お願いします。
前回の書き込みが少し見づらかったと思うので訂正します。
よろしくお願いします。
207188:2007/07/06(金) 13:37:54
管理は2語で、山と田は一語です
208デフォルトの名無しさん:2007/07/06(金) 13:39:39
ひらがなも見ろと言うことか?
209188:2007/07/06(金) 13:43:14
ひらがなは関係ないです
210デフォルトの名無しさん:2007/07/06(金) 13:43:16
>199が書いてる通り語を文字の意味で使ってる日本語の不自由な可哀想な子なんだろ。
211188:2007/07/06(金) 13:46:40
ひらがなは関係ないです
212デフォルトの名無しさん:2007/07/06(金) 13:48:15
「2語以上の単語を含む合成語を削除する」んだよね。
山と田は1語なら山+田は1+1=2語になるよね。
2語以上なら2語も含まれるから削除されると思うけど。違う?

>>208
(ひと 人)と(かんり 管理)で(かんりにん 管理人 )が削除されてるよ。
(ひと 人)で無く(にん 人)ならわかるんだけど。

>>210
どうやらそうらしいね。
213188:2007/07/06(金) 13:48:23
管理は一語で、山と田は2語です
214188:2007/07/06(金) 13:49:52
管理は一語で、山と田は2.5語です
215188:2007/07/06(金) 13:51:07
管理は野イチゴで、山と田は2.5語です
216デフォルトの名無しさん:2007/07/06(金) 13:51:38
188もういい
217188 真:2007/07/06(金) 13:52:16
単語長が2字以上のものを含むヤツです
218188 真:2007/07/06(金) 13:54:22
単語長が3字以上のもんを含むヤシです ヤシ
219188 真:2007/07/06(金) 13:57:29
「管理」と「人」を足すと、管理人となるけど、これが野イチゴなんです。ちなみにラッキーカラーは赤です。
220デフォルトの名無しさん:2007/07/06(金) 13:59:32
あああ orz

どなたか206もお願いします
221”管理”人:2007/07/06(金) 14:02:22
2ちゃんで名前を管理人にすると変換されました
222デフォルトの名無しさん:2007/07/06(金) 14:06:05
>>206
・ソートにかかった時間は成績に反映します
がんばれ
223デフォルトの名無しさん:2007/07/06(金) 14:08:52
ファイル出力する際にフォルダを指定するにはどうすればいいのでしょうか
224デフォルトの名無しさん:2007/07/06(金) 14:11:09
225デフォルトの名無しさん:2007/07/06(金) 14:12:24
FILE *fp;
int n, a[128];
fp = fopen("array.txt", "r");
n = 0;
while(fgets(buf, 32, fp)) {
a[n++] = atoi(buf);
}
fclose(fp);
qsort(..., n, compare);
226188(真):2007/07/06(金) 14:13:16
ヒント出すので、188をつくってくれ
高速な基数ソートのやりかた

char tmp[40000];
tmp[i]をゼロクリアする
入力データをdとするとき、tmp[d]に1を加える
すべてのデータが処理できたら
tmp[0]からtmp[40000]の数値分だけ出力する
227169 ◆NPjWSW9EXI :2007/07/06(金) 14:13:55
169 = 206 =220
お願いしてる立場なのにすみません
信じて待ってみます
228188(真):2007/07/06(金) 14:15:46
>>227
ヒント出したからあとは中学生でも出来るよ
229デフォルトの名無しさん:2007/07/06(金) 14:16:41
山田太郎は
山 田 太郎なのか
山田 太郎なのか
230デフォルトの名無しさん:2007/07/06(金) 14:17:55
山田 太郎は、芸能人
231デフォルトの名無しさん:2007/07/06(金) 14:19:05
>229
太郎が二文字の時点でどっちでもいいだろ。
232デフォルトの名無しさん:2007/07/06(金) 14:19:24
山 、田 、太 、郎、 山田、太郎、 山田太

が辞書に入っていたら、単語帳が最長になる、

山田太 郎 としてください
233225:2007/07/06(金) 14:21:26
fp = fopen("s_array.txt", "w");
while(n) {
fprintf("%d\n", a[--n]);
}
fclose(fp);
234デフォルトの名無しさん:2007/07/06(金) 14:22:39
>>231
うむ
235188(真):2007/07/06(金) 14:25:54
>>227
あと高速化できるのは、ファイルをバイナリで一度にメモリに読み込むとか、
読み込みと、足し算の処理をマルチスレッド化することだな
236169 ◆NPjWSW9EXI :2007/07/06(金) 14:31:04
225,226,233,235,ありがとうございます。

225-233
なのですが文字列の格納先のアドレスがbufのところがわからなく、
エラーになってしまいます><

237デフォルトの名無しさん:2007/07/06(金) 14:33:04
char buf[32];
238169 ◆NPjWSW9EXI :2007/07/06(金) 14:38:33
atoiとqsortの識別子を教えていただけませんか><

理解しようとしたのですができませんでした
239169 ◆NPjWSW9EXI :2007/07/06(金) 14:39:10
失礼しました識別子じゃなくてどんな風に定義すればいいですか?
240デフォルトの名無しさん:2007/07/06(金) 14:40:45
>>239
#include <stdlib.h>でOK
241169 ◆NPjWSW9EXI :2007/07/06(金) 14:46:09
ありがとうございます!
239は解決しました!
以下 その後でたエラーです
ソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4525.txt

エラー
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4526.txt
242デフォルトの名無しさん:2007/07/06(金) 14:46:44
>>226
これか
/*ソート開始*/
fp = fopen("array.txt", "rt");
while (fgets(buf, 32, fp)) {
tmp[atoi(buf)]++;
}
fclose(fp);
fp = fopen("s_array.txt", "wt");
for (i = 0; i < 40000; i++)
{
while (tmp[i]--)
{
fprintf(fp, "%d\n", i);
}
}
fclose(fp);
/*ここまで*/
243デフォルトの名無しさん:2007/07/06(金) 14:48:01
>>241
やったね。fprintfの行をfprintf(fp, "%d\n", a[n--]); に修正。
qsortをマニュアル見て修正。やってみそ
244188(真):2007/07/06(金) 14:53:11
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main(void)
{
time_t timer1,timer2; /*変数宣言*/

time(&timer1);

/*処理を記述 --- Start--- */
FILE *fp;
int n, a[40000];
fp = fopen("array.txt", "r");
char buf[32];

for(n=0;n<40000;n++)a[n]=0;

while(fgets(buf, 32, fp)) {
n = atoi(buf);
a[n]++;
}
fclose(fp);
fp = fopen("s_array.txt", "w");
for(n=0;n<40000;n++)for(int i=0;i<a[n];n++)
fprintf(fp,"%d\n", n);
fclose(fp);
/*処理を記述 --- End --- */
time(&timer2);
printf("経過時間: %f秒\n",difftime(timer2,timer1));
return 0;}
245169 ◆NPjWSW9EXI :2007/07/06(金) 14:57:43
242,244ほんとーーーーにありがとうございました!!!

ぎりぎり間に合いました!!!
二つともをzip形式固めてで提出させていただきます

2chの人ほんとにいいひとだー> <,
246デフォルトの名無しさん:2007/07/06(金) 14:57:48
教科:プログラミング入門

問題1
5人の成績管理プログラムを作成せよ。
全員の生徒の学籍番号、国語、算数の成績を入力する。(3つの配列を定義)
検索機能として、学籍番号を入力した際、該当者の2教科の成績と平均点を出力する。
学籍番号に0が入力されるまで繰り返し検索できるようにする。

問題2
10個の整数を入力し、小さい順に並べ替えよ。
バブルソートを使用すること

OS:XP
コンパイラ:cygwin
言語:1番、2番共にC++です。
どなたかよろしくお願いします
247244:2007/07/06(金) 15:11:34
まちがえてしもた
for(n=0;n<40000;n++)for(int i=0;i<a[n];n++)

for(n=0;n<40000;n++)for(int i=0;i<a[n];i++)

だった すまん
248デフォルトの名無しさん:2007/07/06(金) 15:14:17
244をそのまま出すと、ソートが正しく行われない為、零点かも・・・わざとじゃないよ
249169 ◆NPjWSW9EXI :2007/07/06(金) 15:39:03
OKですギリギリごたごたにまぎれて変更できました^^
三時すぎてたのにありがとうございます。
250250:2007/07/06(金) 15:50:00
問題文:C++で次の微分方程式を数値計算を用いて解け。
アルゴリズムはルンゲクッタ法または後退オイラー法を使用すること。
・3*d^2/dt^2+dx/dt+2x=2
・x(t=0)=0
・dx/dt(t=0)=0
わかる方いらっしゃいましたらおねがいします!
251250:2007/07/06(金) 15:55:38
250の修正です
・3*d^2x/dt^2+dx/dt+2x=2です
d^2x/dt^2のxが抜けてましたすみません
252デフォルトの名無しさん:2007/07/06(金) 16:07:44
>>249
自分でやってないのがばれた時点でマイナスだろうけどね
253デフォルトの名無しさん:2007/07/06(金) 17:24:22
>>188
なんかイマイチだが、とりあえず答えは出る
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4527.txt

ちなみに区切りは全角空白で、漢字1文字は全部同じ長さだと仮定してる
手抜きコードなので注意
254デフォルトの名無しさん:2007/07/06(金) 18:13:00
255デフォルトの名無しさん:2007/07/06(金) 18:58:49
[1] 授業単元:プロC
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4529.txt
上のプログラムを改良して、コマンドライン引数で状態名を与えるようにせよ。
たとえば、 コマンド名 blue green yellow orange red
のように実行すると、blue green yellow orange red の順に変化するようにせよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:来週まで
[5] その他の制限:ないです

どうかよろしくお願いします
256デフォルトの名無しさん:2007/07/06(金) 19:51:25
>>255
- n = sizeof(status_name_table) / sizeof(status_name_table[0]);
- while (n > 0) {
- nbsp; nbsp; n--;
- nbsp; nbsp; printf("Condition %s.\n", status_name_table[n]);
nbsp; nbsp; nbsp; sleep(1);
nbsp; }
---------------------------------------------------------------------
+ n = 1;
+ while (n < argc -1) {
+ nbsp; nbsp; printf("Condition %s.\n", argv[n++]);
nbsp; nbsp; nbsp; sleep(1);
nbsp; }
257256:2007/07/06(金) 19:52:16
うわすまん
- n = sizeof(status_name_table) / sizeof(status_name_table[0]);
- while (n > 0) {
-     n--;
-     printf("Condition %s.\n", status_name_table[n]);
      sleep(1);
  }
---------------------------------------------------------------------
+ n = 1;
+ while (n < argc -1) {
+     printf("Condition %s.\n", argv[n++]);
      sleep(1);
  }
258デフォルトの名無しさん:2007/07/06(金) 19:59:10
[1] 授業単元:C言語実習課題
[2] 問題文(含コード&リンク):横棒グラフ
・10人分の氏名と売上台数を入力して、順位をつけて、
順位の昇順(売上1番から)売上台数を横棒グラフにして表示する。
・星印は、5台で1個とする。5に満たないものはなし。
(たとえば、23台なら星4つ)
・250台以上は、全て星50個とする。
・売り上げが同じなら氏名の昇順とする。文字列関数(strcmp)を用いる。
・氏名は、15文字以内とする。
[3] 環境
 [3.1] OS: WindowsVista
 [3.2] コンパイラ名とバージョン: Visual Studio 2006
 [3.3] 言語: C++
[4] 期限: 7月20日
[5] その他の制限:配列を使用
よろしくお願いします。
259デフォルトの名無しさん:2007/07/06(金) 20:02:29
>>258
いきなり星印って言われても、
実行画面をどうしたいのかサッパリ分からないんだが。
260デフォルトの名無しさん:2007/07/06(金) 20:05:19
>>257さん
ありがとうございます!!
261デフォルトの名無しさん:2007/07/06(金) 20:17:28
>>258
> [1] 授業単元:C言語実習課題
> [3.3] 言語: C++

> コンパイラ名とバージョン: Visual Studio 2006

突っ込みどころが満載過ぎる
262デフォルトの名無しさん:2007/07/06(金) 20:47:32
【即会い!!】

管理人が使用してみて、即出会えた出会い系サイトのみを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトを厳選して薦めております。
↓↓↓
【ブログ】http://deaiload.blog109.fc2.com/
263デフォルトの名無しさん:2007/07/06(金) 21:05:33
以下の各機能を果たす整数型関数を書け。
a)カ氏温度を受け取って、セ氏温度を返す関数celsius。
b)セ氏温度を受け取って、カ氏温度を返す関数fahrenheit。
補足:カ氏温度をF、セ氏温度をCとすると、F = (9 / 5)*C + 32。
c)これらの関数を使って、0から100度までのセ氏温度に対応するカ氏、および32度から212度までカ氏温度に対応するセ氏温度をそれぞれ表の形にプリントするプログラムを書け。ただし、表は読みやすいように行数を最小限にすること。
よろしくおねがいします。
264 ◆KqBLZKKJjc :2007/07/06(金) 21:19:01
すいません こんなのもお願い

[1] 授業単元:プログラミング入門
[2] 問題 : 100万までの隣り合う素数の差が、
      最大のものを出力するプログラムを作成せよ
      
例)19-17,23-19

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ:stady C
 [3.3] 言語:C
[4] 期限:2007年07月09日12:00まで
265デフォルトの名無しさん:2007/07/06(金) 21:21:56
>>258 C言語&scanfのエラー処理無し
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define RECORD_NUM 10
typedef struct tag_record_t{
char name[101];
int result;
}record_t;
int record_compare(const void *va, const void *vb){
const record_t *a, *b;
a=va;b=vb;
if(a->result==b->result) return strcmp(a->name, b->name);
return b->result-a->result;
}
void record_display(const record_t *record){
int i;
printf("%8s [%3d]", record->name, record->result);
for(i=0;i<50 && i<record->result/5;i++) printf("*");
printf("\n");
}
int main(void){
record_t record[RECORD_NUM];
int i;
printf("氏名、売上台数を入力して下さい\nex. YamadaTarou 23\n");
for(i=0;i<RECORD_NUM;i++) scanf("%s %d", record[i].name, &(record[i].result));
for(i=0;i<RECORD_NUM;i++) record_display(&record[i]);
qsort(record, RECORD_NUM, sizeof(record[0]), record_compare);
printf("------------------------------------------------------------\n");
for(i=0;i<RECORD_NUM;i++) record_display(&record[i]);
return 0;
}
266デフォルトの名無しさん:2007/07/06(金) 21:45:14
[1] 授業単元:c言語基礎&応用
[2] 問題:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4531.txt
 [2.1]ソース:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4530.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ Microsoft Visual Studio 2005
 [3.3] 言語: C
[4] 期限:07年7月9日 午前10時
[5] その他の制限:特になし

どうかお願いいたします
267デフォルトの名無しさん:2007/07/06(金) 21:56:00
268デフォルトの名無しさん:2007/07/06(金) 21:58:17
>>266
> 現在のソースコードのすべての行にコメントをつける。
majikayo
269デフォルトの名無しさん:2007/07/06(金) 22:01:22
>>267
xとyは使ってないから消しても問題なし
270デフォルトの名無しさん:2007/07/06(金) 22:19:44
>>4
期限が7月11日までに延びましたので、再度依頼させていただきます
お暇がありましたら、回答の方よろしくお願いします
271デフォルトの名無しさん:2007/07/06(金) 22:54:08
>>266
ひでぇソースだな
そういう教官に教わらなきゃいかんとはご愁傷様
272デフォルトの名無しさん:2007/07/06(金) 22:59:40
問題文[1] 授業単元:C言語
[2] 問題文: :入力した人の年齢の合計と平均を出力させるプログラムを作成して下さい。
※入力時に累積の人数を表示 ※年齢入力時に数字属性と範囲のチェックを行う※nullは不許可とする
※0 〜 9 の文字のみで、かつ 1 〜 99 の範囲のみを許可する※年齢の平均は小数点第二位まで出力する
※名前に空が入力された場合に年齢の合計と平均を出力してプログラムを終了する
−実行結果−

1人目の名前:abc
1人目の年齢:
入力エラー(年齢を入力してください)
1人目の年齢:30

2人目の名前:def
2人目の年齢:abc
入力エラー(年齢は数字のみで入力してください)
2人目の年齢:20

3人目の名前:ghi
3人目の年齢:0
入力エラー(年齢は1から99の範囲で入力してください)
3人目の年齢:25

4人目の名前:
年齢の合計は75歳、年齢の平均は25.00歳

[3] 環境
 [3.1] OS:Windows
 [3.2] LCpad
 [3.3] 言語: C
[4] 期限: 2007年7月9日まで
[5] 初心者です。
273デフォルトの名無しさん:2007/07/06(金) 23:06:08
>>272
>>3と同一人物?
274デフォルトの名無しさん:2007/07/06(金) 23:07:01
>>268 >>271
分からないとこあったら聞けっていうから
ここが分からないって聞いても
「ネットで調べてください」で終わり。
そのくせ期限までやらないと、なぜ終わらなかったのかの理由と今後の対策を
レポート形式で提出。
レポート何回出したことやら・・・・
275デフォルトの名無しさん:2007/07/06(金) 23:13:04
まぁ、特にプログラミングなんてネットで調べて出てくることなら
自分で調べるのは当たり前でしょ。
276デフォルトの名無しさん:2007/07/06(金) 23:16:28
まあレポートは途中まででも出すことに意味があるから
別におかしいことでもない
277デフォルトの名無しさん:2007/07/06(金) 23:53:06
>264
隣り合う素数の差って答えは一つの差になるんじゃないの?
それとも19をはさんで23と17の差が最大ってこと?
278デフォルトの名無しさん:2007/07/07(土) 00:04:35
>>266
プログラムに関する「コメント」を書いてみたお
1) 最後に(どうでもよい)_getch()を一回使うためだけにconio.hをインクルード、
 VC++依存
2) fgets()でいいところをgets_s()なんてものを使っているせいでVC++8.0依存
3) 最初に画面をクリアしていないのでコマンドプロンプトから起動すると
 画面が崩れる。当然最後に画面の後始末をするという考えも無い
4) 画面のクリア処理が不十分なので「指定が違いますせん!」などという楽しい
 メッセージが見られたりする
5) 使うまでも無いgotoの嵐
6) 入力が[A-Ca-c][1-3]の範囲に入っていることを確認するという下らない仕事の
 ために、main()の6行と関数2つも使っている。涙を禁じえない
7) 関数Locate()で、戻り値をBOOLにして単にSetConsoleCursorPosition()の
 戻り値をそのまま返してやれば3行減るのに無駄にintに変換。
 で、わざわざそんなことをやっているが、Locateの戻り値をチェックしている
 箇所は実は1箇所もない

秋田からそろそろやめるわ
279デフォルトの名無しさん:2007/07/07(土) 00:56:44
>254
たすかりました!ありがとうございました!
280デフォルトの名無しさん:2007/07/07(土) 04:49:01
>>266
コメントのそろえ方がタブ使ってたり空白だったりばらばら
関数や変数の命名規則がめちゃくちゃ
Locale() (大文字かよ)
boardshow (board_show()じゃない)

↓コメントが嘘。

/*
指定した位置に、既に石が置かれているかどうかを調べる関数です。
対応するBoard[row][col]が0以外ならばすでに石が置かれているので
-1を返します。0ならば0を返します。
*/
〜 中略 〜
if ( Board[row][col] == 0 )
nRet = TRUE;
else{
nRet = FALSE;
〜 以下略 〜
281 ◆KqBLZKKJjc :2007/07/07(土) 04:51:25
>>277
例が分かりづらくてスマン
あくまでも隣り合う素数の差であります。
3-2=1
5-3=2
7-5=2
11-7=4
みたいに、ある素数から一つ手前の素数を引いたのをそれぞれ求めて、
その中から最大の結果だけを出力するようにしたいんです。

282デフォルトの名無しさん:2007/07/07(土) 05:20:12
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
static bool isPrime(int no)
{
for (int ic = 3; ic * ic <= no; ic += 2) if (no % ic == 0) return false;
return true;
}
static int getNextPrime(int base)
{
int no;
for (no = base + 2; ! isPrime(no); no += 2) ;
return no;
}
static void primeDist(int limit)
{
struct Dist {int upper; int lower; int dist;} maxDist = {3, 2, 1};
for (int prime = 3; prime <= limit;) {
int nextPrime = getNextPrime(prime);
if (nextPrime <= limit) {
struct Dist tmp = {prime, nextPrime, nextPrime - prime};
if (tmp.dist > maxDist.dist) maxDist = tmp;
}
prime = nextPrime;
}
printf("%d-%d:%d\n", maxDist.upper, maxDist.lower, maxDist.dist);
}
int main(int argc, char ** argv)
{
if (argc < 2) return 1;
int limit = atoi(argv[1]); primeDist(limit); return 0;
}
283282:2007/07/07(土) 05:30:53
>>282
Usage: ./a.out 1000000
きそう、100万までなら0.5秒で終わるのに1000万だと10秒、2000万だと30秒掛かるぜ。
284デフォルトの名無しさん:2007/07/07(土) 11:31:47
>264
#include <stdio.h>
#define N 1000000
int prime[100000];
int main(void)
{
    int i, j, cnt = 0, max, max_index = 0;
    prime[cnt++] = 2;
    prime[cnt++] = 3;
    for(i=5; i<N; i+=2) {
        int flag = 0;
        for(j=1; prime[j]*prime[j] <= i; j++) {
            if(i%prime[j]==0) {
                flag = 1;
                break;
            }
        }
        if(!flag) prime[cnt++] = i;
    }
    max = prime[1] - prime[0];
    for(i=1; i<cnt-1; i++) {
        int temp = prime[i+1] - prime[i];
        if(temp > max) {
            max = temp;
            max_index = i;
        }
    }
    printf("%d - %d = %d\n", prime[max_index+1] , prime[max_index], max);
    return 0;
}
285デフォルトの名無しさん:2007/07/07(土) 11:33:22
>#define N 1000000
>int prime[100000];
プ
286デフォルトの名無しさん:2007/07/07(土) 11:36:02
>282より>284が遅いのはなんでなんだぜ。
287デフォルトの名無しさん:2007/07/07(土) 11:42:51
>285
プ
288 ◆KqBLZKKJjc :2007/07/07(土) 11:49:12
>>282

・・・速いッスね
ありがとうございます。
こんなに速く回答いただけて、嬉しいです。


ありがとうついでに、
あつかましいのを承知でお願いしてもいいですか?

このプログラム、自分じゃ手に余ってしまいます。(ムズイ)
上からどんな動作をしているのかを説明してもらえますか?

289デフォルトの名無しさん:2007/07/07(土) 11:55:33
>>274
質問の仕方を工夫する訓練なんだよ
無料でなんでも教えてくれるのは学生の間だけだぜ
290デフォルトの名無しさん:2007/07/07(土) 11:56:06
>286
100万程度じゃ差は感じられないだろ。
Nを20000000、prime[2000000]にしてやって見れば282とどっちが速いか分ると思うけど。
291デフォルトの名無しさん:2007/07/07(土) 11:56:28
見つけた素数を配列に入れて覚えとくと
Nがデカいときには効いてくるが、メモリもアホみたいに食う罠
292デフォルトの名無しさん:2007/07/07(土) 12:01:24
>>288
isPrime()
素数判定関数。毎回その数の平方根以下の全ての奇数の剰余を求めるから遅い。
getNextPrime()
次の素数取得関数。引数には3以上の奇数以外を与えてはならないのにガードも注釈も無い。
primeDist()
素数間距離の最長を見つける関数。引数には見つける範囲の上限を与える。
但し、仮令2以下の数値を与えても(初期値として固定で持っている)2から3の間の1が最長という結果を出力する。
main()
コマンドライン引数から素数間距離の最長を見つける範囲の上限を取得して上記primeDist()を呼ぶ。
引数なしで起動したときに何の説明もしてくれないと言う、これも困った我が儘仕様。
293デフォルトの名無しさん:2007/07/07(土) 12:05:01
>>264のstady CってのはStudy CとかいうCのインタプリタのことか?
たぶんC99には対応してないんじゃないかな
294188:2007/07/07(土) 12:40:59
単語帳の処理ありがとうございました
295デフォルトの名無しさん:2007/07/07(土) 12:57:46
素数なら篩が最速だろ
#include <stdio.h>
#define N 1000000
char sieve[N];
int main(void)
{
int i, j, temp1, temp2, max, m1, m2;
sieve[0] = sieve[1] = 1;
for(i=2; i*i<N; i++) {
if(sieve[i]==0) {
for(j=2*i; j<N; j+=i) sieve[j] = 1;
}
}
m1 = temp1 = 3;
m2 = temp2 = 2;
max = m1 - m2;
for(i=5; i<N; i++) {
if(sieve[i]==0) {
temp2 = temp1;
temp1 = i;
if(temp1 - temp2 > max) {
max = temp1 - temp2;
m1 = temp1;
m2 = temp2;
}
}
}
printf("%d - %d = %d", m1, m2, max);
return 0;
}
296デフォルトの名無しさん:2007/07/07(土) 13:15:03
うおっ、無茶苦茶速ぇ
297デフォルトの名無しさん:2007/07/07(土) 13:17:26
そりゃまぁ、剰余計算が全く無いからね。
298デフォルトの名無しさん:2007/07/07(土) 15:10:17
>>266
>問題1
>現在のソースコードのすべての行にコメントをつける。

すごく・・・大きいです。

>問題2
>プログラムに勝敗を判定する機能を付け加える。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4533.txt
299デフォルトの名無しさん:2007/07/07(土) 16:50:54
> 295
幸い、1000000 で最大のパターンが1つだからそのロジックでいいけど
複数あるとダメだねwww
300デフォルトの名無しさん:2007/07/07(土) 19:16:43
急いでます。誰か助けてください!!

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4536.txt
301デフォルトの名無しさん:2007/07/07(土) 19:18:16
本当にC++かそれは・・・
302300:2007/07/07(土) 19:30:18
初心者なもので、すいません…

コンパイラはC++で間違いないと思いますが、言語はC言語かもしれないです…
303デフォルトの名無しさん:2007/07/07(土) 19:50:04
[1] 授業単元:情報論
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4537.txt
2文字拡大したハフマン符号化プログラムを改良して3文字拡大のハフマン符号化にせよ
ヒント
変更箇所で書き換えるのは主に配列の添え字部分
文字列が配列にどのように収納されているかをよく考える
ノードの構造体に文字列がどのように収納されるかを考える

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C)
[4] 期限: 明後日
[5] その他の制限:なし


お願いします
304デフォルトの名無しさん:2007/07/07(土) 19:50:06
それすらも分からんのか・・・
305デフォルトの名無しさん:2007/07/07(土) 19:54:59
void swap(int *px, int *py)
{ int tmp;

tmp = *px;
*px = *py;
*py = tmp;
}

void main()
{ int a=3, b=5;

printf("a=%d, b=%d\n", a, b);
swap(&a, &b);
printf("a=%d, b=%d\n", a, b);
}

ポインタってどういう仕組みなんですか??
aとbのアドレスをポインタ*pxと*pyに渡すとどうなるんですか?
306300:2007/07/07(土) 20:03:35
1回、C言語の書き方で作ってもらえませんか?
307デフォルトの名無しさん:2007/07/07(土) 20:06:49
>>306
参考のプログラムをどういう風に使わせたいのかな。
それ使わないといけないの?構造体は使ってはだめ?
308デフォルトの名無しさん:2007/07/07(土) 20:07:26
【即会い!!】

管理人が使用してみて、即出会えた出会い系サイトのみを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトを厳選して薦めております。
↓↓↓
【ブログ】http://deaiload.blog109.fc2.com/
309300:2007/07/07(土) 20:17:01
使わないといけないということはないです。
要するに、2次元配列を使ってプログラムを作れとのことです。

構造体はまだ授業で扱っていないので、使わないようにお願いします。
310デフォルトの名無しさん:2007/07/07(土) 20:20:39
[1] 授業単元:プロC
[2] 問題文(含コード&リンク):
xclock -update 1 を起動し、約30秒後にSIGTERMで停止させるプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4538.txt

問.emacs と xclock -update 1 を起動し、 emacs が終了すると
xclockをSIGTERMで停止させるプログラムを書け。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 来週中
[5] その他の制限: 無いです

よろしくお願いします。
311デフォルトの名無しさん:2007/07/07(土) 20:27:16
312デフォルトの名無しさん:2007/07/07(土) 22:03:33
313デフォルトの名無しさん:2007/07/07(土) 22:19:17
ttp://acm.pku.edu.cn/JudgeOnline/problem?id=1251
の問題を提出することになったのですが、回答が通りません。
これはどのようにとけばいいのでしょうか?

[3] 環境
 [3.1] OS:XP/Vista
 [3.2] コンパイラ名とバージョン:c++
 [3.3] 言語:C++
[4] 期限: 月曜日
[5] その他の制限: 無し
314312:2007/07/07(土) 22:48:32
>>309
fcloseをしてなかった。
最後と、配列不足で抜けるreturnの前に、
fclose(fp)を入れてくれ。
315300:2007/07/07(土) 22:55:32
http://pc11.2ch.net/test/read.cgi/tech/1183511364/312

すいません…
注文を付け加えて申し訳ないですが…

#include <stdlib.h> や #include <ctype.h>
という書き方はやっていないです。

また問題で言われてることは同じ回数のときはアルファベットの"逆順"でソートするプログラムです。


よろしくお願いします。

316312:2007/07/07(土) 22:59:18
まだあった。
int count;

int count = 0;
に書き直してくれ。
317デフォルトの名無しさん:2007/07/07(土) 23:00:34
俺が、回答者の気持ちを代弁してやる

#include "stdlib.h"
ってしろや
ってかそれくらいわかったれや
318デフォルトの名無しさん:2007/07/07(土) 23:01:28
>>313
方法だけ書くと単純にプリムのアルゴリズムでOK。
とりあえずプリムのアルゴリズムでAcceptが出たのを確認してきた。
多少冗長気味に書いても通ったので実行速度とか気にせず書けばいい。
319300:2007/07/07(土) 23:03:13
もう1つ
大文字と小文字は区別せず、アルファベットの逆順にソートするものです。

たとえば適当にこのような英文があれば…

I want to go Zoo.

Zoo
want
to
I
go

みたいな感じです。
320312:2007/07/07(土) 23:11:35
>>315
>アルファベットの"逆順"でソート
Aとaは同じ順位として扱うのか、それとも、
z>a>Z>Aの並び方にするのか?
321312:2007/07/07(土) 23:16:31
もう一つ質問だ。
大文字、小文字の区別を付けない場合、
テキスト内に、"WORD","word","Word"と3通りあったら、結果の表示はどうする?
最初に見つけた綴りで行うのか?
それとも表示の際に書き換えても良いのか?
322320:2007/07/07(土) 23:17:08
Aとaは同じ順位で扱います。
323321:2007/07/07(土) 23:20:44
書き換えても構いません。
324312:2007/07/07(土) 23:37:18
>>323
「小文字に書き換え」でしました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4541.txt
325324:2007/07/07(土) 23:45:47

エラーがでましたけど…

エラー E2268 report.cpp 42: 未定義の関数 'isalpha' を呼び出した(関数 main(int,char * *) )
エラー E2268 report.cpp 47: 未定義の関数 'tolower' を呼び出した(関数 main(int,char * *) )
326デフォルトの名無しさん:2007/07/07(土) 23:51:11
>>325
それぐらいググれば一発なのに・・・
isalphaもtolowerもctype.h内の標準ライブラリ関数。
わかんなかったら#include<ctype.h>をソースの先頭に書く。
327デフォルトの名無しさん:2007/07/07(土) 23:52:44
>>325
323だよな、きっと
番号は最初の質問番号でいいよ
そのつど変えなくて
328312:2007/07/08(日) 00:03:42
>>325
>>326が書いているとおりです。
#include <ctype.h>
をソースに追加して下さい。
駄目なときは同様の処理関数を実装しないといけないが、
出来れば車輪は発明したくない。
329300:2007/07/08(日) 00:07:33
>>326
ctype.hは授業ではやっていないです。
違うように書き換えることってできますか?

>>327
すいません。あんまり書き込みをしないもので…
330デフォルトの名無しさん:2007/07/08(日) 00:14:08
tolower(char c){
if(c >='A' && c<'Z')return c+'a'-'A';
}

こんな感じか?動かしてはいない
331300:2007/07/08(日) 00:16:50
isalphaの方も早く教えてください
332312:2007/07/08(日) 00:21:25
333デフォルトの名無しさん:2007/07/08(日) 00:24:55
tolower( c) = (c >='A' && c<'Z')?c+'a'-'A':c;

isalpha(c) = ((c >='A' && c<'Z')||(c >='a' && c<'z'))?1:0;
334303:2007/07/08(日) 00:26:40
>>303をお願いします!
335312:2007/07/08(日) 00:26:42
buf[i++] = toLower((char)c);
よく見るとこれはまずいな
buf[i++] = (char)toLower(c);
こうすべきですね。

336266:2007/07/08(日) 00:45:50
>298
ありがとうございました。






朝から全行コメントしてるけど、わけ分からなくなってきたwwwwwwww
337300:2007/07/08(日) 00:57:27
>>332

大域変数を使わないように書き換えることってできますか?

338デフォルトの名無しさん:2007/07/08(日) 00:58:38
自分でやれ
339デフォルトの名無しさん:2007/07/08(日) 00:59:09
最初から条件にそう書いとけよ。
後から後から文句を言うな。
340312:2007/07/08(日) 01:11:25
>>337
mainのローカル変数に置きたいと言うことですか?
データの量にもよるでしょうが、サイズが大きいと
stackoverflowするんじゃないですかね。
341313:2007/07/08(日) 01:16:53
>>318
あ〜プリムですか。
いま別問題でクラスカルをかいていたのですが、AとかBとかそこら辺の処理をまちがったのかな・・。

ちなみにプリムの実装はどんな感じでやりましたか?
クラスカルを実装する際に昇順ソートの
<int,int,greater<int> >というキューかリストが使えると便利だなと思って頑張ったのですが
どうもエラーが多発&わけがわからなくなったので
multimap<int,int>+struct[int]{int,int}で実装しましたが・・。これでも結構複雑に成ってしまいました。
3引数っていうのも難しいのですが、その上に特定の箇所の重みでソートをかけるという指定があまり良く分かっていなかったりするのが原因なのでしょうが・・。
342デフォルトの名無しさん:2007/07/08(日) 01:19:21
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):入力ファイル(in.txt)から4行4列の行列Aを読み込み
行列Aの逆行列を求めそれを出力ファイル(out.txt)に出力せよ。
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限:2007年7月8日23:00
[5]
入力ファイル in.txt
A 2 0 1 0
0 -1 1 -2
1 0 1 0
0 1 -1 3
です。どなたかお願いします!!
343デフォルトの名無しさん:2007/07/08(日) 01:21:27
312がいい人過ぎて泣いた
344300:2007/07/08(日) 01:21:43
>339
すいません。

>>340
そういうことです。
345 ◆KqBLZKKJjc :2007/07/08(日) 01:27:57
素数の質問した者です。
いくつかのプログラムをお答えいただき、本当にありがとうございます!!

自分としては、どう処理が行われているかを大体理解できる >>295 さんのが気に入りました。


本来ならもっと早くお礼を述べたかったのですが、
半日ぐらい過ぎてしまいました。
申し訳ない・・・



最後に、自分の拙い質問に、真剣に考えてくださった方々へ
本当の本当にありがとうございました。
346デフォルトの名無しさん:2007/07/08(日) 01:42:54
[1] 授業単元:計算機実習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4544.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名:gcc
 [3.3] 言語: C
[4] 期限: 2007年07月10日24:00まで
[5] その他の制限: 特になし
よろしくお願いします
347デフォルトの名無しさん:2007/07/08(日) 01:46:34
C言語です。
二つの符号なし整数a,b(ただしa>bとし、bは2のべき乗とする)をキーボードから読み込み、
@a,bを2進表示し、配列の中にビットを格納しなさい。
Aa,bの四則演算(上のを使って、相手に10進で入力させ、それを2進表示する)
c=a+b
d=a-b
e=a*b
f=a/b(商のみ)
を計算し、その結果を出力しなさい。
7月14日までです。お願いします。
348312:2007/07/08(日) 01:52:28
>>344
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4545.txt
local変数に移動しました。
実行環境によってはstacksizeが足りないとなるかも知れません。
そのときはMAXWORDを実行可能な値にして下さい。
wordの長さチェックも入れました。(80文字)
349300:2007/07/08(日) 02:39:29
>>348

本当にありがとうございます!!
助かりました!!
350デフォルトの名無しさん:2007/07/08(日) 02:40:21
イキナリで申し訳ありませんm(__)m
当方某学校にて「C言語入門」を勉強しているのですが、

宿題がわからないんです!
優しい方、お手数ですが教えていただけないでしょうか。


わからない、その1
「コンピュータが計算する、任意の数の型は何型ですか。」

わからない、その2
「関数yesno(char *msg)で、キーボードから a を入力したときの、戻り値は何か。」


もし、よろしければ答えてくださると助かります。

よろしくお願いいたします。
351デフォルトの名無しさん:2007/07/08(日) 02:43:37
マルチするのはえぇよw
352デフォルトの名無しさん:2007/07/08(日) 02:44:10
>>350
もっとくやしく
353デフォルトの名無しさん:2007/07/08(日) 02:44:45
>>351
相当、眠いんだろうなw
354デフォルトの名無しさん:2007/07/08(日) 02:46:14
>>353
まだ、大丈夫だってw

C言語なら俺に聞け(入門篇) Part 15
http://pc11.2ch.net/test/read.cgi/tech/1182719692/
355デフォルトの名無しさん:2007/07/08(日) 03:12:51
マルチ申し訳ありません。

はい、当方とても眠いです。

俺に聞けスレは勢いがなさそうでしたので、こちら様に同じものを書いてしまいました。

携帯からのカキコミなので、くやしく書くと恐らく途中でねてしまうかもしれません( ;´Д`)

今日の朝9時15分頃にパソコンが使える状況になるのですが、

その時に宿題をUPしてもよろしいでしょうか。
356デフォルトの名無しさん:2007/07/08(日) 03:51:33
342の書き込みをしたものです。逆行列を求めるプログラムは何とかで見つかったんですが、
↓のを改変して4行4列の行列を入力ファイル(.txt)から読み込んで出力ファイル(.txt)に書き込むようにできる方いらっしゃいませんか?おねがいします。
include <stdio.h>
#define NN 50
main(){
int i,j,n ;  double a[NN][NN];
printf( "n×n行列の逆行列を計算します。\n" );
printf("n=?\n"); scanf ( "%d" , &n );
for ( i = 0 ; i < n ; ++i ){for ( j = 0 ; j < n ; ++j ){
printf("%d行%d列成分 a[%d][%d]=?\n",i+1,j+1,i+1,j+1);
scanf("%lf",&a[i][j]);}}for ( i = 0 ; i < n ; ++i ){
for ( j = 0 ; j < n ; ++j )printf ( "%10.2lf " ,a[i][j] );
printf ( " \n" );}printf ( "\n \n" );
inv(a,n,NN);for ( i = 0 ; i < n ; ++i ){
for ( j = 0 ; j < n ; ++j )printf ( "%10.2lf " ,a[i][j] );
printf ( " \n" );}}
/* 逆行列の計算 */
int inv(a,n,nn)
double *a;
int n,nn;{int i,j,k;
double p,q;  double *ak,*ai;
for ( k = 0 , ak = a ; k < n ; ++k , ak += nn ){
p=ak[k];  ak[k]=1.0;
for ( j = 0 ; j < n ; ++j )
ak[j]/=p;
for ( i = 0 , ai = a ; i < n ; ++i , ai += nn ){
if ( i!=k ){q=ai[k];
ai[k]=0.0;
for ( j = 0 ; j < n ; ++j )
ai[j]-=q*ak[j];}}}}
357デフォルトの名無しさん:2007/07/08(日) 05:18:51
>>346
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4546.txt
SEPARATION " ,.\n"をSEPARATION " ,."に直してください
358デフォルトの名無しさん:2007/07/08(日) 06:27:58
359358:2007/07/08(日) 06:30:43
ミスった
if(max < fabs(a[j][i]))をif(fabs(max) < fabs(a[j][i]))に直してください
360358:2007/07/08(日) 06:34:12
追記 もしかしたら#include <stdlib.h>が必要かも
361358:2007/07/08(日) 07:01:08
362358:2007/07/08(日) 07:16:30
あれ。。。。
スワップするともしかしてマズイ?
363デフォルトの名無しさん:2007/07/08(日) 07:22:22
>>342
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 4
int main(void){
    FILE *fpin = fopen("in.txt", "r"), *fpout = fopen("out.txt", "w");
    double a[N][2*N], tmp, mul;
    int i, j, k;
    if(!fpin || !fpout) exit(1);
    for(i = 0; i < N; i++) for(j = 0; j < N; j++) if(fscanf(fpin, "%lf", &a[i][j]) != 1) exit(2);
    for(i = 0; i < N; i++)
        for(j = N; j < 2*N; j++){
            if(i + N == j) a[i][j] = 1;
            else a[i][j] = 0;
        }
    for(i = 0; i < N; i++){
        tmp = a[i][i];
        for(j = 0; j < 2*N; j++) a[i][j] /= tmp;
        for(j = 0; j < N; j++)
            if(i != j){
                mul = a[j][i]/a[i][i];
                for(k = 0; k < 2*N; k++) a[j][k] -= mul*a[i][k];
            }
    }
    for(i = 0; i < N; i++){
        for(j = N; j < 2*N; j++) fprintf(fpout, "%.2f\t", a[i][j]);
        fprintf(fpout, "\n");
    }
    fclose(fpin); fclose(fpout);
    return 0;
}
364デフォルトの名無しさん:2007/07/08(日) 07:50:43
>>310>>126の(2)?)を何方か教えてください。
365デフォルトの名無しさん:2007/07/08(日) 09:42:02
[1] 授業単元: ネットワークプログラミング
[2] 問題文(含コード&リンク):
UDPでソケットを使ってサーバーからデータを受け取る
パケットを送るときにチェックサムを計算して一緒に送る
データを受信したときもデータが正しいか
チェックサムを計算してエラーがないか確認する
長いので以下に詳しい問題文をうpします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4228.txt
↓書きかけのソースですがこんな感じになるのでしょうか
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4229.c
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:7/9(月) 12:00
[5] その他の制限: サーバーが学内にあるのでいますぐ動作確認はできません
366デフォルトの名無しさん:2007/07/08(日) 10:45:32
>>341
えーと、プリムはpriority_queue<pair<int,int> >で、
とりあえず、pair::firstにコストの逆数を突っ込んで実装しました。

クラスカルも実装してみました。
こっちは短いのでそのまま貼り付けてみる。
構造体の代わりにintに全て押し込んでます。
#import<algo.h>
main(){for(int n,m,l,i,u,c,d;cin>>n,n;){char c,d;int p[32]={},
t[32]={},g[1024];for(c=d=u=i=0;i<n-1;++i,p[i]=i)for(cin>>c>>m;
m--;g[u++]=l<<10|c-'A'<<5|d-'A')cin>>d>>l;sort(g,g+u);for(;++m
<u;)for(l=32,(n=p[g[m]&31])-(i=p[g[m]>>5&31])?t[p[n]=i]+=t[n]+
(g[m]>>10):0;l--;)p[l]=p[p[l]];cout<<t[*p]<<'\n';}}
367デフォルトの名無しさん:2007/07/08(日) 10:45:54
>>347お願いしますm(_ _)m
368デフォルトの名無しさん:2007/07/08(日) 11:23:55
教科:プログラミング入門

問題1
5人の成績管理プログラムを作成せよ。
全員の生徒の学籍番号、国語、算数の成績を入力する。(3つの配列を定義)
検索機能として、学籍番号を入力した際、該当者の2教科の成績と平均点を出力する。
学籍番号に0が入力されるまで繰り返し検索できるようにする。

問題2
10個の整数を入力し、小さい順に並べ替えよ。
バブルソートを使用すること

OS:XP
コンパイラ:cygwin
言語:1番、2番共にC++です。
どなたかよろしくお願いします


369303:2007/07/08(日) 11:35:33
303をお願いします。
128×128×128の配列で作ってみたんですが、大きすぎるのかバグって止まります・・・・
370デフォルトの名無しさん:2007/07/08(日) 11:47:01
128 = 2^7 すなわち 2^7 * 2^7 * 2^7 = 2^21 = 2,097,152
371デフォルトの名無しさん:2007/07/08(日) 11:54:18
助けてください

[1] 授業単元: C言語
[2] 問題文:strcpy(文字列コピー)とstrcat(文字列追加)と同じ動きの関数を独自に作成
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 2007年7月9日 12:00
[5] その他の制限:string.hは使用禁止


よろしくお願いします。
372デフォルトの名無しさん:2007/07/08(日) 12:00:13
>>371
char*strcpy_(char*dst,const char*src){
        char*p=dst;
        while(*p++=*src++){}
        return dst;
}
char*strcat_(char*dst,const char*src){
        char*p=dst;
        while(*p)++p;
        strcpy_(p,src);
        return dst;
}
373デフォルトの名無しさん:2007/07/08(日) 12:02:15
>>370
それは分かるんですが・・・
374デフォルトの名無しさん:2007/07/08(日) 12:11:54
>>371
char *strcpy(char *dest, const char *src)
{
char *s = dest;
while(*s++ = *src++);
return dest;
}
char *strcat(char *dest, const char *src)
{
char *s = dest;
while(*++s);
strcpy(s, src);
return dest;
}


すでにある回答とほとんど同じなのは切ない
375371:2007/07/08(日) 12:12:48
>>372
ありがとうございます。

まだコンパイルしてないけど
while(*p++=*src++){}
こんな記述できるんですね。
初めて知りました。

376デフォルトの名無しさん:2007/07/08(日) 12:14:25
static をつけて、一時しのぎ
377デフォルトの名無しさん:2007/07/08(日) 12:15:27
>>374
ありがとうございます。
378デフォルトの名無しさん:2007/07/08(日) 12:24:19
3重ポインタでmalloc
379デフォルトの名無しさん:2007/07/08(日) 12:44:03
windows APIを使って、ファイルを開くダイアログに
ファイルの削除ボタンと追加保存ボタンを追加したいのですが、
どうやってやればいいんでしょうか??(C言語です)
380デフォルトの名無しさん:2007/07/08(日) 12:46:22
>>374
destの一文字目がNUL文字のときにstrcatに問題あるくね?

char s[100]="";
strcat(s,"Hello");
puts(s);
381デフォルトの名無しさん:2007/07/08(日) 12:50:24
>>380
そこまで考えて無かった
while(*s++);
strcpy(s-1, src);
あたりで大丈夫だと思う。試してないけど。
382 ◆KrpcpKelXU :2007/07/08(日) 12:52:35
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
文字列s2の任意の文字に等しい文字をs1から除去する形のプログラムを書け。
(例)
s1にThe C programming language.と入力
s2にhr gl.と入力すれば、
TeCpoamminanuaeと画面に表示するプログラムを書いて下さい。


[3] 環境
 [3.1] OS: (Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10日23:59まで
383デフォルトの名無しさん:2007/07/08(日) 13:05:02
>>382

#include <stdio.h>

int main(void)
{
char s1[1024], s2[1024], *s, *t;

gets(s1);
gets(s2);

for(s=s1;*s!='\0';s++)
{
for(t=s2;*t!='\0' && *t!=*s;t++);

if(*t=='\0')
putchar(*s);
}

return 1;
}
384デフォルトの名無しさん:2007/07/08(日) 13:07:58
どなたか368お願いします・・・
385デフォルトの名無しさん:2007/07/08(日) 13:16:36
テンプレに催促厳禁って書かないか?
386デフォルトの名無しさん:2007/07/08(日) 13:17:51
>>368
問題1
#include <iostream>
int main(){
    int i, search, num[5], lang[5], math[5];
    for(i = 0; i < 5; i++) std::cin >> num[i] >> lang[i] >> math[i];
    while(1){
        std::cin >> search;
        if(search == 0) break;
        for(i = 0; i < 5; i++) if(search == num[i]) break;
        if(i < 5) std::cout << lang[i] << " " << math[i] << " " << (lang[i] + math[i])/2.0 << std::endl;
    }
    return 0;
}
問題2
#include <iostream>
#define N 10
#define swap(type, x, y) do{type tmp = x; x = y; y = tmp;}while(0)
void bsort(int n[], int size){
    int i, j;
    for(i = 0; i < size - 1; i++) for(j = i + 1; j < size; j++) if(n[i] > n[j]) swap(int, n[i], n[j]);
}
int main(void){
    int i, n[N];
    for(i = 0; i < N; i++) std::cin >> n[i];
    for(i = 0; i < N; i++) std::cout << n[i] << "\t";
    std::cout << std::endl, bsort(n, N);
    for(i = 0; i < N; i++) std::cout << n[i] << "\t";
    std::cout << std::endl;
    return 0;
}
387デフォルトの名無しさん:2007/07/08(日) 13:18:47
int i, jはforの中でいいか
388デフォルトの名無しさん:2007/07/08(日) 13:19:01
催促するときは、未回答一覧を作成することっていうテンプレがあったんだが
面倒すぎて誰も従わないから消えた
389デフォルトの名無しさん:2007/07/08(日) 14:07:33
390342:2007/07/08(日) 14:09:24
>>358,363
ほんとありがとうございますm(__)m
391デフォルトの名無しさん:2007/07/08(日) 14:31:20
>>365
君の書いてるコードはTCPだな。UDPじゃない。
まずはUDPでの送受信のやりかたを調べるんだね。

問題文のプロトコルの「ID」の意味はちょっと分からないな。
ファイルの識別子なのか、ファイル自体は固定で、
これを通番のように使えという意味なのか。
多分後者で、これを使ってパケットロスに対処しろということだろうが。
392デフォルトの名無しさん:2007/07/08(日) 15:17:00
どなたか303をお願いします。考察もして明日ださなきゃいけないのであせってます・・・・
393デフォルトの名無しさん:2007/07/08(日) 16:00:32
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
データを圧縮するプログラムを作成する. たとえば,1111のように1が4
つ連続して出現した場合,14のように表す. 同様に,00000のように
0が5つ連続して出現した場合,05のように表す.
例えば,111100000(計9文字)のようなデータは,1405
(4文字)と表されるので, 同じデータを少ない文字数で表すことができる.
実行例
%cat compress.txt
1011111000010111100
%./compress
1101150411011402
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:明日
[5] 標準ライブラリは使ってはいけない
394デフォルトの名無しさん:2007/07/08(日) 16:25:39
標準ライブラリ一切使っちゃいけないのかwww
395デフォルトの名無しさん:2007/07/08(日) 16:56:30
>>393
#include<unistd.h>
int main(){
        char cm[2];
        char d,l;
        cm[1]='0';
        l=read(0,cm,1);
        while(l>0){
                do{
                        l = read(0,&d,1);
                }while(++cm[1] != '9' && cm[0] == d && l>0);
                write(1,cm,2);
                cm[0]=d;
                cm[1]='0';
        }
        return 0;
}
396デフォルトの名無しさん:2007/07/08(日) 16:58:48
397デフォルトの名無しさん:2007/07/08(日) 16:58:48
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):”rand1000.dat”というデータの個数nとその個数分の整数データが保存されているファイルがある
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4151.txt
次の手順で動作するプログラムbinsearch.cを作成し,その動作を確認せよ.

まずファイルからnを読み込み,その数だけデータを読み込み2分探索木に格納する.
次に整数を一つキーボードから入力する.
そしてその整数が配列内に存在する場合にはyes,存在しない場合にはnoを2分探索により判定し,yes/noの判定結果をディスプレイ上に表示する.
さらに,読み込んだデータの最小値を表示し,プログラムを終了する.


[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
 [3.3] 言語: C
[4] 期限: 7月10日 夜まで
[5] その他の制限:いろいろなデータについて実行し,yes/noの判定と最小値が正しいことを確認すること.

どなたか解る方。お願いいたします。
398310:2007/07/08(日) 17:38:13
あの・・・何方か>>310をお願いします!
399デフォルトの名無しさん:2007/07/08(日) 18:01:52
>>389さん、ありがとうございます。やってみます。
400デフォルトの名無しさん:2007/07/08(日) 18:06:42
[1] 授業単元:プログラム技術
[2] 問題文(含コード&リンク):
問題1.
 下の表のようなデータを入力したとき,(a)〜(o) を求めるプログラムを作成しなさい.な
お,表のデータはあくまでも例なので,実際には,汎用的に使えるように,商品数,単価,
個数は実行時に任意の数・データをキーボードから入力すること.

品物名単価個数代金累積代金消費税込み累積代金
商品1  249  15  (a)  (b)             (c)


商品数を入力して下さい. --> 1
<商品1>
単価を入力して下さい. --> 249 ..
個数を入力して下さい. --> 15 ..
** 単価×個数**       ==> 3735
** 累積合計代金**      ==> 5895
** 消費税込み累積合計代金** ==> 6189.75

問題2.
 正整数n を入力し,n× n の正方行列において,以下のような○と●のパターンを出力す
るプログラムを作成しなさい.
n = 1 n = 2 n = 3 n = 4 n = 5 ・ ・
   ○●○●○
●○●○ ●●○●○
   ○●○ ○○●○ ○○○●○ ・ ・ ・
   ●○ ●●○ ●●●○ ●●●●○
○ ○○ ○○○ ○○○○ ○○○○○

よろしくおねがいします
401デフォルトの名無しさん:2007/07/08(日) 18:09:58
ずれたorz
問題2.
 正整数n を入力し,n× n の正方行列において,以下のような○と●のパターンを出力す
るプログラムを作成しなさい.
n = 1

n = 2
●○
○○
n = 3
○●○
●●○
○○○
n = 4
●○●○
○○●○
●●●○
○○○○
n = 5 ・ ・ ・

○●○●○
●●○●○
○○○●○
●●●●○
○○○○○・・・


よろしくおねがいします
402デフォルトの名無しさん:2007/07/08(日) 18:10:52
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
(1)入力したグレースケール画像(256×256画素、8ビット256諧調)を8枚のビットプレーンに分解し、それぞれのプレーンを出力するプログラムを作成せよ。
(2)(1)で作成した8枚のビットプレーンのうち、いずれかのプレーンを指定して透かし画像(1、ランダム画像 2、ロゴ画像)と置き換えた透かし埋め込み画像を出力するプログラムをかけ。またそれぞれの画像を表示した結果を示せ。
(3)(2)で作成した透かし入り画像から、好かし画像を抽出(検出)して表示するプログラムを作れ。また、その画像を表示した結果を示せ。
[3] 環境
 [3.1] OS:MacOSX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 明日までにお願いします。
403400:2007/07/08(日) 18:33:14
[3][4][5]忘れてたオワタ

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限
来週の火曜辺りまで
[5] その他の制限
なし
404デフォルトの名無しさん:2007/07/08(日) 18:40:44
>>357
ありがとうございます
助かりました
405デフォルトの名無しさん:2007/07/08(日) 18:53:39
>>400
>(a)〜(o) を求めるプログラムを作成しなさい.
(a)〜(o)は何?
406400:2007/07/08(日) 19:20:29
>>405
(a)〜(c)まででOKです。打ち間違いです
407デフォルトの名無しさん:2007/07/08(日) 19:21:00
>>400
問題1
(d) 〜 (o)は何すればいいのかわからないからやってない。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4554.txt
408デフォルトの名無しさん:2007/07/08(日) 19:21:17
>401
#include <stdio.h>

int main(void)
{
int i, j, n;

scanf("%d", &n);

for(i=n; i> 0; i--) {
if(i%2) {
for(j=0; j<n-i+1; j++) printf("○");
for(j=0; j<(i-1)/2; j++) printf("●○");
}
else {
for(j=0; j<n-i; j++) printf("●");
for(j=0; j<i/2; j++) printf("●○");
}
putchar('\n');
}

return 0;
}
409デフォルトの名無しさん:2007/07/08(日) 19:38:47
ちょっと改良
#include <stdio.h>

int main(void)
{
    int i, j, n;

    printf("n=");
    scanf("%d", &n);

    for(i=n; i > 0; i--) {
        if(i%2) for(j=0; j<=n-i; j++) printf("○");
        else for(j=0; j<n-i; j++) printf("●");
        for(j=0; j<i/2; j++) printf("●○");
        putchar('\n');
    }

    return 0;
}
410デフォルトの名無しさん:2007/07/08(日) 21:41:58
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):関数定義
double myDistance(double x1, double y1, double x2, double y2)にする
平方根の計算にはsqrt()関数を用いる
sqrt()を使うためにはmath.hをincludeする必要があります.
プログラムのはじめに「#include <math.h>」を書くこと
を満たして、点p=(x1,y1)と点q=(x2,y2)との距離を求める関数を作りなさい。
[3] 環境
 [3.1] OS:Win
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
 [3.3] 言語: C++
[4] 期限:2007年07月09日09:30まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
できるだけ簡単なものにしてください。よろしくお願いします。
411デフォルトの名無しさん:2007/07/08(日) 22:06:58
>>410

#include <stdio.h>
#include<math.h>

typedef struct{
double x;
double y;
}dot;

double myDistance(double x1, double y1, double x2, double y2){
return(sqrt(pow(x2-x1,2)+pow(y2-y1,2)));
}

int main(void)
{
dot p;
dot q;
printf("点p=(x1,y1)\n");
printf("x1:");scanf("%lf",&p.x);
printf("y1:");scanf("%lf",&p.y);
printf("点q=(x2,y2)\n");
printf("x2:");scanf("%lf",&q.x);
printf("y2:");scanf("%lf",&q.y);
printf("p-q間の距離は%fです。\n",myDistance(p.x,p.y,q.x,q.y));
return 0;
}
412デフォルトの名無しさん:2007/07/08(日) 22:26:21
>>411ありがとうございました。助かりました。
413デフォルトの名無しさん:2007/07/08(日) 22:47:42
△return(sqrt(pow(x2-x1,2)+pow(y2-y1,2)));
○return sqrt((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1));
414デフォルトの名無しさん:2007/07/08(日) 22:49:49
>>413
その程度のことで△とか、もうね。
415デフォルトの名無しさん:2007/07/08(日) 22:53:05
◎return hypot(x2-x1,y2-y1);
416デフォルトの名無しさん:2007/07/08(日) 23:01:32
>>413
数学っぽくないな。
それは全然○じゃない。
417デフォルトの名無しさん:2007/07/08(日) 23:09:38
>>411
>>415
>>416
>平方根の計算にはsqrt()関数を用いる
とあるからpow()もhypot()を使うことは想定されていないと思うんだ。

>できるだけ簡単なものにしてください。よろしくお願いします。
とあるから、数学っぽいかどうかは考慮されていないと思うんだ。
418デフォルトの名無しさん:2007/07/08(日) 23:14:30
>>417
>平方根の計算にはsqrt()関数を用いる
>とあるからpow()もhypot()を使うことは想定されていないと思うんだ。
「sqrtを使う=他の数学関数を使わない」ってどういう理屈?
数学っぽい=プログラミングに疎くても直感的に分かりやすい。
とことんプログラミングの初心者用にするなら構造体使わないほうが良いけど、
使った方が点として数学の知識で直感的に分かりやすい、と。
419デフォルトの名無しさん:2007/07/08(日) 23:21:21
寧ろ漏れは、>413のどこが数学っぽくないのか聞きたい。
420デフォルトの名無しさん:2007/07/08(日) 23:23:35
>>419
数学の授業で(x2-x1)*(x2-x1)って書き方するか?
421デフォルトの名無しさん:2007/07/08(日) 23:25:12
数学の授業でpowって習う?
422デフォルトの名無しさん:2007/07/08(日) 23:26:03
まぁ、わざわざ△付けて自分のに○付けるほどの答えではないな。
423デフォルトの名無しさん:2007/07/08(日) 23:28:20
どっちでもいいのに何でくだらない事で盛り上がってんの?
424デフォルトの名無しさん:2007/07/08(日) 23:28:42
>>421
pow使って二乗と同じように一まとめにして形を公式に近くしてる。
って考えると俺は>>415に一票。
425デフォルトの名無しさん:2007/07/08(日) 23:29:19
プログラミングの宿題として考えたら、sqrt()しかヒントが無い状況でpow()を使うほうが無理があるだろ。
426デフォルトの名無しさん:2007/07/08(日) 23:33:20
math.hを使うようにって書いてあるのにpow使うのが無理があることか?
他のヘッダで定義されてるもの使ってるならまだ分かるけど。

てか結局の所>>413はたいして優れたこと言ってないのに
人の答えに△付けて自分に○付けるのがどうかと…。
427デフォルトの名無しさん:2007/07/08(日) 23:34:42
どっちも下らないことで粘着しすぎ
実にどうでもいい
428デフォルトの名無しさん:2007/07/08(日) 23:40:20
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4556.txt

[3] 環境
 [3.1] WindowsXP
 [3.2] bcc
 [3.3] C++
[4] 期限: 7月12日

お願いします
429デフォルトの名無しさん:2007/07/09(月) 00:14:26
どなたか>>402お願いします
430デフォルトの名無しさん:2007/07/09(月) 00:17:00
>>303
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4559.txt
やってみたが、これでどうかな。
NULLが再定義で警告出たのでコメントにした。
ほかにも気になる部分を修正している。
431デフォルトの名無しさん:2007/07/09(月) 00:19:36
>>430
どうもありがとうございました!
432430:2007/07/09(月) 00:55:24
>>431
済まない。一カ所修正が漏れていた。
230行目
n=&htnode[i*CHAR_SIZE+j];
を、
n=&htnode[(i*CHAR_SIZE+j)*CHAR_SIZE+k];
にしてくれ。

433デフォルトの名無しさん:2007/07/09(月) 03:30:30
[1] 授業単元:数値計算

[2] 問題文:
以下の問題からプログラムを作成して下さい。
RLC回路においてV0=10V、R=100Ω、L=1H、C=1mFのとき、

コンデンサの両端の電位差V3が7Vになったら、V0と接続するスイッチを切る。
5Vになったらスイッチを再びもどす。
以下これを繰り返すことにする。
ただし、t=0において電荷は無し(V3=0)とする。
このとき回路の閉路方程式、条件を表し、時間tに対するi(t)、V3(t)の変化をグラフに示せ。

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:VisualC++6.0
 [3.3] 言語: C++
[4] 期限: 2007/7/9
[5] その他の制限: 特になし
434デフォルトの名無しさん:2007/07/09(月) 03:37:30
435デフォルトの名無しさん:2007/07/09(月) 05:25:43
[1] 授業単元:計算プログラム
[2] 問題文(含コード&リンク):組み合わせ nCkを表すプログラムの作成
[3] 環境
 [3.1] OS:WindowXp (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: Microsoft Visual
 [3.3] 言語: C++
[4] 期限: 2007年7月9日12:00([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: なし(どこまで習っているか、標準ライブラリは使ってはいけない等々)

436デフォルトの名無しさん:2007/07/09(月) 07:34:05
>>428
>5科目の【総合得点】が最も高かったすべての学生に【奨学金】として10万円与える。

最も高かったすべての学生って
総合得点が同点の場合、同率1位扱いするってことか?
437デフォルトの名無しさん:2007/07/09(月) 08:03:55
>>436
そういうことです
438デフォルトの名無しさん:2007/07/09(月) 08:15:58
>>435 こういうのはありか?ほかに漸化式と再帰を使うとかあるけど・・・。
#include <iostream>
using namespace std;
int main() {
int n,k,i;
int a,b;
cout << "Input n > "; cin >> n;
cout << "Input k > "; cin >> k;
if(n<k || n<0 || k<0) return 1;
for(i=n,a=1; i>n-k; i--) a*=i;
for(i=2,b=1; i<=k; i++) b*=i;
cout << a/b;
return 0;
}
439デフォルトの名無しさん:2007/07/09(月) 09:02:55
#include <iostream>
int nCk(int n, int k)
{

if((n>k) && (k>0)){
return nCr(n-1,k-1) + nCr(n-1,k);
}
else if(n==k || k==0){
return 1;
}
}
int main()
{
int n,k;
std::cin >> n;
std::cin >> k;
std::cout << nCk(n,k) << std::endl;
return 0;
}
440デフォルトの名無しさん:2007/07/09(月) 10:00:40
[1] 授業単元: プログラミング C
[2] 問題文(含コード&リンク): 面白いプログラムを作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 今日中にお願いします
[5] その他の制限: while,do-whileを習った後の課題です。
面白いってのはシステム的ではなく、お笑い系。
教授が関西出身のようで・・・・・・。

他の課題は済ませたのですが、自分では面白いプログラムを作る自信がありません。
どうか力をかしてください。
お願いします。
441デフォルトの名無しさん:2007/07/09(月) 10:27:12
>>440
何かキーを押したら「わっはっはっはっは、うっひゃっひゃっひゃっひゃ、あ〜〜〜腹痛ぇ」
みたいな文字列を表示させるプログラムでもええんか?do while を使って
EOFが検出されるまで
442440:2007/07/09(月) 10:56:33
>>441
ちゃんと機能するならそれで良いと思います。
443デフォルトの名無しさん:2007/07/09(月) 10:58:02
#include <windows.h>
char a[]=" 747:7:@:@C@AC@ACCCCCC<7<7HFHLOMLJLMLHJCJCJLMOQOMLMOTOMHHLMOOHJLMOQ"
"QTSQOOOOONMMMLLLJHGEGEC",b[]=" 747747:7:@:>@:>@>7542<7<7<<77<77>>>77>>77>>"
">77<<<777<7<<7:77755<<<55789:;<=>?@ABCCC>>>7",c[]="1822822822222222<<6666666"
"62442642222426624422224222222266426622242642422222222222222222228";float f(i)
{return i?f(i-1)*1.0595:55;}main(i,t){for(i=t=0;c[i]&&(t--||(t=c[++i]-*c));Be\
ep(f(b[i]-*b),40))Beep(f(a[i]-*a),40);}
444デフォルトの名無しさん:2007/07/09(月) 11:02:24
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4564.txt
[3] 環境
 [3.1] OS: XP 
[3.2] visual studio2005
 [3.3] 言語: c++
[4] 期限:7月12 0時まで
[5] その他の制限:特になし

よろしくお願いします。
445デフォルトの名無しさん:2007/07/09(月) 11:33:44
>>442 >>440  もうアホとも何とでも言ってくれ
#include <stdio.h>
int main(void) {
int cnt=0,i;
while( getchar() != EOF ) {
printf("わっ");
cnt++;
for(i=0; i<cnt; i++) {
printf("はっ");
}
printf("\n");
if(cnt%10==9) cnt=0;
}

return 0;
}
446デフォルトの名無しさん:2007/07/09(月) 11:41:46
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4565.txt
[3] 環境
 [3.1] OS: XP pro2
[3.2] VISUALU STUDIO 2005
 [3.3] 言語: C++
[4] 期限:〜7/11 09:00
[5] その他の制限:無し

どうかお願いします
447デフォルトの名無しさん:2007/07/09(月) 12:13:12
>>435 漏れ流パスカルの三角形を使用
#include <iostream>
using namespace std;
#define MAX 34
int nCr(int n, int r) {
int a[MAX][MAX],i,j;
if(r==n || r==0) return 1;
else if(r==1 || (n-r)==1) return n;
a[0][0]=1;
a[1][0]=1; a[1][1]=1;
for(i=2; i<=n; i++) {
a[i][0]=1; a[i][1]=i;
for(j=2; j<i-1; j++) {
a[i][j] = a[i-1][j-1]+a[i-1][j];
}
a[i][i-1]=i; a[i][i]=1;
}
return a[n][r];
}
int main(void) {
int n,r;
cout << "n = ";
cin >> n;
cout << "r = ";
cin >> r;
if(n<0 || r<0 || n<r || n>=MAX) return 1;
else cout << n << "C" << r << " = " << nCr(n,r);
return 0;
}
448デフォルトの名無しさん:2007/07/09(月) 12:25:22
>>446
問題見たら、びっくりした
解くとかそういう次元じゃない
もうたまらん。
449440:2007/07/09(月) 12:44:34
>>445
ありがとうございます。
僕が考えるより確実に良いです。
あほって言われるくらいがいいと思いますし。

助力感謝します。
450デフォルトの名無しさん:2007/07/09(月) 12:47:00
>>440
#include <stdio.h>
int main(void){printf("Hello World\n");return 0;}
451258:2007/07/09(月) 13:15:18
>>265
大変遅くなりましたが、ありがとうございます。
452デフォルトの名無しさん:2007/07/09(月) 14:11:47
age
453デフォルトの名無しさん:2007/07/09(月) 14:20:34
すいません。>>347のaとbは8ビットで結果は16ビットです。ごめんなさいm(_ _)m
454デフォルトの名無しさん:2007/07/09(月) 14:21:58
>>347訂正じゃなくて追加でした。
455デフォルトの名無しさん:2007/07/09(月) 14:27:31
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
整数を扱うa〜zという名前のメモリに対し、加減乗除を行うプログラムを作成しなさい。
@メモリへの設定(i:in)
例)メモリcに10を設定する。
function ==> i
memory ==>c
data ==>10
Aメモリ内容の参照(r:refer)
例)メモリdの内容を参照する。
function ==>r
memory ==>d
data ==>5
Bメモリ内容の加算(a:add)
例)メモリcの内容にメモリdの内容を加える。(結果はメモリcに設定)
function ==>a
memory1 ==>c
memory2 ==>d
10 + 5 = 15
以下減算(s:subtract)、乗算(m:multiply)、除算(d:divide)と続きます。

プログラムの終了(q:quit)
function ==>q
[3] 環境
 [3.1] OS:Windows
 [3.2] Bcc 5.5 + BccDev
 [3.3] C
[4] 期限:無期限
[5] その他の制限:配列とポインタという章まで習いました。
456デフォルトの名無しさん:2007/07/09(月) 14:38:17
static int memory[26];

int main(void)
{
457デフォルトの名無しさん:2007/07/09(月) 14:43:34
char func;
printf("function ==>");
scanf("%c", &func);
switch((int)func) {
case 'i':
458デフォルトの名無しさん:2007/07/09(月) 14:48:53
printf("memory ==>");
scanf("%c", &c2);
printf("data ==>");
scanf("%d", &data);
memory[tolower(c2) - 'a'] = data;
break;
459デフォルトの名無しさん:2007/07/09(月) 14:57:32
>>458
ありがとうございます。光明が見えました。
460デフォルトの名無しさん:2007/07/09(月) 15:21:27
C言語です。
二つの符号なし整数a,b(ただしa>bとし、bは2のべき乗とする。またaとbは8ビットで、演算の結果は16ビットです。)をキーボードから読み込み、
@a,bを2進表示し、配列の中にビットを格納しなさい。
Aa,bの四則演算(上のを使って、相手に10進で入力させ、それを2進表示する)
c=a+b
d=a-b
e=a*b
f=a/b(商のみ)
を計算し、その結果を出力しなさい。
習ったのはfor文、if文、do文、while文、シフト演算子{(>>)(<<)}、ビット単位のAND演算子(&)、OR演算子(|)、排他的OR演算子(^)、1の補数(~)です。
7月14日までです。お願いします。
461デフォルトの名無しさん:2007/07/09(月) 15:25:32
[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4567.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語:C
[4] 期限:7月10日12:00 まで
[5] その他の制限: 一応ポインタまで習いました
462デフォルトの名無しさん:2007/07/09(月) 15:35:39
>>397
やってみようとしたがこれ、マジ分からん
463デフォルトの名無しさん:2007/07/09(月) 15:47:51
どうでも良いけど問題出すくせに>>461みたいなURLの置き方マジ止めて欲しい。
見てもらう気あるのかと。
464デフォルトの名無しさん:2007/07/09(月) 16:09:16
1] 授業単元:情報演習
[2] 問題文:

入場料の算出表

種別 料金 人数
子供 x円  s人
大人 y円  t人
老人 z円  u人

子供は14歳以下、老人は60歳以上とする。
消費税r%、割引あり


[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual C++ 6.0
 [3.3] 言語: C++
[4] 期限:
[5] その他の制限: できる限り簡単にお願いします。

上記の問題よろしくお願いします。
465デフォルトの名無しさん:2007/07/09(月) 16:12:56
>>464
割引とはどんな場合にどの程度なんだ???????
466デフォルトの名無しさん:2007/07/09(月) 16:19:54
>>465
わかりません課題文にそう書いたあります・・・
割引はスルーで構わないので、お願いします。
467デフォルトの名無しさん:2007/07/09(月) 16:22:45
>463
2chブラウザ入れることもできない人には見てもらわなくても結構ってことなんじゃね?
468デフォルトの名無しさん:2007/07/09(月) 16:36:54
>>464
消費税が端数の時切り捨てるのであれば以下
チェックはしていない

#include<stdio.h>
int main(){
int x,y,z,s,t,u,r;
printf("子供の料金=");scanf("%d",&x);
printf("子供の人数=");scanf("%d",&s);
printf("大人の料金=");scanf("%d",&y);
printf("大人の人数=");scanf("%d",&t);
printf("老人の料金=");scanf("%d",&z);
printf("老人の人数=");scanf("%d",&u);
printf("消費税率=");scanf("%d",&r);
printf("売り上げ=%d\n",x*(100+r)/100*s+y*(100+r)/100*t+z*(100+r)/100*u);
return 0;
}
469デフォルトの名無しさん:2007/07/09(月) 16:44:01
[1] 授業単元: プログラム実習
[2] 問題文(含コード&リンク):
次の微分方程式を数値計算を用いて解け(その後エクセルで表にする)。
アルゴリズムはルンゲクッタ法または後退オイラー法を使用すること。
・3*d^2x/dt^2+dx/dt+2x=4
・x(t=0)=0
・dx/dt(t=0)=0
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C++
[4] 期限: 大至急!
[5] その他の制限: 制限なし
470デフォルトの名無しさん:2007/07/09(月) 16:48:03
>>468さんありがとうございました。助かりました。
471デフォルトの名無しさん:2007/07/09(月) 16:53:12
>>467
2chブラウザ入れてるけど普段firefoxのfoxage2chから見てるから
h抜きリンクとかひどく不便なんだよなぁ。

472デフォルトの名無しさん:2007/07/09(月) 17:19:14
>>397
二分木に数値は登録して最小値表示までやった。数値検索yes/noの関数とヒープのfree関数
は、作ってない。なぜかというとソースを書いてて、なんかむなしくなってきたから。以上
#include <stdio.h> #include <stdlib.h>
typedef struct BTree BTree;
struct BTree{
int data;
BTree *left;
BTree *right;
};
int search_min(BTree *root)
{ if(root==NULL) return -1;
if(root->left==NULL) return root->data;
return search_min(root->left); }
BTree *MakeNode(int data)
{ BTree *temp = malloc(sizeof(BTree));
if(temp == NULL) return NULL; temp->data = data; temp->left = NULL; temp->right = NULL;
return temp; }
void MakeBTree(BTree **root,int data)
{ if(*root == NULL){ *root = MakeNode(data); return; }
if(data < (*root)->data) MakeBTree(&((*root)->left), data);
if(data > (*root)->data) MakeBTree(&((*root)->right), data); }
int main()
{ FILE *fp = fopen("rand1000.dat","r"); char buff[256]; BTree *root = NULL;
while(fgets(buff,sizeof(buff),fp)) MakeBTree(&root, atoi(buff));
printf("min %d\n",search_min(root));
return 0;
}
473デフォルトの名無しさん:2007/07/09(月) 17:35:10
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4568.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2]gcc
 [3.3] 言語: C
[4] 期限: 7/11まで
[5] その他の制限: 特になし

よろしくお願いします。
474デフォルトの名無しさん:2007/07/09(月) 17:43:27
>>473
文字化け
475デフォルトの名無しさん:2007/07/09(月) 17:52:25
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4569.txt
実行例
1:コーラ 2:ミルクティー 3:ビール 4:オレンジジュース 5:緑茶
110円 140円 210円 190円 120円
希望の飲み物の番号を入力(終了する場合はCTRL+D) 1
商品はコーラ(価格=110円) お金を入れてください。
1000円:1
500円:0
100円:0
50円:0
10円:0

商品価格=110 釣銭あり
投入貨幣 =1000円(1), 500円(0), 100円(0), 50円(0), 10円(0)
釣銭 =1000円(0), 500円(1), 100円(3), 50円(1), 10円(4)
釣銭用貨幣=1000円(1), 500円(9), 100円(7), 50円(9), 10円(6)

希望の飲み物の番号を入力(終了する場合はCTRL+D)

[3] 環境
 [3.1] OS: WindowsXP
 [3.2]gcc
 [3.3] 言語: C
[4] 期限: 7/11まで
[5] その他の制限: 特になし
よろしくお願いします。
476473:2007/07/09(月) 18:12:41
すいませんでした。自分ではちゃんと表示されてたので気付きませんでした
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4570.txt
477デフォルトの名無しさん:2007/07/09(月) 18:14:31
>>473は俺んとこじゃ文字化けしてへんけど・・・
478デフォルトの名無しさん:2007/07/09(月) 18:20:57
UTF-8らすぃ
479デフォルトの名無しさん:2007/07/09(月) 18:48:48
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4571.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio.net 2003
 [3.3] 言語:C
[4] 期限:2007/7/10(火)10:30まで
[5] その他の制限:入力を読み込む際、fopen系関数を使用せず、コマンド・プロンプトから入力テキ

ストファイルを読み込むようにすること。


よろしくお願いします。
480デフォルトの名無しさん:2007/07/09(月) 18:52:57
[1] 授業単元: プロC
[2] 問題文(含コード&リンク):
findコマンドを呼び出して、指定されたディレクトリ
(複数可。指定がない場合は、カレントディレクトリ)以下にあるディレクトリ(指定されたディレクトリ自身も含む)
を表示するプログラムを作れ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 今週中
[5] その他の制限:無いです

どうかよろしくお願いします
481デフォルトの名無しさん:2007/07/09(月) 19:03:04
プロCそろそろ自重w
482デフォルトの名無しさん:2007/07/09(月) 19:14:12
うお、もう10回以上丸投げしてるのか、強者だ
483 ◆KqBLZKKJjc :2007/07/09(月) 19:14:14
すいません、素数の問題を質問した者です。
質問内容>>264 >>281


>>295 さんのプログラムで自己完結させていただいたのですが、
どう処理されているのかを、
説明してもらえないでしょうか?

あと、マシンパワーの問題で、
100万で実行しても、処理してくれないんです。
1万では実行できました。

100万で実行した結果を教えてください。
お願いします。
484デフォルトの名無しさん:2007/07/09(月) 19:24:17
お前はなめてるのかと
485デフォルトの名無しさん:2007/07/09(月) 19:33:21
malloc習ってないのか?
486デフォルトの名無しさん:2007/07/09(月) 19:43:32
マシンパワーというか、Study Cとかいう変なインタプリタを使ってる
からだろうな
487デフォルトの名無しさん:2007/07/09(月) 19:48:48
>>480
#include <unistd.h>
int main(int argc, char **argv)
{
    execvp("find", argv);
    return 1;
}
488デフォルトの名無しさん:2007/07/09(月) 21:25:13
[1] 授業単元: プログラミング技術
[2] 問題文(含コード&リンク):
(2)例えば式1+2[ENTER]を入力すると3を出力するように足し算の出来る
プログラムに改造したいです。他にも掛け算や割り算、引き算も出来るように
お願いします。

#include <stdio.h>
#include <ctype.h>

main(){
char c[10];
char *p ;
int i=0;

printf("Enter a number: ");

fgets(c,6,stdin);
p = &c; //ここでWarningが出るが問題にはならない
While(isdigit (*p));{
i=i*10+(*p++)-48;
}
printf("You have entered: %d\n", i);
}
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日中
[5] その他の制限:特になし

489デフォルトの名無しさん:2007/07/09(月) 21:56:12
>>488
>>25
>>86
全員違う奴だったら凄い学校だな
490デフォルトの名無しさん:2007/07/09(月) 22:12:29
>char c[10];
これに収まる程度の計算式で良いのか?
491デフォルトの名無しさん:2007/07/09(月) 22:13:51
[1] 授業単元:C言語 木構造
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4573.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cのみ
[4] 期限: 2007年07月10日AM04:00まで
[5] その他の制限: 関数には再帰を用いてください。

  自分ではどうにもなりませんでした。
  どうか力を貸してください。
  お願いします。
492デフォルトの名無しさん:2007/07/09(月) 22:50:57
>>490
そうです。よろしくお願いします
493デフォルトの名無しさん:2007/07/09(月) 23:04:29
>>428お願いします
494デフォルトの名無しさん:2007/07/09(月) 23:45:10
1] 授業単元: C言語
[2] 問題文(含コード&リンク):
“数字を入力してください”と表示して整数を入力し、
その数が2の何乗より大きいか求め
“それは2のn乗より小さいね”と表示する。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 7/10の昼ごろまで
[5] その他の制限: 特になし


よろしくお願いします。
495282:2007/07/09(月) 23:47:59
>>483
最初の二重ループはエラトステネスの篩の実装だね。
N以下の全部の数について求めているので、奇数限定篩に代えれば
メモリ半減と処理速度アップが見込めそうだ。
次のループに突入前にm1, m2, maxの初期値として素数2と素数3の
ペアを代入している。これは私のプログラムでも似たようなもんだ。
次のループは5以上N以下(…おっと、N未満か)の全ての整数について、
篩の目から零れ落ちてなければ一個前の素数との距離を求めて
それをm1 - m2(=max)と比較してより大きければm1, m2, maxを更新している。
ここも、奇数限定にすれば若干速くなりそうだな。
まぁ、奇数篩にするとロジックは追い難くなるから諦めてまともな処理系を導入するんだね。
そうそう、結果も貼っておこう。数値が更新されるたびに出力したものがこれ。
--
3:5:2
7:11:4
23:29:6
89:97:8
113:127:14
523:541:18
887:907:20
1129:1151:22
1327:1361:34
9551:9587:36
15683:15727:44
19609:19661:52
31397:31469:72
155921:156007:86
360653:360749:96
370261:370373:112
492113:492227:114
--
おー、丁度32行で収まったよw
496デフォルトの名無しさん:2007/07/09(月) 23:53:42
動的引数関数を#defineでラップする方法を教えてください。

#define ABC( prm00, prm01, ... ) \
func( prm00, prm01, ...);\

void func( int prm00, int prm01, ... )
{
}
エラーになってしまいます・・・
VC2005です
他で質問をしたけど馬鹿ばっかでマトモな答えが出ませんでした。
ここはそんな事、無・い・で・す・よ・ね???
497 ◆t0mHfbR13c :2007/07/09(月) 23:58:47
>>496
スレ違い。
498 ◆t0mHfbR13c :2007/07/09(月) 23:59:20
うお、トリップになっちまったぜ(謎
なんてこったい……_/ ̄|○
どれ
501デフォルトの名無しさん:2007/07/10(火) 00:14:05
>>499
この野郎!括弧つけやがって
502デフォルトの名無しさん:2007/07/10(火) 00:21:36
>>494
>その数が2の何乗より大きいか求め
>“それは2のn乗より小さいね”と表示する。

大丈夫か?
503デフォルトの名無しさん:2007/07/10(火) 00:25:22
>>479
それじゃエスパーかお前と同じ講義を受けてるやつにしか
解答できんだろうな。
504494:2007/07/10(火) 00:26:19
>>502
僕もそこは疑問に思いましたが、一応問題文そのままです。
考えてくださるのならどちらに合わせても良いですので、よろしくお願いします。
505デフォルトの名無しさん:2007/07/10(火) 00:34:17
496だけど、やっぱりここも無能の巣窟か・・・
偉そうに片付けるとか言ってお前らの許容範囲を超えると全否定か・・・
構って貰いたいからって粋がるな!
このクズ達が!
506デフォルトの名無しさん:2007/07/10(火) 00:49:14
>>496
可変個引数、マクロとかでググれば該当ページ結構あるけどなぁ・・・
__VA_ARGS__マクロでやりたいことは実現可能。
VC系はC99に対応してないと思ってたけど、VS2005はしてるみたいだね。
http://blogs.wankuma.com/rapt/archive/2006/12/10/49682.aspx
507デフォルトの名無しさん:2007/07/10(火) 00:50:26
508デフォルトの名無しさん:2007/07/10(火) 00:54:42
>>496
>499
509デフォルトの名無しさん:2007/07/10(火) 00:54:48
テンプレに従ってないやつは各自の判断で、
そもそも宿題じゃないのは無視でお願いします。
510デフォルトの名無しさん:2007/07/10(火) 00:59:49
>>494
#include <math.h>
#include <stdio.h>
int main()
{
int no = 0;
scanf("%d", & no);
int n = (int) (log(no) / log(2));
printf("“それは2のn乗より小さいね”\n");
return 0;
}
511デフォルトの名無しさん:2007/07/10(火) 01:04:46
>>428
できた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4575.zip

動作でいちいちキー入力するのめんどくさければ
コンパイル後、コマンドプロンプト上で
Main < Test.txtと入力するとファイルから読み込んで動く。
512494:2007/07/10(火) 01:07:34
>>510
ありがとうございます。
助かりました。
513デフォルトの名無しさん:2007/07/10(火) 01:12:17
>>494
#include <stdio.h>
int main(void) {
int n,i;
printf("数字を入力してください : ");
scanf("%d",&n);
for(i=0; n!=0; n/=2) i++;
printf("それは2の%d乗より小さいね \n",i);
return 0;
}
514デフォルトの名無しさん:2007/07/10(火) 01:15:32
>>512
ちょっwwwwwwほんまに それは2のn乗より小さいね って表示で良いんかい!?
515デフォルトの名無しさん:2007/07/10(火) 01:42:15
>>494
#include <stdio.h>
int main(void) {
int n,i;
printf("数字を入力してください : ");
scanf("%d",&n);
for(i=1; n>>i>0; i++);
printf("それは2の%d乗より小さいね \n",i);
return 0;
}
516デフォルトの名無しさん:2007/07/10(火) 03:25:16
だれか>>491お願いします。 期限: 2007年07月10日AM0820まで
517デフォルトの名無しさん:2007/07/10(火) 04:12:09
せかされると余計にやりたくなくなる性分
518デフォルトの名無しさん:2007/07/10(火) 06:33:31
さぁタイムリミットが近づいて参りました!ここらでさくっと答えてくれる救世主が現れることを期待して
俺はただただ見て〜〜るぅ〜♪
519デフォルトの名無しさん:2007/07/10(火) 06:51:05
>>516
構造体を定義するだけで終わるんじゃないのか?
520 ◆KrpcpKelXU :2007/07/10(火) 07:45:01
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
次の動作をするようなプログラムを書く・
ただしあまり極端な入力は想定しなくて良い。

1.入力として空白で区切られた浮動小数点数を2つ
受け取り、(入力終了は改行文字)それらの積を出力する。
ただし、scanf()は使用しないこと。

@入力として10000以下の正の整数を受け取り、
(入力終了は改行文字)その整数が素数であれば、prime number
と出力し、素数でなければnot prime numberと出力する。

A入力として10000以下の正の整数を受け取り、
(入力終了は改行文字)その整数の全ての素因数を小さい方か
ら順に「,」で区切って出力する。
(入力が60なら、出力は2,2,3,5となる)

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 13日お昼12時

自分でも考えているのですが、
よろしくおねがいします。
521479:2007/07/10(火) 08:11:45
>>503
おっしゃる通りです。
用語やアルゴリズムに関しての補足説明はすべきだと思いましたが
あまりにこちらの補足が足りず見苦しいレスになってしまって申し訳ないですorz

問題文に目を通してくださってありがとうございました。
522デフォルトの名無しさん:2007/07/10(火) 10:00:08
>>511
ありがとうございます!
523デフォルトの名無しさん:2007/07/10(火) 10:09:21
>>520
sscanf()は使ってもいいのかね
524デフォルトの名無しさん:2007/07/10(火) 10:41:16
atof strtok
525デフォルトの名無しさん:2007/07/10(火) 10:51:03
>1.入力として空白で区切られた浮動小数点数を2つ
>受け取り、(入力終了は改行文字)それらの積を出力する。
>ただし、scanf()は使用しないこと。
暇だったから↑のだけ作ってみた
コメントつけてないんで意味わからんかも

#include <stdio.h>
void question0 (void);
double scanf_ex(void);

int main(void){
question0();
return 0;
}
void question0 (void){
/*浮動小数点を二つ受け取りそれらの積を出力する*/
double ans;
char str[32];

ans = scanf_ex();
ans = ans * scanf_ex();

printf("%lf",ans);
gets(str);
}
526デフォルトの名無しさん:2007/07/10(火) 10:52:36
>>520 へ
525続き
double scanf_ex(void){
int i; int j; int cnt;
double ans;
char str[1024];

ans = 0;
printf("入力開始\n");
gets(str);
for(i = 0;i < 1000;i++){
if(str[i] == 0x20){
cnt = 1;
for(j = (i-1);j >= 0;j--){
ans += (str[j]-0x30) * cnt;
cnt = cnt * 10;
}
i = i + 1;
break;
}
}
printf("入力中[%lf]\n",ans);
for(cnt = 1;i < 1000;i++){
if(str[i] == '\0'){
break;
}
cnt = cnt * 10;
ans = ans + ( (double)(str[i]-0x30) / (double)cnt);
}
printf("入力完了[%lf]\n",ans);
return ans;
}
527デフォルトの名無しさん:2007/07/10(火) 10:54:07
gets 使っちゃだめだから、gets(str);を
fgets(str, 1024, stdin);に書き換えといて
528デフォルトの名無しさん:2007/07/10(火) 10:56:36
ゲッツ!
529デフォルトの名無しさん:2007/07/10(火) 11:03:04
524だがgets使っちゃダメなのか
530デフォルトの名無しさん:2007/07/10(火) 11:05:48
>520
A
#include <stdio.h>

int main(void)
{
int n, i = 2;

scanf("%d", &n);

while(i < n) {
if(n%i==0) {
printf("%d,", i);
n /= i;
}
else i++;
}
printf("%d", i);
return 0;
}
531デフォルトの名無しさん:2007/07/10(火) 11:05:59
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/ungetc.3.html
>gets() は絶対に使用してはならない。(ry
532デフォルトの名無しさん:2007/07/10(火) 11:11:27
改行が見つからないと「永遠にお待ちください」になる上に
まってるとデータ破壊していくのか
それはすまんかった
533デフォルトの名無しさん:2007/07/10(火) 11:16:56
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4576.txt
[3] 環境
 [3.1] OS: XP pro2
[3.2] VISUALU STUDIO 2005
 [3.3] 言語: C++
[4] 期限:〜7/12 09:00
[5] その他の制限:無し

どうかお願いします
534デフォルトの名無しさん:2007/07/10(火) 11:24:29
524
「gets()」使えないならつくっちまえ
と言うことで作った
/*gets(str);*/
/*バッファ(srt)は↑で1024確保してあるので1024までなら大丈夫*/
for(i=0;i<1024;i++){
str[i] = getchar();
if(str[i] == '\n'){
str[i] = '\0';
break;
}
}
535デフォルトの名無しさん:2007/07/10(火) 11:38:37
連投すまん
534書き込んでから冷静に読み返したら
527さんのでいいではないか・・・
てことで525続き
double scanf_ex(void){
int i; int j; int cnt; double ans;
char str[1024]; ans = 0;
printf("入力開始\n");
gets(str);
for(i = 0;i < 1000;i++){
if(str[i] == 0x20){
cnt = 1;
for(j = (i-1);j >= 0;j--){
ans += (str[j]-0x30) * cnt;
cnt = cnt * 10;
}
i = i + 1;
break;
}}
printf("入力中[%lf]\n",ans);
for(cnt = 1;i < 1000;i++){
if(str[i] == '\0'){
break;
}
cnt = cnt * 10;
ans = ans + ( (double)(str[i]-0x30) / (double)cnt);
}
printf("入力完了[%lf]\n",ans);
return ans;
}
536デフォルトの名無しさん:2007/07/10(火) 11:40:11
そしてまた間違えた524
525続き
double scanf_ex(void){
int i; int j; int cnt; double ans;
char str[1024]; ans = 0;
printf("入力開始\n");
fgets(str, 1024, stdin); /*←この辺修正*/
for(i = 0;i < 1000;i++){
if(str[i] == 0x20){
cnt = 1;
for(j = (i-1);j >= 0;j--){
ans += (str[j]-0x30) * cnt;
cnt = cnt * 10;
}
i = i + 1;
break;
}}
printf("入力中[%lf]\n",ans);
for(cnt = 1;i < 1000;i++){
if(str[i] == '\0'){
break;
}
cnt = cnt * 10;
ans = ans + ( (double)(str[i]-0x30) / (double)cnt);
}
printf("入力完了[%lf]\n",ans);
return ans;
}
537デフォルトの名無しさん:2007/07/10(火) 11:48:59
期限10分以内。言語はC++


 文法エラーを修正し、プログラムを実行できるようにせよ。
 文法エラーを修正できた後、ロジック・ミス(正しい結果
 をだせない)を見つけ、修正せよ。

#include <stdio.h>
int main()
{
int data[10] = {5*i};
int key,i;/* 検索する数値 */
index_counter, /* ループカウンター */
data_number = 10, /* 配列内のデータ数 */
counter = 0; /* 同じ数があるかないかを判断する変数 */
i++;

printf( "検索したい数を入力せよ>" );
scanf( "%d", key );

for ( index_counter=1; index_counter <= data_number; index_counter++ )
if( key == data[index_counter] ){
printf( "同じ値が見つかりました.位置は %d です.\n", index_counter );
counter++;
}

if ( counter == 0 )
printf( "同じ数は存在しません.\n" );
}


誰か頼む
538デフォルトの名無しさん:2007/07/10(火) 11:55:01
コンパイルは通った
#include <stdio.h>
int main()
{
int key,i;/* 検索する数値 */
int data[10] = {5*i};
int index_counter, /* ループカウンター */
data_number = 10, /* 配列内のデータ数 */
counter = 0; /* 同じ数があるかないかを判断する変数 */
i++;

printf( "検索したい数を入力せよ>" );
scanf( "%d", &key );

for ( index_counter=1; index_counter <= data_number; index_counter++ )
if( key == data[index_counter] ){
printf( "同じ値が見つかりました.位置は %d です.\n", index_counter );
counter++;
}

if ( counter == 0 )
printf( "同じ数は存在しません.\n" );
}
539デフォルトの名無しさん:2007/07/10(火) 11:56:59
int data[10] = {5*i};
上は見たことないからここか?
int data[10] = {0,5,2,1,3,4,,6,7,8,9}; /*←ここ*/
540デフォルトの名無しさん:2007/07/10(火) 11:59:23
ほい
#include <stdio.h>
int main()
{
int key,i;/* 検索する数値 */
int data[10] = {0,5,2,1,3,4,6,7,8,9}; /*←ここ*/
int index_counter, /* ループカウンター */
data_number = 10, /* 配列内のデータ数 */
counter = 0; /* 同じ数があるかないかを判断する変数 */
i=0;

printf( "検索したい数を入力せよ>" );
scanf( "%d", &key );

for ( index_counter=1; index_counter <= data_number; index_counter++ )
if( key == data[index_counter] ){
printf( "同じ値が見つかりました.位置は %d です.\n", index_counter );
counter++;
}

if ( counter == 0 )
printf( "同じ数は存在しません.\n" );
}
541デフォルトの名無しさん:2007/07/10(火) 12:09:43
>>538-540

thx、助かった
542デフォルトの名無しさん:2007/07/10(火) 13:23:28
わざとミスを残しておくあたりが笑えるw
543デフォルトの名無しさん:2007/07/10(火) 15:06:19
>>460お願いしますm(_ _)m
544デフォルトの名無しさん:2007/07/10(火) 15:16:30
すいません非再帰のマージソートのプログラムってどうすればいいですか?
545デフォルトの名無しさん:2007/07/10(火) 15:19:36
[1]授業単元:プログラミング演習
[2]問題文:二つの符号なし整数a,b(ただしa>bとし、bは2のべき乗とする。またaとbは8ビットで、演算の結果は16ビットとする。)をキーボードから読み込み、
@a,bを2進表示し、配列の中にビットを格納しなさい。
Aa,bの四則演算(上のを使って、相手に10進で入力させ、それを2進表示する)
c=a+b
d=a-b
e=a*b
f=a/b(商のみ)
を計算し、その結果を出力しなさい。
[3]環境
[3.1]Windows XP
[3.2]VisualC++,UNIX
[3.3]C言語
[4]2007年7月14日まで。
[5]習ったのはfor文、if文、do文、while文、シフト演算子{(>>)(<<)}、ビット単位のAND演算子(&)、OR演算子(|)、排他的OR演算子(^)、1の補数(~)、符号なしありの表し方(unsignなど)です。お願いしますm(_ _)m
546デフォルトの名無しさん:2007/07/10(火) 16:20:33
どなたか
>>473
>>475
お願いします
547デフォルトの名無しさん:2007/07/10(火) 16:22:59
できるだけ初心者っぽくわかりやすく書いたつもり
コメントつけてみたからあとは自分でしてみ
#include <stdio.h>
int main(){
int i;
char a,b;
char hairetu_a[8],hairetu_b[8];
printf("入力a(0-255):");
rewind(stdin);/*[stdin]入力バッファをクリアする*/
scanf("%d",&a);/*変数aへキーボードから入力された文字を10進数で受け取る*/
printf("入力b(0-255):");/*↑256以上の数字だと変数a以降のデータ領域を破壊するが知らん*/
rewind(stdin);/*[stdin]←入力バッファ(キーボードを押した時のキー情報)をクリアする*/
scanf("%d",&b);
printf("a=");
for(i=0;i<8;i++){
hairetu_a[i] = ((a&0x80)>>7);/*配列[0-7]へ先頭ビットからほりこむ*/
printf("%d",hairetu_a[i]); /*↑0x11101010(変数a) & 0x10000000(プログラムでは16進表記0x80)*/
a=a<<1; /*↑ので取った先頭ビットを右へ7ビットシフトして変数へ*/
}/*↑次のビットを先頭へ移動させる*/
printf("\n");
printf("b=");
for(i=0;i<8;i++){
hairetu_b[i] = ((b&0x80)>>7);
printf("%d",hairetu_b[i]);
b=b<<1;
}
printf("\n");
return 0;
}
548538-540:2007/07/10(火) 16:38:38
>>540
名誉のために言っておこう
素で間違えt(ry
549みえ:2007/07/10(火) 17:15:24
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): 次を元にして、足し算などの式を入力すると計算結果を表示するプログラムを作ることを考える。たとえば式1+2ENTERを入力すると結果の3が表示されるようにプログラムを作り直してください、エラー処理は無視してよい。
他の演算ができるようになっているとさらに高く評価する。
#include<stdio.h>
#include<ctype.h>
main(){
char c[10];
char *p;
int i=0;
printf("Enter a number:");
fgets(c,6,stdin);
p=&c;
while(isdigit(*p)){
i=i*10+(*p++)-48;
}
printf("You have entered: %d\n",i);
}

 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 7月10日
よろしくお願いします



550デフォルトの名無しさん:2007/07/10(火) 17:32:23
>>488と同じ人?
>>507
551538-540:2007/07/10(火) 17:34:22
ぽいっとな
#include<stdio.h>
#include<ctype.h>
main(){
char c[10];
char enzansi;
char *p;
int i=0,j=0;
printf("Enter a number:");
fgets(c,6,stdin);
p=c;
while(isdigit(*p)){
i=i*10+(*p++)-48;
}
enzansi = (char)(*p++);
while(isdigit(*p)){
j=j*10+(*p++)-48;
}
switch(enzansi){
case '+':i=i+j; break;
case '-':i=i-j; break;
case '*':i=i*j; break;
case '/':i=i/j; break;
case '%':i=i%j; break;
}
printf("You have entered: %d\n",i);
getch();
}
552551の肉まん:2007/07/10(火) 17:35:26
で、p=&c; と例題にはあるんだがコレだとc配列のアドレスのアドレス
見に行くことになってエラーが出る気がする
変数名がローマ字なのはわかりやすくするためなんだが
気分を害したらすまん
553デフォルトの名無しさん:2007/07/10(火) 18:55:55
&c[0〜10]って書くか、p=c(cの先頭のアドレス)って書くならエラーは出ないだろうけど
554デフォルトの名無しさん:2007/07/10(火) 19:13:35
fgets(c,6,stdin);がもったいない気がする
555デフォルトの名無しさん:2007/07/10(火) 19:27:29
>>553は 0〜9やな。訂正。まぁ、その説明すら要らんだろうけど・・・
556デフォルトの名無しさん:2007/07/10(火) 19:50:55
[1] 授業単元:プログラミング
[2] 問題文:TAX料金を算出するプログラムを作る。
       乗客が申告した距離から料金を算出する。(初乗り3kmまで500円。300m毎に50円加算。)
       申告距離は0<km<49まで。以外は賃走できない。50kmの場合は賃走をやめ、営業所に
       帰り、日報を作成する。
       稼ぎがない場合は稼ぎはないと記す。
       《日報内容》
       ア、走った総距離
       イ、一日の売上
       ウ、走った平均距離
       エ、平均金額
       オ、走ったなかでの最長距離
       カ、走ったなかでの最短距離
        
[3] 環境
 [3.1] OS: (Windows xp)
 [3.2] コンパイラ名とバージョン: (VS 2003)
 [3.3] 言語: Visual C++
[4] 期限: [2007年7月15日3:30まで]

自分で考えてみましたが、特にオ、カ、が手に負えないので宜しくお願いします。
557デフォルトの名無しさん:2007/07/10(火) 19:56:04
>>556
とりあえず自分で考えたのUPしてみて。
558デフォルトの名無しさん:2007/07/10(火) 20:04:02
>>556
最長と最短の変数を用意しておいて、申告と比較すればよいのではないの?
559デフォルトの名無しさん:2007/07/10(火) 21:07:53
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):与えた文字列を逆順に並べる関数str_inve()をポインタを用いて実現せよ。
たとえば, char str[] = "This is a pen."; と初期化してから str_inve(str); と呼び出せば,配列 str は,その先頭から .nep a si sihT と格納される.
※印字するのではなくて,配列に「格納」されないといけない.
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 今週中
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
   配列の添字やポインタのオフセット使用は不可

よろしくおねがいしますm(_ _)m
560デフォルトの名無しさん:2007/07/10(火) 21:35:39
>>559
#include <stdio.h>
#include<string.h>
#define N 256
int main(void)
{
char str[N],strev[N];
int i=0,n;
printf("文字列を入力してください:");
fgets(str,N-1,stdin);
n=(int)strlen(str)-2;
while(n>=0)
strev[i++]=str[n--];
strev[i]='\0';
printf("%s\n",strev);
return 0;
}
561デフォルトの名無しさん:2007/07/10(火) 21:42:37
間違った、関数にするのか。
#include <stdio.h>
#include<string.h>
#define N 256

char *str_inve(char *str)
{
static char strev[N];
int n,i=0;
n=(int)strlen(str)-2;
while(n>=0)
strev[i++]=str[n--];
strev[i]='\0';
return strev;
}

int main(void)
{
char str[N];

printf("文字列を入力してください:");
fgets(str,N-1,stdin);

printf("%s\n",str_inve(str));
return 0;
}
562デフォルトの名無しさん:2007/07/10(火) 21:49:03
>>556
こんな感じでどう?
変数の入れ替えの仕方はいろいろあるからググると楽しいかも
#include<stdio.h>
#include<string.h>
void str_inve(char*str){
int i,j;
char buf;
for(i=0,j=(strlen(str)-1);i<j;i++,j--){
buf = str[i];
str[i] = str[j];
str[j] = buf;
}
}
int main(void){
char str[]="This is a pen.";
str_inve(str);
printf("%s",str);
getch();
return 0;
}
563デフォルトの名無しさん:2007/07/10(火) 21:50:22
562
>>556じゃなかった>>559だった
ついでに次からは更新してから書き込む
564デフォルトの名無しさん:2007/07/10(火) 22:23:52
[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4579.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語:C
[4] 期限:7月14日
[5] その他の制限: 一応ポインタと配列を使う
できれば>>461もお願いします。
565デフォルトの名無しさん:2007/07/10(火) 22:29:25
>>561
fgets側で\0の分の確保はしてくれるからわざわざN-1を引数にとらなくてもいいんじゃないの?
566デフォルトの名無しさん:2007/07/10(火) 22:32:23
Nで良いか、仕様の勘違い。
567563:2007/07/10(火) 22:34:58
間違えたついでに答えてみよう、ただしこのまま提出はするな
#include<stdio.h> #define KOREIJOUHATARAKAN 48999
int otonanosekaino_keisan(int h_kyori){
h_kyori-=3000;
if(h_kyori<0){ return 300; }
return ((h_kyori/300)*50);/*端数切捨て?*/
}
int main(void){
int i;
int kyori=0,kane=0;
int total=0,max=0,min=KOREIJOUHATARAKAN;
for(i=0;i<KOREIJOUHATARAKAN;i++){
printf("距離入力/メートル(0で終了):");
rewind(stdin);
scanf("%d",&kyori);
if(kyori==0 ){i+=1;break;
}else if(total>=KOREIJOUHATARAKAN){total=KOREIJOUHATARAKAN;i+=1;
printf("おっとお客さん、今日は営業終了だ、ココで降りてもらうぜ");break;
}
total+=kyori;
kane += otonanosekaino_keisan(kyori);
if(kyori>max){max=kyori;}if(kyori<min){min=kyori;}
}
printf("日報内容\n");
printf("ア、走った総距離 %d\n",total);
printf("イ、一日の売上 %d\n",kane);
printf("ウ、走った平均距離 %d\n",total/i);
printf("エ、平均金額 %d\n",kane/i);
printf("オ、走ったなかでの最長距離%d\n",max);
printf("カ、走ったなかでの最短距離%d\n",min);return 0;
}
568デフォルトの名無しさん:2007/07/10(火) 22:41:34
>>564
1番
#include <stdio.h>
#include<stdlib.h>

int main(void)
{
char *str;
int i=0;
str=(char *)malloc(sizeof(char)*50);
fgets(str,50,stdin);
while(str[i]!='\0')
putchar(str[i++]);
free(str);
return 0;
}

こういうのってポインタを使ったって言って良いのかな。
putchar(*(str+i++));みたいに分かりやすくポインタしてないとダメ…?
569デフォルトの名無しさん:2007/07/10(火) 22:47:08
>>568
malloc関数とかはまだ習っていないんですが。
570デフォルトの名無しさん:2007/07/10(火) 22:48:36
>>569
そこはどうでも良い所だから、普通にchar str[50]でいいや。
571デフォルトの名無しさん:2007/07/10(火) 22:48:45
*(str+i++)

ではなく

*p++

がいい!
572デフォルトの名無しさん:2007/07/10(火) 22:51:25
#include <stdio.h>
#include<stdlib.h>

#define SIZE 50

int main(void)
{
char *pstr,str[SIZE];
fgets(str,SIZE,stdin);
pstr=str;
while(*pstr != '\0')
putchar(*pstr++);
return 0;
}

微妙に改変。
573デフォルトの名無しさん:2007/07/10(火) 22:55:00
pstr=str;
while(*pstr != '\0')
putchar(*pstr++);



for()

がいい!
574デフォルトの名無しさん:2007/07/10(火) 22:56:36
やっぱポインタを使えって>>572風に書けってことなのかな?
575デフォルトの名無しさん:2007/07/10(火) 23:10:27
>>564

>>461の1〜4
めんどいから動作確認はしていない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4584.txt
576デフォルトの名無しさん:2007/07/10(火) 23:14:45
559
>>562のやり方をscanfで文字列を入力できるようにしてみたのですが
this is a pen.のようにスペースを挟むと、sihtしか表示されません
どうしたらよいのでしょうか
#include<stdio.h>
#include<string.h>
void str_inve(char*str){
int i,j;
char buf;
for(i=0,j=(strlen(str)-1);i<j;i++,j--){
buf = str[i];
str[i] = str[j];
str[j] = buf;
}
}
int main(void){
char str[128];
scanf("%s",str);

str_inve(str);
printf("%s",str);

return 0;
}

後、getch();を加えると
undefined reference to '_getch'
collect2: ld returnde 1 exit status
というエラーがでてコンパイルがとおらなかったのでgetch();を外してみました
もしかしたらこれが原因なんでしょうか(´・ω・`)
577デフォルトの名無しさん:2007/07/10(火) 23:19:18
>>576
fgets
578562:2007/07/10(火) 23:20:04
getch()は警告出るがコンソールの表示残すためにつかってた
消しても問題なし、むしろ消しといて
579デフォルトの名無しさん:2007/07/10(火) 23:22:13
>>576
scanf("%[^\n]\n", str);
とか
scanf("%127[^\n]\n", str);
580562:2007/07/10(火) 23:22:36
577さんのヒント追加バージョン
#include<stdio.h>
#include<string.h>
void str_inve(char*str){
int i,j;
char buf;
for(i=0,j=(strlen(str)-1);i<j;i++,j--){
buf = str[i];
str[i] = str[j];
str[j] = buf;
}
}
int main(void){
char str[128];
fgets(str,128,stdin);
str_inve(str);
printf("%s",str);

return 0;
}
581デフォルトの名無しさん:2007/07/10(火) 23:28:59
582デフォルトの名無しさん:2007/07/11(水) 00:17:21
1] 授業単元:アルゴリズム
[2] 問題文:以下のプログラムを用いて圧縮されたテキストを元に戻すプログラムを作れ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4586.c
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: borland
 [3.3] 言語: Cのみ
[4] 期限: 7/12
[5] その他の制限: なし、希望は初心者っぽくお願いします。

どなたかお願いします。
583デフォルトの名無しさん:2007/07/11(水) 00:19:45
>>281
二番目違くない?
584デフォルトの名無しさん:2007/07/11(水) 00:29:24
[1] 授業単元:計算機実習
[2] 問題文:0度から360度までのsin,cos,tanの値を任意の刻み幅で出力するプログラムを作成せよ。
ただし、刻み幅は10度などの整数刻みとする。
(T)結果が見やすいように角度(単位は度)、ラジアン値、sin,cos,tanの順番で横並びに出力すること
(U)90度、270度の場合、tanの値は無限大となる。
数値計算上無限大演算は回避すべきであるからこの場合はtan値を計算せずに、
角度、ラジアン値、sin,cos,tanの順番で横並びに出力すること
(V)刻み幅をscanf関数を使って与えることでsin,cos,tanの値を出力できるプログラムを作成すること。
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7/14
[5] その他の制限: とくにございません。ぜひよろしくお願いします…。
585デフォルトの名無しさん:2007/07/11(水) 00:40:49
>>582
#include <stdio.h>
int main(int argc, char **argv)
{
    char queue[3];
    int c, n, qhead = 0, qtail = 0;
    while ((c = getchar()) != EOF) {
        queue[qtail] = c;
        qtail = (qtail + 1) % 3;
        if (qhead != qtail)
            continue;
        if (queue[(qhead + 1) % 3] == 0) {
            c = queue[qhead];
            n = queue[(qhead + 2) % 3];
            while (n--) putchar(c);
            qhead = qtail = 0;
        } else {
            putchar(queue[qhead]);
            qhead = (qhead + 1) % 3;
        }
    }
    while (qhead != qtail) {
        putchar(queue[qhead]);
        qhead = (qhead + 1) % 3;
    }
    return 0;
}
586デフォルトの名無しさん:2007/07/11(水) 00:41:45
>>545
できたというか自分で作ったものだから直したお。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4587.txt
587デフォルトの名無しさん:2007/07/11(水) 00:45:32
>>545
すまん>>586だと数値の範囲チェックがおかしいので
53行目をb = 1;にしてくれ
588デフォルトの名無しさん:2007/07/11(水) 01:27:42
>>582のものです。
>>585さんありがとうございました。おかげさまでできました。本当にありがとうございます
589デフォルトの名無しさん:2007/07/11(水) 01:28:31
[1] 授業単元: プログラミング
[2] 問題文:
@標準入力から入力される文字列(英小文字のみ)をchar型の配列に格納し、各アルファベットの数を表示するプログラムを作れ。
ただし、0個のアルファベットについては表示させないものとする。
例:this is very nice book(入力後EOF)
b=1
c=1
e=2
h=1
(後略)
ヒント:要素が26個の配列を用意し、それぞれのアルファベットをカウントする。
文字コードを利用すれば、"a"-"a"=0であり、"b"-"a"=1である。
A数字によって構成される文字列をchar型配列へ読み込み、それをint型のデータに変換する関数toatoi()を作れ。
ただし、文字列中に数字以外の文字がある場合は戻り値を-1として返すように設定せよ。
さらに、toatoi()を利用して標準入力から与える文字列を数値とし、printfの%dを用いて表示するプログラムを作成せよ。
B最大10文字50行の文字列を読み込み、縦に変換して出力するプログラムを作成せよ。
例:
0001(改行)1100(改行)2222 と入力
102(改行)009(改行)012(改行)012 と出力
配列の項目なので、配列を使用した解法を伝授お願いします
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:どちらでも可
[4] 期限:7/11の午後2時まで
[5] その他の制限:無し
590デフォルトの名無しさん:2007/07/11(水) 02:18:03
[1]授業単元:基本プログラミング
[2]問題文
   キーボードから入力した実数データの平均、分散、標準偏差、各データの偏差値を求めよ。なおデータ入力はEOF入力で終了するようにすること
   参考として平均=1/nΣ(全データの合計)、分散=1/(n-1)Σ(全データの合計-平均)2乗、標準偏差=√分散、各データの偏差値=50+(全データの合計-平均)*10/標準偏差である
<実行例>[]のなかが入力する実数
input data->[45]
input data->[60]
input data->[50]
input data->[64]
input data->[39]
input data->[82]
input data->(EOF入力)
mean=56.6667
variance=239.867
standard deviation=15.4876
deviation scores
1:42.4671
2:52.1523
3:45.6955
4:54.735
5:38.593
6:66.3571
[3]環境
 [3.1]OS:windows xp
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C++ (Cはよくわかりません)
[4]7月11日18時
[5]その他制限:特にありません
よろしくおねがいします。
591デフォルトの名無しさん:2007/07/11(水) 04:01:17
>>584
#include <stdio.h>
#include <math.h>

int main(void){
double pi=acos(-1.0),input;

printf("角度を入力->");
scanf("%lf",&input);
getchar();

printf("%f° %fπr %f %f",input,input/180,sin(pi*input/180),cos(pi*input/180));

if(int(input)!=90 && int(input)!=270)printf(" %f",tan(pi*input/180));

getchar();
return 0;
}

蚊にたたき起こされたから暇つぶしに。
592デフォルトの名無しさん:2007/07/11(水) 04:58:13
[1] 授業単元:プログラムの考察
[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4588.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:VC++ 6.0等)
 [3.3] 言語:C
[4] 期限: 2007年07月12日00:00まで
[5] その他の制限:とくになし。

よろしくお願いします。
593デフォルトの名無しさん:2007/07/11(水) 06:25:22
[1] 授業単元: プログラム実習
[2] 問題文(含コード&リンク):
次の微分方程式を数値計算を用いて解け
オイラー法を使用すること。
・3*d^2x/dt^2+dx/dt+2x=4
・x(t=0)=0
・dx/dt(t=0)=0
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland bcc32
 [3.3] 言語: C
[4] 期限: 今日の九時
[5] その他の制限: なし
594デフォルトの名無しさん:2007/07/11(水) 06:27:15
おいらっ、そんなの習ったことないから分からないっぺ
595デフォルトの名無しさん:2007/07/11(水) 08:44:06
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
2つのテキストファイル名を入力してファイルの内容が同じならば
「same」と出力し同じでないなら「not same」と出力する
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:あさって
[5] その他の制限:標準ライブラリは使ってはいけない
596デフォルトの名無しさん:2007/07/11(水) 09:03:46
また標準ライブラリ禁止かwww
597デフォルトの名無しさん:2007/07/11(水) 09:03:48
>>595
>[5] その他の制限:標準ライブラリは使ってはいけない
なんと!
fopen()などのファイル処理系も、printf()さえも使ってはならぬと仰るか。
598デフォルトの名無しさん:2007/07/11(水) 09:16:44
printf()はどうやって作られているのか教えてください

stdio.hなしで画面に出す方法教えてください
599デフォルトの名無しさん:2007/07/11(水) 09:22:13
>>599
大丈夫、stdio.hをインクルードしなくてもprintf(), puts(), putchar()は使える。
600デフォルトの名無しさん:2007/07/11(水) 09:24:42
>>599
ttp://www.bohyoh.com/CandCPP/C/Library/printf.html
ほぉ、やってもらおうじゃないか。コンパイラが必要なヘッダを自動的に
取り込んでくれているっつーのは無しな。
601デフォルトの名無しさん:2007/07/11(水) 09:35:28
どうやったらprintfが自作できるのか教えてください
602デフォルトの名無しさん:2007/07/11(水) 10:04:22
stdio.hいらないよ


#include<conio.h>
int main(void){for(int i=0;i<16;cprintf("\r\n"),i++)for(int j=0;j<16;textcolor(i*16+j),cprintf("■"),j++);return 0;}
603デフォルトの名無しさん:2007/07/11(水) 10:05:55
stdio.hをincludeしないとprintfなんかをリンクしない実装も規格上は許されてるんだっけ。
604デフォルトの名無しさん:2007/07/11(水) 10:10:21
>>592
current_x, current_y, depth:
 探索を一歩進めるごとに変化していき、再帰呼び出しから戻ってきた時
 には復元されて欲しい値。再帰探索関数の引数としてスタックに
 保持することで、その両者が自然に実現できる。
min_depth:
 探索を進めたり戻ったりする毎に変化する値ではなく、単調に変化して
 いく値なので、再帰関数のスタックではない場所に保持しておく必要が
 ある。ポインタを用いて引数渡しすることも可能だが、ここでは
 簡便のためグローバル変数となっている。
state
 探索の対象。実は値の変化に関してはcurrent_x, current_y, depthに
 似た特性を持っているが、Cでは配列の値渡しが出来ないので、スタッ
 クを利用してバックトラックを自動的に実現することは出来ない。
 ここでは簡便のためグローバル変数となっている。
goal_x, goal_y
 ゴールの判別は座標ではなくマップの値によってなされており、使われ
 ていない。
605デフォルトの名無しさん:2007/07/11(水) 10:18:42
リンカとコンパイラは本来別物だから、
リンクを禁止するなんてのは無理では?

それにヘッダが無くても未知の関数は勝手にintを返す関数とみなして
警告出すだけでコンパイルは実行するでしょ。

606デフォルトの名無しさん:2007/07/11(水) 10:19:42
そういうことを言い出したら、んじゃ日ごろ取り込んでいるヘッダって何なの?ってなるぞ。
よそでやれ。
607デフォルトの名無しさん:2007/07/11(水) 10:21:54
C89ならそうだな
608デフォルトの名無しさん:2007/07/11(水) 10:22:10
単にdefineと関数プロトタイプ宣言の集合体だよ。
別に無かったら無かったでコンパイラは勝手に解釈する。

その解釈が正しいという保証はないからincludeするだけの事。
609デフォルトの名無しさん:2007/07/11(水) 10:25:39
>>606
・C99やC++では必須
・FILE*などの型やマクロ等の定義を取り込む上で必要
・戻り値の型がintでない関数では必要(自分で宣言しても良いが)
・いずれにせよ型チェックを有効にし、暗黙の型変換を利用できるようにするために、
 C89であっても取り込んだほうが良い
610デフォルトの名無しさん:2007/07/11(水) 10:29:12
>>605
>リンカとコンパイラは本来別物だから、
>リンクを禁止するなんてのは無理では?
古典的なコンパイラならもちろんそうだが、そうなっている保証はないんじゃないかってことだ。
コンパイラがリンカに指示を出す方法なんていくらでも考えられる。

>それにヘッダが無くても未知の関数は勝手にintを返す関数とみなして
これはその通り。
611デフォルトの名無しさん:2007/07/11(水) 10:32:43
>>609
だから  よ  そ  で  や  れ。
612デフォルトの名無しさん:2007/07/11(水) 10:42:42
C89ではプロトタイプの省略時の仕様を定めているわけだから、
コンパイラやリンカの実装がどうなっていようが関係ないのではないかな。
プロトタイプの省略されたソースをエラーにするようなC89コンパイラは
規格準拠とは言えないのではないだろうか。
613デフォルトの名無しさん:2007/07/11(水) 10:45:28
>>25
学生の俺からみても、なんで
i=i*10+(*p++)-48
みたいにわかりにくい書き方で出題しているんだろうね。
実力を見るためにわざと隠しているとしか思えない。
48は文字コードの計算で表すでしょ普通?
614デフォルトの名無しさん:2007/07/11(水) 10:46:08
「標準ライブラリ禁止」と言ってるのに
>>599 みたいなことを言うまぬけが居るから話がこじれる。

標準ライブラリ禁止というからにはprintf()のような標準ライブラリ関数を
使ってはならないわけで、stdio.hをインクルードするかどうかは関係ない。
615デフォルトの名無しさん:2007/07/11(水) 10:47:53
ttp://www.bohyoh.com/CandCPP/C/Library/index.html
とりあえずここに挙げられているものはまず禁止だな。さぁ、やってみ。
616デフォルトの名無しさん:2007/07/11(水) 10:53:04
Cの言語仕様には入出力機能はないんだぞ。
標準ライブラリ関数使わないでどうやって入出力するんだ。
617デフォルトの名無しさん:2007/07/11(水) 10:53:21
#include <unistd.h>
して、read()とwrite()を使うだけだろう。
618デフォルトの名無しさん:2007/07/11(水) 10:56:21
DOS/Winの場合は?
619デフォルトの名無しさん:2007/07/11(水) 10:56:23
まぁ、標準的じゃないものを使えば良いんでない?w
620デフォルトの名無しさん:2007/07/11(水) 10:57:21
>>618
>>595を見ろよ。"Linux"だ。
621デフォルトの名無しさん:2007/07/11(水) 10:59:45
conio.h
622デフォルトの名無しさん:2007/07/11(水) 11:00:06
Windowsの場合はGetStdHandle(), ReadFile(), WriteFile()でおk
DOSの場合はINT21使うなり汁
623デフォルトの名無しさん:2007/07/11(水) 11:09:46
しっかし、標準ライブラリを使えば面倒にならないのに、なんで変な制限をするのか分からん。
どんな学校だ?独自で何かシステムを開発しているのか?
624デフォルトの名無しさん:2007/07/11(水) 11:14:59
標準ライブラリが分かってない奴が>>1のテンプレ通りに書いてるとか。
625デフォルトの名無しさん:2007/07/11(水) 11:14:27
>>613
ていうか式の読み方が主題だろ
テストなんだから。
626デフォルトの名無しさん:2007/07/11(水) 11:18:11
>>623
こういう選択肢もあるって事をわからせるためじゃないの?
結果は同じでもプログラムソースは何通りもあるんだから、所詮宿題。
627デフォルトの名無しさん:2007/07/11(水) 11:20:55
>>623
組込みでしょ
-nostdlibが必須な環境なら仕方あるめぇよ
628デフォルトの名無しさん:2007/07/11(水) 11:22:21
>>624
なるほど。っつか、このスレとしては、標準ライブラリを使用するのが最低限ということで
受け付ける方針に変えた方が良いかも・・・俺の勝手な意見だが。
629デフォルトの名無しさん:2007/07/11(水) 11:25:49
まあ
・例えばstrstr()モドキを作れという問題で、strstr()を使って欲しくない
・自分の習っていない関数は使って欲しくない
のどっちかだろね
630デフォルトの名無しさん:2007/07/11(水) 11:29:43
頻出のプロCだけは意図的にシステムコール使えって問題多いけどな

あれ、単にUnixのシステムコール呼ばせるだけで、問題そのものは
超つまらない・下らない悪問が多いんだよなあ
631デフォルトの名無しさん:2007/07/11(水) 12:25:51
フラッシュ暗算のプログラムを作りたいのですが、よく分かりません。
アドバイスいただけたら嬉しいです。
632デフォルトの名無しさん:2007/07/11(水) 12:28:26
授業単元:
環境
OS:Windows
コンパイラ名とバージョン:ボーランド
言語:C
テーマ:ポインタの利用
問題1:ポインタを利用して、2つの値の合計を求めなさい
int a = 10, b = 5,g;
int *pa,*pb;
実行画面
g:15


633デフォルトの名無しさん:2007/07/11(水) 12:37:38
授業単元:C言語
環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:ポインタの利用
問題1:ポインタ変数を利用して、文字型の配列変数mojiの値を実行画面のように表示させなさい
char moji[] = "ABCD";
char *mp;
実行画面
A
B
C
D

問題2:文字列を入力し、文字列中の数字のみを別配列に格納し表示しなさい
実行画面
文字列入力==>AB1CDE23FG4
数字文字列:1234
以上の2問どなたかお願いします
634デフォルトの名無しさん:2007/07/11(水) 12:38:35
>>632
g=*&a+*&b;
635デフォルトの名無しさん:2007/07/11(水) 12:39:15
>>632
#include <stdio.h>
int main(int argc, char **argv){
int a = 10, b = 5,g;
int *pa,*pb;
pa = &a;
pb = &b;
g=((*pa)+(*pb));
printf("g:%d",g);
return 0;
}
636デフォルトの名無しさん:2007/07/11(水) 12:39:54
>>632
include <stdio.h>

int main(void)
{
int a = 10, b = 5,g;
int *pa,*pb;

pa=&a;pb=&b;
g=*pa+*pb;

printf("g:%d",g);

return 0;
}
637デフォルトの名無しさん:2007/07/11(水) 12:40:19
>>633
#include <stdio.h>
int main(void) {
char moji[] = "ABCD";
char *mp;
mp=moji;
while( *mp ) {
printf("%c\n",*mp);
mp++;
}
return 0;
}
638デフォルトの名無しさん:2007/07/11(水) 12:48:36
>>586さん、やってもらったのはありがたいのですが、fgetsとかexitなどならってないので…すみません。
639デフォルトの名無しさん:2007/07/11(水) 12:48:53
>>633
#include <stdio.h>
int main(void) {
char buf[256],num[256];
int b=0,n=0;
printf("文字列入力==>");
fgets(buf,sizeof(buf)/sizeof(buf[0]),stdin);
while( buf[b]!='\n' && buf[b]!=EOF ) {
if( buf[b]>='0' && buf[b]<='9' ) num[n++]=buf[b];
b++;
}
num[n]='\0';
printf("数字文字列:%s",num);
return 0;
}
640デフォルトの名無しさん:2007/07/11(水) 13:07:34
>>633

//問題1
#include<stdio.h>
int main(void){
char moji[]="ABCD";
char *mp;
for(mp=moji;*mp;mp++)
printf("%c\n",*mp);
return -53;
}

//問題2
#include<stdio.h>
int main(void){
char moji[99],suuji[99];
char *mp,*sp;
printf("文字列入力==>");
scanf("%s",moji);
for(mp=moji,sp=suuji;*mp;mp++)
if(*mp>='0'&&*mp<='9')
*sp=*mp,sp++;
*sp='\0';
printf("数字文字列:%s\n",suuji);
return 2975418;
}
641デフォルトの名無しさん:2007/07/11(水) 13:38:09
[1] 授業単元:Cプログラミング基礎
[2] 問題文(含コード&リンク):http://wwws.kobe-c.ac.jp/deguchi/c/prob/pointer.html
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語:C
[4] 期限:2007年07月11日 15時迄
[5] その他の制限:ポインタの基礎までは学習済み
642ハッシュ法:2007/07/11(水) 13:48:57

[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
科目と点数を入力し、ハッシュ法を使って記憶する。
あとで、科目を入力して成績を出力させる。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:できるだけ早くお願いします
[5] その他の制限:なるべく簡単な構造で構成してもらいたいです
643デフォルトの名無しさん:2007/07/11(水) 13:56:32
>>642
多分生徒名や生徒番号なんかもいるのだろ?
ハッシュ関数の指定はないのか?
644デフォルトの名無しさん:2007/07/11(水) 13:57:25
ハッシュはないけどチ○シュなら・・・
645ハッシュ:2007/07/11(水) 14:03:16
>>643
特に指定はありません。
また生徒名、番号は無しでいいです。

>>644
646デフォルトの名無しさん:2007/07/11(水) 14:06:28
>>641
int qeq( float a, float b, float c, float *x1, float *x2 )
{
/* さー考えよう! */
if(a==0)
return -1;
else if(b*b-4*a*c<0)
return 0;
else if(b*b-4*a*c==0){
*x1=-b/(2*a);
return 1;
}else{
*x1=(-b+sqrt(b*b-4*a*c))/(2*a);
*x2=(-b-sqrt(b*b-4*a*c))/(2*a);
return 2;
}
}
647デフォルトの名無しさん:2007/07/11(水) 14:07:50
int ten[10],kamoku;

科目番号を入力してください kamoku
点数を入力してください ten[ kamoku ]

出力する科目番号を入力してください kamoku
点数はten[ kamoku ]です
648デフォルトの名無しさん:2007/07/11(水) 14:10:28
>>647
母国語でおk
649デフォルトの名無しさん:2007/07/11(水) 14:10:56
>>648 わかったにd
650デフォルトの名無しさん:2007/07/11(水) 14:30:57
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):キーボードから順次入力された正の整数を、0が入力されるまで、
配列に順番に格納し、次に、ある1つの正の整数を与えると、
それが何番目に入力された整数であるかを表示する
プログラムを作成してください

よろしくお願いします
[3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 7月11日
651デフォルトの名無しさん:2007/07/11(水) 14:49:02
課目と点数位でハッシュ関数使うかな?
652デフォルトの名無しさん:2007/07/11(水) 15:06:32
>>650

#include<stdio.h>
int main(vold){
int hairetsu[99],i,n=9326;
for(i=0;i<sizeof(hairetsu)/sizeof(hairetsu[0])&&n!=0;i++){
do printf("%d:正数を、入れろ!!",i),scanf("%d",&n);while(n<0);
hairetsu[i]=n;
}
do printf("最後に、もう一度、正数を、入れろ!!"),scanf("%d",&n);while(n<=0);
for(i-=2;i>=0;i--)if(hairetsu[i]==n)printf("%d\n",i);
}
653デフォルトの名無しさん:2007/07/11(水) 15:16:53
【質問テンプレ】
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
//次のプログラムは式を入力すると計算結果を表示する。現在の内容を理解し、誤りを訂正してコメントをつけよ//どうしたらうまく動くか//
#include<stdio.h> #include<stdib.h> #include<ctype.h>
char *p; char c[100];
int expression(void); //式
int term(void); //項
int number(void)//数値データ
main(){ int ans; while(1){printf("Enter expression ; ");
fgets(c,90,stdin); p=&c; if(*p=='/n');
break; ans=expression();
printf("Answer;%d/n" , ans);}
int expression()int ans; ans = term();
while(){if(*p == '+'){
ans = ans + term(); }
else if(*p == '-'){
ans = ans - term(); } else
break;} return(ans);
}int term(){ int ans,x;
ans = number(); while(1){ if(*p == '*'){
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年7月12日まで
[5]特になし


タイピングミスあったらすいません
654デフォルトの名無しさん:2007/07/11(水) 15:20:49
>>652さん、助かりました〜ありがとうございます!!m(_ _)m
655デフォルトの名無しさん:2007/07/11(水) 15:43:24
>>653
おいたはそこまでにしとこうね
656デフォルトの名無しさん:2007/07/11(水) 15:55:41
>>642
課目数だけ課目と点数の配列を用意する。
課目番号に対して格納場所を一意になる関数を用意する。
こんな感じか?
657デフォルトの名無しさん:2007/07/11(水) 15:56:30
>>653
とりあえず
/n

\n
だな
658デフォルトの名無しさん:2007/07/11(水) 16:14:44
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
123・・・9の間に+かーをいくつかいれて、計算結果が100になるものを
すべて求めるプログラムを作成してください。
例えば1+23ー4+56+7+8+9はその解の1つです。
最初の1の前にーをつけることを許した場合と許さない場合について求めてください。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7月11日
[5] その他の制限:なるべく簡単な構造で構成してもらいたいです

よろしくおねがいしますm(_ _)m
659デフォルトの名無しさん:2007/07/11(水) 16:23:40
>>658
先頭に負号をゆるさない場合、すべての組み合わせは3^8=6561通り。
ゆるす場合、すべての組み合わせは3^8*2=13112通り。
たったこれだけだから垂れ流しプログラムでもなんとかなるんじゃないかな???
660デフォルトの名無しさん:2007/07/11(水) 16:34:04
>>658
先頭に負号をゆるす場合だけやってみた
残りは自分で頑張れ
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i, s, sign[10];
long n, x;
for (i=1; i<=9; i++) sign[i] = -1;
do {
x = n = 0; s = 1;
for (i=1; i<=9; i++)
if (sign[i] == 0) n = 10*n+i;
else {
x += s*n; s = sign[i]; n = i;
}
x += s*n;
if (x == 100) {
for (i=1; i<=9; i++) {
if (sign[i] == 1) printf(" + ");
else if (sign[i] == -1) printf(" - ");
printf("%d", i);
}
printf(" = 100\n");
}
i = 9; s = sign[i]+1;
while (s > 1) {
sign[i] = -1; i--; s = sign[i]+1;
}
sign[i] = s;
} while (sign[1] < 1); return 0;
}
661デフォルトの名無しさん:2007/07/11(水) 16:41:59
今ある整数Nまでの素数を表示するプログラムを作っているのですが、ifの条件のなかに
(一度でもあまり=0)になったときに表示するということをやりたいのですが、
一度でも〜になったらを表すコマンドを教えてください。
662デフォルトの名無しさん:2007/07/11(水) 16:46:23
もう少しくやしく
663デフォルトの名無しさん:2007/07/11(水) 16:46:37
>>661
if (あまり == 0)
{
//一度でもあまりの処理
}
664デフォルトの名無しさん:2007/07/11(水) 17:12:10
import java.io.*;
class lf1sosu {
public static void main(String[] args) throws
IOException {
int n, amari;
String strn;
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
System.out.println("整数を入力してください。");
strn = br.readLine();
n = Integer.parseInt(strn);
System.out.println( "素数 = " + 2);
for(int i=2; i<=n; i++ ){
for(int g=2; g<=i-1; g++ ){
amari = i % g;
if (amari != 0 ){
g=i-1;
System.out.println( "素数 = " + i);
}else{g=i-1;
}
}
}
}
まで自分で作ったのですが2で割ったときにあまりが0以外になってしまうため全部の奇数が素数として表示されてしまいます。
またgの範囲から2が素数とすることができません。
改善点を教えてください。
665デフォルトの名無しさん:2007/07/11(水) 17:13:21
[1] 授業単元: 暗号理論
[2] 以下のシフト暗号によって暗号化された文章を解読せよ(問題文はただの文字列なので省略)

※abc...などの文字列をbcd...のようにx文字ずらした結果を
ずらすxを0〜25の場合について同時に表示させ、
実際に文を見て意味の通じる文を抽出する方法でやれとのこと

例)
元の文 abc  
処理結果 abc  bcd  cde  def  ...  zab

となるのが理想なのですが、自力で頑張ってやってみたものの
26通りのxについて処理した結果を並べるのがうまくできません

元の文字列はデータで与えられていて、文字列の長さは問題ごとに違っていて
最後の問題は数十文字に及びます

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ: Cygwin(gcc 3.4)
 [3.3] 言語: C
[4] 期限: [2007年7月13日10:30まで]
[5] その他の制限:とくになし

よろしくおねがいします
666デフォルトの名無しさん:2007/07/11(水) 17:15:23
>>664
C言語でおk
667665:2007/07/11(水) 17:24:20
あ、あと自力でやった分も貼り付けるべきでしょうか?
668デフォルトの名無しさん:2007/07/11(水) 17:25:55
>>667
5分でやるからしばしまたれよ
669デフォルトの名無しさん:2007/07/11(水) 17:29:21
はい。

670デフォルトの名無しさん:2007/07/11(水) 17:29:11
>>646
THX!
671not 668:2007/07/11(水) 17:30:26
横からすまんのう
#include <stdio.h>
#include <ctype.h>
int main(void)
{
    char buff[BUFSIZ];
    unsigned char *p;
    int i;
    while (fgets(buff, sizeof buff, stdin)) {
        for (i = 0; i < 26; i++) {
            printf("x=%2d: ", i);
            for (p = (unsigned char *)buff; *p; ++p)
                if (islower(*p))
                    putchar((*p - 'a' + i) % 26 + 'a');
                else if (isupper(*p))
                    putchar((*p - 'A' + i) % 26 + 'A');
                else
                    putchar(*p);
        }
    }
    return 0;
}
672デフォルトの名無しさん:2007/07/11(水) 17:32:41
>>666
C言語です。
673デフォルトの名無しさん:2007/07/11(水) 17:35:08
どこがC言語じゃ
674デフォルトの名無しさん:2007/07/11(水) 17:38:49
初心者なんですいません。
JAVAとC言語は違うものなんですか?
違うならほかの板行ってきます。
675デフォルトの名無しさん:2007/07/11(水) 17:40:44
そりゃ、まぁどう考えてもC言語とJavaは別物だ罠・・・板っつーかJavaスレへな。
676デフォルトの名無しさん:2007/07/11(水) 17:40:57
>>674
違うものです
677デフォルトの名無しさん:2007/07/11(水) 17:41:04
orz
678デフォルトの名無しさん:2007/07/11(水) 17:43:02
じゃましてすいません。
Javaスレ逝ってきます。
679665:2007/07/11(水) 17:55:13
>>671
ありがとうございます!

自分で作ったのと全然違う・・・
680デフォルトの名無しさん:2007/07/11(水) 17:58:28
There's more than one way to do it.
681665:2007/07/11(水) 18:03:20
なるほど…
あと文句をつけるわけではないのですが、これは元の文章はキーボードで打つしかないのでしょうか?
文字列の書かれたテキストファイルの類を読み込んだり、
それかコピペすることってできないんでしょうか…
682デフォルトの名無しさん:2007/07/11(水) 18:06:23
>>681
テキストファイルを読み込ませたければリダイレクト汁
意味・やりかたがわからなければぐぐれ

コピペも出来るが、端末がコピペに対応していなければならない
Windowsのコンソールプロンプトでも出来るが、簡易編集モードか
何かにしていなければならないのだったかな
683682:2007/07/11(水) 18:07:59
×コンソールプロンプト
○コマンドプロンプト

正式な名称は知らんが……昔からDOS窓とか言われているアレだ
684デフォルトの名無しさん:2007/07/11(水) 18:10:48
わかりました。頑張ってみます
685デフォルトの名無しさん:2007/07/11(水) 18:15:56
671さんのコード参考にfgetsにfopenで開いたFILE*渡せばいいんじゃないのか
コード書いたが質問者ががんばるようなので主要なところだけ抜粋
686デフォルトの名無しさん:2007/07/11(水) 18:16:46
[1] 授業単元: データ解析
[2] 英文中のアルファベットの数を数えるプログラムを作成せよ

例:This is a pen. だったら、
t:1 h:1 i:2 s:2 a:1 p:1 e:1 n:1
となるようにする。大文字、小文字は区別してもしなくても良い、とのこと

[3] 環境
 [3.1] OS: Linax
 [3.2] コンパイラ: よくわかりません…学校のPCに標準で入ってたやつ
 [3.3] 言語: C
[4] 期限: [2007年7月23日まで]
[5] その他の制限:とくになし

よろしくおねがいします
687デフォルトの名無しさん:2007/07/11(水) 18:18:47
とりあえずLin「u」x、な
688デフォルトの名無しさん:2007/07/11(水) 18:26:51
>>686
#include <stdio.h>
#include <ctype.h>
int main(void) {
char alph[]={"abcdefghijklmnopqrstuvwxyz"};
int num[sizeof(alph)/sizeof(alph[0])]={0},ch,i;
while( (ch=getchar())!=EOF ) {
ch=tolower(ch);
for(i=0; i<sizeof(alph)/sizeof(alph[0]); i++) {
if( alph[i]==ch ) num[i]++;
}
}
for(i=0; i<sizeof(alph)/sizeof(alph[0]); i++) {
if(num[i]>0) printf("%c:%d ",alph[i],num[i]);
}
return 0;
}
689デフォルトの名無しさん:2007/07/11(水) 18:28:00
>>686
その順番に出力しないといけないの?
順番がどうでもよいなら簡単だが
690デフォルトの名無しさん:2007/07/11(水) 18:38:25
文字コードを知った初心者っぽいプログラム
#include <stdio.h>
int main(void)
{
int i;
char buff[256];
char cnt[27];
for(i=0;i<27;i++){cnt[i]=0;}
fgets(buff,256, stdin);
for(i=0;i<256;i++){
if(buff[i] == '\n'){break;}
buff[i] = buff[i]-0x41;
if(buff[i]>=0 && buff[i]<27){
cnt[buff[i]] += 1;
}else if(buff[i]>=32 && buff[i]<(32+27)){
cnt[buff[i]-32] += 1;
}
}
for(i=0;i<26;i++){printf("%c:%d ",(i+0x41),cnt[i]);}
return 0;
}
691デフォルトの名無しさん:2007/07/11(水) 18:39:05
>>686
692デフォルトの名無しさん:2007/07/11(水) 18:44:06
>686
文字登場順
#include <stdio.h>
#include <ctype.h>
int main(void)
{
   char alpha[26], str[256], *p;
   int i, max = 0, count[26] = {0};
   fgets(str, sizeof str, stdin);
   p = str;
   while(*p) {
      if(isalpha(*p)) {
         for(i=0; i<max; i++) {
            if(alpha[i]==tolower(*p)) {
               count[i]++;
               break;
            }
         }
         if(i==max) {
            alpha[i] = tolower(*p);
            count[i]++;
            max++;
         }
      }
      p++;
   }
   for(i=0; i<max; i++) printf("%c:%d\n", alpha[i], count[i]);
   return 0;
}
693デフォルトの名無しさん:2007/07/11(水) 19:03:39
[1] 授業単元:プログラミング
[2] 問題文:@再帰呼び出し
−フィボナッチ数を求める関数を、再帰呼び出しを用いて作成せよ
−F1〜F10を表示させる
A・整数の配列をパラメタとして,配列の中で最大と最小の数を求める関数を定義せよ。
・この関数をmainとは異なるファイル(minmax.cpp)で定義して作成せよ。
・この関数のプロトタイプ宣言は独立したヘッダ(minmax.h)ファイルとして定義せよ。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005  
 [3.3] 言語:C++
[4] 期限:明日の朝まで
[5]@ヒント
int fib (int n) {
int r
if (n <= 2) r = ?
else r = ???? /* r=Fn=Fn-1+Fn-2 */
return r;
}
Aヒント
void MinMax(int array[], int n, int *minPtr, int *maxPtr)
{  ・・・ここを書き加える
}
int main()
{
int data[10] = {4,2,5,9,2,1,4,5,4,5};
int min, max;
・・・ここを書き加える
  printf("min = %d, max = %d\n", min, max);
return 0;
}
694デフォルトの名無しさん:2007/07/11(水) 19:09:03
[1] 授業単元: アルゴリズム論
[2] ゼータ関数は次式で定義される(wikipediaゼータ関数にリンクさせます)
ttp://ja.wikipedia.org/wiki/%E3%82%BC%E3%83%BC%E3%82%BF%E9%96%A2%E6%95%B0
s=6のとき、π^6/945に収束する。これを確認するプログラムを作成せよ。ただし、プログラム演算では無限大を扱うことができないため、
級数の和の無限個をとるのではなく、有限の範囲内(例えばn=100など)で計算する必要がある。
条件1)一度の計算で種々のnに対する収束精度を比較・検討したいため、二重ループを使うことにする。そのため、
外側ループでは初期値をmとして、nまでm刻みで値を変更し、内側ループでは該当する値に応じたゼータ関数値を算定できるようにプログラムせよ。
(例えばn=1000とm=100に設定した場合、nの値を10パターン変化させることができる。)
条件2)必ず倍精度で計算し、5パターン以上は比較できるようにすること

[3] 環境
 [3.1] OS: Linax
 [3.2] コンパイラ: gcc
 [3.3] 言語: C
[4] 期限: [2007年7月18日まで]
[5] その他の制限:とくにありません。
考えてもわかりませんでした、どうか皆様よろしくお願いします (ノ_・、)
695デフォルトの名無しさん:2007/07/11(水) 19:12:59
>>693 1 フィボナッチ
#include <stdio.h>
int fibo(int x) {
if(x<=2) return 1;
else return fibo(x-1) + fibo(x-2);
}
int main(void) {
int i;
for(i=1; i<=10; i++)
printf("%d ",fibo(i));
return 0;
}
696671:2007/07/11(水) 19:19:01
頑張って見ましたが、どうもうまくできませんでした…
できればご教示願います…
697665:2007/07/11(水) 19:19:32
ぎゃー名前欄間違えました
698デフォルトの名無しさん:2007/07/11(水) 19:21:28
>697
文字から'a'を引いた数にずらしたい数を足して、その数を26で割った余りを'a'に足す
699デフォルトの名無しさん:2007/07/11(水) 19:22:01
[1] 授業単元: プログラミング技術
[2] 問題文(含コード&リンク):ニュートン法
出力が
値入力⇒○
解の値は ○ 収束するのに ○ 回かかりました

[3] 環境
 [3.1] OS:WindowsVISTA
 [3.2] コンパイラ名とバージョン:コンパイラが動かないですorz
 [3.3] 言語:C言語
[4] 期限:考える時間であっというまに・・・7/13(金)17:00です。
[5] その他の制限:
#include<math.h>とdouble、fabsは必ず使うようです。
よろしくお願いします。
700デフォルトの名無しさん:2007/07/11(水) 19:24:02
あ、そこは解決したんですが
ファイル読み込みのあたりがどうも
fopenとかfgetsの使い方がどうも間違ってるみたいです
701デフォルトの名無しさん:2007/07/11(水) 19:28:54
>>693 もう投げやり

minmax.h の中身 ↓
#include <iostream>
using namespace std;

void max_min(int *x, int n) {
int max=*x,min=*x,i;
for(i=1; i<n; i++) {
if(x[i]>max) max=x[i];
else if(x[i]<min) min=x[i];
}
cout << "max : " << max << endl;
cout << "min : " << min << endl;
}

- - - - - - ここまで - - - - - - - - -
minmax.cpp の中身↓
#include "minmax.h"
int main() {
int a[]={5,10,100,0,4,2,3,8,1},i;
for(i=0; i<sizeof(a)/sizeof(a[0]); i++)
cout << a[i] << " ";
cout <<endl;
max_min(a,sizeof(a)/sizeof(a[0]));
return 0;
}
702デフォルトの名無しさん:2007/07/11(水) 19:30:17
>>693 フィボナッチをC++風に

#include <iostream>
using namespace std;
int fibo(int x) {
if(x<=2) return 1;
else return fibo(x-1) + fibo(x-2);
}
int main(void) {
int i;
for(i=1; i<=10; i++)
cout << fibo(i) << " ";
return 0;
}
703デフォルトの名無しさん:2007/07/11(水) 19:57:06
>>694
#include <stdio.h>
#include <math.h>
double npow(int base, int n)
{
    int i;
    double result = 1.0;
    for (i = 0; i < n; i++)
        result *= base;
    return result;
}
double zeta(int s, int n)
{
    double val = 0.0;
    int i;
    for (i = 1; i <= n; i++)
        val += 1.0/npow(i, s);
    return val;
}
int main(void)
{
    int i;
    double val = 0.0, prev = -1.0;
    printf("pi^6 / 945 = %.20g\n", pow(M_PI, 6.0)/945);
    for (i = 100; i <= 600; i += 50)
        printf("第%3d項までの和 = %.20g\n", i, zeta(6, i));
    return 0;
}
704694:2007/07/11(水) 20:28:06
>703さん
こんなにもはやく!
ありがとうございます!!
705699:2007/07/11(水) 21:15:36
計算式が複雑過ぎてわからない(´;ω;)
706デフォルトの名無しさん:2007/07/11(水) 21:15:45
[1] 授業単元: ネットワークセキュリティ
[2] 問題文(含コード&リンク):
以下のプログラムを実行したとき、(^-^)が実行されるように(つまり、bufの内容を書き換えるように)
バッファオーバーフローのテクニックを使ったnikoniko関数を定義しなさい。
・main関数は一切書き換えてはいけません。
・nikonikoの中に出力文があってはいけません。
・nikonikoからはmainに実行を戻さないといけません。
・nikoniko以外の関数を定義してはいけません。

プログラム
#include<stdio.h>
main(){
char buf[]="abcde\n";
nikoniko();
puts(buf);
}

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:bcc32 Version 5.1.2600
 [3.3] 言語:C言語
[4] 期限:今夜0時なのです;;
[5] その他の制限:
わからんちんなのですが、友人は4行ほどのnikoniko関数を作成するだけで出来た、ということでした。
strcpyを使ってのオーバーフローを引き起こして、bufの戻り番地を変えるやり方だと思うのですが。。。
申し訳ありませんが、緊急のため時間の許す方のご教授願います。
707>>706:2007/07/11(水) 22:06:46
void nikoniko(){
char niko[] = "(^-^)";
char* p = niko;
int i = 5;
while(true){
if( niko[i] == 'a' && niko[i+1] == 'b' && niko[i+2] == 'c' && niko[i+3] == 'd' && niko[i+4] == 'e' )
{
p += i;
break;
}
if( niko[-i] == 'a' && niko[-i+1] == 'b' && niko[-i+2] == 'c' && niko[-i+3] == 'd' && niko[-i+4] == 'e' )
{
p -= i;
break;
}
++i;
}
sprintf(p,"%s",niko);
printf("i=%d\n",i);
}
708デフォルトの名無しさん:2007/07/11(水) 22:09:42
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク): コンビニの売り上げ伝票ファイルを集計し、20歳代、30歳代それぞれの売り上げ総額を求める処理
のプログラムを作る。売り上げ伝票ファイルは以下のような形式で記録されるものとする。1行に1品目の売り上げ記録があり、第
1項目が商品コード、第2項目が単価、第3項目が数量、第4項目が客の性別、第5項目が客の年齢層。年齢層の値は19歳以下
なら1、20〜29歳なら2、30〜39歳なら3、40〜49歳なら4、50歳以上なら5である。性別は0が男、1が女を表す。商品コードが0の
または負のとき、それ以後のデータがないことを表すものとする。また、データが不正のときも記録はないものとする。
[3] 環境  
 [3.1] OS:Windows Visual stdio 2003
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:7月12日朝6時まで
[5] その他の制限:switch文を必ずいれて下さい。

よろしくおねがいしますm(_ _)m
709デフォルトの名無しさん:2007/07/11(水) 22:13:11
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):

線形リストの問題
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4593.txt

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12日の12:00
[5] その他の制限:
どうかよろしくお願いします
710デフォルトの名無しさん:2007/07/11(水) 22:22:38
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
次のプログラムは式を入力すると計算結果を表示する。現在の内容を理解し、誤りを訂正してコメントをつけよ//どうしたらうまく動くか
#include<stdio.h>
#include<stdib.h>
#include<ctype.h>
char *p;
char c[100];
int expression(void);
int term(void);
int number(void);
main(){
int ans;

711デフォルトの名無しさん:2007/07/11(水) 22:24:44
while(1){
printf("Enter expression ; ");
fgets(c,90,stdin);
p=&c;
if(*p=='\n');
break;
ans=expression();
printf("Answer;%d\n" , ans);}
int expression()int ans;
ans = term();
while(1){if(*p == '+'){
ans = ans + term(); }
else if(*p == '-'){
ans = ans - term(); } else
break;}
return(ans);
}int term(){
int ans,x;
ans = number();
while(1){ if(*p == '*'){
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年7月12日まで
[5]特になし

712デフォルトの名無しさん:2007/07/11(水) 22:43:29
[1] コンピュータ・サイエンス
[2] C++でUDPのechoサーバを作れ
[3] 環境
 [3.1] Windows
 [3.2] VisualC++系
 [3.3] C++
[4]無期限
[5]wsock32.lib  UDPで

おねがいします。
713デフォルトの名無しさん:2007/07/11(水) 22:46:14
>>711
main()はぐちゃぐちゃ、
if (*p == '\n');
とか意味不明なことをやっている上に最後に } が足りない

expression()は最初の { が足りない

term()は途中で切れている

一体何がしたいのかね

714デフォルトの名無しさん:2007/07/11(水) 22:46:18
[1] 授業単元: プログラミング演習
[2] 問題文:整変数i,j,kをキーボードより与え、下記の演算を実行するプログラムを作成せよ。
x=(i^2)/4 + (j^3)/27, y=x /(1+k^2), z=y^(1/3)klogk (logは自然対数)
・出力の一行目(コメントを出力する場合はそれ以降)に変数i,j,kを出力し、二行目にx,y,zを出力すること。
・kあるいはyの値が0以下の場合はzを求める計算ができない。その場合、
z=|y|^(1/3)|k|log|k|(| |は絶対値)を計算するように条件わけすること。
また、k=0の場合は、z=0として条件わけすること。


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 13日
[5] その他の制限: どうぞよろしくお願いします;
715デフォルトの名無しさん:2007/07/11(水) 22:51:35
>>713

>>710,711

は繋がっているのでは?
716デフォルトの名無しさん:2007/07/11(水) 22:54:19
>>715
それは勿論分かっているよ。
誤り訂正しろって問題にしては、やりすぎかと思ったのよ。
コンパイルが通るがバグがある、というレベルではないのだもの。

関数term()は途中で切れている。関数number()は実装さえされていない。
それらを足したところで誤りだらけでコンパイルも通らない。
717デフォルトの名無しさん:2007/07/11(水) 22:55:44
>>710>>711
はもしかして、四則計算をするプログラムを作りたいのでは?
誤りを訂正してコメントをつけよって書いてあるし。
間違っているところを書き直して、足りないのを足せばいいのでは?
718デフォルトの名無しさん:2007/07/11(水) 22:57:11
単に電卓を作れという問題なら>>48でよいのだけれどね
再帰下降で四則演算が出来ればよいようだから、ほぼ同じだ。

多分>>48が参考になると思うよ。
719デフォルトの名無しさん:2007/07/11(水) 23:01:41
>>582の者ですが、同じプログラムに関してもうひとつ課題がありました。すみませんが、わからなかったのでお願いします。

[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
(問題)
文字数を書き出すときに目印として使っている文字番号 0 の文字が,万一もとのファイルの中で使われていると不具合が起きる。どんな不具合が生じるのか,考えてみよ。そうした不具合を避けるには,関数 fcompress をどのように改変すればよいかを考えてみよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4586.c
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: borland
 [3.3] 言語: C
[4] 期限: 7/12
720デフォルトの名無しさん:2007/07/11(水) 23:05:34
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
各ノードに子孫数(自身は含まない)を持つ二分探索木において、
子孫数を用いて、n番に小さい値を検索し値を関数を作成せよ。
[3] 環境
 [3.1] OS: (Windows/Linux/等々) windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C
[4] 期限:7/27
[5] その他の制限:
関数の仕様(引数は自由、n番目の値を戻り値として返す)、再帰を用いること。
ノードには整数値が入っているとする。

よろしくお願いします
721デフォルトの名無しさん:2007/07/11(水) 23:13:32
>>718
48見ました。でも、わからなかったので書き込みしたので
すいませんが教えてください。
722デフォルトの名無しさん:2007/07/11(水) 23:53:06
>>545お願いしますm(_ _)m
723デフォルトの名無しさん:2007/07/12(木) 00:03:23
マルチの上にしつこいよ
724デフォルトの名無しさん:2007/07/12(木) 00:18:41
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
キーボードからカンマで区切られた16進数を3つ読み込み,10進数で表示するプログラムを作成しなさい.

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12日10時まで
[5] その他の制限: 特にナシ

実行例
[***@***/]% ./read
0xff,0xab,0x12
255,171,18
[***@***/]% ./read

よろしくお願いします^^
725デフォルトの名無しさん:2007/07/12(木) 00:42:20
>>724
#include <stdio.h>
int main(void)
{
int num[3];
scanf("%x,%x,%x", &num[0], &num[1], &num[2]);
printf("%d,%d,%d", num[0], num[1], num[2]);
return 0;
}
726デフォルトの名無しさん:2007/07/12(木) 01:06:38
>>725 ありがとうございます^^
727デフォルトの名無しさん:2007/07/12(木) 01:22:04
>>710>>545のは
答えてあげないの?
728デフォルトの名無しさん:2007/07/12(木) 01:34:02
ここはBorland C++ Builderで作る課題でもおkですか?
講義なしでいきなり作ってこいと言われても使い方が全く分からん・・・・
729デフォルトの名無しさん:2007/07/12(木) 01:35:01
>>728
OK。使い方はググればそれなりに見つかるんじゃね?
730デフォルトの名無しさん:2007/07/12(木) 01:52:09
[1] 授業単元: 計算機
[2] 問題文(含コード&リンク):

差分方程式
Xn+1=aXn(1-Xn)の解をX50まで計算し、作図するプログラムを書きなさい。
ただし初期値X0は0<X0<1とし、
パラメータaの値は 0<=a<1、1<=a<=2、 2<a<=3、 3<a<=1+√6、1+√6<a
の場合に分け色々選択出来るようにすること。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:c++
[4] 期限:7/26
[5] その他の制限:Borland C++ Builderで作成すること。
初めてなのでさっぱり分かりません。使うのもこれっきりだと思います。
よろしくおねがいします。

なんかボタンとか色々置きまくってみたが色変えたり線書いたりする程度しか出来ないw
731デフォルトの名無しさん:2007/07/12(木) 01:53:36
同じ問題が繰り返し出てきますが、質問される方は別人なんでしょうか。
回答される方は同じ問題に何度も答えたいとは思わないかもしれません。
732デフォルトの名無しさん:2007/07/12(木) 01:55:46
>>731
同じスレに同じ問題とかもたまにあるしね。
学校の課題とかならかぶるなんて当たり前だろうし。
安価で対応とかでいいんじゃないかな?
前の回答探すのすらだるいけど。
733デフォルトの名無しさん:2007/07/12(木) 01:57:20
同じ問題に答えてもいいし、何回催促されようと無視してもいい
734デフォルトの名無しさん:2007/07/12(木) 01:59:26
>>730
GUIはスレじゃやりづらそうだな。
線が引けるのなら、まずは固定値で作図してみては?
その後、固定していた値を入力できるように拡張すればいいだけだし。
735デフォルトの名無しさん:2007/07/12(木) 02:04:35
1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):学生名簿(学籍番号、名前)を登録できるシステムを完成させる。
  ほぼ完成していているのですが学籍番号でのソートができません。詳しくはプログラムを見てください。
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful/img/4596.c      
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 7/12
[5] その他の制限: 特になし
736デフォルトの名無しさん:2007/07/12(木) 02:17:13
>>735
アドレス間違ってるぜ旦那
737735:2007/07/12(木) 02:24:08
738デフォルトの名無しさん:2007/07/12(木) 02:26:28
何度も同じ問題とか書き込みして欲しくないね。
でも、書き込みするってことはわかってないのか?
わかってないならもう一度書き込みした方がいいのかな?
739デフォルトの名無しさん:2007/07/12(木) 02:43:16
大学の課題で大量に学生がわかってないんだろ
740デフォルトの名無しさん:2007/07/12(木) 02:55:34
教える先生に問題があるかもね
741デフォルトの名無しさん:2007/07/12(木) 03:13:45
>>710です。

お願いです・本当にわかりません。教えてください
742デフォルトの名無しさん:2007/07/12(木) 07:30:45
               -―-
              . ´       ` 、
          '    , i l ! ヽ  ヽ
           〈\ .〃/‐リノ ノリ)ヘヽ.\`
        ,' ヽ \ /,ィ'"|`  f'!ヽト、!`   / ̄ ̄ ̄ ̄ ̄
          l//, ゙{0))! ヒ1!   ,l.!,. l、ヽ   .|
          ' /l/` リl、"´  lフ  イゝ   < 出遅れたっ!
           '´ l/_i_リ,!  r._´ リ     |
            '「 , ‐ゝ>r'l〉く.、      \_____
           く,`l  ,.`Kト〉ヾヽ
             ゝL  ヾ.l、〉 r'
               ,-|  「 {} !_ |
                ! l、  `)}´}
               `>/`,-´、 ァ'
             く./ {_`」./ l}
             // 「i.     k
             ,.' /   >!    l}
          j /   r'j    i1
            ^!,'    k1   k'
743デフォルトの名無しさん:2007/07/12(木) 07:39:08
>>737
汚いソースだなー





漏れが書いたんだけどねOTL
Node *AppendNoNodeを追加しても挙動がおかしくなるから、
もう少し仕様をkwsk
744デフォルトの名無しさん:2007/07/12(木) 07:52:36
>>604
遅くなりましたが、ありがとうございました!
745デフォルトの名無しさん:2007/07/12(木) 08:12:20
>>740
学生に責任があるほうが多いと思うぞ。
746デフォルトの名無しさん:2007/07/12(木) 08:27:18
>>708 エスパー
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    FILE *fp;
    int sum[2][5] = {0}, price, quantity, sex, age, i;
    char code[1024], buf[1024];
   
    if(argc < 2) fprintf(stderr, "usage : %s string\n", argv[0]), exit(1);
    if((fp = fopen(argv[1], "r")) == NULL) perror(argv[1]), exit(2);
   
    while(fgets(buf, sizeof(buf), fp) != NULL)
        if(sscanf(buf, "%s%d%d%d%d", code, &price, &quantity, &sex, &age) == 5)
            if(!strcmp(code, "0") || atoi(code) < 0)
                break;
            else if((age >= 1 && age <= 5) && (sex == 0 || sex == 1))
                sum[sex][age - 1] += price*quantity;
    fclose(fp);
   
    printf("20歳代 : %d\n30歳代 : %d\n", sum[0][1] + sum[1][1], sum[0][2] + sum[1][2]);
   
    return 0;
}
747746:2007/07/12(木) 08:28:34
switch文だと……
748デフォルトの名無しさん:2007/07/12(木) 11:00:40
[1] 授業単元: 暗号理論演習
[2] 問題文:任意の英文について、換字暗号表を用いて暗号化するプログラムと、
暗号化した文を同様の表を用いて解読するプログラムを作成せよ。
入力する文章と換字暗号表の形式は自由にしてよいものとする。(別に用意したテキストファイルから読み込む形のほうが好ましい)


abcd… という英文があったとき、換字暗号表がa→t b→y c→e d→k…だったなら、
tyek…と出力されるプログラム、またその逆操作するプログラム
という意味です。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2007年07月20日12:00まで
[5] その他の制限: とくになし

なにをすればいいのやらまるでわかりません。もしお暇でしたら力を貸してください。
749735:2007/07/12(木) 12:37:18
>>743
この前はありがとうございました
今は学生情報リストが名前だけのソートしかないので
学生情報を登録するときに名前でソートするか学籍番号でソートするかを選択できるようにしたいんです
で、学籍番号のソートができないので教えてほしいです。
750デフォルトの名無しさん:2007/07/12(木) 13:00:15
>>748 ショボイですが
暗号
#include <stdio.h>
#include <ctype.h>

static char alpha[53] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
static char table[53] = "zNFeYMljvJXKicfrGyDEOwQpHkCLbxhqRAPsnouVTaWIZdUmBStg";

int getindex(char *str, int ch){
    int i;
    for(i = 0; i < 52 && str[i] != ch; i++) ;
    return i;
}

int main(int argc, char *argv[]){
    FILE *fpin, *fpout;
    int ch, op;
   
    if(argc < 3 || (fpin = fopen(argv[1], "r")) == NULL || (fpout = fopen(argv[2], "w")) == NULL) exit(1);
   
    while((ch = fgetc(fpin)) != EOF)
        if(isalpha(ch)) fputc(table[getindex(alpha, ch)], fpout);
        else fputc(ch, fpout);
   
    fclose(fpin), fclose(fpout);
   
    return 0;
}

解読
if(isalpha(ch)) fputc(table[getindex(alpha, ch)], fpout); を
if(isalpha(ch)) fputc(alpha[getindex(table, ch)], fpout); に変更。
751プロセス:2007/07/12(木) 13:04:55
いま、授業でプロセスを学んでいます。
プロセスを学んでいく中で、有名な「食事をする哲学者」の問題が出されたのですが、そこにpipeを使わなければいけないんです↓
まず問題はこうです。
・pipeを用いて「食事をする哲学者」を具現

・哲学者の状態変化(eating,hungry,thinking)はrandom numberを利用
・ある哲学者がフォークを得るためには左右哲学者にrequest messageを送る
・フォークの状態変化は使用可否に依存、ただし、ある哲学者から他哲学者にフォークが転送されるときにはきれいになること(clean)を仮定
・使われたフォークは汚くなる

・他の哲学者からフォークの要求が到着すると次のような法則
 ・きれいなフォークを持ったときは渡さない
 ・もう使ったフォークを持ったときは渡す
 ・フォークが転送中にはフォークが向く哲学者に優先権がある

・フォーク及びrequest messageの転送は必ずpipeを利用
・哲学者をあらわす5個のプロセスとは別に状態変化を観察することができるモニタープロセスを置き、状態が変わるとレポティングする。このときにもpipeを利用
・注意、deadlockが発生しないようにする

という問題なんですが・・・C言語でどう書けばいいのでしょう(泣)
助けてくださぃ!
752sage:2007/07/12(木) 13:29:05
[1]単元:プログラミング技術
[2]問題文:アップローダーのNo.4597にアップしておきました。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ: gcc
 [3.3] 言語: C
[4] 期限:来週の水曜までにお願いします。
よろしくお願いします
753デフォルトの名無しさん:2007/07/12(木) 13:53:25
>>751
pipeって普通は親子の間でしか使えないのではなかったかな。
というわけで、多分名前つきパイプを使うんだろう。mkfifoでぐぐれ。
mkfifoで作った名前つきパイプは普通のファイルと同様に読み書きできるが
普通は全二重ではないはずなので、双方向から送受信するために、2本の
パイプが必要になる。

てなわけで、それぞれの哲学者と哲学者の間に、送信用と受信用に2本ずつ、
計10個の名前つきパイプをつくる。それぞれの哲学者は、左隣との
送受信用に2本、右隣との送受信用に2本、合計4本のパイプを開く。
当然これらを同時に扱うためにはselect()やpoll()などを使う必要がある。

これまで言っていることが何一つ理解出来ないなら、諦めるんだね。
こんなところでこれ以上詳しく教えるのは不可能だ。
754デフォルトの名無しさん:2007/07/12(木) 14:14:19
[1] 授業単元:
プログラミング1
[2] 問題文:
一様乱数の発生#include<stdio.h>int a;double x;a=rand();x = (double) a/32768.0;xは、区間[0,1)の一様乱数である。
関数rand()は、呼び出すごとに異なった値(0−32767)を返すN=500である。
1/N(?下がi=1で上がN)ηi*ηi-μ*μの式を500回回すfor分を入れなさいと言われました。
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語: C
[4] 期限: 2007年07月13日14時まで
[5] その他の制限: for分くらいの知識しかないので初歩的なプログラムでお願いします。
755デフォルトの名無しさん:2007/07/12(木) 14:15:53
>>752
流れはこんな感じか
ただし出題の条件は満たしていないからそこは己で考えるように

#include<stdio.h>
#include<math.h>
double v1[3],v2[3];
double angle(){return acos((v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2])/sqrt(v1[0]*v1[0]+v1[1]*v1[1]+v1[2]*v1[2])/sqrt(v2[0]*v2[0]+v2[1]*v2[1]+v2[2]*v2[2]))/M_PI*180.0;}
main(){while(1)printf("v11 v12 v13="),scanf("%lf %lf %lf",&v1[0],&v1[1],&v1[2]),printf("v21 v22 v23="),scanf("%lf %lf %lf",&v2[0],&v2[1],&v2[2]),printf("angle=%lf\n",angle());}
756デフォルトの名無しさん:2007/07/12(木) 14:59:41
授業単元:C言語
環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:ポインタの利用
問題1:配列変数に値を入力し、それらの平均を求め平均より低い要素の値を表示しなさい
int array[10]、 goukei;
int *pa;
double heikie;
pa = array;
実行画面
整数入力[0]==>60
整数入力[1]==>43
整数入力[2]==>85
整数入力[3]==>72
整数入力[4]==>34
整数入力[5]==>56
整数入力[6]==>17
整数入力[7]==>100
整数入力[8]==>96
整数入力[9]==>28

平均:59.1
[1]:43
[4]:34
[5]:56
[6]:17
[9]:28
件数:5
757デフォルトの名無しさん:2007/07/12(木) 15:15:26
>>756
#include<stdio.h>
#define N 10

int main(void)
{
int array[N],i,n=0;
int *pa;
double heikie=0;
pa=array;
for(i=0;i<N;i++){
printf("整数入力[%d]==>",i);scanf("%d",&pa[i]);
heikie+=pa[i];
}
printf("平均:%.1f\n",heikie/=N);
for(i=0;i<N;i++)
if(pa[i]<heikie){
printf("[%d]:%d\n",i,pa[i]);
n++;
}
printf("件数:%d\n",n);
return 0;
}
 
758デフォルトの名無しさん:2007/07/12(木) 15:28:38
>>756
#include <stdio.h>
int main(void) {
int a[10], goukei ,i ,cnt , *pa;
int a_sz=sizeof(a)/sizeof(a[0]);
double heiki;
for(i=0,goukei=0,pa = a; i<a_sz;i++,pa++) {
printf("整数入力[%d]==>",i);
scanf("%d",pa);
goukei+=*pa;
}
heiki=(double)goukei/a_sz;
printf("平均:%.1lf\n",heiki);
for(i=0,pa = a,cnt=0; i<a_sz;i++,pa++) {
if((double)(*pa)<heiki) {
printf("[%d]:%d\n",i,*pa);
cnt++;
}
}
printf("件数:%d\n",cnt);
return 0;
}
759デフォルトの名無しさん:2007/07/12(木) 15:31:15
>>758
ひどく意味無く読みづらい書き方が多いな。
760デフォルトの名無しさん:2007/07/12(木) 15:32:14
>>759=>>757 おめーの方が酷く題意を無視してんぞ、市ねよ、昨日っからいちゃもんばっかりつけて
大ボケかましている間抜け
761デフォルトの名無しさん:2007/07/12(木) 15:33:08
>>759 = http://pc11.2ch.net/test/read.cgi/tech/1184003625/62
以後この基地外放置よろ。最近この板に来た新入りっぽいな。かなり間抜け。
762759:2007/07/12(木) 15:35:16
>>761
おk、把握。ただ何故か一緒にされた>>757に悪いから言っとくけど別人だ。
763デフォルトの名無しさん:2007/07/12(木) 15:36:26
>>757 の方が明らかに読みづらいし酷い。>>759お前がソースを理解できないだけだろ。コンパイルしてみろ、アホ。
> double heikie=0;
heiki"e"(プ

> scanf("%d",&pa[i]);
だったら&array[i]使っちゃえば良いだろ

> printf("平均:%.1f\n",heikie/=N);
え、何これ?heikie/=って、普通に/Nにしときゃ良いじゃん。無駄、読みづらい

> printf("[%d]:%d\n",i,pa[i]);
だから array[i] 使えって。ポインタの意味ないからw
764本日のアレな人:2007/07/12(木) 15:39:07
759 名前:デフォルトの名無しさん 投稿日:2007/07/12(木) 15:31:15
>>758
ひどく意味無く読みづらい書き方が多いな。
765デフォルトの名無しさん:2007/07/12(木) 15:41:28
heikieは出題に従ったまでじゃないのか?w
766デフォルトの名無しさん:2007/07/12(木) 15:43:44
>>763
757だけど、heikieってのは>>756がそう書いてたからそのまま書いただけだよ。

printf("平均:%.1f\n",heikie/=N);
これは単に2chで書き込むとき行が多いと読んでる人にとってウザくなるから
行を少なくするためだけにやっただけだから、そんな気にしないで下さい。

あと突っ込んでる所は、
問題に>テーマ:ポインタの利用ってあるからポインタを使った方の出力を見たいのかと推測して書いただけ。

ていうかなんでこんな切れられてるんだ…。
別に自分は他の考え方を批判したりしないから、
もっと良い書き方あると思ったら>>763が書いてくれれば良いよ。
その方が質問者のためになるし。
767デフォルトの名無しさん:2007/07/12(木) 15:45:42
>>763
>え、何これ?heikie/=って、普通に/Nにしときゃ良いじゃん。無駄、読みづらい

読みやすいとはいえないが、この場合はイコール入れとかないとだめでしょ?
768デフォルトの名無しさん:2007/07/12(木) 15:46:14
>>758=>>760=>>763=>>764
なんで突然こんなファビョってるんだ、とりあえず落ち着け。
769デフォルトの名無しさん:2007/07/12(木) 15:48:05
>>756
> テーマ:ポインタの利用
>>757
pa=array; < pa[i] じゃこれの意味ないからw
770デフォルトの名無しさん:2007/07/12(木) 15:50:27
ったく、夏休み前に、今年の4月からC言語を始めたポインタも知らん初心者が答えるから
>>759みたいな奴が湧いて出てくるんだよな。お前が解釈できないソースはすべて
酷く意味無く読みづらいんか。あぁそうですか、お前に理解力がないだけだろ。経験不足の初心者め。
771デフォルトの名無しさん:2007/07/12(木) 15:52:34
>>768
あれあれ?初心者風情が何勘違いして間違ったイコールしてんの?w
772デフォルトの名無しさん:2007/07/12(木) 15:53:58
>>758=>>760=>>763=>>764=>>769=>>770
香ばしすぎるから自重しろ。
773デフォルトの名無しさん:2007/07/12(木) 15:56:08
なんか変なの沸いてるな。
一行批判に対して何を延々と粘着してるんだか…。
774デフォルトの名無しさん:2007/07/12(木) 16:03:22
いつもの人だから気にしたら負け。
とりあえず
>> double heikie=0;
>heiki"e"(プ
問題文が読めてない
>> printf("平均:%.1f\n",heikie/=N);
>え、何これ?heikie/=って、普通に/Nにしときゃ良いじゃん。無駄、読みづらい
ここで/だとこの後heikieと各要素との比較ができなくなるからダメ
775デフォルトの名無しさん:2007/07/12(木) 16:03:51
「よく見かけるscanfは思わぬ誤作動の原因となる可能性がある。
このscanfの問題を考えられる限り調べて記述せよ。」

という宿題ですが、これってscanf("%d",…);
これに対して変な値を入力した時のことで良いんですか?
たとえば'a'とかをキーボードから入力するような。
776デフォルトの名無しさん:2007/07/12(木) 16:04:49
>>774
お前必死すぎwwwwもろにお前が釣られていることに気づけよ
777デフォルトの名無しさん:2007/07/12(木) 16:12:22
ポインタも知らなかった初心者が添え字を使うことしか頭に無かったんでしょうね。
>>775
そういう対処は個別にすりゃ良い。ただ、対処するために他にstdio.h以外に
定義されているライブラリを用いると便利なんだが、それでもおkなら
fgetsで取り込んで、isdigitで数字のみが入力されているとか、最後にatoiで
int型の変数に代入するといった流れになるが。
778デフォルトの名無しさん:2007/07/12(木) 16:13:42
ひっでぇ自演
779デフォルトの名無しさん:2007/07/12(木) 16:14:02
>>777
対処法じゃなくて問題点を挙げるんじゃないの?
780デフォルトの名無しさん:2007/07/12(木) 16:24:15
>777
はじめの一行だけ文体丁寧にしても、その後が変わってなきゃ意味ないぞw
781デフォルトの名無しさん:2007/07/12(木) 16:30:50
1] 授業単元:c言語
[2] 問題文: キーボードから m, h, n を入力し、m の時は Good morning
h の時は Hello n の時は Good night、と表示する。
またそれ以外の文字が入力された時は retry を表示するプログラムを switch文を用いて作成せよ。

[3] 環境
 [3.1] OS:XP
 [3.2]コンパイラ:vs05
 [3.3] 言語:C
[4] 期限:07年7月12日24時
よろしくお願いします


782デフォルトの名無しさん:2007/07/12(木) 16:41:49
>>545マジでお願いします。
783デフォルトの名無しさん:2007/07/12(木) 16:45:22
>>782
#include<stdio.h>
int main(void){
char s[51];
while(1){
printf("コマンド?",s);
scanf("%s",&s);
if(s[1])continue;
switch(s[0]){
case 'm':printf("Good morning\n");break;
case 'h':printf("Hello\n");break;
case 'n':printf("Good night\n");break;
default:printf("retry\n");break;
}
}
//return 0;
}
784デフォルトの名無しさん:2007/07/12(木) 16:49:59
>>775
scanf()は、書式指定に従って読み取れるところまでを読み取り、残りは
ストリームバッファに残す。
実際にどの程度を読み取れたかは、戻り値や%n指定子を使えば判別できる。

%s指定子などは、幅を指定しない限りバッファオーバーフローを
引き起こす危険性があることに注意(gets()と同じ)。
%sや%dなどは先頭の空白を読み飛ばすが、読み飛ばされる空白には
改行文字も含まれることにも注意。逆に、%cなどは空白を
読み飛ばさないことにも注意。
以上のような点を理解して、適切な使い方をしている限りは何も問題は無い。
scanf()の問題のほとんどは、正しい使い方をしないことに起因する。
785デフォルトの名無しさん:2007/07/12(木) 16:56:16
>>784
そりゃ正常ルートを通る入力なら正常だよ
786デフォルトの名無しさん:2007/07/12(木) 16:59:23
>>785
期待された入力でなかったことは、scanf()の戻り値で確認できる。
状態を回復するには例えばその行を読み飛ばせばよい。
787デフォルトの名無しさん:2007/07/12(木) 17:06:51
>>786
>>784
知ったかの知識をひけらかしたいのは分るが、ちゃんと>>775 と最後の一行を読め
788デフォルトの名無しさん:2007/07/12(木) 17:09:30
>>787
それは、「scanf()の問題」ではなく、使い方が悪いだけだと言っているのだが。
gets()の欠点は使い方ではカバーのしようがない。scanf()はそうではない。

scanf()の問題は、「初心者にとって挙動や仕様が理解しにくい」こと
だろう。
789デフォルトの名無しさん:2007/07/12(木) 17:27:35
#include<stdio.h>
int main(void) { int c; while ((c = getchar()) != EOF) putchar(c); return 0; }

getchar()の戻り値をチェックしなければ無限ループになるが、
誰もgetchar()が悪いとは言わない。

scanf()の戻り値をチェックしないことは同じぐらい愚かな行為だが、
そういうコードが横行し、皆がscanf()を悪く言うのは不思議なものだ。
790デフォルトの名無しさん:2007/07/12(木) 17:34:54
>>757
pa=array; scanf("%d",&pa[i]); if(pa[i]<heikie){ < (プッ
791デフォルトの名無しさん:2007/07/12(木) 17:42:00
自演厨消えたと思ったらまだ居たのか。
792デフォルトの名無しさん:2007/07/12(木) 17:43:27
[1] 授業単元:実プロ
[2] 問題文(含コード&リンク):
catコマンドと必要ならegrepコマンドとwcコマンドをパイプでつないで起動することで、
テキストファイルの行数・単語数・バイト数を数えるプログラムを書け。
複数のファイルが指定されたときは、合計のみを表示するようにすること。 ただし、以下のオプションをとることができるようにせよ。
-e 空行を、数える対象から除外する。
-E 空白文字以外の文字を含まない行を、数える対象から除外する。
(「空白文字」とは、Cの標準ライブラリ isspace() で真となる文字のことである。空白だけではないので注意)
-s #で始まる行を、数える対象から除外する。
-S #を含む行を、数える対象から除外する。

↓catコマンドとwcコマンドをパイプでつないで使って、ファイルの行数・単語数・バイト数を数える
プログラム。 複数のファイルが指定されたときは、合計のみを表示する。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4601.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:ないです

どうかよろしくお願いします。
793デフォルトの名無しさん:2007/07/12(木) 17:45:11
>>792
今度はCプロでなく実プロという講座名になったんだね
794デフォルトの名無しさん:2007/07/12(木) 17:57:56
795デフォルトの名無しさん:2007/07/12(木) 17:59:04
>>791 = >>757 < ポインタを知らない偉そうにしているだけの基地外初心者
796デフォルトの名無しさん:2007/07/12(木) 18:08:22
[1] 授業単元: C言語
[2] 問題文:任意の文字列をAAコードを抜き出しint型の変数に代入


DAISUKEならば2文字目のAをint n1へ 3文字目のIをint n2へ

[3] 環境
 [3.1] OS: ウインドウズ
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語: C
[4] 期限: 2007年07月13日9:00まで
[5] その他の制限: とくになし

よろしくお願いします。
797デフォルトの名無しさん:2007/07/12(木) 18:09:07
[1] 授業単元: 情報演習
[2] 問題文:フィボナッチ数列 a0=0,a1=1,a(i+1)=ai+a(i-1) (i=1,2,3…)
を計算するプログラムを作成せよ。なお、計算例はi+1=20まで示すこと。
仕様1)得られた値が奇数であるならば、数値の右に*をつけ、奇数かつ3の倍数ならば
数値の右に**をつけて出力すること。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 17日
[5] その他の制限: おねがいいたしますぅ(>_<)
798デフォルトの名無しさん:2007/07/12(木) 18:16:02
#include <stdio.h>

int main(void)
{
int a[20], i;

a[0] = 0;
a[1] = 1;

for(i=2; i<20; i++) a[i] = a[i-1] + a[i-2];

for(i=0; i<20; i++) {
printf("%d", a[i]);
if(a[i]%2) {
putchar('*');
if(a[i]%3==0) putchar('*');
}
putchar('\n');
}

return 0;
}
799デフォルトの名無しさん:2007/07/12(木) 18:25:20
>>795
しかし恥ずかしげも無くよく言うな。
>int array[10]、 goukei;
>int *pa;
>double heikie;
>pa = array;
800デフォルトの名無しさん:2007/07/12(木) 18:35:46
文盲は放っておけ
801デフォルトの名無しさん:2007/07/12(木) 18:44:29
[1] 授業単元:オセロゲーム
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4602.txt

列と行の入力の順序を間違えても受け付けて,
入力値が合法的でないときには,合法的な手の一覧を表示した後に
再度入力を促すように, get_move(↑のプログラム) を変更せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7月17日まで
[5] その他の制限: 特にありません

よろしくお願いします。
802デフォルトの名無しさん:2007/07/12(木) 18:51:57
803802:2007/07/12(木) 18:56:15
うげ。SetConsoleCtrlHandler()用の1行ルーチン書いたけど何もしてねぇ。
手を抜きすぎた。
まぁいいか。
804デフォルトの名無しさん:2007/07/12(木) 18:58:01
うぷろだが関西2ちゃんねら
になっているのはなぜ??
805 ◆KrpcpKelXU :2007/07/12(木) 18:58:15
[1] 授業単元: C
[2] 問題文(含コード&リンク):
改行文字やタブのような文字を目で見えるエスケープ文字\nや\tに変換しながら、
sをtにコピーするような関数escape(s,t)を書け。switchを使うこと。
>(例)
>The C programming language. と入力すれば、
>The\t\tC\tprogramming language.\n と印字される。
>

[3] 環境
 [3.1] OS: (Windows
 [3.2] コンパイラ名とバージョン: (gcc
 [3.3] 言語: C
[4] 期限: 15日23:59まで
806デフォルトの名無しさん:2007/07/12(木) 19:06:14
>801
if (is_legal_move(board, player, *p, *q)) return;の後に
for(i=1; i<B; i++) for(j=1; j<B; j++) if(is_legal_move(board, player, i, j)) printf("%c%c ", 'a'+i-1, '0'+j);を入れる。

iとjの範囲はboardがどうなってるか分らないから適当なんで、違ってたら自分で直しといて。
807デフォルトの名無しさん:2007/07/12(木) 19:08:15
[1] 授業単元: C
[2] 問題文(含コード&リンク):

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

実行例
文字列を入力してください。
kazukikuzak
kazukikuzakは回文です

文字列を入力してください。
kazukidesu
kazukidesuは回文ではありません。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明日の朝まで
[5] その他の制限: 明解C言語って本使ってて
   ポインタってとこまでならったとか
友人がベソかきながら聞いてきました
力になってやりたいんですが俺の頭じゃ何もできません
といてやってくださいお願いしまーす
808デフォルトの名無しさん:2007/07/12(木) 19:08:24
>>802様、お願いです、あまり手を抜きすぎないでください。(T_T)
809デフォルトの名無しさん:2007/07/12(木) 19:09:46
>805
単なる空白も\tにすんの?
810802:2007/07/12(木) 19:14:49
>>808
まあふいんきは分かっただろうから後は自分でがんがれ。
面倒なら
volatile int signaled;
BOOL WINAPI handler(DWORD)
{
  signaled = 1;
}
これをとっぱらっちまえ。
で、下のほうの
while (!signaled && (nread = recvfrom...
は、
while ((nread = recvfrom...
に変える。
811デフォルトの名無しさん:2007/07/12(木) 19:19:34
>805
void escape(char *s, char *t)
{
while(*s) {
switch(*s) {
case '\t': *t++ = '\\';
*t++ = 't';
break;
case '\n': *t++ = '\\';
*t++ = 'n';
break;
default : *t++ = *s;
break;
}
s++;
}
*t = '\0';
}
812デフォルトの名無しさん:2007/07/12(木) 19:20:35
>>807
#include <stdio.h>
#include <string.h>
int kaibun(const char *s, size_t len)
{
    if (len <= 1) return 1;
    if (s[0] != s[len-1]) return 0;
    return kaibun(s+1, len-2);
}
int main(void)
{
    char buff[BUFSIZ], *p;
    while (fgets(buff, sizeof buff, stdin)) {
        if (p = strchr(buff, '\n')) *p = '\0';
        printf("回文で%s\n",
                kaibun(buff, strlen(buff)) ? "す" : "はありません");
    }
    return 0;
}
813デフォルトの名無しさん:2007/07/12(木) 19:22:44
>>807
このスレの前の方にあった処理を参考に。
#include<stdio.h>
#include<string.h>
#define N 256
int main(void){
char str1[N],str2[N];
int i=0,n=0;
printf(">>");
scanf("%s",str1);
n=(int)strlen(str1)-1;
while(n>=0)
str2[i++]=str1[n--];
str2[i]='\0';
if(strcmp(str1,str2)==0)
printf("回文です。\n");
else printf("回文ではありません。\n");
return 0;
}

でも回文についてググったら、
「前から読んでも後ろから読んでも順番が変わらず、
なおかつ、言語としてある程度意味が通る文字列〜」
って、言語として意味が通るかどうかはどうすれば…。
814デフォルトの名無しさん:2007/07/12(木) 19:28:35
>>813
>>807っす。どうもです。
いやー複雑っすね。素人なもんで複雑怪奇です
文字列を入力してください。っていうのはprintf("回文です。\n"); の上にいれればいいんですかね?
問題は友人が「とにかく回文なんだよお」と泣きながら言ってたもんで…
815802:2007/07/12(木) 19:29:44
あーすまん、あと
sendto(sd, buff, sizeof buff

sendto(sd, buff, nread
に汁。
ちと拘束衣着て反省房に入ってくる。
816デフォルトの名無しさん:2007/07/12(木) 19:34:32
>>814
まずは試してみ?
817デフォルトの名無しさん:2007/07/12(木) 19:37:28
>>814
文字列の入力を促してるのは、上から7行目の
printf(">>");って所だから、そこをprintf("文字列を入力してください>>");
みたいに書き換えてくれればOK。
ただ回文判定っていうより、入力文字が逆にしても元の文字と一緒かを
判定しているという。まぁこれで十分だとは思うんだけど。
818デフォルトの名無しさん:2007/07/12(木) 19:38:05
逆順の文字列を作ってからstrcmpって無駄が多いな。
819デフォルトの名無しさん:2007/07/12(木) 19:42:27
[1] 授業単元:C言語
[2] 問題文: 自分で問題を選べる3択クイズをつくる。


番号を入力してください。

第三問
・・・・・・・・・・・
1、・・・・ 2、・・・・ 3、・・・・

結果
正解。
[3] 環境
 [3.1] OS: Solaris8
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 7月17日まで
[5] その他の制限:if文、switch文,for文,while文,do-while文をそれぞれ一回は使用する。

初心者なのでできるだけわかりやすくおねがいします。
基盤だけおねがいします。printf文は自分でやります。
820デフォルトの名無しさん:2007/07/12(木) 19:42:33
>>818
でも単純で分かりやすくない?
821デフォルトの名無しさん:2007/07/12(木) 19:48:43
駄目だな
char c[N]だったら
m=N/2
for(i=0;i<=m;i++)if(c[i]=c[N-i])break;
if(i==m)kaibun else tigau
822デフォルトの名無しさん:2007/07/12(木) 19:52:28
>821
君、面白いね
823デフォルトの名無しさん:2007/07/12(木) 19:52:45
何が駄目なんだ?
824デフォルトの名無しさん:2007/07/12(木) 19:52:56
>>821
びっくりマークわすれてるよ
825デフォルトの名無しさん:2007/07/12(木) 19:57:07
>m=N/2
文字列のサイズがNになるとは限らない

>for(i=0;i<=m;i++)if(c[i]=c[N-i])break;
!が足りない以外にもダメなところがある
826デフォルトの名無しさん:2007/07/12(木) 19:57:51
駄目だな
char c[N]だったら
m=N/2
for(i=0;i<=m;i++)
if(c[i]!=c[N-i]){tigau;return;}
kaibun;
が正解
827デフォルトの名無しさん:2007/07/12(木) 19:59:27
まだダメだな
828デフォルトの名無しさん:2007/07/12(木) 20:02:00
for(i=0;i<=m;i++)if(c[i]=c[N-i])break;

for(i=0;(i<=m)&&(c[i]==c[n-i]);i++);
ってやると、breakがいらなくなるよ
829デフォルトの名無しさん:2007/07/12(木) 20:02:29
駄目だな
char c[]だったら
for(N=0;c[N]=='\0';N++);m=N/2
for(i=0;i<=m;i++)if(c[i]!=c[N-i]){tigau;return;}
kaibun;
830デフォルトの名無しさん:2007/07/12(木) 20:05:30
ここまでくるとギャグにしかなってねえな
831デフォルトの名無しさん:2007/07/12(木) 20:07:27
FlyingShine(フライングシャイン)を語る その21
http://idol.bbspink.com/test/read.cgi/hgame/1174140000/
832デフォルトの名無しさん:2007/07/12(木) 20:07:40
>828
そんな小手先のテクより、明らかな間違いに突っ込んでやれよw
833デフォルトの名無しさん:2007/07/12(木) 20:08:34
c[N]!='\0' だろ?
834デフォルトの名無しさん:2007/07/12(木) 20:11:16
ループが最後まで回ったばあい、i>mっていう判定にしないとだめだよ
835デフォルトの名無しさん:2007/07/12(木) 20:12:21
829ではループが最後まで回らなかった場合、リターンするのでいらん
836デフォルトの名無しさん:2007/07/12(木) 20:12:48
>>714
#include<stdio.h>
#include<math.h>
int main(void)
{
    int i,j,k;
    double x,y,z;
    printf("i:");scanf("%d",&i);
    printf("j:");scanf("%d",&j);
    printf("k:");scanf("%d",&k);
    x = pow(i, 2)/4 + pow(j, 3)/27;
    y = x/(1.0 + pow(k, 2.0));
    if(k < 0 || y < 0)
        z = pow(fabs(y), 1.0/3)*fabs(k)*log(fabs(k));
    else if(k==0)
        z = 0;
    else
        z = pow(y,1.0/3)*k*log(k);
    printf("i=%d , j=%d , k=%d\n",i,j,k);
    printf("x=%f , y=%f , z=%f",x,y,z);
    return 0;
}
837デフォルトの名無しさん:2007/07/12(木) 20:15:03
いや、関数を作らない場合
838デフォルトの名無しさん:2007/07/12(木) 20:16:46
821=823=826=829=833=835
書き込む前に実行すればムダなレスと恥をさらさないですむよ

最後までc[N-i]に気づかなかったね
839デフォルトの名無しさん:2007/07/12(木) 20:33:49
840デフォルトの名無しさん:2007/07/12(木) 20:41:08
841デフォルトの名無しさん:2007/07/12(木) 20:47:47
842デフォルトの名無しさん:2007/07/12(木) 20:50:02
843デフォルトの名無しさん:2007/07/12(木) 21:05:26
844デフォルトの名無しさん:2007/07/12(木) 21:07:27
>>817
どうもです!明日ガッコで試すって友達がいってたんで、またなんかあったらよろしくおねがいします
845デフォルトの名無しさん:2007/07/12(木) 21:21:42
846デフォルトの名無しさん:2007/07/12(木) 21:54:45
【即会い!!】

管理人が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。
↓↓↓
【ブログ〜即会い道】http://deaiload.blog109.fc2.com/
847デフォルトの名無しさん:2007/07/12(木) 21:58:13
すいません、
#include <stdio.h>
#include <math.h>

int main(void){
double pi=acos(-1.0),input;

printf("角度を入力->");
scanf("%lf",&input);
getchar();

printf("%f° %fπr %f %f",input,input/180,sin(pi*input/180),cos(pi*input/180));

if(int(input)!=90 && int(input)!=270)printf(" %f",tan(pi*input/180));

getchar();
return 0;
}
このプログラムを実行したら
k7_1.c: In function ‘main’:
k7_1c:12: error: parse error before ‘int’

のようなエラーがでてしまうのですが、どこが悪いのかわかりません;
ご教授お願いできませんでしょうか
[3.1] OS: mac
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
848デフォルトの名無しさん:2007/07/12(木) 22:08:25
>>847
> このプログラムを実行したら
このソースをコンパイルしたら
の間違いだろう。

結論から言うと、拡張子をcppなどにしてC++コンパイラでコンパイルするか
int(ほにゃらら)
を(int)ほにゃらら
に書き換えるんだな。
849デフォルトの名無しさん:2007/07/12(木) 22:10:08
>>710の人と同じ大学みたいで、俺も前の見たんですがわかりません。
先生はわざとおかしく問題文を作っていると言っていました。
迷惑だとはわかっていますが教えてください。
足し算、引き算、割り算、掛け算が出来ればいいみたいです。でも、
書き加えたところにはコメントも必要みたいです。
すいませんがよろしくお願いします。
850デフォルトの名無しさん:2007/07/12(木) 22:13:38
先生は2chを見ているのかもしれんのう
851デフォルトの名無しさん:2007/07/12(木) 22:20:01
[1] 授業単元:C言語
[2]
int a[4]={1, 1, 0, 0};
int b[4]={0, 1, 0, 0};

これを2進数の1100と0100とし
2進数の掛け算、割り算をするプログラムを製作せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語: C言語
[4] 期限: 2007年07月14日まで
[5] その他の制限:特になし

誰か助け舟を・・・
852デフォルトの名無しさん:2007/07/12(木) 22:27:48
>>710>>711には続きがあるような気がするのですが
関数int number(void)の本体が見当たらない。
もしかして自分で作れと言う事ですか?
853デフォルトの名無しさん:2007/07/12(木) 22:27:52
>>850
見ていても構いません。バカにされるのはわかっていますが、本当に切実
なんです。もう少しでこの授業も終わります。でも、最後まで出来ないけ
れどやらなきゃいけないんです。お願いです。助けてください。
854デフォルトの名無しさん:2007/07/12(木) 22:34:00
多分君に再帰下降構文解析と言っても何のことだか分からないだろうから、
ここでは説明しようながいんだよ。
すまないが諦めてくれ。
855854:2007/07/12(木) 22:34:41
> 説明しようながいんだよ
意味わかんねぇ
どうやら俺が首を吊ってくる番だったようだ
856デフォルトの名無しさん:2007/07/12(木) 22:49:00
>>854
お願いです。そこを何とかお願いします。プログラムだけでもいいです。
俺が理解出来ないようなないようならきちんと勉強します。
だからお願いします。もう、ここしかお願いするところがないんです。
857デフォルトの名無しさん:2007/07/12(木) 22:51:37
赤点とって退学して氏ね。
858デフォルトの名無しさん:2007/07/12(木) 22:58:32
[1] 授業単元: プログラミング技術
[2] 問題文(含コード&リンク): ニュートン法
収束回数と解の値を出力する。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2007年07月13日08:00まで
[5] よろしくお願いします。
859デフォルトの名無しさん:2007/07/12(木) 22:59:52
>>857
いくらなんでも酷すぎます
860デフォルトの名無しさん:2007/07/12(木) 23:00:37
>>857は確かに言いすぎだと思うよ
861デフォルトの名無しさん:2007/07/12(木) 23:05:13
全点対間最短路問題の解法で行列の積を用いる方法があると思うのですが
その積の計算方法がわかりません。
L1=W
L2=W*W
・・・
となっているのですが、どうも普通に計算したのでないようで・・。
これはやはり一回の積は
min(Iij,Iik+Wkj)を一回ずつ行っていくしかないのでしょうか?

環境はC++、XPSP2期限は13日までです。

ん〜・・。min()を全部の値で繰り返して行うと・・。これはとんでもなく大変なことになるとおもうのですが・・。
862デフォルトの名無しさん:2007/07/12(木) 23:10:48
>>860
>>857は怪我した人の傷に塩を擦り付けて、苦しむ姿をニヤニヤ楽しむタイプだよ
いるよね、そんな香具師
863デフォルトの名無しさん:2007/07/12(木) 23:21:50
>>862
しつこいけど少し同情したかな
864デフォルトの名無しさん:2007/07/12(木) 23:31:54
ところでしつこい人に教える?
865デフォルトの名無しさん:2007/07/12(木) 23:33:11
どうぞ。
866デフォルトの名無しさん:2007/07/12(木) 23:35:23
お願いします。(T_T)(i.i)
867デフォルトの名無しさん:2007/07/12(木) 23:44:02
>>710です
誰でもいいので教えてください
868デフォルトの名無しさん:2007/07/12(木) 23:46:28
>>710-711
この板の新入りだがやってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4604.c

1+1を入力すると 2を出力する。同様に-*/にも対応した
未熟者だから突っ込みどころ満載だと思うが
その辺はこの板の住人に任せる
869868:2007/07/12(木) 23:50:29
追記
環境がWindows+VC6.0なんで
Linuxで不都合があったら自己解決よろ
870デフォルトの名無しさん:2007/07/13(金) 00:08:02
>>868
ありがとうございます。
早速試してみます
871デフォルトの名無しさん:2007/07/13(金) 00:37:00
>>861
の質問は無視してください。
自己解決しました。
872デフォルトの名無しさん:2007/07/13(金) 01:06:51
>>870
以前オレが作った電卓。

http://cm.xrea.cc/thread/program_004.html#R814

四則演算、括弧のネスト、三角関数まで対応している。
873デフォルトの名無しさん:2007/07/13(金) 01:15:17
>>870
>>872の後に、さらにいろいろ拡張してみたのがこれ。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4605.txt

四則演算、括弧のネスト、ビット演算、論理演算、数学関数、三角関数、
順列、階乗、組み合わせ、piとeは定数、mは前回結果。

ただ、これ、何かの演算をやろうとすると、
優先順位が違っちゃったんだよな…。
括弧をつけずにビット演算と論理演算を混ぜると駄目だったような気がする。

まぁ、コンパイラじゃないので、それくらいは勘弁してくれ。
874371:2007/07/13(金) 01:31:45
>>374
mainがわからなくて再提出になってしまった。。。

明日再提出期限

誰か助けてください。。。。
875デフォルトの名無しさん:2007/07/13(金) 01:51:52
>>874
適当なもんでテストするのつくりゃいいんでねぇの?
int main(void){
char a[100] = "TEST";
char b[100] = "";

printf("a[%s]b[%s]",a,b);
strcpy(a,b);
printf("a[%s]b[%s]",a,b);
strcat(a,b);
printf("a[%s]b[%s]",a,b);

return 0;
}
コンパイルすらしてないけど。
876371:2007/07/13(金) 01:57:39
>>875
【LIBCD.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です
Debug/sub1.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー】

ってエラーが出てできないです。。。
877デフォルトの名無しさん:2007/07/13(金) 01:59:20
>>873
本当にありがとうございます
878371:2007/07/13(金) 02:03:57
>>875
自己解決しました。。。

ありがとうございました
879デフォルトの名無しさん:2007/07/13(金) 02:04:40
>>876
コンパイルしてみたけど、通ったよ。
プロジェクトの始め方とかでまちがってね?
VCマスターじゃないんで細かい指摘はできね。
win32 Console Applicationで作ったのかい?
880371:2007/07/13(金) 02:23:03
>>879
最近windowsプログラムの課題ばかりだったから
win32 Applicationでやってました。
win32 Console Applicationでやったら通りました。

夜遅くありがとうございました。
881デフォルトの名無しさん:2007/07/13(金) 02:45:26
[1] 授業単元: C言語 探索
[2] 問題文(含コード&リンク):整数型の配列a[10]を定義し、初期値を代入(1,3,4,5,6,8,10,11,13,14)。
キーボードから数値を入力し、入力した数値が配列a[10]に存在するか2分探索で検索を行う。
◎存在した場合
 配列何番目の要素で見つかったのかprintf関数でディスプレイに表示。
◎存在しない場合
 探索エラーとディスプレイに表示。 
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:lsic
 [3.3] 言語:C言語
[4] 期限:来週の水曜日まで
[5] その他の制限:main関数のみ


1] 授業単元: C言語 整列
[2] 問題文(含コード&リンク):キーボードからランダムな数字を10回入力し、配列a[10]に格納する。
配列a[10]を昇順に整列する。整列されたa[10]をprintf関数でディスプレイに表示。
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:lsic
 [3.3] 言語:C言語
[4] 期限:来週の水曜日まで
[5] その他の制限:main関数のみ。整列の方法は、基本選択法、基本交換法、バブルソート、右シフト、基本挿入法のうちどれでもOK。


以上2つです。宜しくお願いします。
882デフォルトの名無しさん:2007/07/13(金) 03:12:50
今どうしようもなくなってる人いるか?
ちょっと時間があるから簡単なものならやれるぞ
883デフォルトの名無しさん:2007/07/13(金) 03:39:43
>>851
値を変える場合はansとかa_ten,b_tenあたりをintからdoubleにして
%dを%lfにしてね
割り算で不具合が出る
値変えなくてもdoubleの方がいいかもだけど

#include <stdio.h>
#include <math.h>

int main(void){

int i;
int a[4] = {1, 1, 0, 0};
int b[4] = {0, 1, 0, 0};
int ans2, ans1;
int a_ten=0, b_ten=0;

for(i=0; i<4; i++){
a_ten += a[i] * pow(2, 3-i);
b_ten += b[i] * pow(2, 3-i);
}

ans1 = a_ten*b_ten;
printf("a * b = %d\n", ans1);

ans2 = a_ten/b_ten;
printf("a / b = %d\n", ans2);

return 0;
}
884デフォルトの名無しさん:2007/07/13(金) 08:04:10
>>883
ありがとう

出来れば割り算をdo文とfor文とwhile文辺りでやるやり方も知りたい
885デフォルトの名無しさん:2007/07/13(金) 10:12:18
>>883は出題者の意図する解答でないのは確かだな
886デフォルトの名無しさん:2007/07/13(金) 10:20:45
私も、「配列に格納した状態でビット演算、桁上がり、桁下がりを実装」だと考えた
887デフォルトの名無しさん:2007/07/13(金) 11:06:30
昨日のポインタ無視添え字マンセー野郎と一緒だなw
888デフォルトの名無しさん:2007/07/13(金) 11:08:12
for文でaとbを一つずつ足し引きして
for文で-1とかを直しつつ桁下がりしつつ
そのfor文をWhileとdoでループさせて何回引けたかをカウントしつつ
whileの中身は配列の中身が全て0以下になったらって感じかな
889デフォルトの名無しさん:2007/07/13(金) 11:32:52
4bit×4bit限定っていう前提ならまだましだけど、
ある程度汎用的にって考え出したらめんどそうだな。
890デフォルトの名無しさん:2007/07/13(金) 11:33:31
891デフォルトの名無しさん:2007/07/13(金) 11:35:17
掛け算だけ作ってみたけどめちゃくちゃ面倒くせえ

typedef struct vector_t { int *value, size; } vector_t;
void reverse(vector_t *v)
{
    int i, j, tmp;
    for (i = 0, j = v->size - 1; i < j; i++, j--) {
        tmp = v->value[i];
        v->value[i] = v->value[j];
        v->value[j] = tmp;
    }
}
void mul(vector_t *x, vector_t *y, vector_t *result, int radix)
{
    int i, j, k, maxk = 0;
    memset(result->value, 0, (x->size + y->size) * sizeof(int));
    for (i = x->size - 1; i >= 0; --i) {
        for (j = y->size - 1; j >= 0; --j) {
            k = x->size + y->size - i - j - 2;
            result->value[k] += x->value[i] * y->value[j];
            result->value[k + 1] += result->value[k] / radix;
            result->value[k] %= radix;
        }
    }
    for (maxk = x->size + y->size;
            maxk > 0 && result->value[maxk-1] == 0; --maxk) {}
    result->size = maxk;
    reverse(result);
}
892デフォルトの名無しさん:2007/07/13(金) 13:02:40
昼休みにちょっと考えてみた。
乗算はこんな感じになるかと。
Cのコンパイル環境がないので、動くかどうかは知りません。

int c[8]={0, 0, 0, 0, 0, 0, 0, 0};
int x,y;

for( int i=0 ; i<4 ; i++ ){
x = 0;
for( int j=0 ; j<4 ; j++ ){
y = ( a[j] & b[i] ) ^ c[i+j] ^ x;
x = ( ( a[j] & b[i] ) & c[i+j] ) | (( ( a[j] & b[i] ) | c[i+j] ) & x );
c[i+j] = y;
}
}
893デフォルトの名無しさん:2007/07/13(金) 13:06:39
遅くなってすいません
<<659.660さん
本当にありがとうございます!o(_ _)o
894デフォルトの名無しさん:2007/07/13(金) 13:12:10
>>444
>>446

よろしくお願いしますm(_ _)m
895デフォルトの名無しさん:2007/07/13(金) 13:31:55
[1] 授業単元: プログラム演習A
[2] 問題文:
テキストファイルに書かれたランダムに配列された文字列を読み込み、
アルファベット順にソートして別のテキストファイルに出力するプログラムを作成せよ
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: [2007年7月23日12:00まで]
[5] その他の制限: とくになし

よろしくおねがいします
896デフォルトの名無しさん:2007/07/13(金) 13:44:28
[1] 授業単元:数値計算法入門
[2] 問題文:LU分解による連立方程式の解法のプログラムを作成せよ

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語: C言語
[4] 期限: 2007年07月15日まで
[5] その他の制限:特になし

どうかよろしくおねがいいたします
897デフォルトの名無しさん:2007/07/13(金) 14:42:18
>>545マジでお願いします。
898デフォルトの名無しさん:2007/07/13(金) 14:43:25
m=-1;
do{
aの配列から引いたりするfor文(省略
m++;
}while(a[0] && a[1] && a[2] && a[3] && a[4] <= 0);

>>888を見てこんな感じかなと思ったけどwhileが違うっぽい、もうだめぽ
899デフォルトの名無しさん:2007/07/13(金) 15:14:23
>>895
#include <stdio.h>
#define  INFILE      "infile.txt"
#define  OUTFILE    "outfile.txt"
int main(void) {
  FILE *fd;
  int ch, i, j;
  unsigned int cnt[128];
  if ((fd=fopen(INFILE, "r"))==NULL) return -1;
  memset(cnt,0,sizeof(cnt));
  while ((ch=fgetc(fd))!=EOF)
    if (32<=ch&&ch<=126) cnt[ch]++;
  fclose(fd);
  if ((fd=fopen(OUTFILE,"w"))==NULL) return -1;
  for (i=32;i<128;i++)
    for (j=0;j<cnt[i];j++)
      fputc(i,fd);
  fclose(fd);
  return 0;
}
900デフォルトの名無しさん:2007/07/13(金) 15:28:50
ソートって文字単位なの?てっきり行単位かと思ったのだが
901デフォルトの名無しさん:2007/07/13(金) 16:42:59
>>545の問題は
>>586-587の方がしてくれてるんでは?
902デフォルトの名無しさん:2007/07/13(金) 17:15:44
一次元配列を使って次の問題を解け。ある会社では、販売員に歩合給ペースで賃金を支払っている。販売員は固定給200ドルとその週の売上高の9%を受け取る。たとえば、週に3000ドル売り上げた販売員は、200ドル+3000ドルの9%で週給470ドルを受け取る。
週給(小数点以下を切り捨てた整数値)が以下の各範囲に該当する販売員の人数を求めるプログラムを書け。ただし、人数カウンタの配列を使うこと。
1. 200-299ドル
2.300-399ドル
3.400-499ドル
4.500-599ドル
5.600-699ドル
6.700-799ドル
7.800-899ドル
8.900-999ドル
9.1000ドル以上

よろしくお願いします。
903デフォルトの名無しさん:2007/07/13(金) 18:05:03
[1] 授業単元:データ構造とアルゴリズムT
[2] 問題文:2次方程式の解を表示する関数を作成しなさい。

*2次方程式 ax2+bx+c=0 の解を表示する関数
関数定義
void solveQuadEq(double a, double b, double c)
解は,戻す(returnする)のではなく,表示する(printfする)ようにしてください.
解の場合わけ
a=0, b=0のとき,エラー
a=0, b≠0のとき,x=-c/b
a≠0のとき,
判別式D=0のとき,重解
判別式D>0のとき,解の方程式(実数解)


判別式D<0のとき,解の方程式(虚数解)

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual stdio 2003
 [3.3] 言語: C++
[4] 期限: 2007年07月14日AM9:00まで
[5] その他の制限:できるだけ複雑ではなく簡単な構造にしてください。

どうかよろしくおねがいいたします
904デフォルトの名無しさん:2007/07/13(金) 18:13:13
>>901
>>638ってことらしいんだぜ、多分
905デフォルトの名無しさん:2007/07/13(金) 18:15:24
>>902
問題の意味がわからない
何を入力して、何を出力するのか詳しく
906デフォルトの名無しさん:2007/07/13(金) 18:17:26
[1] 授業単元: プログラム言語
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4610.txt
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語:C++
[4] 期限: 2007/7/16
[5] その他の制限: 特にありません
907デフォルトの名無しさん:2007/07/13(金) 18:17:35
>>896
ここがわかりやすくていい感じ
http://www2.ee.knct.ac.jp/el/E4/H15-E406/lu1.html
908デフォルトの名無しさん:2007/07/13(金) 18:20:01
>>906です
途中で送信してしまいました
よろしくお願いします
909デフォルトの名無しさん:2007/07/13(金) 18:38:11
>>905
販売員の人数,各販売委員の売り上げは自由に設定してよい。各販売員の売り上げの入力データはプログラム内に埋め込む方式でもキーボードから入力する方式でも良い。
一応問題文全部です。
わかりましたらお願いします。
910デフォルトの名無しさん:2007/07/13(金) 18:52:30
素人が>>903をやってみたけど、原因不明の異常終了です
なぜ?

#include<stdio.h>
#include<math.h>

void solveQuadEq(double a, double b, double c){
double d=b*b-4*a*c;
if(a==0)
if(b==0)printf("Error\n");
else printf("%f\n",-c/b);
else
if(d==0)printf("%f\n",-b/a);
else if(d>0)printf("%f %f\n",(-b+sqrt(d))/a,(-b-sqrt(d))/a);
else printf("%f±%fi\n",-b/a,sqrt(-d)/a);
}

int main(void){
double a,b,c;
while(1){
printf("a=");scanf("%f",&a);
printf("b=");scanf("%f",&b);
printf("c=");scanf("%f",&c);

solveQuadEq(a,b,c);
}
return 0;
}
911デフォルトの名無しさん:2007/07/13(金) 18:56:23
とりあえずdouble型は%lf
912デフォルトの名無しさん:2007/07/13(金) 18:57:43
>>906
#include <iostream>
#include <cmath>

double f(double x)
{
    return 1/(1 + pow(x, 2));
}

int main()
{
    double h, a = 1, b = 2, e = 0.0000001, s1, s2, yo, ye;
    int n, i;
   
    for(n = 1, s2 = 0; ; n++){
        s1 = s2, h = (b - a)/(2*n);
        for(i = 1, yo = 0; i <= 2*n - 1; i += 2) yo += f(a + h*i);
        for(i = 2, ye = 0; i <= 2*n - 2; i += 2) ye += f(a + h*i);
        s2 = h/3*(f(a) + 4*yo + 2*ye + f(b));
        if(fabs(s2 - s1) < e) break;
    }
    std::cout << s2 << std::endl;
   
    return 0;
}
913デフォルトの名無しさん:2007/07/13(金) 18:58:40
>>911
謝謝
あっさり解決しました
914デフォルトの名無しさん:2007/07/13(金) 18:59:58
a, bの値を間違えた……
915デフォルトの名無しさん:2007/07/13(金) 19:05:57
>>910ありがとうございました
916903:2007/07/13(金) 19:19:30
>>910のプログラムの%fを%lfに全て変えましたが、a=1.2, b=0.12, c=-2.88のときに
解がx=1.5, -1.6になると思うんですがどうしてでしょうか?a=0, b=2, c=3の時はできるんですが...すみません

917デフォルトの名無しさん:2007/07/13(金) 19:22:35
a=0, b=2, c=3って2次方程式じゃないしな
918デフォルトの名無しさん:2007/07/13(金) 19:23:35
>>916
ゴメン、まちがえたw
解の公式を考えれば解決できるから
919デフォルトの名無しさん:2007/07/13(金) 19:41:08
>>902
こんな感じでいいの?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define NUM 40 /* 販売員の人数 */
int main(void) {
int salary[NUM], count[11], i, sw;
enum { G = 2, F, E, D, C, B, A, S, SS};
/* G:200-299ドル 面倒なんで以下略 */
srand((unsigned)time(NULL));
memset(count, 0, sizeof(count));
for(i = 0; i < NUM; ++i) {
salary[i] = 200 + ((rand() % 10000) * 0.09);
sw = salary[i] / 100;
if(sw > SS) { sw = SS;}
switch(sw) {
case G: count[G]++; break;
case F: count[F]++; break;
case E: count[E]++; break;
case D: count[D]++; break;
case C: count[C]++; break;
case B: count[B]++; break;
case A: count[A]++; break;
case S: count[S]++; break;
case SS: count[SS]++; break;
}
}
920デフォルトの名無しさん:2007/07/13(金) 19:41:56
続き
printf("200-299ドル:%d人\n", count[G]);
printf("300-399ドル:%d人\n", count[F]);
printf("400-499ドル:%d人\n", count[E]);
printf("500-599ドル:%d人\n", count[D]);
printf("600-699ドル:%d人\n", count[C]);
printf("700-799ドル:%d人\n", count[B]);
printf("800-899ドル:%d人\n", count[A]);
printf("900-999ドル:%d人\n", count[S]);
printf("1000ドル以上:%d人\n", count[SS]);
return (0);
}
921デフォルトの名無しさん:2007/07/13(金) 19:47:37
>902
#include <stdio.h>

int main(void)
{
int a[9] = {0}, i, n;
for(i=1; i<=10; i++) {
printf("%2d人目の売上高を入力してください:", i);
scanf("%d", &n);
n = (int)(n * 0.09);
if(n> 800) a[8]++;
else a[n/100]++;
}

for(i=0; i<8; i++) printf("%d.%d - %dドル:%2d人\n", i+1, 200 + i * 100, 299 + i * 100, a[i]);
printf("9.1000ドル以上 :%2d人\n", a[8]);

return 0;
}
922903:2007/07/13(金) 20:08:41
>>918解決しました。ありがとうございました。
9231:2007/07/13(金) 20:22:05
[1] 授業単元:IT入門
[2] 問題文(含コード&リンク): 文字列を入力し,それを逆から表示するプログラムを作成せよ.
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 最新版
 [3.3] 言語: C
[4] 期限:2007年7月21日
[5] その他:以前ここで教えてもらったプログラム↓
9242:2007/07/13(金) 20:22:50
#include <stdio.h>

int main(void){
char str[100];
char *p, *temp;

puts("文字列を入力してください");
fgets(str, 99, stdin);

p = temp = str;

puts("入力した文字列は以下の文字列です");
while(*p){
printf("%c", *p);
p++;
}

puts("入力した文字列の逆順は以下の文字列になります");
while(p-temp){
printf("%c", *(p-1));
p--;
}

return 0;

}
9253:2007/07/13(金) 20:25:04
↑を実行すると
[1g06a037@eris064 ~]$ gcc 1g06a037_3.c -o hi -Wall
1g06a037_3.c: 関数 `main' 内:
1g06a037_3.c:22: error: 文法エラー at end of input
こんなエラーが出てきます。
何がおかしいのでしょうか?
926デフォルトの名無しさん:2007/07/13(金) 20:29:38
>>919
>>920
>>921
ありがとうございます。
927デフォルトの名無しさん:2007/07/13(金) 20:34:16
>>925
おかしい所は無いはず
もっかいコンパイルしてみ
928デフォルトの名無しさん:2007/07/13(金) 20:44:15
>>923
#include <stdio.h>

int main(void){
char str[256],riv[256];
int i=0,n;

fgets(str,sizeof(str),stdin);

while(str[i]!='\n'){
n=i;
i++;
}
i=0;
while(n>=0){
riv[i]=str[n];
i++;
n--;
}
riv[i]='\0';
printf("%s\n",riv);

return 0;
}
929デフォルトの名無しさん:2007/07/13(金) 21:27:33
Cじゃなんすけど、どの言語か分からないんでここで質問したいプログラムがあるんですけど
それってダメですか?
930デフォルトの名無しさん:2007/07/13(金) 21:29:12
スレタイ嫁。
931デフォルトの名無しさん:2007/07/13(金) 21:29:34
[1] 授業単元:確率
[2] 問題文(含コード&リンク):
double normrand(void) {

return (double) rand() / (RAND_MAX + 1);
}

normrandの生成する一様乱数uに基づくr={1-2σ^2ln(1-u)}^(-1/2)はRayleigh分布に従うRayleigh乱数となる。

また、一様分布
U(θ;π,π^2/3)= (2π)^(-1) for θ ∈[0,2π)
0 for θ∈(-∞,0) ∧ [2π,∞)

に従う一様乱数θに基づく、x=rcosθとy=rsinθは共に平均0、分散σ^2のガウス分布に従うガウス乱数となる。

このガウス乱数を生成する
double raygauss(double var) {

}
という関数を作れ


[3] 環境
 [3.1] OS: Windows
 [3.2] gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: なし

お願いします
932898:2007/07/13(金) 21:30:32
#include <stdio.h>

int main(){
int i, m;
int a[4] = {1, 1, 0, 0};
int b[4] = {0, 1, 0, 0};
m = -1;
do{
for(i = 3; i >=0; i--){
a[i] = a[i] - b[i];
}
for(i = 3; i >=0; i--){
if(a[i] <= -1){
a[i] = a[i] + 2;
a[i+1] = a[i+1] - 1;
}
}
for(i = 0; i <= 3; i++){
printf("%d", a[i]);
}
m++;
}while(a[0] && a[1] && a[2] && a[3] && a[4] <= 0);
printf("\n%d", m);
}
  }
  m++;
  }while(a[0] && a[1] && a[2] && a[3] && a[4] <= 0);
  printf("\n%d", m);
}

お客様の中にこのwhileの中身を解決してくれる方はいませんか?
933デフォルトの名無しさん:2007/07/13(金) 21:31:55
>  }
>  m++;
>  }while(a[0] && a[1] && a[2] && a[3] && a[4] <= 0);
>  printf("\n%d", m);
>}

スマン、この部分はちょっとしたミスだ
934デフォルトの名無しさん:2007/07/13(金) 21:37:05
>>851
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4611.txt
愚鈍に書いてみた。引数なしで起動すれば課題の解答を出力、
4桁の2進数を引数で渡せば計算してくれるかも。
エラーチェックはしていないから、無謀な引数を渡すとどうなるかは保証外
935sage:2007/07/14(土) 01:00:44
[1] 授業単元:数値計算法
[2] 問題文:ニュートン法による高次方程式の解法のプログラム作成

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual stdio 2003
 [3.3] 言語: C言語
[4] 期限: 2007年07月16日
[5] その他の制限:特になし

よろしくお願い致します。
936デフォルトの名無しさん:2007/07/14(土) 03:03:26
>>935
この内容では誰も回答しようがないのでは
937デフォルトの名無しさん:2007/07/14(土) 05:19:01
んじゃ俺が回答を試みてみよう
938デフォルトの名無しさん:2007/07/14(土) 06:40:17
>>935
なんか同じ講義受けてる匂いがぷんぷんする
939デフォルトの名無しさん:2007/07/14(土) 07:00:52
どなたか>>818の問題おねがいします。
940デフォルトの名無しさん:2007/07/14(土) 07:01:43
ヤコビ行列の求め方がわからん
941デフォルトの名無しさん:2007/07/14(土) 07:04:23
すみません。>>819でした。
942デフォルトの名無しさん:2007/07/14(土) 09:25:14
そんな宿題だされるなら普通ニュートン法のアルゴリズムは授業でならっただろ?
それでもかけないのかよ(´,_ゝ`)プッ
どこまで書けてどんなエラーがでたとかも書かないのかよ(´,_ゝ`)プッ
943デフォルトの名無しさん:2007/07/14(土) 10:39:23
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):次のプログラムは、式を入力すると計算結果を表示するプログラムであるが、
誤っている点があります。現在の内容を理解し、誤りを訂正してコメントをつけてください。
#include <stdio.h>   #include <stdlib.h>     #include <ctype.h>
char *p; char c[100];  int expression(void);   int term(void);
int number(void);    main(){ int ans;      while(1){
printf("Enter expression : ");  fgets(c,90,stdin);   p=&c;
if(*p == '\n')     break;      ans = expression();
printf("Answer:%d\n", ans); } }     int expression(){ int ans;
ans = term();       while(1){     if(*p == '+'){
ans = ans + term();       }else if(*p == '-'){
ans = ans - term(); }else    break; }
return(ans); }         int term(){
int ans,x;           ans = number();
while(1){           if(*p == '*'){
ans = ans * number();     }else if(*p == '/'){
x = number();         if(x == 0){
printf("Division by 0\n");   exit(1); }
ans = ans / x; }else      break; }
return(ans); }         int number(){
int i=0;            while (isdigit(*p)){
i=i*10+(*p++)-48;}       return(i); }
[3] 環境
 [3.1] OS: Windows [3.2] gcc 3.4 [3.3] 言語: C言語
 [4] 期限: 2007/7/17 改行が多すぎて、乗せられなかったためこんな形になりますた。すみません。宜しくお願いします。
944931:2007/07/14(土) 10:45:49
>>931をお願いします
945デフォルトの名無しさん:2007/07/14(土) 11:07:42
>>819
できた。
上の配列に問題と答えを書くこと。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4614.txt
946デフォルトの名無しさん:2007/07/14(土) 11:47:15
>>735
お願いします
947デフォルトの名無しさん:2007/07/14(土) 12:03:25
948デフォルトの名無しさん:2007/07/14(土) 12:08:40
>>943
マルチ必死だな(´,_ゝ`)プッ
949デフォルトの名無しさん:2007/07/14(土) 12:11:28
【即会い!!】

管理人が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。
↓↓↓
【ブログ 〜即会い道】http://deaiload.blog109.fc2.com/
950デフォルトの名無しさん:2007/07/14(土) 14:05:47
>>735
コピペしてちょっと直すだけじゃね?
テストはしてない(つーか仕様知らないから)

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4617.txt
951デフォルトの名無しさん:2007/07/14(土) 14:07:15
[1] 授業単元:プログラミング
[2] 問題文: よく切られたトランプから、5枚のカードを選び出すプログラムを作成せよ。
      ただし、トランプにはジョーカーは含まないものとする。
※虫食い問題です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4617.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: 2007年7月17日
[5] その他の制限:特になし

よろしくおねがいします。
952デフォルトの名無しさん:2007/07/14(土) 14:13:32
>>951
リンクが間違ってる
953デフォルトの名無しさん:2007/07/14(土) 14:15:53
951です。
リンク先間違ったので作り直させて頂きます。
[1] 授業単元:プログラミング
[2] 問題文: よく切られたトランプから、5枚のカードを選び出すプログラムを作成せよ。
      ただし、トランプにはジョーカーは含まないものとする。
※虫食い問題です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4616.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: 2007年7月17日
[5] その他の制限:特になし

よろしくおねがいします。
954デフォルトの名無しさん:2007/07/14(土) 14:27:35
>>953
問1〜8の問題文は?
955デフォルトの名無しさん:2007/07/14(土) 14:31:44
>>953
1) 52
2) a[i] < 13
3) a[i] + 1
4) a[i] < 26
5) a[i] - 12
6) a[i] < 39
7) a[i] - 25
8) a[i] - 38
956デフォルトの名無しさん:2007/07/14(土) 14:43:34
>>953
問題文に誤りがある。それにこれだと毎回同じ結果になるぞ。
//#include<stdkib.h>
#include<stdlib.h>
//#define uniformrand() ((double)rand()/((double)RAND_MAX + 1.0)
#define uniformrand() ((double)rand()/((double)RAND_MAX + 1.0))
コロンの右が解答(トランプ種類は適当に決めた。正解は色々あるだろな)
問1:4*13
問2:a[i]<=12
問3:a[i]+1
問4:13<=a[i]&&a[i]<=12+13
問5:a[i]+1-13
問6:13*2<= a[i]&&a[i]<=12+13*2
問7:a[i]+1-13*2
問8:a[i]+1-13*3
957デフォルトの名無しさん:2007/07/14(土) 15:20:43
953です。
956>>問題文のご指摘ありがとうございます。
また、他の皆さんも自分のためにご協力ありがとうございます。

958881:2007/07/14(土) 15:35:04
>>890
ありがとうございます。
でも少し言葉足らずだったみたいで申し訳ないです。
main()の()の中も何も使っちゃいけないんです。

お時間があればまたよろしくお願いします。
959デフォルトの名無しさん:2007/07/14(土) 16:56:10
>>958
890ではないが、これではどうして欲しいのかよく分からない。
960819:2007/07/14(土) 17:18:39
>>945さん
本当にありがとうございます。
助かりました。
961デフォルトの名無しさん:2007/07/14(土) 17:29:06
>>958
まさかとは思うけど、voidってのがダメってこと?
プログラムの意味わかってる?
962デフォルトの名無しさん:2007/07/14(土) 18:26:05
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): テキストファイルに書かれた数列の総和をとり、
計算結果を元のテキストファイル名の末尾に「b」を付け足したファイル名で出力するプログラム

例)
元のファイル名:****.txt   内容: 1 1 2 2 2
出力するファイル名:****b.txt   内容: 8

[3] 環境
 [3.1] OS: Windows
 [3.2] gcc 3.4
 [3.3] 言語: C
[4] 期限: 月曜日
[5] その他の制限: とくになし
963962:2007/07/14(土) 18:26:51
期限は火曜日の間違いでした
964デフォルトの名無しさん:2007/07/14(土) 18:55:33
>>962
読込むファイル名は拡張子無しでプログラムに渡すの?
それとも自力で拡張子を分離して出力ファイル名を生成?
965962:2007/07/14(土) 19:18:36
う、わかりません…
その辺りに関しては特に指定がなかったので、簡単なほうでいいと思います
966デフォルトの名無しさん:2007/07/14(土) 19:19:25
>>964
テキストファイルだから.txt決めうちでいいんじゃね
967デフォルトの名無しさん:2007/07/14(土) 20:07:02
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):
セマフォを使った同期 −共有バッファを用いたプロセス間
メッセージ通信
  親/子プロセスでメッセージを書き込み、子/親プロセスで読
  み出す
以下の未完成プログラムを完成させよ
http://uproda11.2ch-library.com/src/1114963.c

[3] 環境
 [3.1] OS: (Windows/Linux/等々):Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:07/14
[5] その他の制限:自分で考えてみましたがよくわかりませんでした・・・
           よろしくお願いします
968デフォルトの名無しさん:2007/07/14(土) 20:47:01
969デフォルトの名無しさん:2007/07/14(土) 20:57:33
お願いがあるんだ・・・
>>932のおかしな所を正してくれないか?
970デフォルトの名無しさん:2007/07/14(土) 21:59:19
>>968
ありがとうございます!
971デフォルトの名無しさん:2007/07/14(土) 22:51:25
>>969
かなり直さないといけないな。
「商をmに格納する」でいいの?
972何をしたいんだ?:2007/07/14(土) 22:56:29
>>969
スレ違い
973デフォルトの名無しさん:2007/07/14(土) 23:04:47
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):

 キーボートからs1文字列を入力して、s1文字列を文字列s2にコピーしてから
 表示するプログラムを作成よ。(条件はstrcpy関数を使わないで自作関数でコピーすること)

[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月18日まで
お願いします
974デフォルトの名無しさん:2007/07/14(土) 23:14:55
>>973
#include <stdio.h>

void my_strcpy(char *s2, char *s1){ // どちらでもお好きなほうをどうぞ
while((*s2++=*s1++)!='\0')
;
}

void my_strcpy(char s2[], char s1[]){ // どちらでもお好きなほうをどうぞ
int i;

for(i=0;;i++){
s2[i]=s1[i];
if(s1[i]=='\0') break;
}
}

int main(void){
char s1[100], s2[100];

fgets(s1, sizeof(s1), stdin);
my_strcpy(s2, s1);
printf("%s", s2);

return 0;
}
975デフォルトの名無しさん:2007/07/14(土) 23:32:42
>>974
ありがとうございます、早いです、好きです付き合ってください。
976デフォルトの名無しさん:2007/07/14(土) 23:34:53
>>971
そう

>>972
自分の宿題にも使える気がしたんだ、でもスレ違いなら仕方がない
977デフォルトの名無しさん:2007/07/14(土) 23:42:11
>>976
851への回答と言う事で考えてみる
978デフォルトの名無しさん:2007/07/15(日) 00:21:22
なんで自分でしないの?○○までやったけれど、
〜のエラーがでてわからないとかいわないの?
本みればすぐのっている問題が多すぎる。
979967:2007/07/15(日) 00:28:37
どなたか>>967お願いします・・・
980デフォルトの名無しさん:2007/07/15(日) 00:30:59
>>976
#include <stdio.h>
int main(){
int i,m=0;
int a[4]={1,1,0,0};
int b[4]={0,1,0,0};
do{
for(i=0;i<4;i++){a[i]-=b[i];}
for(i=0;i<4;i++){
if(a[i]==-1){int w=1;a[i]=1;
while(i-w>=0){
if(a[i-w]==0){a[i-w]=1;w++;continue;
}else{a[i-w]=0;break;}}}}
for(i=0;i<4;i++){putchar(a[i]+'0');}
putchar('\n');
m++;
}while(a[0]||a[1]||a[2]||a[3]);
printf("%d\n", m);
return 0;
}
981デフォルトの名無しさん:2007/07/15(日) 04:49:38
>>979
問題文これだけ?
環境は?

こんなん何もなしでやるのなんか無理だろ
982デフォルトの名無しさん:2007/07/15(日) 07:31:40
>>980
851の分まで有難うといっておく

そのソースと睨めっこしながら宿題を頑張ることにするよ
983デフォルトの名無しさん:2007/07/15(日) 08:49:04
>>979
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4623.txt
環境がないのでコンパイルしていない。
また共有メモリ、セマフォの削除もしていない。
984デフォルトの名無しさん:2007/07/15(日) 09:55:51
[1] 授業単元: C言語 基礎&応用
[2] 問題文(含コード&リンク): 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4624.txt
ソース:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4625.txt

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語:C言語
[4] 期限:問題1は2007/07/17/12:00まで。問題2.3は2007/07/19の12:00まで。
[5] その他の制限:特になし


よろしくお願いいたします。
985デフォルトの名無しさん:2007/07/15(日) 10:04:42
>>984
問題をそのまま載せただけじゃなんだかよくわからないよ
予備知識が無いんだから
gets_s()は何をする関数?
986デフォルトの名無しさん:2007/07/15(日) 10:15:08
gets_s()はマイクロソフトがVisual Studioにくっつけた
”getsを安全に使うようにする”ための関数だろw

char *gets_s(char *buffer, size_t sizeInCharacters);


hoge_sとか、_sがついてるやつは、だいたいVSの独自もの
>>984もあまり使わないほうがいいよ
987デフォルトの名無しさん:2007/07/15(日) 10:15:43
>>931をお願いします!!
988デフォルトの名無しさん:2007/07/15(日) 10:21:16
>>984>>266の続きか
989デフォルトの名無しさん:2007/07/15(日) 10:25:56
>>984
まず行末コメントをタブで揃えるのやめろ。環境によって幅が変わる。
タブは行頭の、意味的なインデント(や段落)を示すときだけ使え
990デフォルトの名無しさん:2007/07/15(日) 10:37:53
>>986
ありがと、実行はできた

あとさ、判定は積だけでいい気がするけど
991984:2007/07/15(日) 11:34:34
「_s」については>>986さんの言うとおりです。
これから気をつけていこうと思います。

>>988
続きで、その前にあった「リプレイできるようにしろ」って言うのはどうにかできたんですが
その次に今回の問題で、碁盤スパイラルです。

>>989
了解しました。ご指摘ありがとうございます。
992デフォルトの名無しさん:2007/07/15(日) 15:22:38
[1] 授業単元:
[2] 問題文:
二つの文字列のポインタ pa, pb を引数に取り
pa の指す文字列に対する回文(逆さ文字列)を
pbの指す先に格納する関数 mkrevstr()を書け.
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C
[4] 期限: [07月16日まで]

お願いします。

993デフォルトの名無しさん:2007/07/15(日) 15:43:30
void mkrevstr(char *pa, char *pb)
{
char *p = pa;
while(*p) p++;
while(p!=pa) *pb++ = *(--p);
*pb = '\0';
}

994デフォルトの名無しさん:2007/07/15(日) 15:44:36
void mkrevstr(char *pa, char *pb)
{
char *ch = pa;
while(*pb++ = *pa++);
pb--;
pa-=2;
for(;ch != pa--;) *pb++ = *pa;
*pb = '\0';
return;
}
995デフォルトの名無しさん:2007/07/15(日) 15:48:14
なんで一度コピーしてんの?
996デフォルトの名無しさん:2007/07/15(日) 15:51:16
>>993 ,994
ありがとうございました。
997デフォルトの名無しさん:2007/07/15(日) 15:56:11
回文と逆さ文字列って別物だよな?
>993が逆さ文字列で>994が回文だけど、どっちが正しいんだろ。
998デフォルトの名無しさん:2007/07/15(日) 16:35:45
.
999デフォルトの名無しさん:2007/07/15(日) 16:37:48
1000デフォルトの名無しさん:2007/07/15(日) 16:38:23
せーん
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。