C/C++の宿題を片付けます 92代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/07/04(水) 10:09:24【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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/
0002デフォルトの名無しさん
2007/07/04(水) 10:28:19v――.、
/ ! \
/ ,イ ヽ
.. / _,,,ノ !)ノリハ 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_/
<(⌒""`--.,__) /ヽ )
<(~`─" \ (~ /
<(_,,,__,,,, ) \  ̄ゝ
 ̄""" ヽ.,,__ゝ
0003デフォルトの名無しさん
2007/07/04(水) 10:52:26※入力時に累積の人数を表示 ※年齢入力時に数字属性と範囲のチェックを行う※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時まで
0004デフォルトの名無しさん
2007/07/04(水) 11:04:29[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] その他の制限: 特に制限はありませんが、
簡単なコメントをつけていただけると助かります。
0005デフォルトの名無しさん
2007/07/04(水) 11:04:44#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)やるので大量データに向いてないとかあるけど。
0006デフォルトの名無しさん
2007/07/04(水) 11:05:12>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に戻る
0007デフォルトの名無しさん
2007/07/04(水) 11:06:08-if(strncmp(a,b,strlen(b))==0)count++;
+if(strncmp(&a[i],b,strlen(b))==0)count++;
0008デフォルトの名無しさん
2007/07/04(水) 11:15:54[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] その他の制限: [発展]の方でお願いします
0009デフォルトの名無しさん
2007/07/04(水) 11:29:04”aaaa"と"aa"を比較した時に3回文字列が出現したと数えるか、
2回出現したと数えるかで文字列発見時のポインタ、配列参照の仕方が変わる
0010デフォルトの名無しさん
2007/07/04(水) 12:18:44環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
問題
文字列を入力して偶数番目の要素数と奇数番目の要素を別の配列に格納し、文字列として表示しなさい
実行画面
文字列入力==>ABC123def
偶数要素:AC2df
奇数要素:B13e
0011デフォルトの名無しさん
2007/07/04(水) 12:28:38[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次方程式を探しましたが、よくわからないので上の問題の条件で回答いただけると幸いです。
お願いいたします。
0012デフォルトの名無しさん
2007/07/04(水) 12:41:01要するに、入力された文字列を格納した配列の要素番号が奇数か偶数かってことだよね?
0013デフォルトの名無しさん
2007/07/04(水) 13:03:33[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
よろしくお願いします
0014デフォルトの名無しさん
2007/07/04(水) 13:04:22[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
よろしくお願いします
0015デフォルトの名無しさん
2007/07/04(水) 13:05:59[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
よろしくお願いします
0016デフォルトの名無しさん
2007/07/04(水) 13:07:16[2] 問題文(含コード&リンク):
三角形の「底辺の長さ」と「高さ」を仮引数として,三角形
の面積(底辺の長さ×高さ÷2)を返却値とする関数triangle
を定義しなさい.この関数triangle を用いてキーボートから
読み込んだ底辺の長さ,高さの三角形の面積を表示するプロ
グラムを作成しなさい.
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 7月5日
(実行結果例)
三角形の面積計算
底辺の長さ:10.8
高さ:8.6
----------------
面積: 46.44
よろしくお願いします
0017デフォルトの名無しさん
2007/07/04(水) 13:08:57[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 円
よろしくお願いします
0018デフォルトの名無しさん
2007/07/04(水) 13:09:290019デフォルトの名無しさん
2007/07/04(水) 13:11:590020デフォルトの名無しさん
2007/07/04(水) 13:14:38[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
よろしくお願いします
0021デフォルトの名無しさん
2007/07/04(水) 13:19:15#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;
}
0022デフォルトの名無しさん
2007/07/04(水) 13:21:110023デフォルトの名無しさん
2007/07/04(水) 13:29:41#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;
}
0024違ってたらゴメン
2007/07/04(水) 14:03:16#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]);
}
0025デフォルトの名無しさん
2007/07/04(水) 14:13:10次のプログラムを元にして、足し算などの式を入力すると計算結果を
表示するプログラムを考える
(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);
}
0026間違ってたらゴメン
2007/07/04(水) 14:15:20int 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));
}
0027デフォルトの名無しさん
2007/07/04(水) 14:15:27環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:標準関数の利用
問題1
文字列を入力し、文字列中の英字と数字の文字数をカウントしなさい
使用する標準関数:isdight()
実行画面
文字列入力==>AB123CDEF45G
英字:7
数字:5
0029デフォルトの名無しさん
2007/07/04(水) 14:23:29#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;
}
0030デフォルトの名無しさん
2007/07/04(水) 14:26:54>>914
をお願いします。
0031デフォルトの名無しさん
2007/07/04(水) 14:29:35[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です。
どうしても今日提出しなければいけないので・・・
よろしくお願いいたします。
0032デフォルトの名無しさん
2007/07/04(水) 14:29:44[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] その他の制限:ないです
どうかよろしくお願いします。
0033デフォルトの名無しさん
2007/07/04(水) 14:45:42この順って、どの順?
前スレで久々「ありがとう」の言葉をもらった
嬉しいもんだ
0034デフォルトの名無しさん
2007/07/04(水) 14:54:11ファイル1→ファイル2→ファイル3
ということです。
0035間違ってたらゴメン
2007/07/04(水) 14:57:16#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
0036デフォルトの名無しさん
2007/07/04(水) 15:27:22mainの戻り値の型がintではありません。と警告が出るのですが
これは出ちゃうものなんでしょうか?
0037デフォルトの名無しさん
2007/07/04(水) 15:29:39[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
0038デフォルトの名無しさん
2007/07/04(水) 15:36:53ISO、ANSI準拠で int main(void) { return 0; } といったスタイルにしないと
エラーが出ちゃうようなコンパイラだと でっ、でちゃうぅ〜〜〜
0039デフォルトの名無しさん
2007/07/04(水) 15:41:290040デフォルトの名無しさん
2007/07/04(水) 15:46:52#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;
}
0041デフォルトの名無しさん
2007/07/04(水) 16:06:08ありがとうございます。
ただこれ実行すると
文字列を入力せよ:Tanaka Tarou
結果:akanaT
という感じでスペース以降が逆順で表示されないのですが、
スペース以降含めて文字列全て逆表示にできないでしょうか?
結果:uoraT akanaT
みたいに
0042デフォルトの名無しさん
2007/07/04(水) 16:09:39ごめん、なんか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;
}
0043デフォルトの名無しさん
2007/07/04(水) 16:17:51早い手直しありがとうございます。
もしかして前スレの>>991さんでしたら、そちらもありがとうございます。
違ってたらすいません。
0044デフォルトの名無しさん
2007/07/04(水) 16:18:38早い手直しありがとうございます。
もしかして前スレの>>991さんでしたら、そちらもありがとうございます。
違ってたらすいません。
0045デフォルトの名無しさん
2007/07/04(水) 16:32:01掛け算割算も工夫してみます
004631
2007/07/04(水) 17:17:040047デフォルトの名無しさん
2007/07/04(水) 17:28:40そのままコピペしたらエラー出まくり。
プログラムの仕様くらい書け。
おまけに長いくせに別関数にするだけ。
自分でやった方が早いと思うよ。
0048デフォルトの名無しさん
2007/07/04(水) 17:30:32あまり綺麗ではないが、四則演算とカッコ対応
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4496.txt
0049デフォルトの名無しさん
2007/07/04(水) 17:33:42>>32
をお願いできますでしょうか?
0050デフォルトの名無しさん
2007/07/04(水) 17:35:19前スレにもある通り、与えられたそのままの条件でプログラムを書くと
出力が滅茶苦茶になる。
もう一度良く問題文を確かめて欲しい。
0051デフォルトの名無しさん
2007/07/04(水) 17:36:00gets_s()だのstrcpy_s()だの、VC++8.0専用のソースのようだが
引数が足りなくてコンパイルエラーになる箇所があるようだねえ
0052デフォルトの名無しさん
2007/07/04(水) 17:37:54ム頼む!
漏れの命がかかってるorz
0053デフォルトの名無しさん
2007/07/04(水) 18:05:56エラー表示が出なくなりました。ありがとです
コンパイラによって違うのですね・・・
0054デフォルトの名無しさん
2007/07/04(水) 18:10:35警告とエラーは別物だぞ
0055デフォルトの名無しさん
2007/07/04(水) 18:10:520056デフォルトの名無しさん
2007/07/04(水) 18:48:43#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;
}
0057デフォルトの名無しさん
2007/07/04(水) 18:53:10>>32
をお願いできますでしょうか?
0058デフォルトの名無しさん
2007/07/04(水) 18:55:40[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行以下
よろしくお願いします。
0059デフォルトの名無しさん
2007/07/04(水) 18:56:53ここは基本的に問題出す方も投げ出しっぱなし、
説く方も気が向き次第なスレです。
そんな必死に頼りにする所ではありませんカス。
0060デフォルトの名無しさん
2007/07/04(水) 18:59:44データって
111
&222
333
444
&555
こんな感じでいいの?
0061デフォルトの名無しさん
2007/07/04(水) 19:02:18多分、そうだと思います。
その場合だと、
&222
&555が、a.txtへ
111
333
444が、b.txtへ
という感じだと思います。
お願いします。
0063デフォルトの名無しさん
2007/07/04(水) 19:07:50#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;
}
0064デフォルトの名無しさん
2007/07/04(水) 19:11:46とても早くて助かります。
ありがとうございました。
0065デフォルトの名無しさん
2007/07/04(水) 19:13:23#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;
}
0066デフォルトの名無しさん
2007/07/04(水) 19:17:13#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;
}
0067デフォルトの名無しさん
2007/07/04(水) 19:19:52[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
作ってみたのですが後半値が変化しません。どこが違ってるでしょうか。
よろしくお願いします。
0068デフォルトの名無しさん
2007/07/04(水) 19:23:41[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] その他の制限: ないです
よろしくお願いします。
0069デフォルトの名無しさん
2007/07/04(水) 19:31:30double型なのに徹頭徹尾%dを使ってるとことか。
0070デフォルトの名無しさん
2007/07/04(水) 19:40:27ありがとうございました。
基本的なところで間違ってたのかorz
0071デフォルトの名無しさん
2007/07/04(水) 20:41:42http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4503.c
もっとできるだろうが飽きたからこれで終わりにする
0072工房・・・
2007/07/04(水) 20:53:43[2]スーパーのレジの処理を行うプログラム。
品物の値段を入力していき、最後に0(ゼロ)を入力すると消費税を加算した金額を表示する。
さらに、預かり金を入力すると、お釣りを表示する。
<出力結果例>
いらっしゃいませ
XXX←値段を入力
小計=XXX円
XXX←値段を入力
小計=XXX円
0
小計=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だけを関数では使うようにしてください・・・
0073デフォルトの名無しさん
2007/07/04(水) 21:14:45[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] その他の制限: 特になし
0074デフォルトの名無しさん
2007/07/04(水) 21:26:17#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;
}
0075デフォルトの名無しさん
2007/07/04(水) 21:26:22だから問題が雑すぎ
0076デフォルトの名無しさん
2007/07/04(水) 21:32:201番目
#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;
}
0077デフォルトの名無しさん
2007/07/04(水) 21:42:54という宿題が出たんですけど、もしわかるひとがいたらよろしくお願いします。
0078デフォルトの名無しさん
2007/07/04(水) 21:44:53>>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;
}
0079デフォルトの名無しさん
2007/07/04(水) 21:45:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4504.txt
0080デフォルトの名無しさん
2007/07/04(水) 21:49:27#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;
}
0081デフォルトの名無しさん
2007/07/04(水) 21:54:51#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;
}
0082デフォルトの名無しさん
2007/07/04(水) 22:21:032000円札忘れてたぜ
#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;
}
0083デフォルトの名無しさん
2007/07/04(水) 22:53:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4505.c
0084デフォルトの名無しさん
2007/07/04(水) 23:00:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4506.c
0085デフォルトの名無しさん
2007/07/04(水) 23:39:54>>14
>>15
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4507.zip
0086デフォルトの名無しさん
2007/07/04(水) 23:41:44[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] その他の制限:特になし
0087デフォルトの名無しさん
2007/07/04(水) 23:49:56>>25
0088デフォルトの名無しさん
2007/07/05(木) 00:01:2286です。
引き算、掛け算、割り算も出来るプログラム教えてください。
0089デフォルトの名無しさん
2007/07/05(木) 00:02:24すいません。掛け算と割り算です
0090デフォルトの名無しさん
2007/07/05(木) 00:25:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4508.c
0091デフォルトの名無しさん
2007/07/05(木) 00:27:04>>48
0092デフォルトの名無しさん
2007/07/05(木) 00:35:46[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] その他の制限:特になし
よろしくお願いします。
0093デフォルトの名無しさん
2007/07/05(木) 00:37:040094デフォルトの名無しさん
2007/07/05(木) 00:56:00[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]%
よろしくお願いします。
0095デフォルトの名無しさん
2007/07/05(木) 01:22:065分で消す
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4510.c
0096デフォルトの名無しさん
2007/07/05(木) 01:26:27その実行画面でWindows…?
それにしても横に長い問題文だなw
0097デフォルトの名無しさん
2007/07/05(木) 01:30:47http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4511.c
0098デフォルトの名無しさん
2007/07/05(木) 01:40:35早く消せよ
0099デフォルトの名無しさん
2007/07/05(木) 01:45:26とかって問題があるが、俺それは苦手だw まぁ、グレゴリオ暦が1582年10月15日(金)から始まっているから
そこからの合計日数を求めちゃえば良いんでね?
0100デフォルトの名無しさん
2007/07/05(木) 02:17:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4512.c
0101デフォルトの名無しさん
2007/07/05(木) 02:19:470102デフォルトの名無しさん
2007/07/05(木) 02:20:200103デフォルトの名無しさん
2007/07/05(木) 02:22:000104デフォルトの名無しさん
2007/07/05(木) 02:23:040105デフォルトの名無しさん
2007/07/05(木) 02:45:100106デフォルトの名無しさん
2007/07/05(木) 02:46:350107デフォルトの名無しさん
2007/07/05(木) 02:50:100108デフォルトの名無しさん
2007/07/05(木) 05:55:43>グレゴリオ暦が1582年10月15日(金)
どこの話? 世界中で切り替わったわけではないのだけれど。
#だから、古いカレンダーを作らせる課題は現実的じゃない。
0109デフォルトの名無しさん
2007/07/05(木) 06:03:07http://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%AC%E3%82%B4%E3%83%AA%E3%82%AA%E6%9A%A6
どこの話とかいってねーで自分で調べろよ。お前はこう言いたいんだろ。
日本では取り入れた時期が違うと。そんなの知ってるわうぜぇ
0110本日の揚げ足取り厨
2007/07/05(木) 06:05:51>>99
>グレゴリオ暦が1582年10月15日(金)
どこの話? 世界中で切り替わったわけではないのだけれど。
#だから、古いカレンダーを作らせる課題は現実的じゃない。
どこの話? 世界中で切り替わったわけではないのだけれど。
#だから、古いカレンダーを作らせる課題は現実的じゃない。
どこの話? 世界中で切り替わったわけではないのだけれど。
#だから、古いカレンダーを作らせる課題は現実的じゃない。
どこの話? 世界中で切り替わったわけではないのだけれど。
#だから、古いカレンダーを作らせる課題は現実的じゃない。
グレゴリオ暦の話だよ?????現在使用されているグレゴリオ暦の起源だよ?
何で 言ってもいないこと まで言ったことになってんの?
そうだよ、世界中でなんて誰も言ってないよ?w
早とちり揚げ足厨乙。お前ってさぁ、日ごろそういう、相手のあら探しをしようとして
逆に相手に深いな思いをさせて嫌われて干されているタイプだろ?
俺の方が知ってるぜぇ〜みたいな。あぁきめぇ。
0111デフォルトの名無しさん
2007/07/05(木) 06:11:13> 委員会の作業の末、完成した新しい暦は1582年2月24日に発布され、
> 同年10月4日(木曜)の翌日を10月15日(金曜)とすることが決定した。
何も間違ってないじゃん。グレゴリオ暦については。何が言いたいんだ >>108 こいつは?
いつ誰がどこで日本でもなんて書いた?お前の妄想って痛すぎ。
0112デフォルトの名無しさん
2007/07/05(木) 06:21:42> どこの話?
どこのじゃなくてグレゴリオ暦の始まりの話。どこのとかじゃなくて、グレゴリオ暦についての話。
なんでどこの国がいつ導入したって話しまでしなきゃだめみたいな言い方してんだ?
グレゴリオ暦はグレゴリオ暦だろ。存在は日本が導入する前からあったってことで良いじゃん。
なんなら、日本で有効とするために、そのグレゴリオ暦のカレンダーを算出するプログラムに
日本で導入した年月日以上の値が入力されなきゃ無効にするコードを追加すりゃええやろ。
そんなの自分でやれよ、初心者
0113デフォルトの名無しさん
2007/07/05(木) 06:36:07> 少なくとも、うるう年の判断を1800年から2200年まで正しく行うものとする.
ふぅ、やれやれ。
> # 1873年(明治6年)1月1日 - 日本
んじゃ、この課題は日本では今使われているグレゴリオ暦が使われていなかった頃にも
対処しなきゃならないのか。グレゴリオ暦以前のカレンダーってさぁ
閏年もグレゴリオ暦と違っていて、しかもそれ以前の暦の法則を間違えて使っていたって
話しだし、どうすりゃええのん?
0114デフォルトの名無しさん
2007/07/05(木) 06:44:21(・∀・)ニヤニヤ 反論まだかにゃ〜?いつ誰が日本でもグレゴリオ暦を
制定通りに施行されたと言ったのかにゃ〜?どこの話じゃなくてグレゴリオ暦の話ね。
0115デフォルトの名無しさん
2007/07/05(木) 06:54:10フォルツァ!何とか言えや、小僧。いつだれが日本でも導入したって言うた?あぁん?
口の穴から手ぇ突っ込んで痔核ガタガタ言わせてやんよ?
0116デフォルトの名無しさん
2007/07/05(木) 07:13:01ちょっとぼくちん、君の事が気になって「しょうがない」んだよ。
君がこのスレの住人に注目されても「しょうがない」んだよ。
しょうがないけど、僕は辞任しませんよ。だって、僕は大臣じゃないから。
君ってグレゴリオ暦の詳細について知っていてすごいね。それを学校で言ったら
先生に褒められて成績も+αのボーナスがもらえるんでしょ?これで成績優秀はバッチリだね ♥
0117デフォルトの名無しさん
2007/07/05(木) 07:21:57別に現行暦で1年1月1日を想定してそこから数えりゃ充分でしょ。
#time_tは1970年、Excelあたりは1900年、一部の処理系は1904年基準だったかな?
0118デフォルトの名無しさん
2007/07/05(木) 07:29:030119デフォルトの名無しさん
2007/07/05(木) 07:36:51環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:文字配列の操作
問題
文字列を入力して偶数番目の要素と奇数番目の要素を別の配列に格納し、文字として表示しなさい
実行画面
文字列入力==>ABC123def
偶数要素:AC2df
奇数要素:B13e
0120デフォルトの名無しさん
2007/07/05(木) 07:39:15>>23
なんか同じ課題がやたらと出るな。書き方が同じだから同一人物か?
0121デフォルトの名無しさん
2007/07/05(木) 09:50:01> つーかあれだ、グレゴリオ暦の起源から日数を数えるのがナンセンスなのよね。
> 別に現行暦で1年1月1日を想定してそこから数えりゃ充分でしょ。
んなこたーねーけど、仮に今の暦の法則を過去にも適用して戻した場合の
1年1月1日からの合計日数を割ったあまりを曜日にするってのは俺も同意する。
が、お前はきめぇ。妄想ぶっこく前に勝手なことを言うのは慎み給え。
自分にとって価値があるないだの、そういう話はナンセンス。
グレゴリオ暦は1582年10月15日を金曜日としてスタートしているんだし
0122デフォルトの名無しさん
2007/07/05(木) 11:49:56[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;
0123デフォルトの名無しさん
2007/07/05(木) 12:06:20環境: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
0124123の続き
2007/07/05(木) 12:13:46環境:if文・for文・while文・do〜while文・switch〜case文・
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:文字配列の操作
問題:文字列と検索文字、置換文字を入力し文字列の検索文字を置換文字に置き換えなさい
実行画面
文字(m1)入力==>ABCDEFAABCDABC
削除文字==>A
置換文字==>*
結果文字列(m1):*BCDEF**BCD*BC
問題2:文字列と削除文字列を入力し文字列中から削除文字を排除しなさい
実行画面
文字列入力(m1)==ABCDEFAABCDABC
削除文字==>A
結果文字列(m2)==>BCDEFBCDBC
0125デフォルトの名無しさん
2007/07/05(木) 12:29:25#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;
}
0126デフォルトの名無しさん
2007/07/05(木) 12:41:10[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] その他の制限: ないです。
どうかよろしくお願いします。
0127デフォルトの名無しさん
2007/07/05(木) 13:08:54問題文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
期限 早めに
お願いします
0128デフォルトの名無しさん
2007/07/05(木) 13:11:370129デフォルトの名無しさん
2007/07/05(木) 13:21:37[2]問題:アップローダーNo.4514に載せておきました。
[3]環境
OS:リナックス
コンパイラ:gcc
言語:C
[4]期限:できれば今日中にお願いします
0130デフォルトの名無しさん
2007/07/05(木) 13:33:09[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] その他の制限:関数についての習ってるところの課題です
よろしくお願いします
0131デフォルトの名無しさん
2007/07/05(木) 13:48:07#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;
}
0132デフォルトの名無しさん
2007/07/05(木) 14:16:01double 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); }
0133デフォルトの名無しさん
2007/07/05(木) 14:23:41もっと早く
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;
}
0134デフォルトの名無しさん
2007/07/05(木) 14:32:59それだと誤差が累積してしまうのでは
0135sage
2007/07/05(木) 14:33:26ありがとうございました☆
0136デフォルトの名無しさん
2007/07/05(木) 14:34:12#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';
}
0137136
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';
}
0138デフォルトの名無しさん
2007/07/05(木) 14:38:390139デフォルトの名無しさん
2007/07/05(木) 14:39:280140デフォルトの名無しさん
2007/07/05(木) 14:39:27本当にありがとうございました!
0141デフォルトの名無しさん
2007/07/05(木) 14:48:320142デフォルトの名無しさん
2007/07/05(木) 14:49:34こんな短時間でありがとうございます
助かりました
0143デフォルトの名無しさん
2007/07/05(木) 14:53:10#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;
}
0144takeru
2007/07/05(木) 15:48:01[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] その他の制限: 特になし
よろしくお願いします。
0145デフォルトの名無しさん
2007/07/05(木) 15:53:150146デフォルトの名無しさん
2007/07/05(木) 16:10:28[2] 問題:キーボードから1桁の整数データを順次入力しデータを印刷し
入力データの和を求め、最後にゼロのデータが入力されたら処理を終了し
入力データの和と個数を出力するプログラムをwhile文を用いて作成せよ
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ Microsoft Visual Studio 2005
[3.3] 言語: C
[4] 期限:07年7月5日24時まで
[5] その他の制限:特になし
よろしくお願いします
0147デフォルトの名無しさん
2007/07/05(木) 16:11:38大文字を小文字に変換、小文字を大文字に変換するプログラムを関数を使ってしめせ。
ソラリス8
gcc
4時半までにお願いします。初心者なのでできれば詳しくお願いします。
0148デフォルトの名無しさん
2007/07/05(木) 16:23:33天下の東大の宿題なんて、3流大の俺には出来ないぽ
0149デフォルトの名無しさん
2007/07/05(木) 16:43:402chに宿題丸投げするような東大工学部の学部学生がいるんだな
0150デフォルトの名無しさん
2007/07/05(木) 17:35:340151デフォルトの名無しさん
2007/07/05(木) 18:24:21[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] その他の制限:特になし
よろしくお願いします
0152デフォルトの名無しさん
2007/07/05(木) 18:54:16#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;
}
0153151
2007/07/05(木) 19:42:51・同じ処理は関数化して処理するようにする。
・プロトタイプ宣言した関数内で使う変数が4つ以上の場合
変数を構造体にする。
という制限と共に、問題1と2を一緒にやる結果になりました。
あと問題の内容というか処理としては、
1を入力したらIPアドレスの表示
2を入力したらホスト名の取得
3を入力したら終了
という処理にすることになりました。
よろしくお願いいたします。
0154デフォルトの名無しさん
2007/07/05(木) 19:51:170155デフォルトの名無しさん
2007/07/05(木) 20:07:06あまり催促すると回答者の心証が悪くなるから気をつけようぜ
まあ俺はさっぱりわからんがググったら同じ問題があった
http://bbslog.realint.com/?serverid=2&bbsid=pointc&page=79
0156デフォルトの名無しさん
2007/07/05(木) 20:17:42はい。申し訳ありませんでした・・
どうもありがとうございます。
0157デフォルトの名無しさん
2007/07/05(木) 23:13:23[2] 問題文(含コード&リンク):
以下をメンバに持つ構造体を定義し、仮想商品20個の商品名と利益率を利益率の高い順に一覧表にせよ。但し、利益率とは(利益/仕入値)である。
・商品コード(整数)
・商品名(文字列)
・価格の構造体(仕入値、売値(共に整数)からなる)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限: [2007年7月6日17:00まで]
[5] その他の制限:91代目で書き込んだのですが、力不足で理解できませんでした。
もう一度お願いします。
0158デフォルトの名無しさん
2007/07/05(木) 23:31:21http://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] その他の制限:まだ初歩段階レベルの学習
よろしくお願いします
0159デフォルトの名無しさん
2007/07/05(木) 23:40:02iの公式が間違っていたので正しい式に直したらきちんとした値が出力されました。
アドバイスしていただいた方々ありがとうございました。
#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関数でファイルに出力するにはどうすればいいのでしょうか?
0160デフォルトの名無しさん
2007/07/05(木) 23:40:29変数の範囲(-2147483648〜2147483648)で正常な計算が行えることを確認する
-2147483648〜2147483647
の間違いだろなこれ
0161デフォルトの名無しさん
2007/07/06(金) 00:01:22(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;
}
0162デフォルトの名無しさん
2007/07/06(金) 00:47:33(1)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4517.txt
>>161
> char i, buf[64]
この i は消し忘れの残りカス。sry
0163デフォルトの名無しさん
2007/07/06(金) 00:52:37http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4517.txt
8行目 char i, j, flg, buf[64];
ここ -flg
0164デフォルトの名無しさん
2007/07/06(金) 01:07:49例えば 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);
}
0165デフォルトの名無しさん
2007/07/06(金) 01:33:11初心者っぽくやってみた
#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;
}
0166デフォルトの名無しさん
2007/07/06(金) 02:04:2948のだと結果が0になっていまうんですけど。
何をいれても0
0167デフォルトの名無しさん
2007/07/06(金) 02:16:18普通に正しい結果が出るが・・・
0168デフォルトの名無しさん
2007/07/06(金) 02:18:360169デフォルトの名無しさん
2007/07/06(金) 02:20:06[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個ならんでおり
一つずつ改行されている
初めてお願いします。説明等不足があるかもしれませんがよろしくお願いします。
0170デフォルトの名無しさん
2007/07/06(金) 02:22:08コンパイラ何?
0171デフォルトの名無しさん
2007/07/06(金) 02:23:470172デフォルトの名無しさん
2007/07/06(金) 02:27:02もう一回コンパイルしてみれば?
0173デフォルトの名無しさん
2007/07/06(金) 02:29:340174デフォルトの名無しさん
2007/07/06(金) 02:34:280175デフォルトの名無しさん
2007/07/06(金) 02:37:580176デフォルトの名無しさん
2007/07/06(金) 04:54:13[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に最も近いです
よろしくお願いします。
0177デフォルトの名無しさん
2007/07/06(金) 04:59:18その課題、そのままそっくりのを少し前に見かけた気がする・・・ちと過去ログあさってくる。
0178デフォルトの名無しさん
2007/07/06(金) 05:38:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4518.c
2つ前のスレにあったけど、レスがされていなかったんでやってみた。
きんもぉ〜☆なソースですまそ。平均に近い数値が2つあったとしても
入力された順番が先の方のみ対応。
0179デフォルトの名無しさん
2007/07/06(金) 05:41:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4519.c
0180176
2007/07/06(金) 06:35:52解答ありがとうございます。実は、最初に書いておかなくて、申し訳ないんですが、179の解答で使用されているatoi関数、fgets関数、malloc関数、stdin関数、realloc関数、sizeof演算子はまだ授業で習っておりません。
別の方法(できれば初歩的な方法で)表現できないでしょうか…
0181デフォルトの名無しさん
2007/07/06(金) 06:47:24http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4521.c
0182デフォルトの名無しさん
2007/07/06(金) 06:56:01if( 0 <= nNewmeric && nNewmeric <= 9 )
{// 整数だった
// バッファに格納
}
else
{// それ以外
printf("整数って言ってるだろボケ\n");
}
atoiの代わりは上のコードでなんとかなる
malloc習ってないなら固定長でもいいんじゃ?
ちと、会社行くんであとはまかせた。
0183デフォルトの名無しさん
2007/07/06(金) 06:58:48今日は行頭の # はないんですか?w
0184デフォルトの名無しさん
2007/07/06(金) 07:19:16管理人が使用してみて、即出会えた出会い系サイトのみを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトを厳選して薦めております。
↓↓↓
【ブログ】http://deaiload.blog109.fc2.com/
0185デフォルトの名無しさん
2007/07/06(金) 07:34:01シャープフォビア?w
0186デフォルトの名無しさん
2007/07/06(金) 07:43:38http://www.google.co.jp/search?q=Newmeric&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox
もしかして: Numeric
0187デフォルトの名無しさん
2007/07/06(金) 07:47:090188デフォルトの名無しさん
2007/07/06(金) 08:00:06削除するプログラムを教えてください!!
ひと 人
やま 山
た 田
やまだ 山田
たろう 太郎
かんり 管理
かんりにん 管理人
かんりにん 管理者
やまだたろう 山田太郎
やまだはなこ 山田花子
↓ 使用後
ひと 人
やま 山
た 田
やまだ 山田
たろう 太郎
かんり 管理
かんりにん 管理者
やまだはなこ 山田花子
0189108
2007/07/06(金) 08:10:390190デフォルトの名無しさん
2007/07/06(金) 08:25:380191デフォルトの名無しさん
2007/07/06(金) 10:08:38山と田はあるが山田を消さないためには山田は合成語ではない、という
情報が必要だ。それだけでは無理だな。
0192188
2007/07/06(金) 11:01:460193デフォルトの名無しさん
2007/07/06(金) 11:05:34だから、山田は山と田を含んでいるだろう
意味分かってる?
0194デフォルトの名無しさん
2007/07/06(金) 11:06:050195188
2007/07/06(金) 11:25:02山田は、一語の単語しか含みません
山田人、山田山は2語の単語を含みます
山田川は、2語の単語を含みますが、単語帳から合成できません
0196デフォルトの名無しさん
2007/07/06(金) 11:30:10> 山田は、一語の単語しか含みません
で、それをどうやったら知ることができるんでしょうか?
えーと、素のCだけで、日本語の「単語」を認識できると思ってるの?
0197188
2007/07/06(金) 11:31:160198デフォルトの名無しさん
2007/07/06(金) 11:32:48で、>>188のデータの単語と合成語をどうやって区別すんの?
山田は単語で、管理人は合成語、と。
どっちも単語帳の別の二語を足したもんだよね?
0199デフォルトの名無しさん
2007/07/06(金) 11:34:070200デフォルトの名無しさん
2007/07/06(金) 11:34:33天才現る
0201188
2007/07/06(金) 11:34:460202デフォルトの名無しさん
2007/07/06(金) 11:53:01げんご かんきょう とかも かいたほうがいいと おもうよ
0203188
2007/07/06(金) 11:55:060204デフォルトの名無しさん
2007/07/06(金) 13:28:15ありがとうございました
0205デフォルトの名無しさん
2007/07/06(金) 13:32:09>>188を見ると、管理って単語と人って単語があるよね。これらを合わせた管理人は合成語になるんだよね。
でも山って単語と田って単語があるようだけど、山田は山って単語と田って単語を合わせた合成語ににはならないんだよね。何で?
管理+人は合成語で山+田は合成語じゃないって事をどうやって知るの?
0206デフォルトの名無しさん
2007/07/06(金) 13:32:40[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です。課題の提出が少し遅くなったのでもう一度お願いします。
前回の書き込みが少し見づらかったと思うので訂正します。
よろしくお願いします。
0207188
2007/07/06(金) 13:37:540208デフォルトの名無しさん
2007/07/06(金) 13:39:390209188
2007/07/06(金) 13:43:140210デフォルトの名無しさん
2007/07/06(金) 13:43:160211188
2007/07/06(金) 13:46:400212デフォルトの名無しさん
2007/07/06(金) 13:48:15山と田は1語なら山+田は1+1=2語になるよね。
2語以上なら2語も含まれるから削除されると思うけど。違う?
>>208
(ひと 人)と(かんり 管理)で(かんりにん 管理人 )が削除されてるよ。
(ひと 人)で無く(にん 人)ならわかるんだけど。
>>210
どうやらそうらしいね。
0213188
2007/07/06(金) 13:48:230214188
2007/07/06(金) 13:49:520215188
2007/07/06(金) 13:51:070216デフォルトの名無しさん
2007/07/06(金) 13:51:380217188 真
2007/07/06(金) 13:52:160218188 真
2007/07/06(金) 13:54:220219188 真
2007/07/06(金) 13:57:290220デフォルトの名無しさん
2007/07/06(金) 13:59:32どなたか206もお願いします
0221”管理”人
2007/07/06(金) 14:02:220222デフォルトの名無しさん
2007/07/06(金) 14:06:05・ソートにかかった時間は成績に反映します
がんばれ
0223デフォルトの名無しさん
2007/07/06(金) 14:08:520224デフォルトの名無しさん
2007/07/06(金) 14:11:09http://pc11.2ch.net/test/read.cgi/tech/1182719692/l50
0225デフォルトの名無しさん
2007/07/06(金) 14:12:24int n, a[128];
fp = fopen("array.txt", "r");
n = 0;
while(fgets(buf, 32, fp)) {
a[n++] = atoi(buf);
}
fclose(fp);
qsort(..., n, compare);
0226188(真)
2007/07/06(金) 14:13:16高速な基数ソートのやりかた
char tmp[40000];
tmp[i]をゼロクリアする
入力データをdとするとき、tmp[d]に1を加える
すべてのデータが処理できたら
tmp[0]からtmp[40000]の数値分だけ出力する
0227169 ◆NPjWSW9EXI
2007/07/06(金) 14:13:55お願いしてる立場なのにすみません
信じて待ってみます
0228188(真)
2007/07/06(金) 14:15:46ヒント出したからあとは中学生でも出来るよ
0229デフォルトの名無しさん
2007/07/06(金) 14:16:41山 田 太郎なのか
山田 太郎なのか
0230デフォルトの名無しさん
2007/07/06(金) 14:17:550231デフォルトの名無しさん
2007/07/06(金) 14:19:05太郎が二文字の時点でどっちでもいいだろ。
0232デフォルトの名無しさん
2007/07/06(金) 14:19:24が辞書に入っていたら、単語帳が最長になる、
山田太 郎 としてください
0233225
2007/07/06(金) 14:21:26while(n) {
fprintf("%d\n", a[--n]);
}
fclose(fp);
0234デフォルトの名無しさん
2007/07/06(金) 14:22:39うむ
0235188(真)
2007/07/06(金) 14:25:54あと高速化できるのは、ファイルをバイナリで一度にメモリに読み込むとか、
読み込みと、足し算の処理をマルチスレッド化することだな
0236169 ◆NPjWSW9EXI
2007/07/06(金) 14:31:04225-233
なのですが文字列の格納先のアドレスがbufのところがわからなく、
エラーになってしまいます><
0237デフォルトの名無しさん
2007/07/06(金) 14:33:040238169 ◆NPjWSW9EXI
2007/07/06(金) 14:38:33理解しようとしたのですができませんでした
0239169 ◆NPjWSW9EXI
2007/07/06(金) 14:39:100240デフォルトの名無しさん
2007/07/06(金) 14:40:45#include <stdlib.h>でOK
0241169 ◆NPjWSW9EXI
2007/07/06(金) 14:46:09239は解決しました!
以下 その後でたエラーです
ソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4525.txt
エラー
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4526.txt
0242デフォルトの名無しさん
2007/07/06(金) 14:46:44これか
/*ソート開始*/
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);
/*ここまで*/
0243デフォルトの名無しさん
2007/07/06(金) 14:48:01やったね。fprintfの行をfprintf(fp, "%d\n", a[n--]); に修正。
qsortをマニュアル見て修正。やってみそ
0244188(真)
2007/07/06(金) 14:53:11#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;}
0245169 ◆NPjWSW9EXI
2007/07/06(金) 14:57:43ぎりぎり間に合いました!!!
二つともをzip形式固めてで提出させていただきます
2chの人ほんとにいいひとだー> <,
0246デフォルトの名無しさん
2007/07/06(金) 14:57:48問題1
5人の成績管理プログラムを作成せよ。
全員の生徒の学籍番号、国語、算数の成績を入力する。(3つの配列を定義)
検索機能として、学籍番号を入力した際、該当者の2教科の成績と平均点を出力する。
学籍番号に0が入力されるまで繰り返し検索できるようにする。
問題2
10個の整数を入力し、小さい順に並べ替えよ。
バブルソートを使用すること
OS:XP
コンパイラ:cygwin
言語:1番、2番共にC++です。
どなたかよろしくお願いします
0247244
2007/07/06(金) 15:11:34for(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++)
だった すまん
0248デフォルトの名無しさん
2007/07/06(金) 15:14:170249169 ◆NPjWSW9EXI
2007/07/06(金) 15:39:03三時すぎてたのにありがとうございます。
0250250
2007/07/06(金) 15:50:00アルゴリズムはルンゲクッタ法または後退オイラー法を使用すること。
・3*d^2/dt^2+dx/dt+2x=2
・x(t=0)=0
・dx/dt(t=0)=0
わかる方いらっしゃいましたらおねがいします!
0251250
2007/07/06(金) 15:55:38・3*d^2x/dt^2+dx/dt+2x=2です
d^2x/dt^2のxが抜けてましたすみません
0252デフォルトの名無しさん
2007/07/06(金) 16:07:44自分でやってないのがばれた時点でマイナスだろうけどね
0253デフォルトの名無しさん
2007/07/06(金) 17:24:22なんかイマイチだが、とりあえず答えは出る
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4527.txt
ちなみに区切りは全角空白で、漢字1文字は全部同じ長さだと仮定してる
手抜きコードなので注意
0254デフォルトの名無しさん
2007/07/06(金) 18:13:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4528.txt
ルンゲ・クッタ法を使った。
0255デフォルトの名無しさん
2007/07/06(金) 18:58:49[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] その他の制限:ないです
どうかよろしくお願いします
0256デフォルトの名無しさん
2007/07/06(金) 19:51:25- 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; }
0257256
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);
}
0258デフォルトの名無しさん
2007/07/06(金) 19:59:10[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] その他の制限:配列を使用
よろしくお願いします。
0259デフォルトの名無しさん
2007/07/06(金) 20:02:29いきなり星印って言われても、
実行画面をどうしたいのかサッパリ分からないんだが。
0260デフォルトの名無しさん
2007/07/06(金) 20:05:19ありがとうございます!!
0261デフォルトの名無しさん
2007/07/06(金) 20:17:28> [1] 授業単元:C言語実習課題
> [3.3] 言語: C++
> コンパイラ名とバージョン: Visual Studio 2006
突っ込みどころが満載過ぎる
0262デフォルトの名無しさん
2007/07/06(金) 20:47:32管理人が使用してみて、即出会えた出会い系サイトのみを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトを厳選して薦めております。
↓↓↓
【ブログ】http://deaiload.blog109.fc2.com/
0263デフォルトの名無しさん
2007/07/06(金) 21:05:33a)カ氏温度を受け取って、セ氏温度を返す関数celsius。
b)セ氏温度を受け取って、カ氏温度を返す関数fahrenheit。
補足:カ氏温度をF、セ氏温度をCとすると、F = (9 / 5)*C + 32。
c)これらの関数を使って、0から100度までのセ氏温度に対応するカ氏、および32度から212度までカ氏温度に対応するセ氏温度をそれぞれ表の形にプリントするプログラムを書け。ただし、表は読みやすいように行数を最小限にすること。
よろしくおねがいします。
0264 ◆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まで
0265デフォルトの名無しさん
2007/07/06(金) 21:21:56#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;
}
0266デフォルトの名無しさん
2007/07/06(金) 21:45:14[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] その他の制限:特になし
どうかお願いいたします
0267デフォルトの名無しさん
2007/07/06(金) 21:56:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4532.c
0268デフォルトの名無しさん
2007/07/06(金) 21:58:17> 現在のソースコードのすべての行にコメントをつける。
majikayo
0269デフォルトの名無しさん
2007/07/06(金) 22:01:22xとyは使ってないから消しても問題なし
0270デフォルトの名無しさん
2007/07/06(金) 22:19:44期限が7月11日までに延びましたので、再度依頼させていただきます
お暇がありましたら、回答の方よろしくお願いします
0271デフォルトの名無しさん
2007/07/06(金) 22:54:08ひでぇソースだな
そういう教官に教わらなきゃいかんとはご愁傷様
0272デフォルトの名無しさん
2007/07/06(金) 22:59:40[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] 初心者です。
0273デフォルトの名無しさん
2007/07/06(金) 23:06:08>>3と同一人物?
0274デフォルトの名無しさん
2007/07/06(金) 23:07:01分からないとこあったら聞けっていうから
ここが分からないって聞いても
「ネットで調べてください」で終わり。
そのくせ期限までやらないと、なぜ終わらなかったのかの理由と今後の対策を
レポート形式で提出。
レポート何回出したことやら・・・・
0275デフォルトの名無しさん
2007/07/06(金) 23:13:04自分で調べるのは当たり前でしょ。
0276デフォルトの名無しさん
2007/07/06(金) 23:16:28別におかしいことでもない
0277デフォルトの名無しさん
2007/07/06(金) 23:53:06隣り合う素数の差って答えは一つの差になるんじゃないの?
それとも19をはさんで23と17の差が最大ってこと?
0278デフォルトの名無しさん
2007/07/07(土) 00:04:35プログラムに関する「コメント」を書いてみたお
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箇所もない
秋田からそろそろやめるわ
0279デフォルトの名無しさん
2007/07/07(土) 00:56:44たすかりました!ありがとうございました!
0280デフォルトの名無しさん
2007/07/07(土) 04:49:01コメントのそろえ方がタブ使ってたり空白だったりばらばら
関数や変数の命名規則がめちゃくちゃ
Locale() (大文字かよ)
boardshow (board_show()じゃない)
↓コメントが嘘。
/*
指定した位置に、既に石が置かれているかどうかを調べる関数です。
対応するBoard[row][col]が0以外ならばすでに石が置かれているので
-1を返します。0ならば0を返します。
*/
〜 中略 〜
if ( Board[row][col] == 0 )
nRet = TRUE;
else{
nRet = FALSE;
〜 以下略 〜
0281 ◆KqBLZKKJjc
2007/07/07(土) 04:51:25例が分かりづらくてスマン
あくまでも隣り合う素数の差であります。
3-2=1
5-3=2
7-5=2
11-7=4
みたいに、ある素数から一つ手前の素数を引いたのをそれぞれ求めて、
その中から最大の結果だけを出力するようにしたいんです。
0282デフォルトの名無しさん
2007/07/07(土) 05:20:12#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;
}
0283282
2007/07/07(土) 05:30:53Usage: ./a.out 1000000
きそう、100万までなら0.5秒で終わるのに1000万だと10秒、2000万だと30秒掛かるぜ。
0284デフォルトの名無しさん
2007/07/07(土) 11:31:47#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;
}
0285デフォルトの名無しさん
2007/07/07(土) 11:33:22>int prime[100000];
プ
0286デフォルトの名無しさん
2007/07/07(土) 11:36:020287デフォルトの名無しさん
2007/07/07(土) 11:42:51プ
0288 ◆KqBLZKKJjc
2007/07/07(土) 11:49:12・・・速いッスね
ありがとうございます。
こんなに速く回答いただけて、嬉しいです。
ありがとうついでに、
あつかましいのを承知でお願いしてもいいですか?
このプログラム、自分じゃ手に余ってしまいます。(ムズイ)
上からどんな動作をしているのかを説明してもらえますか?
0289デフォルトの名無しさん
2007/07/07(土) 11:55:33質問の仕方を工夫する訓練なんだよ
無料でなんでも教えてくれるのは学生の間だけだぜ
0290デフォルトの名無しさん
2007/07/07(土) 11:56:06100万程度じゃ差は感じられないだろ。
Nを20000000、prime[2000000]にしてやって見れば282とどっちが速いか分ると思うけど。
0291デフォルトの名無しさん
2007/07/07(土) 11:56:28Nがデカいときには効いてくるが、メモリもアホみたいに食う罠
0292デフォルトの名無しさん
2007/07/07(土) 12:01:24isPrime()
素数判定関数。毎回その数の平方根以下の全ての奇数の剰余を求めるから遅い。
getNextPrime()
次の素数取得関数。引数には3以上の奇数以外を与えてはならないのにガードも注釈も無い。
primeDist()
素数間距離の最長を見つける関数。引数には見つける範囲の上限を与える。
但し、仮令2以下の数値を与えても(初期値として固定で持っている)2から3の間の1が最長という結果を出力する。
main()
コマンドライン引数から素数間距離の最長を見つける範囲の上限を取得して上記primeDist()を呼ぶ。
引数なしで起動したときに何の説明もしてくれないと言う、これも困った我が儘仕様。
0293デフォルトの名無しさん
2007/07/07(土) 12:05:01たぶんC99には対応してないんじゃないかな
0294188
2007/07/07(土) 12:40:590295デフォルトの名無しさん
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;
}
0296デフォルトの名無しさん
2007/07/07(土) 13:15:030297デフォルトの名無しさん
2007/07/07(土) 13:17:260298デフォルトの名無しさん
2007/07/07(土) 15:10:17>問題1
>現在のソースコードのすべての行にコメントをつける。
すごく・・・大きいです。
>問題2
>プログラムに勝敗を判定する機能を付け加える。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4533.txt
0299デフォルトの名無しさん
2007/07/07(土) 16:50:54幸い、1000000 で最大のパターンが1つだからそのロジックでいいけど
複数あるとダメだねwww
0300デフォルトの名無しさん
2007/07/07(土) 19:16:43http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4536.txt
0301デフォルトの名無しさん
2007/07/07(土) 19:18:160302300
2007/07/07(土) 19:30:18コンパイラはC++で間違いないと思いますが、言語はC言語かもしれないです…
0303デフォルトの名無しさん
2007/07/07(土) 19:50:04[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] その他の制限:なし
お願いします
0304デフォルトの名無しさん
2007/07/07(土) 19:50:060305デフォルトの名無しさん
2007/07/07(土) 19:54:59{ 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に渡すとどうなるんですか?
0306300
2007/07/07(土) 20:03:350307デフォルトの名無しさん
2007/07/07(土) 20:06:49参考のプログラムをどういう風に使わせたいのかな。
それ使わないといけないの?構造体は使ってはだめ?
0308デフォルトの名無しさん
2007/07/07(土) 20:07:26管理人が使用してみて、即出会えた出会い系サイトのみを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトを厳選して薦めております。
↓↓↓
【ブログ】http://deaiload.blog109.fc2.com/
0309300
2007/07/07(土) 20:17:01要するに、2次元配列を使ってプログラムを作れとのことです。
構造体はまだ授業で扱っていないので、使わないようにお願いします。
0310デフォルトの名無しさん
2007/07/07(土) 20:20:39[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] その他の制限: 無いです
よろしくお願いします。
0311デフォルトの名無しさん
2007/07/07(土) 20:27:16>>126
0312デフォルトの名無しさん
2007/07/07(土) 22:03:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4539.txt
0313デフォルトの名無しさん
2007/07/07(土) 22:19:17の問題を提出することになったのですが、回答が通りません。
これはどのようにとけばいいのでしょうか?
[3] 環境
[3.1] OS:XP/Vista
[3.2] コンパイラ名とバージョン:c++
[3.3] 言語:C++
[4] 期限: 月曜日
[5] その他の制限: 無し
0314312
2007/07/07(土) 22:48:32fcloseをしてなかった。
最後と、配列不足で抜けるreturnの前に、
fclose(fp)を入れてくれ。
0315300
2007/07/07(土) 22:55:32すいません…
注文を付け加えて申し訳ないですが…
#include <stdlib.h> や #include <ctype.h>
という書き方はやっていないです。
また問題で言われてることは同じ回数のときはアルファベットの"逆順"でソートするプログラムです。
よろしくお願いします。
0316312
2007/07/07(土) 22:59:18int count;
を
int count = 0;
に書き直してくれ。
0317デフォルトの名無しさん
2007/07/07(土) 23:00:34#include "stdlib.h"
ってしろや
ってかそれくらいわかったれや
0318デフォルトの名無しさん
2007/07/07(土) 23:01:28方法だけ書くと単純にプリムのアルゴリズムでOK。
とりあえずプリムのアルゴリズムでAcceptが出たのを確認してきた。
多少冗長気味に書いても通ったので実行速度とか気にせず書けばいい。
0319300
2007/07/07(土) 23:03:13大文字と小文字は区別せず、アルファベットの逆順にソートするものです。
たとえば適当にこのような英文があれば…
I want to go Zoo.
Zoo
want
to
I
go
みたいな感じです。
0320312
2007/07/07(土) 23:11:35>アルファベットの"逆順"でソート
Aとaは同じ順位として扱うのか、それとも、
z>a>Z>Aの並び方にするのか?
0321312
2007/07/07(土) 23:16:31大文字、小文字の区別を付けない場合、
テキスト内に、"WORD","word","Word"と3通りあったら、結果の表示はどうする?
最初に見つけた綴りで行うのか?
それとも表示の際に書き換えても良いのか?
0322320
2007/07/07(土) 23:17:080323321
2007/07/07(土) 23:20:440324312
2007/07/07(土) 23:37:18「小文字に書き換え」でしました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4541.txt
0325324
2007/07/07(土) 23:45:47エラーがでましたけど…
エラー E2268 report.cpp 42: 未定義の関数 'isalpha' を呼び出した(関数 main(int,char * *) )
エラー E2268 report.cpp 47: 未定義の関数 'tolower' を呼び出した(関数 main(int,char * *) )
0326デフォルトの名無しさん
2007/07/07(土) 23:51:11それぐらいググれば一発なのに・・・
isalphaもtolowerもctype.h内の標準ライブラリ関数。
わかんなかったら#include<ctype.h>をソースの先頭に書く。
0327デフォルトの名無しさん
2007/07/07(土) 23:52:44323だよな、きっと
番号は最初の質問番号でいいよ
そのつど変えなくて
0328312
2007/07/08(日) 00:03:42>>326が書いているとおりです。
#include <ctype.h>
をソースに追加して下さい。
駄目なときは同様の処理関数を実装しないといけないが、
出来れば車輪は発明したくない。
0329300
2007/07/08(日) 00:07:33ctype.hは授業ではやっていないです。
違うように書き換えることってできますか?
>>327
すいません。あんまり書き込みをしないもので…
0330デフォルトの名無しさん
2007/07/08(日) 00:14:08if(c >='A' && c<'Z')return c+'a'-'A';
}
こんな感じか?動かしてはいない
0331300
2007/07/08(日) 00:16:500332312
2007/07/08(日) 00:21:25これでどうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4542.txt
0333デフォルトの名無しさん
2007/07/08(日) 00:24:55isalpha(c) = ((c >='A' && c<'Z')||(c >='a' && c<'z'))?1:0;
0335312
2007/07/08(日) 00:26:42よく見るとこれはまずいな
buf[i++] = (char)toLower(c);
こうすべきですね。
0336266
2007/07/08(日) 00:45:50ありがとうございました。
朝から全行コメントしてるけど、わけ分からなくなってきたwwwwwwww
0337300
2007/07/08(日) 00:57:27大域変数を使わないように書き換えることってできますか?
0338デフォルトの名無しさん
2007/07/08(日) 00:58:380339デフォルトの名無しさん
2007/07/08(日) 00:59:09後から後から文句を言うな。
0340312
2007/07/08(日) 01:11:25mainのローカル変数に置きたいと言うことですか?
データの量にもよるでしょうが、サイズが大きいと
stackoverflowするんじゃないですかね。
0341313
2007/07/08(日) 01:16:53あ〜プリムですか。
いま別問題でクラスカルをかいていたのですが、AとかBとかそこら辺の処理をまちがったのかな・・。
ちなみにプリムの実装はどんな感じでやりましたか?
クラスカルを実装する際に昇順ソートの
<int,int,greater<int> >というキューかリストが使えると便利だなと思って頑張ったのですが
どうもエラーが多発&わけがわからなくなったので
multimap<int,int>+struct[int]{int,int}で実装しましたが・・。これでも結構複雑に成ってしまいました。
3引数っていうのも難しいのですが、その上に特定の箇所の重みでソートをかけるという指定があまり良く分かっていなかったりするのが原因なのでしょうが・・。
0342デフォルトの名無しさん
2007/07/08(日) 01:19:21[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
です。どなたかお願いします!!
0343デフォルトの名無しさん
2007/07/08(日) 01:21:270344300
2007/07/08(日) 01:21:43すいません。
>>340
そういうことです。
0345 ◆KqBLZKKJjc
2007/07/08(日) 01:27:57いくつかのプログラムをお答えいただき、本当にありがとうございます!!
自分としては、どう処理が行われているかを大体理解できる >>295 さんのが気に入りました。
本来ならもっと早くお礼を述べたかったのですが、
半日ぐらい過ぎてしまいました。
申し訳ない・・・
最後に、自分の拙い質問に、真剣に考えてくださった方々へ
本当の本当にありがとうございました。
0346デフォルトの名無しさん
2007/07/08(日) 01:42:54[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] その他の制限: 特になし
よろしくお願いします
0347デフォルトの名無しさん
2007/07/08(日) 01:46:34二つの符号なし整数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日までです。お願いします。
0348312
2007/07/08(日) 01:52:28http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4545.txt
local変数に移動しました。
実行環境によってはstacksizeが足りないとなるかも知れません。
そのときはMAXWORDを実行可能な値にして下さい。
wordの長さチェックも入れました。(80文字)
0349300
2007/07/08(日) 02:39:29本当にありがとうございます!!
助かりました!!
0350デフォルトの名無しさん
2007/07/08(日) 02:40:21当方某学校にて「C言語入門」を勉強しているのですが、
宿題がわからないんです!
優しい方、お手数ですが教えていただけないでしょうか。
わからない、その1
「コンピュータが計算する、任意の数の型は何型ですか。」
わからない、その2
「関数yesno(char *msg)で、キーボードから a を入力したときの、戻り値は何か。」
もし、よろしければ答えてくださると助かります。
よろしくお願いいたします。
0351デフォルトの名無しさん
2007/07/08(日) 02:43:370352デフォルトの名無しさん
2007/07/08(日) 02:44:10もっとくやしく
0353デフォルトの名無しさん
2007/07/08(日) 02:44:45相当、眠いんだろうなw
0354デフォルトの名無しさん
2007/07/08(日) 02:46:14まだ、大丈夫だってw
C言語なら俺に聞け(入門篇) Part 15
http://pc11.2ch.net/test/read.cgi/tech/1182719692/
0355デフォルトの名無しさん
2007/07/08(日) 03:12:51はい、当方とても眠いです。
俺に聞けスレは勢いがなさそうでしたので、こちら様に同じものを書いてしまいました。
携帯からのカキコミなので、くやしく書くと恐らく途中でねてしまうかもしれません( ;´Д`)
今日の朝9時15分頃にパソコンが使える状況になるのですが、
その時に宿題をUPしてもよろしいでしょうか。
0356デフォルトの名無しさん
2007/07/08(日) 03:51:33↓のを改変して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];}}}}
0357デフォルトの名無しさん
2007/07/08(日) 05:18:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4546.txt
SEPARATION " ,.\n"をSEPARATION " ,."に直してください
0358デフォルトの名無しさん
2007/07/08(日) 06:27:58http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4547.txt
0359358
2007/07/08(日) 06:30:43if(max < fabs(a[j][i]))をif(fabs(max) < fabs(a[j][i]))に直してください
0360358
2007/07/08(日) 06:34:120361358
2007/07/08(日) 07:01:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4548.txt
0362358
2007/07/08(日) 07:16:30スワップするともしかしてマズイ?
0363デフォルトの名無しさん
2007/07/08(日) 07:22:22#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;
}
0365デフォルトの名無しさん
2007/07/08(日) 09:42:02[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] その他の制限: サーバーが学内にあるのでいますぐ動作確認はできません
0366デフォルトの名無しさん
2007/07/08(日) 10:45:32えーと、プリムは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';}}
0367デフォルトの名無しさん
2007/07/08(日) 10:45:540368デフォルトの名無しさん
2007/07/08(日) 11:23:55問題1
5人の成績管理プログラムを作成せよ。
全員の生徒の学籍番号、国語、算数の成績を入力する。(3つの配列を定義)
検索機能として、学籍番号を入力した際、該当者の2教科の成績と平均点を出力する。
学籍番号に0が入力されるまで繰り返し検索できるようにする。
問題2
10個の整数を入力し、小さい順に並べ替えよ。
バブルソートを使用すること
OS:XP
コンパイラ:cygwin
言語:1番、2番共にC++です。
どなたかよろしくお願いします
0369303
2007/07/08(日) 11:35:33128×128×128の配列で作ってみたんですが、大きすぎるのかバグって止まります・・・・
0370デフォルトの名無しさん
2007/07/08(日) 11:47:010371デフォルトの名無しさん
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は使用禁止
よろしくお願いします。
0372デフォルトの名無しさん
2007/07/08(日) 12:00:13char*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;
}
0373デフォルトの名無しさん
2007/07/08(日) 12:02:15それは分かるんですが・・・
0374デフォルトの名無しさん
2007/07/08(日) 12:11:54char *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;
}
すでにある回答とほとんど同じなのは切ない
0375371
2007/07/08(日) 12:12:48ありがとうございます。
まだコンパイルしてないけど
while(*p++=*src++){}
こんな記述できるんですね。
初めて知りました。
0376デフォルトの名無しさん
2007/07/08(日) 12:14:250377デフォルトの名無しさん
2007/07/08(日) 12:15:27ありがとうございます。
0378デフォルトの名無しさん
2007/07/08(日) 12:24:190379デフォルトの名無しさん
2007/07/08(日) 12:44:03ファイルの削除ボタンと追加保存ボタンを追加したいのですが、
どうやってやればいいんでしょうか??(C言語です)
0380デフォルトの名無しさん
2007/07/08(日) 12:46:22destの一文字目がNUL文字のときにstrcatに問題あるくね?
char s[100]="";
strcat(s,"Hello");
puts(s);
0381デフォルトの名無しさん
2007/07/08(日) 12:50:24そこまで考えて無かった
while(*s++);
strcpy(s-1, src);
あたりで大丈夫だと思う。試してないけど。
0382 ◆KrpcpKelXU
2007/07/08(日) 12:52:35[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まで
0383デフォルトの名無しさん
2007/07/08(日) 13:05:02#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;
}
0384デフォルトの名無しさん
2007/07/08(日) 13:07:580385デフォルトの名無しさん
2007/07/08(日) 13:16:360386デフォルトの名無しさん
2007/07/08(日) 13:17:51問題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;
}
0387デフォルトの名無しさん
2007/07/08(日) 13:18:470388デフォルトの名無しさん
2007/07/08(日) 13:19:01面倒すぎて誰も従わないから消えた
0389デフォルトの名無しさん
2007/07/08(日) 14:07:33できた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4551.txt
0390342
2007/07/08(日) 14:09:24ほんとありがとうございますm(__)m
0391デフォルトの名無しさん
2007/07/08(日) 14:31:20君の書いてるコードはTCPだな。UDPじゃない。
まずはUDPでの送受信のやりかたを調べるんだね。
問題文のプロトコルの「ID」の意味はちょっと分からないな。
ファイルの識別子なのか、ファイル自体は固定で、
これを通番のように使えという意味なのか。
多分後者で、これを使ってパケットロスに対処しろということだろうが。
0392デフォルトの名無しさん
2007/07/08(日) 15:17:000393デフォルトの名無しさん
2007/07/08(日) 16:00:32[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] 標準ライブラリは使ってはいけない
0394デフォルトの名無しさん
2007/07/08(日) 16:25:390395デフォルトの名無しさん
2007/07/08(日) 16:56:30#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;
}
0396デフォルトの名無しさん
2007/07/08(日) 16:58:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4553.txt
標準ライブラリ駄目なのか
0397デフォルトの名無しさん
2007/07/08(日) 16:58:48[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の判定と最小値が正しいことを確認すること.
どなたか解る方。お願いいたします。
0398310
2007/07/08(日) 17:38:130399デフォルトの名無しさん
2007/07/08(日) 18:01:520400デフォルトの名無しさん
2007/07/08(日) 18:06:42[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 ・ ・
○●○●○
●○●○ ●●○●○
○●○ ○○●○ ○○○●○ ・ ・ ・
●○ ●●○ ●●●○ ●●●●○
○ ○○ ○○○ ○○○○ ○○○○○
よろしくおねがいします
0401デフォルトの名無しさん
2007/07/08(日) 18:09:58問題2.
正整数n を入力し,n× n の正方行列において,以下のような○と●のパターンを出力す
るプログラムを作成しなさい.
n = 1
○
n = 2
●○
○○
n = 3
○●○
●●○
○○○
n = 4
●○●○
○○●○
●●●○
○○○○
n = 5 ・ ・ ・
○●○●○
●●○●○
○○○●○
●●●●○
○○○○○・・・
よろしくおねがいします
0402デフォルトの名無しさん
2007/07/08(日) 18:10:52[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] 期限: 明日までにお願いします。
0403400
2007/07/08(日) 18:33:14[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限
来週の火曜辺りまで
[5] その他の制限
なし
0404デフォルトの名無しさん
2007/07/08(日) 18:40:44ありがとうございます
助かりました
0405デフォルトの名無しさん
2007/07/08(日) 18:53:39>(a)〜(o) を求めるプログラムを作成しなさい.
(a)〜(o)は何?
0407デフォルトの名無しさん
2007/07/08(日) 19:21:00問題1
(d) 〜 (o)は何すればいいのかわからないからやってない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4554.txt
0408デフォルトの名無しさん
2007/07/08(日) 19:21:17#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;
}
0409デフォルトの名無しさん
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;
}
0410デフォルトの名無しさん
2007/07/08(日) 21:41:58[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
できるだけ簡単なものにしてください。よろしくお願いします。
0411デフォルトの名無しさん
2007/07/08(日) 22:06:58#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;
}
0412デフォルトの名無しさん
2007/07/08(日) 22:26:210413デフォルトの名無しさん
2007/07/08(日) 22:47:42○return sqrt((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1));
0414デフォルトの名無しさん
2007/07/08(日) 22:49:49その程度のことで△とか、もうね。
0415デフォルトの名無しさん
2007/07/08(日) 22:53:050416デフォルトの名無しさん
2007/07/08(日) 23:01:32数学っぽくないな。
それは全然○じゃない。
0417デフォルトの名無しさん
2007/07/08(日) 23:09:38>>415
>>416
>平方根の計算にはsqrt()関数を用いる
とあるからpow()もhypot()を使うことは想定されていないと思うんだ。
>できるだけ簡単なものにしてください。よろしくお願いします。
とあるから、数学っぽいかどうかは考慮されていないと思うんだ。
0418デフォルトの名無しさん
2007/07/08(日) 23:14:30>平方根の計算にはsqrt()関数を用いる
>とあるからpow()もhypot()を使うことは想定されていないと思うんだ。
「sqrtを使う=他の数学関数を使わない」ってどういう理屈?
数学っぽい=プログラミングに疎くても直感的に分かりやすい。
とことんプログラミングの初心者用にするなら構造体使わないほうが良いけど、
使った方が点として数学の知識で直感的に分かりやすい、と。
0419デフォルトの名無しさん
2007/07/08(日) 23:21:210420デフォルトの名無しさん
2007/07/08(日) 23:23:35数学の授業で(x2-x1)*(x2-x1)って書き方するか?
0421デフォルトの名無しさん
2007/07/08(日) 23:25:120422デフォルトの名無しさん
2007/07/08(日) 23:26:030423デフォルトの名無しさん
2007/07/08(日) 23:28:200424デフォルトの名無しさん
2007/07/08(日) 23:28:42pow使って二乗と同じように一まとめにして形を公式に近くしてる。
って考えると俺は>>415に一票。
0425デフォルトの名無しさん
2007/07/08(日) 23:29:190426デフォルトの名無しさん
2007/07/08(日) 23:33:20他のヘッダで定義されてるもの使ってるならまだ分かるけど。
てか結局の所>>413はたいして優れたこと言ってないのに
人の答えに△付けて自分に○付けるのがどうかと…。
0427デフォルトの名無しさん
2007/07/08(日) 23:34:42実にどうでもいい
0428デフォルトの名無しさん
2007/07/08(日) 23:40:20[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日
お願いします
0429デフォルトの名無しさん
2007/07/09(月) 00:14:260430デフォルトの名無しさん
2007/07/09(月) 00:17:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4559.txt
やってみたが、これでどうかな。
NULLが再定義で警告出たのでコメントにした。
ほかにも気になる部分を修正している。
0431デフォルトの名無しさん
2007/07/09(月) 00:19:36どうもありがとうございました!
0432430
2007/07/09(月) 00:55:24済まない。一カ所修正が漏れていた。
230行目
n=&htnode[i*CHAR_SIZE+j];
を、
n=&htnode[(i*CHAR_SIZE+j)*CHAR_SIZE+k];
にしてくれ。
0433デフォルトの名無しさん
2007/07/09(月) 03:30:30[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] その他の制限: 特になし
0434デフォルトの名無しさん
2007/07/09(月) 03:37:30>>159>>164
0435デフォルトの名無しさん
2007/07/09(月) 05:25:43[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] その他の制限: なし(どこまで習っているか、標準ライブラリは使ってはいけない等々)
0436デフォルトの名無しさん
2007/07/09(月) 07:34:05>5科目の【総合得点】が最も高かったすべての学生に【奨学金】として10万円与える。
最も高かったすべての学生って
総合得点が同点の場合、同率1位扱いするってことか?
0437デフォルトの名無しさん
2007/07/09(月) 08:03:55そういうことです
0438デフォルトの名無しさん
2007/07/09(月) 08:15:58#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;
}
0439デフォルトの名無しさん
2007/07/09(月) 09:02:55int 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;
}
0440デフォルトの名無しさん
2007/07/09(月) 10:00:40[2] 問題文(含コード&リンク): 面白いプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 今日中にお願いします
[5] その他の制限: while,do-whileを習った後の課題です。
面白いってのはシステム的ではなく、お笑い系。
教授が関西出身のようで・・・・・・。
他の課題は済ませたのですが、自分では面白いプログラムを作る自信がありません。
どうか力をかしてください。
お願いします。
0441デフォルトの名無しさん
2007/07/09(月) 10:27:12何かキーを押したら「わっはっはっはっは、うっひゃっひゃっひゃっひゃ、あ〜〜〜腹痛ぇ」
みたいな文字列を表示させるプログラムでもええんか?do while を使って
EOFが検出されるまで
0442440
2007/07/09(月) 10:56:33ちゃんと機能するならそれで良いと思います。
0443デフォルトの名無しさん
2007/07/09(月) 10:58:02char a[]=" 747:7:@:@C@AC@ACCCCCC<7<7HFHLOMLJLMLHJCJCJLMOQOMLMOTOMHHLMOOHJLMOQ"
"QTSQOOOOONMMMLLLJHGEGEC",b[]=" 747747:7:@:>@:>@>7542<7<7<<77<77>>>77>7>>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);}
0444デフォルトの名無しさん
2007/07/09(月) 11:02:24[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] その他の制限:特になし
よろしくお願いします。
0445デフォルトの名無しさん
2007/07/09(月) 11:33:44#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;
}
0446デフォルトの名無しさん
2007/07/09(月) 11:41:46[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] その他の制限:無し
どうかお願いします
0447デフォルトの名無しさん
2007/07/09(月) 12:13:12#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;
}
0448デフォルトの名無しさん
2007/07/09(月) 12:25:22問題見たら、びっくりした
解くとかそういう次元じゃない
もうたまらん。
0450デフォルトの名無しさん
2007/07/09(月) 12:47:00#include <stdio.h>
int main(void){printf("Hello World\n");return 0;}
0452デフォルトの名無しさん
2007/07/09(月) 14:11:470453デフォルトの名無しさん
2007/07/09(月) 14:20:340454デフォルトの名無しさん
2007/07/09(月) 14:21:580455デフォルトの名無しさん
2007/07/09(月) 14:27:31[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] その他の制限:配列とポインタという章まで習いました。
0456デフォルトの名無しさん
2007/07/09(月) 14:38:17int main(void)
{
0457デフォルトの名無しさん
2007/07/09(月) 14:43:34printf("function ==>");
scanf("%c", &func);
switch((int)func) {
case 'i':
0458デフォルトの名無しさん
2007/07/09(月) 14:48:53scanf("%c", &c2);
printf("data ==>");
scanf("%d", &data);
memory[tolower(c2) - 'a'] = data;
break;
0459デフォルトの名無しさん
2007/07/09(月) 14:57:32ありがとうございます。光明が見えました。
0460デフォルトの名無しさん
2007/07/09(月) 15:21:27二つの符号なし整数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日までです。お願いします。
0461デフォルトの名無しさん
2007/07/09(月) 15:25:32[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] その他の制限: 一応ポインタまで習いました
0462デフォルトの名無しさん
2007/07/09(月) 15:35:39やってみようとしたがこれ、マジ分からん
0463デフォルトの名無しさん
2007/07/09(月) 15:47:51見てもらう気あるのかと。
0464デフォルトの名無しさん
2007/07/09(月) 16:09:16[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] その他の制限: できる限り簡単にお願いします。
上記の問題よろしくお願いします。
0465デフォルトの名無しさん
2007/07/09(月) 16:12:56割引とはどんな場合にどの程度なんだ???????
0466デフォルトの名無しさん
2007/07/09(月) 16:19:54わかりません課題文にそう書いたあります・・・
割引はスルーで構わないので、お願いします。
0467デフォルトの名無しさん
2007/07/09(月) 16:22:452chブラウザ入れることもできない人には見てもらわなくても結構ってことなんじゃね?
0468デフォルトの名無しさん
2007/07/09(月) 16:36:54消費税が端数の時切り捨てるのであれば以下
チェックはしていない
#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;
}
0469デフォルトの名無しさん
2007/07/09(月) 16:44:01[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] その他の制限: 制限なし
0470デフォルトの名無しさん
2007/07/09(月) 16:48:030471デフォルトの名無しさん
2007/07/09(月) 16:53:122chブラウザ入れてるけど普段firefoxのfoxage2chから見てるから
h抜きリンクとかひどく不便なんだよなぁ。
0472デフォルトの名無しさん
2007/07/09(月) 17:19:14二分木に数値は登録して最小値表示までやった。数値検索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;
}
0473デフォルトの名無しさん
2007/07/09(月) 17:35:10[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] その他の制限: 特になし
よろしくお願いします。
0474デフォルトの名無しさん
2007/07/09(月) 17:43:27文字化け
0475デフォルトの名無しさん
2007/07/09(月) 17:52:25[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] その他の制限: 特になし
よろしくお願いします。
0476473
2007/07/09(月) 18:12:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4570.txt
0477デフォルトの名無しさん
2007/07/09(月) 18:14:310478デフォルトの名無しさん
2007/07/09(月) 18:20:570479デフォルトの名無しさん
2007/07/09(月) 18:48:48[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系関数を使用せず、コマンド・プロンプトから入力テキ
ストファイルを読み込むようにすること。
よろしくお願いします。
0480デフォルトの名無しさん
2007/07/09(月) 18:52:57[2] 問題文(含コード&リンク):
findコマンドを呼び出して、指定されたディレクトリ
(複数可。指定がない場合は、カレントディレクトリ)以下にあるディレクトリ(指定されたディレクトリ自身も含む)
を表示するプログラムを作れ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 今週中
[5] その他の制限:無いです
どうかよろしくお願いします
0481デフォルトの名無しさん
2007/07/09(月) 19:03:040482デフォルトの名無しさん
2007/07/09(月) 19:14:120483 ◆KqBLZKKJjc
2007/07/09(月) 19:14:14質問内容>>264 >>281
>>295 さんのプログラムで自己完結させていただいたのですが、
どう処理されているのかを、
説明してもらえないでしょうか?
あと、マシンパワーの問題で、
100万で実行しても、処理してくれないんです。
1万では実行できました。
100万で実行した結果を教えてください。
お願いします。
0484デフォルトの名無しさん
2007/07/09(月) 19:24:170485デフォルトの名無しさん
2007/07/09(月) 19:33:210486デフォルトの名無しさん
2007/07/09(月) 19:43:32からだろうな
0487デフォルトの名無しさん
2007/07/09(月) 19:48:48#include <unistd.h>
int main(int argc, char **argv)
{
execvp("find", argv);
return 1;
}
0488デフォルトの名無しさん
2007/07/09(月) 21:25:13[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] その他の制限:特になし
0489デフォルトの名無しさん
2007/07/09(月) 21:56:12>>25
>>86
全員違う奴だったら凄い学校だな
0490デフォルトの名無しさん
2007/07/09(月) 22:12:29これに収まる程度の計算式で良いのか?
0491デフォルトの名無しさん
2007/07/09(月) 22:13:51[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] その他の制限: 関数には再帰を用いてください。
自分ではどうにもなりませんでした。
どうか力を貸してください。
お願いします。
0492デフォルトの名無しさん
2007/07/09(月) 22:50:57そうです。よろしくお願いします
0493デフォルトの名無しさん
2007/07/09(月) 23:04:290494デフォルトの名無しさん
2007/07/09(月) 23:45:10[2] 問題文(含コード&リンク):
“数字を入力してください”と表示して整数を入力し、
その数が2の何乗より大きいか求め
“それは2のn乗より小さいね”と表示する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 7/10の昼ごろまで
[5] その他の制限: 特になし
よろしくお願いします。
0495282
2007/07/09(月) 23:47:59最初の二重ループはエラトステネスの篩の実装だね。
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
0496デフォルトの名無しさん
2007/07/09(月) 23:53:42#define ABC( prm00, prm01, ... ) \
func( prm00, prm01, ...);\
void func( int prm00, int prm01, ... )
{
}
エラーになってしまいます・・・
VC2005です
他で質問をしたけど馬鹿ばっかでマトモな答えが出ませんでした。
ここはそんな事、無・い・で・す・よ・ね???
スレ違い。
0499♯define ABC(x) func(x)と定義してABC((1, 2, 3))などと使う
2007/07/10(火) 00:00:120500define ABC(x) func(x)と定義してABC((1, 2, 3))などと使う
2007/07/10(火) 00:13:220501デフォルトの名無しさん
2007/07/10(火) 00:14:05この野郎!括弧つけやがって
0502デフォルトの名無しさん
2007/07/10(火) 00:21:36>その数が2の何乗より大きいか求め
>“それは2のn乗より小さいね”と表示する。
大丈夫か?
0503デフォルトの名無しさん
2007/07/10(火) 00:25:22それじゃエスパーかお前と同じ講義を受けてるやつにしか
解答できんだろうな。
0504494
2007/07/10(火) 00:26:19僕もそこは疑問に思いましたが、一応問題文そのままです。
考えてくださるのならどちらに合わせても良いですので、よろしくお願いします。
0505デフォルトの名無しさん
2007/07/10(火) 00:34:17偉そうに片付けるとか言ってお前らの許容範囲を超えると全否定か・・・
構って貰いたいからって粋がるな!
このクズ達が!
0506デフォルトの名無しさん
2007/07/10(火) 00:49:14可変個引数、マクロとかでググれば該当ページ結構あるけどなぁ・・・
__VA_ARGS__マクロでやりたいことは実現可能。
VC系はC99に対応してないと思ってたけど、VS2005はしてるみたいだね。
http://blogs.wankuma.com/rapt/archive/2006/12/10/49682.aspx
0507デフォルトの名無しさん
2007/07/10(火) 00:50:26http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4574.txt
0508デフォルトの名無しさん
2007/07/10(火) 00:54:42>499
0509デフォルトの名無しさん
2007/07/10(火) 00:54:48そもそも宿題じゃないのは無視でお願いします。
0510デフォルトの名無しさん
2007/07/10(火) 00:59:49#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;
}
0511デフォルトの名無しさん
2007/07/10(火) 01:04:46できた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4575.zip
動作でいちいちキー入力するのめんどくさければ
コンパイル後、コマンドプロンプト上で
Main < Test.txtと入力するとファイルから読み込んで動く。
0513デフォルトの名無しさん
2007/07/10(火) 01:12:17#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;
}
0514デフォルトの名無しさん
2007/07/10(火) 01:15:32ちょっwwwwwwほんまに それは2のn乗より小さいね って表示で良いんかい!?
0515デフォルトの名無しさん
2007/07/10(火) 01:42:15#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;
}
0516デフォルトの名無しさん
2007/07/10(火) 03:25:160517デフォルトの名無しさん
2007/07/10(火) 04:12:090518デフォルトの名無しさん
2007/07/10(火) 06:33:31俺はただただ見て〜〜るぅ〜♪
0519デフォルトの名無しさん
2007/07/10(火) 06:51:05構造体を定義するだけで終わるんじゃないのか?
0520 ◆KrpcpKelXU
2007/07/10(火) 07:45:01[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時
自分でも考えているのですが、
よろしくおねがいします。
0521479
2007/07/10(火) 08:11:45おっしゃる通りです。
用語やアルゴリズムに関しての補足説明はすべきだと思いましたが
あまりにこちらの補足が足りず見苦しいレスになってしまって申し訳ないですorz
問題文に目を通してくださってありがとうございました。
0522デフォルトの名無しさん
2007/07/10(火) 10:00:08ありがとうございます!
0523デフォルトの名無しさん
2007/07/10(火) 10:09:21sscanf()は使ってもいいのかね
0524デフォルトの名無しさん
2007/07/10(火) 10:41:160525デフォルトの名無しさん
2007/07/10(火) 10:51:03>受け取り、(入力終了は改行文字)それらの積を出力する。
>ただし、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);
}
0526デフォルトの名無しさん
2007/07/10(火) 10:52:36525続き
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;
}
0527デフォルトの名無しさん
2007/07/10(火) 10:54:07fgets(str, 1024, stdin);に書き換えといて
0528デフォルトの名無しさん
2007/07/10(火) 10:56:360529デフォルトの名無しさん
2007/07/10(火) 11:03:040530デフォルトの名無しさん
2007/07/10(火) 11:05:48�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;
}
0531デフォルトの名無しさん
2007/07/10(火) 11:05:59>gets() は絶対に使用してはならない。(ry
0532デフォルトの名無しさん
2007/07/10(火) 11:11:27まってるとデータ破壊していくのか
それはすまんかった
0533デフォルトの名無しさん
2007/07/10(火) 11:16:56[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] その他の制限:無し
どうかお願いします
0534デフォルトの名無しさん
2007/07/10(火) 11:24:29「gets()」使えないならつくっちまえ
と言うことで作った
/*gets(str);*/
/*バッファ(srt)は↑で1024確保してあるので1024までなら大丈夫*/
for(i=0;i<1024;i++){
str[i] = getchar();
if(str[i] == '\n'){
str[i] = '\0';
break;
}
}
0535デフォルトの名無しさん
2007/07/10(火) 11:38:37534書き込んでから冷静に読み返したら
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;
}
0536デフォルトの名無しさん
2007/07/10(火) 11:40:11525続き
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;
}
0537デフォルトの名無しさん
2007/07/10(火) 11:48:59文法エラーを修正し、プログラムを実行できるようにせよ。
文法エラーを修正できた後、ロジック・ミス(正しい結果
をだせない)を見つけ、修正せよ。
#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" );
}
誰か頼む
0538デフォルトの名無しさん
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" );
}
0539デフォルトの名無しさん
2007/07/10(火) 11:56:59上は見たことないからここか?
int data[10] = {0,5,2,1,3,4,,6,7,8,9}; /*←ここ*/
0540デフォルトの名無しさん
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" );
}
0541デフォルトの名無しさん
2007/07/10(火) 12:09:43thx、助かった
0542デフォルトの名無しさん
2007/07/10(火) 13:23:280543デフォルトの名無しさん
2007/07/10(火) 15:06:190544デフォルトの名無しさん
2007/07/10(火) 15:16:300545デフォルトの名無しさん
2007/07/10(火) 15:19:36[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
0546デフォルトの名無しさん
2007/07/10(火) 16:20:33>>473
>>475
お願いします
0547デフォルトの名無しさん
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;
}
0549みえ
2007/07/10(火) 17:15:24[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日
よろしくお願いします
0551538-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();
}
0552551の肉まん
2007/07/10(火) 17:35:26見に行くことになってエラーが出る気がする
変数名がローマ字なのはわかりやすくするためなんだが
気分を害したらすまん
0553デフォルトの名無しさん
2007/07/10(火) 18:55:550554デフォルトの名無しさん
2007/07/10(火) 19:13:350555デフォルトの名無しさん
2007/07/10(火) 19:27:290556デフォルトの名無しさん
2007/07/10(火) 19:50:55[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まで]
自分で考えてみましたが、特にオ、カ、が手に負えないので宜しくお願いします。
0557デフォルトの名無しさん
2007/07/10(火) 19:56:04とりあえず自分で考えたのUPしてみて。
0558デフォルトの名無しさん
2007/07/10(火) 20:04:02最長と最短の変数を用意しておいて、申告と比較すればよいのではないの?
0559デフォルトの名無しさん
2007/07/10(火) 21:07:53[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
0560デフォルトの名無しさん
2007/07/10(火) 21:35:39#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;
}
0561デフォルトの名無しさん
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;
}
0562デフォルトの名無しさん
2007/07/10(火) 21:49:03こんな感じでどう?
変数の入れ替えの仕方はいろいろあるからググると楽しいかも
#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;
}
0563デフォルトの名無しさん
2007/07/10(火) 21:50:22>>556じゃなかった>>559だった
ついでに次からは更新してから書き込む
0564デフォルトの名無しさん
2007/07/10(火) 22:23:52[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もお願いします。
0565デフォルトの名無しさん
2007/07/10(火) 22:29:25fgets側で\0の分の確保はしてくれるからわざわざN-1を引数にとらなくてもいいんじゃないの?
0566デフォルトの名無しさん
2007/07/10(火) 22:32:230567563
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;
}
0568デフォルトの名無しさん
2007/07/10(火) 22:41:341番
#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++));みたいに分かりやすくポインタしてないとダメ…?
0569デフォルトの名無しさん
2007/07/10(火) 22:47:08malloc関数とかはまだ習っていないんですが。
0570デフォルトの名無しさん
2007/07/10(火) 22:48:36そこはどうでも良い所だから、普通にchar str[50]でいいや。
0571デフォルトの名無しさん
2007/07/10(火) 22:48:45ではなく
*p++
がいい!
0572デフォルトの名無しさん
2007/07/10(火) 22:51:25#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;
}
微妙に改変。
0573デフォルトの名無しさん
2007/07/10(火) 22:55:00while(*pstr != '\0')
putchar(*pstr++);
は
for()
がいい!
0574デフォルトの名無しさん
2007/07/10(火) 22:56:360575デフォルトの名無しさん
2007/07/10(火) 23:10:27>>461の1〜4
めんどいから動作確認はしていない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4584.txt
0576デフォルトの名無しさん
2007/07/10(火) 23:14:45>>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();を外してみました
もしかしたらこれが原因なんでしょうか(´・ω・`)
0577デフォルトの名無しさん
2007/07/10(火) 23:19:18fgets
0578562
2007/07/10(火) 23:20:04消しても問題なし、むしろ消しといて
0579デフォルトの名無しさん
2007/07/10(火) 23:22:13scanf("%[^\n]\n", str);
とか
scanf("%127[^\n]\n", str);
0580562
2007/07/10(火) 23:22:36#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;
}
0581デフォルトの名無しさん
2007/07/10(火) 23:28:592〜4できた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4585.txt
0582デフォルトの名無しさん
2007/07/11(水) 00:17:21[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] その他の制限: なし、希望は初心者っぽくお願いします。
どなたかお願いします。
0583デフォルトの名無しさん
2007/07/11(水) 00:19:45二番目違くない?
0584デフォルトの名無しさん
2007/07/11(水) 00:29:24[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] その他の制限: とくにございません。ぜひよろしくお願いします…。
0585デフォルトの名無しさん
2007/07/11(水) 00:40:49#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;
}
0586デフォルトの名無しさん
2007/07/11(水) 00:41:45できたというか自分で作ったものだから直したお。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4587.txt
0587デフォルトの名無しさん
2007/07/11(水) 00:45:32すまん>>586だと数値の範囲チェックがおかしいので
53行目をb = 1;にしてくれ
0589デフォルトの名無しさん
2007/07/11(水) 01:28:31[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] その他の制限:無し
0590デフォルトの名無しさん
2007/07/11(水) 02:18:03[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]その他制限:特にありません
よろしくおねがいします。
0591デフォルトの名無しさん
2007/07/11(水) 04:01:17#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;
}
蚊にたたき起こされたから暇つぶしに。
0592デフォルトの名無しさん
2007/07/11(水) 04:58:13[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] その他の制限:とくになし。
よろしくお願いします。
0593デフォルトの名無しさん
2007/07/11(水) 06:25:22[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] その他の制限: なし
0594デフォルトの名無しさん
2007/07/11(水) 06:27:150595デフォルトの名無しさん
2007/07/11(水) 08:44:06[2] 問題文(含コード&リンク):
2つのテキストファイル名を入力してファイルの内容が同じならば
「same」と出力し同じでないなら「not same」と出力する
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限:あさって
[5] その他の制限:標準ライブラリは使ってはいけない
0596デフォルトの名無しさん
2007/07/11(水) 09:03:460597デフォルトの名無しさん
2007/07/11(水) 09:03:48>[5] その他の制限:標準ライブラリは使ってはいけない
なんと!
fopen()などのファイル処理系も、printf()さえも使ってはならぬと仰るか。
0598デフォルトの名無しさん
2007/07/11(水) 09:16:44stdio.hなしで画面に出す方法教えてください
0599デフォルトの名無しさん
2007/07/11(水) 09:22:13大丈夫、stdio.hをインクルードしなくてもprintf(), puts(), putchar()は使える。
0600デフォルトの名無しさん
2007/07/11(水) 09:24:42ttp://www.bohyoh.com/CandCPP/C/Library/printf.html
ほぉ、やってもらおうじゃないか。コンパイラが必要なヘッダを自動的に
取り込んでくれているっつーのは無しな。
0601デフォルトの名無しさん
2007/07/11(水) 09:35:280602デフォルトの名無しさん
2007/07/11(水) 10:04:22#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;}
0603デフォルトの名無しさん
2007/07/11(水) 10:05:550604デフォルトの名無しさん
2007/07/11(水) 10:10:21current_x, current_y, depth:
探索を一歩進めるごとに変化していき、再帰呼び出しから戻ってきた時
には復元されて欲しい値。再帰探索関数の引数としてスタックに
保持することで、その両者が自然に実現できる。
min_depth:
探索を進めたり戻ったりする毎に変化する値ではなく、単調に変化して
いく値なので、再帰関数のスタックではない場所に保持しておく必要が
ある。ポインタを用いて引数渡しすることも可能だが、ここでは
簡便のためグローバル変数となっている。
state
探索の対象。実は値の変化に関してはcurrent_x, current_y, depthに
似た特性を持っているが、Cでは配列の値渡しが出来ないので、スタッ
クを利用してバックトラックを自動的に実現することは出来ない。
ここでは簡便のためグローバル変数となっている。
goal_x, goal_y
ゴールの判別は座標ではなくマップの値によってなされており、使われ
ていない。
0605デフォルトの名無しさん
2007/07/11(水) 10:18:42リンクを禁止するなんてのは無理では?
それにヘッダが無くても未知の関数は勝手にintを返す関数とみなして
警告出すだけでコンパイルは実行するでしょ。
0606デフォルトの名無しさん
2007/07/11(水) 10:19:42よそでやれ。
0607デフォルトの名無しさん
2007/07/11(水) 10:21:540608デフォルトの名無しさん
2007/07/11(水) 10:22:10別に無かったら無かったでコンパイラは勝手に解釈する。
その解釈が正しいという保証はないからincludeするだけの事。
0609デフォルトの名無しさん
2007/07/11(水) 10:25:39・C99やC++では必須
・FILE*などの型やマクロ等の定義を取り込む上で必要
・戻り値の型がintでない関数では必要(自分で宣言しても良いが)
・いずれにせよ型チェックを有効にし、暗黙の型変換を利用できるようにするために、
C89であっても取り込んだほうが良い
0610デフォルトの名無しさん
2007/07/11(水) 10:29:12>リンカとコンパイラは本来別物だから、
>リンクを禁止するなんてのは無理では?
古典的なコンパイラならもちろんそうだが、そうなっている保証はないんじゃないかってことだ。
コンパイラがリンカに指示を出す方法なんていくらでも考えられる。
>それにヘッダが無くても未知の関数は勝手にintを返す関数とみなして
これはその通り。
0611デフォルトの名無しさん
2007/07/11(水) 10:32:43だから よ そ で や れ。
0612デフォルトの名無しさん
2007/07/11(水) 10:42:42コンパイラやリンカの実装がどうなっていようが関係ないのではないかな。
プロトタイプの省略されたソースをエラーにするようなC89コンパイラは
規格準拠とは言えないのではないだろうか。
0613デフォルトの名無しさん
2007/07/11(水) 10:45:28学生の俺からみても、なんで
i=i*10+(*p++)-48
みたいにわかりにくい書き方で出題しているんだろうね。
実力を見るためにわざと隠しているとしか思えない。
48は文字コードの計算で表すでしょ普通?
0614デフォルトの名無しさん
2007/07/11(水) 10:46:08>>599 みたいなことを言うまぬけが居るから話がこじれる。
標準ライブラリ禁止というからにはprintf()のような標準ライブラリ関数を
使ってはならないわけで、stdio.hをインクルードするかどうかは関係ない。
0615デフォルトの名無しさん
2007/07/11(水) 10:47:53とりあえずここに挙げられているものはまず禁止だな。さぁ、やってみ。
0616デフォルトの名無しさん
2007/07/11(水) 10:53:04標準ライブラリ関数使わないでどうやって入出力するんだ。
0617デフォルトの名無しさん
2007/07/11(水) 10:53:21して、read()とwrite()を使うだけだろう。
0618デフォルトの名無しさん
2007/07/11(水) 10:56:210619デフォルトの名無しさん
2007/07/11(水) 10:56:230620デフォルトの名無しさん
2007/07/11(水) 10:57:21>>595を見ろよ。"Linux"だ。
0621デフォルトの名無しさん
2007/07/11(水) 10:59:450622デフォルトの名無しさん
2007/07/11(水) 11:00:06DOSの場合はINT21使うなり汁
0623デフォルトの名無しさん
2007/07/11(水) 11:09:46どんな学校だ?独自で何かシステムを開発しているのか?
0624デフォルトの名無しさん
2007/07/11(水) 11:14:590625デフォルトの名無しさん
2007/07/11(水) 11:14:27ていうか式の読み方が主題だろ
テストなんだから。
0626デフォルトの名無しさん
2007/07/11(水) 11:18:11こういう選択肢もあるって事をわからせるためじゃないの?
結果は同じでもプログラムソースは何通りもあるんだから、所詮宿題。
0627デフォルトの名無しさん
2007/07/11(水) 11:20:55組込みでしょ
-nostdlibが必須な環境なら仕方あるめぇよ
0628デフォルトの名無しさん
2007/07/11(水) 11:22:21なるほど。っつか、このスレとしては、標準ライブラリを使用するのが最低限ということで
受け付ける方針に変えた方が良いかも・・・俺の勝手な意見だが。
0629デフォルトの名無しさん
2007/07/11(水) 11:25:49・例えばstrstr()モドキを作れという問題で、strstr()を使って欲しくない
・自分の習っていない関数は使って欲しくない
のどっちかだろね
0630デフォルトの名無しさん
2007/07/11(水) 11:29:43あれ、単にUnixのシステムコール呼ばせるだけで、問題そのものは
超つまらない・下らない悪問が多いんだよなあ
0631デフォルトの名無しさん
2007/07/11(水) 12:25:51アドバイスいただけたら嬉しいです。
0632デフォルトの名無しさん
2007/07/11(水) 12:28:26環境
OS:Windows
コンパイラ名とバージョン:ボーランド
言語:C
テーマ:ポインタの利用
問題1:ポインタを利用して、2つの値の合計を求めなさい
int a = 10, b = 5,g;
int *pa,*pb;
実行画面
g:15
0633デフォルトの名無しさん
2007/07/11(水) 12:37:38環境: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問どなたかお願いします
0634デフォルトの名無しさん
2007/07/11(水) 12:38:35g=*&a+*&b;
0635デフォルトの名無しさん
2007/07/11(水) 12:39:15#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;
}
0636デフォルトの名無しさん
2007/07/11(水) 12:39:54include <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;
}
0637デフォルトの名無しさん
2007/07/11(水) 12:40:19#include <stdio.h>
int main(void) {
char moji[] = "ABCD";
char *mp;
mp=moji;
while( *mp ) {
printf("%c\n",*mp);
mp++;
}
return 0;
}
0638デフォルトの名無しさん
2007/07/11(水) 12:48:360639デフォルトの名無しさん
2007/07/11(水) 12:48:53#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;
}
0640デフォルトの名無しさん
2007/07/11(水) 13:07:34//問題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;
}
0641デフォルトの名無しさん
2007/07/11(水) 13:38:09[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] その他の制限:ポインタの基礎までは学習済み
0642ハッシュ法
2007/07/11(水) 13:48:57[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
科目と点数を入力し、ハッシュ法を使って記憶する。
あとで、科目を入力して成績を出力させる。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:できるだけ早くお願いします
[5] その他の制限:なるべく簡単な構造で構成してもらいたいです
0643デフォルトの名無しさん
2007/07/11(水) 13:56:32多分生徒名や生徒番号なんかもいるのだろ?
ハッシュ関数の指定はないのか?
0644デフォルトの名無しさん
2007/07/11(水) 13:57:250646デフォルトの名無しさん
2007/07/11(水) 14:06:28int 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;
}
}
0647デフォルトの名無しさん
2007/07/11(水) 14:07:50科目番号を入力してください kamoku
点数を入力してください ten[ kamoku ]
出力する科目番号を入力してください kamoku
点数はten[ kamoku ]です
0648デフォルトの名無しさん
2007/07/11(水) 14:10:28母国語でおk
0649デフォルトの名無しさん
2007/07/11(水) 14:10:560650デフォルトの名無しさん
2007/07/11(水) 14:30:57[2] 問題文(含コード&リンク):キーボードから順次入力された正の整数を、0が入力されるまで、
配列に順番に格納し、次に、ある1つの正の整数を与えると、
それが何番目に入力された整数であるかを表示する
プログラムを作成してください
よろしくお願いします
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 7月11日
0651デフォルトの名無しさん
2007/07/11(水) 14:49:020652デフォルトの名無しさん
2007/07/11(水) 15:06:32#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);
}
0653デフォルトの名無しさん
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]特になし
タイピングミスあったらすいません
0654デフォルトの名無しさん
2007/07/11(水) 15:20:490655デフォルトの名無しさん
2007/07/11(水) 15:43:24おいたはそこまでにしとこうね
0656デフォルトの名無しさん
2007/07/11(水) 15:55:41課目数だけ課目と点数の配列を用意する。
課目番号に対して格納場所を一意になる関数を用意する。
こんな感じか?
0657デフォルトの名無しさん
2007/07/11(水) 15:56:30とりあえず
/n
は
\n
だな
0658デフォルトの名無しさん
2007/07/11(水) 16:14:44[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
0659デフォルトの名無しさん
2007/07/11(水) 16:23:40先頭に負号をゆるさない場合、すべての組み合わせは3^8=6561通り。
ゆるす場合、すべての組み合わせは3^8*2=13112通り。
たったこれだけだから垂れ流しプログラムでもなんとかなるんじゃないかな???
0660デフォルトの名無しさん
2007/07/11(水) 16:34:04先頭に負号をゆるす場合だけやってみた
残りは自分で頑張れ
#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;
}
0661デフォルトの名無しさん
2007/07/11(水) 16:41:59(一度でもあまり=0)になったときに表示するということをやりたいのですが、
一度でも〜になったらを表すコマンドを教えてください。
0662デフォルトの名無しさん
2007/07/11(水) 16:46:230663デフォルトの名無しさん
2007/07/11(水) 16:46:37if (あまり == 0)
{
//一度でもあまりの処理
}
0664デフォルトの名無しさん
2007/07/11(水) 17:12:10class 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が素数とすることができません。
改善点を教えてください。
0665デフォルトの名無しさん
2007/07/11(水) 17:13:21[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] その他の制限:とくになし
よろしくおねがいします
0666デフォルトの名無しさん
2007/07/11(水) 17:15:23C言語でおk
0667665
2007/07/11(水) 17:24:200668デフォルトの名無しさん
2007/07/11(水) 17:25:555分でやるからしばしまたれよ
0669デフォルトの名無しさん
2007/07/11(水) 17:29:210670デフォルトの名無しさん
2007/07/11(水) 17:29:11THX!
0671not 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;
}
0672デフォルトの名無しさん
2007/07/11(水) 17:32:41C言語です。
0673デフォルトの名無しさん
2007/07/11(水) 17:35:080674デフォルトの名無しさん
2007/07/11(水) 17:38:49JAVAとC言語は違うものなんですか?
違うならほかの板行ってきます。
0675デフォルトの名無しさん
2007/07/11(水) 17:40:440676デフォルトの名無しさん
2007/07/11(水) 17:40:57違うものです
0677デフォルトの名無しさん
2007/07/11(水) 17:41:040678デフォルトの名無しさん
2007/07/11(水) 17:43:02Javaスレ逝ってきます。
0680デフォルトの名無しさん
2007/07/11(水) 17:58:280681665
2007/07/11(水) 18:03:20あと文句をつけるわけではないのですが、これは元の文章はキーボードで打つしかないのでしょうか?
文字列の書かれたテキストファイルの類を読み込んだり、
それかコピペすることってできないんでしょうか…
0682デフォルトの名無しさん
2007/07/11(水) 18:06:23テキストファイルを読み込ませたければリダイレクト汁
意味・やりかたがわからなければぐぐれ
コピペも出来るが、端末がコピペに対応していなければならない
Windowsのコンソールプロンプトでも出来るが、簡易編集モードか
何かにしていなければならないのだったかな
0683682
2007/07/11(水) 18:07:59○コマンドプロンプト
正式な名称は知らんが……昔からDOS窓とか言われているアレだ
0684デフォルトの名無しさん
2007/07/11(水) 18:10:480685デフォルトの名無しさん
2007/07/11(水) 18:15:56コード書いたが質問者ががんばるようなので主要なところだけ抜粋
0686デフォルトの名無しさん
2007/07/11(水) 18:16:46[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] その他の制限:とくになし
よろしくおねがいします
0687デフォルトの名無しさん
2007/07/11(水) 18:18:470688デフォルトの名無しさん
2007/07/11(水) 18:26:51#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;
}
0689デフォルトの名無しさん
2007/07/11(水) 18:28:00その順番に出力しないといけないの?
順番がどうでもよいなら簡単だが
0690デフォルトの名無しさん
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;
}
0691デフォルトの名無しさん
2007/07/11(水) 18:39:050692デフォルトの名無しさん
2007/07/11(水) 18:44:06文字登場順
#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;
}
0693デフォルトの名無しさん
2007/07/11(水) 19:03:39[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;
}
0694デフォルトの名無しさん
2007/07/11(水) 19:09:03[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] その他の制限:とくにありません。
考えてもわかりませんでした、どうか皆様よろしくお願いします (ノ_・、)
0695デフォルトの名無しさん
2007/07/11(水) 19:12:59#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;
}
0696671
2007/07/11(水) 19:19:01できればご教示願います…
0697665
2007/07/11(水) 19:19:320698デフォルトの名無しさん
2007/07/11(水) 19:21:28文字から'a'を引いた数にずらしたい数を足して、その数を26で割った余りを'a'に足す
0699デフォルトの名無しさん
2007/07/11(水) 19:22:01[2] 問題文(含コード&リンク):ニュートン法
出力が
値入力⇒○
解の値は ○ 収束するのに ○ 回かかりました
[3] 環境
[3.1] OS:WindowsVISTA
[3.2] コンパイラ名とバージョン:コンパイラが動かないですorz
[3.3] 言語:C言語
[4] 期限:考える時間であっというまに・・・7/13(金)17:00です。
[5] その他の制限:
#include<math.h>とdouble、fabsは必ず使うようです。
よろしくお願いします。
0700デフォルトの名無しさん
2007/07/11(水) 19:24:02ファイル読み込みのあたりがどうも
fopenとかfgetsの使い方がどうも間違ってるみたいです
0701デフォルトの名無しさん
2007/07/11(水) 19:28:54minmax.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;
}
0702デフォルトの名無しさん
2007/07/11(水) 19:30:17#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;
}
0703デフォルトの名無しさん
2007/07/11(水) 19:57:06#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;
}
0704694
2007/07/11(水) 20:28:06こんなにもはやく!
ありがとうございます!!
0705699
2007/07/11(水) 21:15:360706デフォルトの名無しさん
2007/07/11(水) 21:15:45[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の戻り番地を変えるやり方だと思うのですが。。。
申し訳ありませんが、緊急のため時間の許す方のご教授願います。
0707>>706
2007/07/11(水) 22:06:46char 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);
}
0708デフォルトの名無しさん
2007/07/11(水) 22:09:42[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
0709デフォルトの名無しさん
2007/07/11(水) 22:13:11[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] その他の制限:
どうかよろしくお願いします
0710デフォルトの名無しさん
2007/07/11(水) 22:22:38[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;
0711デフォルトの名無しさん
2007/07/11(水) 22:24:44printf("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]特になし
0712デフォルトの名無しさん
2007/07/11(水) 22:43:29[2] C++でUDPのechoサーバを作れ
[3] 環境
[3.1] Windows
[3.2] VisualC++系
[3.3] C++
[4]無期限
[5]wsock32.lib UDPで
おねがいします。
0713デフォルトの名無しさん
2007/07/11(水) 22:46:14main()はぐちゃぐちゃ、
if (*p == '\n');
とか意味不明なことをやっている上に最後に } が足りない
expression()は最初の { が足りない
term()は途中で切れている
一体何がしたいのかね
0714デフォルトの名無しさん
2007/07/11(水) 22:46:18[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] その他の制限: どうぞよろしくお願いします;
0715デフォルトの名無しさん
2007/07/11(水) 22:51:35>>710,711
は繋がっているのでは?
0716デフォルトの名無しさん
2007/07/11(水) 22:54:19それは勿論分かっているよ。
誤り訂正しろって問題にしては、やりすぎかと思ったのよ。
コンパイルが通るがバグがある、というレベルではないのだもの。
関数term()は途中で切れている。関数number()は実装さえされていない。
それらを足したところで誤りだらけでコンパイルも通らない。
0717デフォルトの名無しさん
2007/07/11(水) 22:55:44はもしかして、四則計算をするプログラムを作りたいのでは?
誤りを訂正してコメントをつけよって書いてあるし。
間違っているところを書き直して、足りないのを足せばいいのでは?
0718デフォルトの名無しさん
2007/07/11(水) 22:57:11再帰下降で四則演算が出来ればよいようだから、ほぼ同じだ。
多分>>48が参考になると思うよ。
0719デフォルトの名無しさん
2007/07/11(水) 23:01:41[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
0720デフォルトの名無しさん
2007/07/11(水) 23:05:34[2] 問題文(含コード&リンク):
各ノードに子孫数(自身は含まない)を持つ二分探索木において、
子孫数を用いて、n番に小さい値を検索し値を関数を作成せよ。
[3] 環境
[3.1] OS: (Windows/Linux/等々) windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C
[4] 期限:7/27
[5] その他の制限:
関数の仕様(引数は自由、n番目の値を戻り値として返す)、再帰を用いること。
ノードには整数値が入っているとする。
よろしくお願いします
0721デフォルトの名無しさん
2007/07/11(水) 23:13:3248見ました。でも、わからなかったので書き込みしたので
すいませんが教えてください。
0722デフォルトの名無しさん
2007/07/11(水) 23:53:060723デフォルトの名無しさん
2007/07/12(木) 00:03:230724デフォルトの名無しさん
2007/07/12(木) 00:18:41[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
よろしくお願いします^^
0725デフォルトの名無しさん
2007/07/12(木) 00:42:20#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;
}
0726デフォルトの名無しさん
2007/07/12(木) 01:06:380727デフォルトの名無しさん
2007/07/12(木) 01:22:04答えてあげないの?
0728デフォルトの名無しさん
2007/07/12(木) 01:34:02講義なしでいきなり作ってこいと言われても使い方が全く分からん・・・・
0729デフォルトの名無しさん
2007/07/12(木) 01:35:01OK。使い方はググればそれなりに見つかるんじゃね?
0730デフォルトの名無しさん
2007/07/12(木) 01:52:09[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
0731デフォルトの名無しさん
2007/07/12(木) 01:53:36回答される方は同じ問題に何度も答えたいとは思わないかもしれません。
0732デフォルトの名無しさん
2007/07/12(木) 01:55:46同じスレに同じ問題とかもたまにあるしね。
学校の課題とかならかぶるなんて当たり前だろうし。
安価で対応とかでいいんじゃないかな?
前の回答探すのすらだるいけど。
0733デフォルトの名無しさん
2007/07/12(木) 01:57:200734デフォルトの名無しさん
2007/07/12(木) 01:59:26GUIはスレじゃやりづらそうだな。
線が引けるのなら、まずは固定値で作図してみては?
その後、固定していた値を入力できるように拡張すればいいだけだし。
0735デフォルトの名無しさん
2007/07/12(木) 02:04:35[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] その他の制限: 特になし
0736デフォルトの名無しさん
2007/07/12(木) 02:17:13アドレス間違ってるぜ旦那
0737735
2007/07/12(木) 02:24:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4596.c
0738デフォルトの名無しさん
2007/07/12(木) 02:26:28でも、書き込みするってことはわかってないのか?
わかってないならもう一度書き込みした方がいいのかな?
0739デフォルトの名無しさん
2007/07/12(木) 02:43:160740デフォルトの名無しさん
2007/07/12(木) 02:55:340741デフォルトの名無しさん
2007/07/12(木) 03:13:45お願いです・本当にわかりません。教えてください
0742デフォルトの名無しさん
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'
0743デフォルトの名無しさん
2007/07/12(木) 07:39:08汚いソースだなー
漏れが書いたんだけどねOTL
Node *AppendNoNodeを追加しても挙動がおかしくなるから、
もう少し仕様をkwsk
0744デフォルトの名無しさん
2007/07/12(木) 07:52:36遅くなりましたが、ありがとうございました!
0745デフォルトの名無しさん
2007/07/12(木) 08:12:20学生に責任があるほうが多いと思うぞ。
0746デフォルトの名無しさん
2007/07/12(木) 08:27:18#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;
}
0747746
2007/07/12(木) 08:28:340748デフォルトの名無しさん
2007/07/12(木) 11:00:40[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] その他の制限: とくになし
なにをすればいいのやらまるでわかりません。もしお暇でしたら力を貸してください。
0749735
2007/07/12(木) 12:37:18この前はありがとうございました
今は学生情報リストが名前だけのソートしかないので
学生情報を登録するときに名前でソートするか学籍番号でソートするかを選択できるようにしたいんです
で、学籍番号のソートができないので教えてほしいです。
0750デフォルトの名無しさん
2007/07/12(木) 13:00:15暗号
#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); に変更。
0751プロセス
2007/07/12(木) 13:04:55プロセスを学んでいく中で、有名な「食事をする哲学者」の問題が出されたのですが、そこにpipeを使わなければいけないんです↓
まず問題はこうです。
・pipeを用いて「食事をする哲学者」を具現
・哲学者の状態変化(eating,hungry,thinking)はrandom numberを利用
・ある哲学者がフォークを得るためには左右哲学者にrequest messageを送る
・フォークの状態変化は使用可否に依存、ただし、ある哲学者から他哲学者にフォークが転送されるときにはきれいになること(clean)を仮定
・使われたフォークは汚くなる
・他の哲学者からフォークの要求が到着すると次のような法則
・きれいなフォークを持ったときは渡さない
・もう使ったフォークを持ったときは渡す
・フォークが転送中にはフォークが向く哲学者に優先権がある
・フォーク及びrequest messageの転送は必ずpipeを利用
・哲学者をあらわす5個のプロセスとは別に状態変化を観察することができるモニタープロセスを置き、状態が変わるとレポティングする。このときにもpipeを利用
・注意、deadlockが発生しないようにする
という問題なんですが・・・C言語でどう書けばいいのでしょう(泣)
助けてくださぃ!
0752sage
2007/07/12(木) 13:29:05[2]問題文:アップローダーのNo.4597にアップしておきました。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ: gcc
[3.3] 言語: C
[4] 期限:来週の水曜までにお願いします。
よろしくお願いします
0753デフォルトの名無しさん
2007/07/12(木) 13:53:25pipeって普通は親子の間でしか使えないのではなかったかな。
というわけで、多分名前つきパイプを使うんだろう。mkfifoでぐぐれ。
mkfifoで作った名前つきパイプは普通のファイルと同様に読み書きできるが
普通は全二重ではないはずなので、双方向から送受信するために、2本の
パイプが必要になる。
てなわけで、それぞれの哲学者と哲学者の間に、送信用と受信用に2本ずつ、
計10個の名前つきパイプをつくる。それぞれの哲学者は、左隣との
送受信用に2本、右隣との送受信用に2本、合計4本のパイプを開く。
当然これらを同時に扱うためにはselect()やpoll()などを使う必要がある。
これまで言っていることが何一つ理解出来ないなら、諦めるんだね。
こんなところでこれ以上詳しく教えるのは不可能だ。
0754デフォルトの名無しさん
2007/07/12(木) 14:14:19プログラミング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分くらいの知識しかないので初歩的なプログラムでお願いします。
0755デフォルトの名無しさん
2007/07/12(木) 14:15:53流れはこんな感じか
ただし出題の条件は満たしていないからそこは己で考えるように
#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());}
0756デフォルトの名無しさん
2007/07/12(木) 14:59:41環境: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
0757デフォルトの名無しさん
2007/07/12(木) 15:15:26#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;
}
0758デフォルトの名無しさん
2007/07/12(木) 15:28:38#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;
}
0759デフォルトの名無しさん
2007/07/12(木) 15:31:15ひどく意味無く読みづらい書き方が多いな。
0760デフォルトの名無しさん
2007/07/12(木) 15:32:14大ボケかましている間抜け
0761デフォルトの名無しさん
2007/07/12(木) 15:33:08以後この基地外放置よろ。最近この板に来た新入りっぽいな。かなり間抜け。
0763デフォルトの名無しさん
2007/07/12(木) 15:36:26> 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
0764本日のアレな人
2007/07/12(木) 15:39:07>>758
ひどく意味無く読みづらい書き方が多いな。
0765デフォルトの名無しさん
2007/07/12(木) 15:41:280766デフォルトの名無しさん
2007/07/12(木) 15:43:44757だけど、heikieってのは>>756がそう書いてたからそのまま書いただけだよ。
printf("平均:%.1f\n",heikie/=N);
これは単に2chで書き込むとき行が多いと読んでる人にとってウザくなるから
行を少なくするためだけにやっただけだから、そんな気にしないで下さい。
あと突っ込んでる所は、
問題に>テーマ:ポインタの利用ってあるからポインタを使った方の出力を見たいのかと推測して書いただけ。
ていうかなんでこんな切れられてるんだ…。
別に自分は他の考え方を批判したりしないから、
もっと良い書き方あると思ったら>>763が書いてくれれば良いよ。
その方が質問者のためになるし。
0767デフォルトの名無しさん
2007/07/12(木) 15:45:42>え、何これ?heikie/=って、普通に/Nにしときゃ良いじゃん。無駄、読みづらい
読みやすいとはいえないが、この場合はイコール入れとかないとだめでしょ?
0768デフォルトの名無しさん
2007/07/12(木) 15:46:14なんで突然こんなファビョってるんだ、とりあえず落ち着け。
0769デフォルトの名無しさん
2007/07/12(木) 15:48:05> テーマ:ポインタの利用
>>757
pa=array; < pa[i] じゃこれの意味ないからw
0770デフォルトの名無しさん
2007/07/12(木) 15:50:27>>759みたいな奴が湧いて出てくるんだよな。お前が解釈できないソースはすべて
酷く意味無く読みづらいんか。あぁそうですか、お前に理解力がないだけだろ。経験不足の初心者め。
0771デフォルトの名無しさん
2007/07/12(木) 15:52:34あれあれ?初心者風情が何勘違いして間違ったイコールしてんの?w
0773デフォルトの名無しさん
2007/07/12(木) 15:56:08一行批判に対して何を延々と粘着してるんだか…。
0774デフォルトの名無しさん
2007/07/12(木) 16:03:22とりあえず
>> double heikie=0;
>heiki"e"(プ
問題文が読めてない
>> printf("平均:%.1f\n",heikie/=N);
>え、何これ?heikie/=って、普通に/Nにしときゃ良いじゃん。無駄、読みづらい
ここで/だとこの後heikieと各要素との比較ができなくなるからダメ
0775デフォルトの名無しさん
2007/07/12(木) 16:03:51このscanfの問題を考えられる限り調べて記述せよ。」
という宿題ですが、これってscanf("%d",…);
これに対して変な値を入力した時のことで良いんですか?
たとえば'a'とかをキーボードから入力するような。
0776デフォルトの名無しさん
2007/07/12(木) 16:04:49お前必死すぎwwwwもろにお前が釣られていることに気づけよ
0777デフォルトの名無しさん
2007/07/12(木) 16:12:22>>775
そういう対処は個別にすりゃ良い。ただ、対処するために他にstdio.h以外に
定義されているライブラリを用いると便利なんだが、それでもおkなら
fgetsで取り込んで、isdigitで数字のみが入力されているとか、最後にatoiで
int型の変数に代入するといった流れになるが。
0778デフォルトの名無しさん
2007/07/12(木) 16:13:420779デフォルトの名無しさん
2007/07/12(木) 16:14:02対処法じゃなくて問題点を挙げるんじゃないの?
0780デフォルトの名無しさん
2007/07/12(木) 16:24:15はじめの一行だけ文体丁寧にしても、その後が変わってなきゃ意味ないぞw
0781デフォルトの名無しさん
2007/07/12(木) 16:30:50[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時
よろしくお願いします
0782デフォルトの名無しさん
2007/07/12(木) 16:41:490783デフォルトの名無しさん
2007/07/12(木) 16:45:22#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;
}
0784デフォルトの名無しさん
2007/07/12(木) 16:49:59scanf()は、書式指定に従って読み取れるところまでを読み取り、残りは
ストリームバッファに残す。
実際にどの程度を読み取れたかは、戻り値や%n指定子を使えば判別できる。
%s指定子などは、幅を指定しない限りバッファオーバーフローを
引き起こす危険性があることに注意(gets()と同じ)。
%sや%dなどは先頭の空白を読み飛ばすが、読み飛ばされる空白には
改行文字も含まれることにも注意。逆に、%cなどは空白を
読み飛ばさないことにも注意。
以上のような点を理解して、適切な使い方をしている限りは何も問題は無い。
scanf()の問題のほとんどは、正しい使い方をしないことに起因する。
0785デフォルトの名無しさん
2007/07/12(木) 16:56:16そりゃ正常ルートを通る入力なら正常だよ
0786デフォルトの名無しさん
2007/07/12(木) 16:59:23期待された入力でなかったことは、scanf()の戻り値で確認できる。
状態を回復するには例えばその行を読み飛ばせばよい。
0787デフォルトの名無しさん
2007/07/12(木) 17:06:51>>784
知ったかの知識をひけらかしたいのは分るが、ちゃんと>>775 と最後の一行を読め
0788デフォルトの名無しさん
2007/07/12(木) 17:09:30それは、「scanf()の問題」ではなく、使い方が悪いだけだと言っているのだが。
gets()の欠点は使い方ではカバーのしようがない。scanf()はそうではない。
scanf()の問題は、「初心者にとって挙動や仕様が理解しにくい」こと
だろう。
0789デフォルトの名無しさん
2007/07/12(木) 17:27:35int main(void) { int c; while ((c = getchar()) != EOF) putchar(c); return 0; }
getchar()の戻り値をチェックしなければ無限ループになるが、
誰もgetchar()が悪いとは言わない。
scanf()の戻り値をチェックしないことは同じぐらい愚かな行為だが、
そういうコードが横行し、皆がscanf()を悪く言うのは不思議なものだ。
0790デフォルトの名無しさん
2007/07/12(木) 17:34:54pa=array; scanf("%d",&pa[i]); if(pa[i]<heikie){ < (プッ
0791デフォルトの名無しさん
2007/07/12(木) 17:42:000792デフォルトの名無しさん
2007/07/12(木) 17:43:27[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] その他の制限:ないです
どうかよろしくお願いします。
0793デフォルトの名無しさん
2007/07/12(木) 17:45:11今度はCプロでなく実プロという講座名になったんだね
0794デフォルトの名無しさん
2007/07/12(木) 17:57:560795デフォルトの名無しさん
2007/07/12(木) 17:59:040796デフォルトの名無しさん
2007/07/12(木) 18:08:22[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] その他の制限: とくになし
よろしくお願いします。
0797デフォルトの名無しさん
2007/07/12(木) 18:09:07[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] その他の制限: おねがいいたしますぅ(>_<)
0798デフォルトの名無しさん
2007/07/12(木) 18:16:02int 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;
}
0799デフォルトの名無しさん
2007/07/12(木) 18:25:20しかし恥ずかしげも無くよく言うな。
>int array[10]、 goukei;
>int *pa;
>double heikie;
>pa = array;
0800デフォルトの名無しさん
2007/07/12(木) 18:35:460801デフォルトの名無しさん
2007/07/12(木) 18:44:29[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] その他の制限: 特にありません
よろしくお願いします。
0802デフォルトの名無しさん
2007/07/12(木) 18:51:57超手抜きだが
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4603.txt
0803802
2007/07/12(木) 18:56:15手を抜きすぎた。
まぁいいか。
0804デフォルトの名無しさん
2007/07/12(木) 18:58:01になっているのはなぜ??
0805 ◆KrpcpKelXU
2007/07/12(木) 18:58:15[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まで
0806デフォルトの名無しさん
2007/07/12(木) 19:06:14if (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がどうなってるか分らないから適当なんで、違ってたら自分で直しといて。
0807デフォルトの名無しさん
2007/07/12(木) 19:08:15[2] 問題文(含コード&リンク):
文字列が回文かどうかを判断するプログラムを作成せよ。
実行例
文字列を入力してください。
kazukikuzak
kazukikuzakは回文です
文字列を入力してください。
kazukidesu
kazukidesuは回文ではありません。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日の朝まで
[5] その他の制限: 明解C言語って本使ってて
ポインタってとこまでならったとか
友人がベソかきながら聞いてきました
力になってやりたいんですが俺の頭じゃ何もできません
といてやってくださいお願いしまーす
0808デフォルトの名無しさん
2007/07/12(木) 19:08:240809デフォルトの名無しさん
2007/07/12(木) 19:09:46単なる空白も\tにすんの?
0810802
2007/07/12(木) 19:14:49まあふいんきは分かっただろうから後は自分でがんがれ。
面倒なら
volatile int signaled;
BOOL WINAPI handler(DWORD)
{
signaled = 1;
}
これをとっぱらっちまえ。
で、下のほうの
while (!signaled && (nread = recvfrom...
は、
while ((nread = recvfrom...
に変える。
0811デフォルトの名無しさん
2007/07/12(木) 19:19:34void 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';
}
0812デフォルトの名無しさん
2007/07/12(木) 19:20:35#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;
}
0813デフォルトの名無しさん
2007/07/12(木) 19:22:44このスレの前の方にあった処理を参考に。
#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;
}
でも回文についてググったら、
「前から読んでも後ろから読んでも順番が変わらず、
なおかつ、言語としてある程度意味が通る文字列〜」
って、言語として意味が通るかどうかはどうすれば…。
0814デフォルトの名無しさん
2007/07/12(木) 19:28:35>>807っす。どうもです。
いやー複雑っすね。素人なもんで複雑怪奇です
文字列を入力してください。っていうのはprintf("回文です。\n"); の上にいれればいいんですかね?
問題は友人が「とにかく回文なんだよお」と泣きながら言ってたもんで…
0815802
2007/07/12(木) 19:29:44sendto(sd, buff, sizeof buff
は
sendto(sd, buff, nread
に汁。
ちと拘束衣着て反省房に入ってくる。
0816デフォルトの名無しさん
2007/07/12(木) 19:34:32まずは試してみ?
0817デフォルトの名無しさん
2007/07/12(木) 19:37:28文字列の入力を促してるのは、上から7行目の
printf(">>");って所だから、そこをprintf("文字列を入力してください>>");
みたいに書き換えてくれればOK。
ただ回文判定っていうより、入力文字が逆にしても元の文字と一緒かを
判定しているという。まぁこれで十分だとは思うんだけど。
0818デフォルトの名無しさん
2007/07/12(木) 19:38:050819デフォルトの名無しさん
2007/07/12(木) 19:42:27[2] 問題文: 自分で問題を選べる3択クイズをつくる。
例
番号を入力してください。
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文は自分でやります。
0820デフォルトの名無しさん
2007/07/12(木) 19:42:33でも単純で分かりやすくない?
0821デフォルトの名無しさん
2007/07/12(木) 19:48:43char c[N]だったら
m=N/2
for(i=0;i<=m;i++)if(c[i]=c[N-i])break;
if(i==m)kaibun else tigau
0822デフォルトの名無しさん
2007/07/12(木) 19:52:28君、面白いね
0823デフォルトの名無しさん
2007/07/12(木) 19:52:450824デフォルトの名無しさん
2007/07/12(木) 19:52:56びっくりマークわすれてるよ
0825デフォルトの名無しさん
2007/07/12(木) 19:57:07文字列のサイズがNになるとは限らない
>for(i=0;i<=m;i++)if(c[i]=c[N-i])break;
!が足りない以外にもダメなところがある
0826デフォルトの名無しさん
2007/07/12(木) 19:57:51char c[N]だったら
m=N/2
for(i=0;i<=m;i++)
if(c[i]!=c[N-i]){tigau;return;}
kaibun;
が正解
0827デフォルトの名無しさん
2007/07/12(木) 19:59:270828デフォルトの名無しさん
2007/07/12(木) 20:02:00は
for(i=0;(i<=m)&&(c[i]==c[n-i]);i++);
ってやると、breakがいらなくなるよ
0829デフォルトの名無しさん
2007/07/12(木) 20:02:29char 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;
0830デフォルトの名無しさん
2007/07/12(木) 20:05:300831デフォルトの名無しさん
2007/07/12(木) 20:07:27http://idol.bbspink.com/test/read.cgi/hgame/1174140000/
0832デフォルトの名無しさん
2007/07/12(木) 20:07:40そんな小手先のテクより、明らかな間違いに突っ込んでやれよw
0833デフォルトの名無しさん
2007/07/12(木) 20:08:340834デフォルトの名無しさん
2007/07/12(木) 20:11:160835デフォルトの名無しさん
2007/07/12(木) 20:12:210836デフォルトの名無しさん
2007/07/12(木) 20:12:48#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;
}
0837デフォルトの名無しさん
2007/07/12(木) 20:15:030838デフォルトの名無しさん
2007/07/12(木) 20:16:46書き込む前に実行すればムダなレスと恥をさらさないですむよ
最後までc[N-i]に気づかなかったね
0839デフォルトの名無しさん
2007/07/12(木) 20:33:49http://headlines.yahoo.co.jp/specialfeature/sangiin2007/list/50/04.html
0840デフォルトの名無しさん
2007/07/12(木) 20:41:08http://www.youtube.com/watch?v=KLbFctG3tw0
0841デフォルトの名無しさん
2007/07/12(木) 20:47:47http://jp.youtube.com/watch?v=X9XomdyPcFQ
0842デフォルトの名無しさん
2007/07/12(木) 20:50:02http://jp.youtube.com/watch?v=vbwpyjUHZzc
0843デフォルトの名無しさん
2007/07/12(木) 21:05:26http://jp.youtube.com/watch?v=pbspNqYJOl8
0844デフォルトの名無しさん
2007/07/12(木) 21:07:27どうもです!明日ガッコで試すって友達がいってたんで、またなんかあったらよろしくおねがいします
0845デフォルトの名無しさん
2007/07/12(木) 21:21:42http://jp.youtube.com/watch?v=_qOup3u8zf4
0846デフォルトの名無しさん
2007/07/12(木) 21:54:45管理人が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。
↓↓↓
【ブログ〜即会い道】http://deaiload.blog109.fc2.com/
0847デフォルトの名無しさん
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
0848デフォルトの名無しさん
2007/07/12(木) 22:08:25> このプログラムを実行したら
このソースをコンパイルしたら
の間違いだろう。
結論から言うと、拡張子をcppなどにしてC++コンパイラでコンパイルするか
int(ほにゃらら)
を(int)ほにゃらら
に書き換えるんだな。
0849デフォルトの名無しさん
2007/07/12(木) 22:10:08先生はわざとおかしく問題文を作っていると言っていました。
迷惑だとはわかっていますが教えてください。
足し算、引き算、割り算、掛け算が出来ればいいみたいです。でも、
書き加えたところにはコメントも必要みたいです。
すいませんがよろしくお願いします。
0850デフォルトの名無しさん
2007/07/12(木) 22:13:380851デフォルトの名無しさん
2007/07/12(木) 22:20:01[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] その他の制限:特になし
誰か助け舟を・・・
0852デフォルトの名無しさん
2007/07/12(木) 22:27:48関数int number(void)の本体が見当たらない。
もしかして自分で作れと言う事ですか?
0853デフォルトの名無しさん
2007/07/12(木) 22:27:52見ていても構いません。バカにされるのはわかっていますが、本当に切実
なんです。もう少しでこの授業も終わります。でも、最後まで出来ないけ
れどやらなきゃいけないんです。お願いです。助けてください。
0854デフォルトの名無しさん
2007/07/12(木) 22:34:00ここでは説明しようながいんだよ。
すまないが諦めてくれ。
0855854
2007/07/12(木) 22:34:41意味わかんねぇ
どうやら俺が首を吊ってくる番だったようだ
0856デフォルトの名無しさん
2007/07/12(木) 22:49:00お願いです。そこを何とかお願いします。プログラムだけでもいいです。
俺が理解出来ないようなないようならきちんと勉強します。
だからお願いします。もう、ここしかお願いするところがないんです。
0857デフォルトの名無しさん
2007/07/12(木) 22:51:370858デフォルトの名無しさん
2007/07/12(木) 22:58:32[2] 問題文(含コード&リンク): ニュートン法
収束回数と解の値を出力する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007年07月13日08:00まで
[5] よろしくお願いします。
0859デフォルトの名無しさん
2007/07/12(木) 22:59:52いくらなんでも酷すぎます
0860デフォルトの名無しさん
2007/07/12(木) 23:00:370861デフォルトの名無しさん
2007/07/12(木) 23:05:13その積の計算方法がわかりません。
L1=W
L2=W*W
・・・
となっているのですが、どうも普通に計算したのでないようで・・。
これはやはり一回の積は
min(Iij,Iik+Wkj)を一回ずつ行っていくしかないのでしょうか?
環境はC++、XPSP2期限は13日までです。
ん〜・・。min()を全部の値で繰り返して行うと・・。これはとんでもなく大変なことになるとおもうのですが・・。
0862デフォルトの名無しさん
2007/07/12(木) 23:10:48>>857は怪我した人の傷に塩を擦り付けて、苦しむ姿をニヤニヤ楽しむタイプだよ
いるよね、そんな香具師
0863デフォルトの名無しさん
2007/07/12(木) 23:21:50しつこいけど少し同情したかな
0864デフォルトの名無しさん
2007/07/12(木) 23:31:540865デフォルトの名無しさん
2007/07/12(木) 23:33:110866デフォルトの名無しさん
2007/07/12(木) 23:35:230867デフォルトの名無しさん
2007/07/12(木) 23:44:02誰でもいいので教えてください
0868デフォルトの名無しさん
2007/07/12(木) 23:46:28この板の新入りだがやってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4604.c
1+1を入力すると 2を出力する。同様に-*/にも対応した
未熟者だから突っ込みどころ満載だと思うが
その辺はこの板の住人に任せる
0869868
2007/07/12(木) 23:50:29環境がWindows+VC6.0なんで
Linuxで不都合があったら自己解決よろ
0870デフォルトの名無しさん
2007/07/13(金) 00:08:02ありがとうございます。
早速試してみます
0871デフォルトの名無しさん
2007/07/13(金) 00:37:00の質問は無視してください。
自己解決しました。
0872デフォルトの名無しさん
2007/07/13(金) 01:06:51以前オレが作った電卓。
http://cm.xrea.cc/thread/program_004.html#R814
四則演算、括弧のネスト、三角関数まで対応している。
0873デフォルトの名無しさん
2007/07/13(金) 01:15:17で>>872の後に、さらにいろいろ拡張してみたのがこれ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4605.txt
四則演算、括弧のネスト、ビット演算、論理演算、数学関数、三角関数、
順列、階乗、組み合わせ、piとeは定数、mは前回結果。
ただ、これ、何かの演算をやろうとすると、
優先順位が違っちゃったんだよな…。
括弧をつけずにビット演算と論理演算を混ぜると駄目だったような気がする。
まぁ、コンパイラじゃないので、それくらいは勘弁してくれ。
0875デフォルトの名無しさん
2007/07/13(金) 01:51:52適当なもんでテストするのつくりゃいいんでねぇの?
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;
}
コンパイルすらしてないけど。
0876371
2007/07/13(金) 01:57:39【LIBCD.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です
Debug/sub1.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー】
ってエラーが出てできないです。。。
0877デフォルトの名無しさん
2007/07/13(金) 01:59:20本当にありがとうございます
0879デフォルトの名無しさん
2007/07/13(金) 02:04:40コンパイルしてみたけど、通ったよ。
プロジェクトの始め方とかでまちがってね?
VCマスターじゃないんで細かい指摘はできね。
win32 Console Applicationで作ったのかい?
0880371
2007/07/13(金) 02:23:03最近windowsプログラムの課題ばかりだったから
win32 Applicationでやってました。
win32 Console Applicationでやったら通りました。
夜遅くありがとうございました。
0881デフォルトの名無しさん
2007/07/13(金) 02:45:26[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つです。宜しくお願いします。
0882デフォルトの名無しさん
2007/07/13(金) 03:12:50ちょっと時間があるから簡単なものならやれるぞ
0883デフォルトの名無しさん
2007/07/13(金) 03:39:43値を変える場合は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;
}
0884デフォルトの名無しさん
2007/07/13(金) 08:04:10ありがとう
出来れば割り算をdo文とfor文とwhile文辺りでやるやり方も知りたい
0885デフォルトの名無しさん
2007/07/13(金) 10:12:180886デフォルトの名無しさん
2007/07/13(金) 10:20:450887デフォルトの名無しさん
2007/07/13(金) 11:06:300888デフォルトの名無しさん
2007/07/13(金) 11:08:12for文で-1とかを直しつつ桁下がりしつつ
そのfor文をWhileとdoでループさせて何回引けたかをカウントしつつ
whileの中身は配列の中身が全て0以下になったらって感じかな
0889デフォルトの名無しさん
2007/07/13(金) 11:32:52ある程度汎用的にって考え出したらめんどそうだな。
0890デフォルトの名無しさん
2007/07/13(金) 11:33:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4606.txt
0891デフォルトの名無しさん
2007/07/13(金) 11:35:17typedef 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);
}
0892デフォルトの名無しさん
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;
}
}
0893デフォルトの名無しさん
2007/07/13(金) 13:06:39<<659.660さん
本当にありがとうございます!o(_ _)o
0894デフォルトの名無しさん
2007/07/13(金) 13:12:10>>446
よろしくお願いしますm(_ _)m
0895デフォルトの名無しさん
2007/07/13(金) 13:31:55[2] 問題文:
テキストファイルに書かれたランダムに配列された文字列を読み込み、
アルファベット順にソートして別のテキストファイルに出力するプログラムを作成せよ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: [2007年7月23日12:00まで]
[5] その他の制限: とくになし
よろしくおねがいします
0896デフォルトの名無しさん
2007/07/13(金) 13:44:28[2] 問題文:LU分解による連立方程式の解法のプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition
[3.3] 言語: C言語
[4] 期限: 2007年07月15日まで
[5] その他の制限:特になし
どうかよろしくおねがいいたします
0897デフォルトの名無しさん
2007/07/13(金) 14:42:180898デフォルトの名無しさん
2007/07/13(金) 14:43:25do{
aの配列から引いたりするfor文(省略
m++;
}while(a[0] && a[1] && a[2] && a[3] && a[4] <= 0);
>>888を見てこんな感じかなと思ったけどwhileが違うっぽい、もうだめぽ
0899デフォルトの名無しさん
2007/07/13(金) 15:14:23#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;
}
0900デフォルトの名無しさん
2007/07/13(金) 15:28:500901デフォルトの名無しさん
2007/07/13(金) 16:42:59>>586-587の方がしてくれてるんでは?
0902デフォルトの名無しさん
2007/07/13(金) 17:15:44週給(小数点以下を切り捨てた整数値)が以下の各範囲に該当する販売員の人数を求めるプログラムを書け。ただし、人数カウンタの配列を使うこと。
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ドル以上
よろしくお願いします。
0903デフォルトの名無しさん
2007/07/13(金) 18:05:03[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] その他の制限:できるだけ複雑ではなく簡単な構造にしてください。
どうかよろしくおねがいいたします
0904デフォルトの名無しさん
2007/07/13(金) 18:13:13>>638ってことらしいんだぜ、多分
0905デフォルトの名無しさん
2007/07/13(金) 18:15:24問題の意味がわからない
何を入力して、何を出力するのか詳しく
0906デフォルトの名無しさん
2007/07/13(金) 18:17:26[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] その他の制限: 特にありません
0907デフォルトの名無しさん
2007/07/13(金) 18:17:35ここがわかりやすくていい感じ
http://www2.ee.knct.ac.jp/el/E4/H15-E406/lu1.html
0908デフォルトの名無しさん
2007/07/13(金) 18:20:01途中で送信してしまいました
よろしくお願いします
0909デフォルトの名無しさん
2007/07/13(金) 18:38:11販売員の人数,各販売委員の売り上げは自由に設定してよい。各販売員の売り上げの入力データはプログラム内に埋め込む方式でもキーボードから入力する方式でも良い。
一応問題文全部です。
わかりましたらお願いします。
0910デフォルトの名無しさん
2007/07/13(金) 18:52:30なぜ?
#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;
}
0911デフォルトの名無しさん
2007/07/13(金) 18:56:230912デフォルトの名無しさん
2007/07/13(金) 18:57:43#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;
}
0913デフォルトの名無しさん
2007/07/13(金) 18:58:40謝謝
あっさり解決しました
0914デフォルトの名無しさん
2007/07/13(金) 18:59:580915デフォルトの名無しさん
2007/07/13(金) 19:05:570916903
2007/07/13(金) 19:19:30解がx=1.5, -1.6になると思うんですがどうしてでしょうか?a=0, b=2, c=3の時はできるんですが...すみません
0917デフォルトの名無しさん
2007/07/13(金) 19:22:350918デフォルトの名無しさん
2007/07/13(金) 19:23:35ゴメン、まちがえたw
解の公式を考えれば解決できるから
0919デフォルトの名無しさん
2007/07/13(金) 19:41:08こんな感じでいいの?
#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;
}
}
0920デフォルトの名無しさん
2007/07/13(金) 19:41:56printf("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);
}
0921デフォルトの名無しさん
2007/07/13(金) 19:47:37#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;
}
09231
2007/07/13(金) 20:22:05[2] 問題文(含コード&リンク): 文字列を入力し,それを逆から表示するプログラムを作成せよ.
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 最新版
[3.3] 言語: C
[4] 期限:2007年7月21日
[5] その他:以前ここで教えてもらったプログラム↓
09242
2007/07/13(金) 20:22:50int 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;
}
09253
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
こんなエラーが出てきます。
何がおかしいのでしょうか?
0927デフォルトの名無しさん
2007/07/13(金) 20:34:16おかしい所は無いはず
もっかいコンパイルしてみ
0928デフォルトの名無しさん
2007/07/13(金) 20:44:15#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;
}
0929デフォルトの名無しさん
2007/07/13(金) 21:27:33それってダメですか?
0930デフォルトの名無しさん
2007/07/13(金) 21:29:120931デフォルトの名無しさん
2007/07/13(金) 21:29:34[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] その他の制限: なし
お願いします
0932898
2007/07/13(金) 21:30:32int 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の中身を解決してくれる方はいませんか?
0933デフォルトの名無しさん
2007/07/13(金) 21:31:55> m++;
> }while(a[0] && a[1] && a[2] && a[3] && a[4] <= 0);
> printf("\n%d", m);
>}
スマン、この部分はちょっとしたミスだ
0934デフォルトの名無しさん
2007/07/13(金) 21:37:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4611.txt
愚鈍に書いてみた。引数なしで起動すれば課題の解答を出力、
4桁の2進数を引数で渡せば計算してくれるかも。
エラーチェックはしていないから、無謀な引数を渡すとどうなるかは保証外
0935sage
2007/07/14(土) 01:00:44[2] 問題文:ニュートン法による高次方程式の解法のプログラム作成
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual stdio 2003
[3.3] 言語: C言語
[4] 期限: 2007年07月16日
[5] その他の制限:特になし
よろしくお願い致します。
0936デフォルトの名無しさん
2007/07/14(土) 03:03:26この内容では誰も回答しようがないのでは
0937デフォルトの名無しさん
2007/07/14(土) 05:19:010938デフォルトの名無しさん
2007/07/14(土) 06:40:17なんか同じ講義受けてる匂いがぷんぷんする
0939デフォルトの名無しさん
2007/07/14(土) 07:00:520940デフォルトの名無しさん
2007/07/14(土) 07:01:430941デフォルトの名無しさん
2007/07/14(土) 07:04:230942デフォルトの名無しさん
2007/07/14(土) 09:25:14それでもかけないのかよ(´,_ゝ`)プッ
どこまで書けてどんなエラーがでたとかも書かないのかよ(´,_ゝ`)プッ
0943デフォルトの名無しさん
2007/07/14(土) 10:39:23[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 改行が多すぎて、乗せられなかったためこんな形になりますた。すみません。宜しくお願いします。
0945デフォルトの名無しさん
2007/07/14(土) 11:07:42できた。
上の配列に問題と答えを書くこと。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4614.txt
0946デフォルトの名無しさん
2007/07/14(土) 11:47:15お願いします
0947デフォルトの名無しさん
2007/07/14(土) 12:03:25訂正だけ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4615.c
0948デフォルトの名無しさん
2007/07/14(土) 12:08:40マルチ必死だな(´,_ゝ`)プッ
0949デフォルトの名無しさん
2007/07/14(土) 12:11:28管理人が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。
↓↓↓
【ブログ 〜即会い道】http://deaiload.blog109.fc2.com/
0950デフォルトの名無しさん
2007/07/14(土) 14:05:47コピペしてちょっと直すだけじゃね?
テストはしてない(つーか仕様知らないから)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4617.txt
0951デフォルトの名無しさん
2007/07/14(土) 14:07:15[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] その他の制限:特になし
よろしくおねがいします。
0952デフォルトの名無しさん
2007/07/14(土) 14:13:32リンクが間違ってる
0953デフォルトの名無しさん
2007/07/14(土) 14:15:53リンク先間違ったので作り直させて頂きます。
[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] その他の制限:特になし
よろしくおねがいします。
0954デフォルトの名無しさん
2007/07/14(土) 14:27:35問1〜8の問題文は?
0955デフォルトの名無しさん
2007/07/14(土) 14:31:441) 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
0956デフォルトの名無しさん
2007/07/14(土) 14:43:34問題文に誤りがある。それにこれだと毎回同じ結果になるぞ。
//#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
0957デフォルトの名無しさん
2007/07/14(土) 15:20:43956>>問題文のご指摘ありがとうございます。
また、他の皆さんも自分のためにご協力ありがとうございます。
0958881
2007/07/14(土) 15:35:04ありがとうございます。
でも少し言葉足らずだったみたいで申し訳ないです。
main()の()の中も何も使っちゃいけないんです。
お時間があればまたよろしくお願いします。
0959デフォルトの名無しさん
2007/07/14(土) 16:56:10890ではないが、これではどうして欲しいのかよく分からない。
0960819
2007/07/14(土) 17:18:39本当にありがとうございます。
助かりました。
0961デフォルトの名無しさん
2007/07/14(土) 17:29:06まさかとは思うけど、voidってのがダメってこと?
プログラムの意味わかってる?
0962デフォルトの名無しさん
2007/07/14(土) 18:26:05[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] その他の制限: とくになし
0963962
2007/07/14(土) 18:26:510964デフォルトの名無しさん
2007/07/14(土) 18:55:33読込むファイル名は拡張子無しでプログラムに渡すの?
それとも自力で拡張子を分離して出力ファイル名を生成?
0965962
2007/07/14(土) 19:18:36その辺りに関しては特に指定がなかったので、簡単なほうでいいと思います
0966デフォルトの名無しさん
2007/07/14(土) 19:19:25テキストファイルだから.txt決めうちでいいんじゃね
0967デフォルトの名無しさん
2007/07/14(土) 20:07:02[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] その他の制限:自分で考えてみましたがよくわかりませんでした・・・
よろしくお願いします
0968デフォルトの名無しさん
2007/07/14(土) 20:47:01http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4619.txt
0969デフォルトの名無しさん
2007/07/14(土) 20:57:33>>932のおかしな所を正してくれないか?
0970デフォルトの名無しさん
2007/07/14(土) 21:59:19ありがとうございます!
0971デフォルトの名無しさん
2007/07/14(土) 22:51:25かなり直さないといけないな。
「商をmに格納する」でいいの?
0973デフォルトの名無しさん
2007/07/14(土) 23:04:47[2] 問題文(含コード&リンク):
キーボートからs1文字列を入力して、s1文字列を文字列s2にコピーしてから
表示するプログラムを作成よ。(条件はstrcpy関数を使わないで自作関数でコピーすること)
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 7月18日まで
お願いします
0974デフォルトの名無しさん
2007/07/14(土) 23:14:55#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;
}
0975デフォルトの名無しさん
2007/07/14(土) 23:32:42ありがとうございます、早いです、好きです付き合ってください。
0976デフォルトの名無しさん
2007/07/14(土) 23:34:53そう
>>972
自分の宿題にも使える気がしたんだ、でもスレ違いなら仕方がない
0977デフォルトの名無しさん
2007/07/14(土) 23:42:11851への回答と言う事で考えてみる
0978デフォルトの名無しさん
2007/07/15(日) 00:21:22〜のエラーがでてわからないとかいわないの?
本みればすぐのっている問題が多すぎる。
0980デフォルトの名無しさん
2007/07/15(日) 00:30:59#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;
}
0981デフォルトの名無しさん
2007/07/15(日) 04:49:38問題文これだけ?
環境は?
こんなん何もなしでやるのなんか無理だろ
0982デフォルトの名無しさん
2007/07/15(日) 07:31:40851の分まで有難うといっておく
そのソースと睨めっこしながら宿題を頑張ることにするよ
0983デフォルトの名無しさん
2007/07/15(日) 08:49:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4623.txt
環境がないのでコンパイルしていない。
また共有メモリ、セマフォの削除もしていない。
0984デフォルトの名無しさん
2007/07/15(日) 09:55:51[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] その他の制限:特になし
よろしくお願いいたします。
0985デフォルトの名無しさん
2007/07/15(日) 10:04:42問題をそのまま載せただけじゃなんだかよくわからないよ
予備知識が無いんだから
gets_s()は何をする関数?
0986デフォルトの名無しさん
2007/07/15(日) 10:15:08”getsを安全に使うようにする”ための関数だろw
char *gets_s(char *buffer, size_t sizeInCharacters);
hoge_sとか、_sがついてるやつは、だいたいVSの独自もの
>>984もあまり使わないほうがいいよ
0987デフォルトの名無しさん
2007/07/15(日) 10:15:430988デフォルトの名無しさん
2007/07/15(日) 10:21:160989デフォルトの名無しさん
2007/07/15(日) 10:25:56まず行末コメントをタブで揃えるのやめろ。環境によって幅が変わる。
タブは行頭の、意味的なインデント(や段落)を示すときだけ使え
0990デフォルトの名無しさん
2007/07/15(日) 10:37:53ありがと、実行はできた
あとさ、判定は積だけでいい気がするけど
0991984
2007/07/15(日) 11:34:34これから気をつけていこうと思います。
>>988
続きで、その前にあった「リプレイできるようにしろ」って言うのはどうにかできたんですが
その次に今回の問題で、碁盤スパイラルです。
>>989
了解しました。ご指摘ありがとうございます。
0992デフォルトの名無しさん
2007/07/15(日) 15:22:38[2] 問題文:
二つの文字列のポインタ pa, pb を引数に取り
pa の指す文字列に対する回文(逆さ文字列)を
pbの指す先に格納する関数 mkrevstr()を書け.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin gcc
[3.3] 言語: C
[4] 期限: [07月16日まで]
お願いします。
0993デフォルトの名無しさん
2007/07/15(日) 15:43:30{
char *p = pa;
while(*p) p++;
while(p!=pa) *pb++ = *(--p);
*pb = '\0';
}
0994デフォルトの名無しさん
2007/07/15(日) 15:44:36{
char *ch = pa;
while(*pb++ = *pa++);
pb--;
pa-=2;
for(;ch != pa--;) *pb++ = *pa;
*pb = '\0';
return;
}
0995デフォルトの名無しさん
2007/07/15(日) 15:48:140996デフォルトの名無しさん
2007/07/15(日) 15:51:16ありがとうございました。
0997デフォルトの名無しさん
2007/07/15(日) 15:56:11>993が逆さ文字列で>994が回文だけど、どっちが正しいんだろ。
0998デフォルトの名無しさん
2007/07/15(日) 16:35:450999デフォルトの名無しさん
2007/07/15(日) 16:37:481000デフォルトの名無しさん
2007/07/15(日) 16:38:2310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。