C/C++の宿題を片付けます 77代目
■ このスレッドは過去ログ倉庫に格納されています
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【前スレ】
C/C++の宿題を片付けます 76代目
http://pc8.2ch.net/test/read.cgi/tech/1162771475/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0596デフォルトの名無しさん
2006/11/29(水) 00:56:44そのエラー直して解けたんならイインジャマイカと言ってみるt。
0598593
2006/11/29(水) 01:11:41あ、詳しく説明されてますね。課題が完成しても、これからも使いそうなの
で、そこで少し勉強しようと思います。ありがとうございます。
>>595
>>581さんのも台形公式だったのですか。
>>596
まだ、完成してないです。
>>597
いえいえ。ありがとうございます。
#include<stdio.h>
#include <math.h>
#define M_PI 3.14
double f(double x) {
return sin(2*x)*cos(x); }
double f_integral(double a, double b, long n) {
double h, ai;
double ret=0.0;
long i=20; h=(b-a)/n;
for(i=0;i<=n;i++) {
ai=a+i*h; ret+=f(ai); }
ret-=(f(a)+f(b))/2; ret*=h;
return ret; }
int main(void) {
printf("%f<x<%f %d %f\n", 0., M_PI/4, n, f_integral(0., M_PI/4, n));
return 0; }
修正してみて、コンパイルしたらメイン関数の中でnが定義されてません、
と表示されたので、メイン関数で
int n;
を追加したら、コンパイルは通ったのですが一つしか表示されません。
これは、for文で20回表示するようにしたら完成、ということなのでしょうか?
0599581
2006/11/29(水) 01:22:36やり直し。台形公式。
#include <math.h>
#include <stdio.h>
#define n 20
double f(double x) {return sin(2 * x) * cos(x);}
double trapezoidal(double a, double b, int d) {
double s = 0., h = (b - a) / d; int i;
for (i = 1; i < d; ++i) s += f(a + i * h);
s *= 2; s += f(a) + f(b); s *= h / 2;
return s;
}
int main(void) {
printf("積分範囲:%f...%f, 刻み数:%d, 積分結果:%f\n", 0., M_PI / 4, n, trapezoidal(0, M_PI / 4, n));
return 0;
}
0600デフォルトの名無しさん
2006/11/29(水) 01:36:45#include <stdio.h>
typedef int T;
void swap(T* x, T* y) {T temp = *x; *x = *y; *y = temp;}
void arr_cycle(T* arr, unsigned int len) {
unsigned int n = 1;
T *first, *last;
n = len - n % len;
for(first = arr, last = arr + n; ; ) if (first == last || first == --last) break; else swap(first++, last);
for(first = arr + n, last = arr + len; ; ) if (first == last || first == --last) break; else swap(first++, last);
for(first = arr, last = arr + len; ; ) if (first == last || first == --last) break; else swap(first++, last);
}
void print_array(int* t, unsigned int n) {
unsigned int i;
for(i = 0; i < n; i++) printf("%d", t[i]);
printf("\n");
}
int main(void) {
int arr[] = {0,1,2,3};
arr_cycle(arr, sizeof(arr) / sizeof(arr[0]));
print_array(arr, sizeof(arr) / sizeof(arr[0]));
return 0;
}
0603デフォルトの名無しさん
2006/11/29(水) 01:59:19Sleipnir利用者なんかは本当に一部機能を制限されてるからな
知らずにGoogleフル機能だと思ってたら泣ける
0604デフォルトの名無しさん
2006/11/29(水) 02:54:15void arr_cycle(int *arr, int len)
{
int i, temp;
temp = a[len-1];
for(i=len-1;i>0;i--) arr[i] = arr[i-1];
a[0] = temp:
}
0605デフォルトの名無しさん
2006/11/29(水) 03:54:26[2] 問題文:0から9999までの整数をキーボードから入力し、それが何桁であるかを
表示するプログラムを書く。
[3] 環境
[3.1] OS:WindowsXP
[3.2] lcc
[3.3] 言語:C
[4] 期限:2006年11月29日18:00まで
どうかよろしくお願いします。
0606デフォルトの名無しさん
2006/11/29(水) 04:22:16#include<stdio.h>
#include<math.h>
void main(){
int x;
scanf("%d",&x);
printf("%d桁\n",(int)log10(x)+1);
}
0607デフォルトの名無しさん
2006/11/29(水) 04:38:10#include <stdio.h>
int main(void)
{
int i, n;
scanf("%d", &n);
for(i=0; n; i++, n/=10);
printf("%d桁", i);
return 0;
}
0608デフォルトの名無しさん
2006/11/29(水) 08:27:55printf("%d桁\n", n); の間違い?
あとn/=10だと一桁少なく出るのでは。
0611デフォルトの名無しさん
2006/11/29(水) 09:41:34ありがとうございます
0612デフォルトの名無しさん
2006/11/29(水) 10:21:34[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3051.txt
この整数値の昇順リストを作成するプログラムを、指定データ(下記deletedata)と同じデータを持つセルをすべて
消去する関数void DeleteAlist(struct LIST **ptr, int deletedata)を作成せよ。
指定データを持つセルの先頭のものを消去する関数を参考にせよ
void Deletelist(struct LIST **ptr, int deletedata){
if((*ptr)==NULL){
printf("no such data \n");
}else if((*ptr)->data == deletedata){
struct LIST *tmp;
printf("data found\n");
tmp=(*ptr)->nextptr;
free(*ptr);
*ptr=tmp;
}else DeleteList(&((*ptr)->nextptr),deletedata);
}
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 今日夜
[5] その他の制限:
お願いします。。
0613デフォルトの名無しさん
2006/11/29(水) 10:47:31>>>応募者が賞品の数より少ない場合、
>>>1.A君、B君、C君でも当選する?
>当選しません
0615デフォルトの名無しさん
2006/11/29(水) 11:14:22void DeleteAlist( struct LIST** ppList, int iDelKey )
{
LIST** ppCur;
LIST* pTmp;
ppCur = ppList;
while( *ppCur ) {
if( (*ppCur)->data == iDelKey ) {
pTmp = (*ppCur)->nextptr;
free( (void*)*ppCur );
*ppCur = pTmp;
}
else {
ppCur = &((*ppCur)->nextptr);
}
}
}
0616615
2006/11/29(水) 11:17:12void DeleteAlist( struct LIST** ppList, int iDelKey )
{
LIST* pTmp;
while( *ppList ) {
if( (*ppList)->data == iDelKey ) {
pTmp = (*ppList)->nextptr;
free( (void*)*ppList );
*ppList = pTmp;
}
else {
ppList = &((*ppList)->nextptr);
}
}
}
0617598
2006/11/29(水) 13:10:53もう提出したので良いのですが疑問に思ったので質問です。
刻み数を10とか少し変えただけで積分結果が結構変わりますが
こんなもんなんでしょうか?
0618デフォルトの名無しさん
2006/11/29(水) 13:12:330619デフォルトの名無しさん
2006/11/29(水) 13:14:080620617
2006/11/29(水) 14:30:04これっておかしくないですか?
0621デフォルトの名無しさん
2006/11/29(水) 14:53:08ドから入力させ,C = A×B を計算して画面表示するプログラムを作成しなさい.ただし,k,m,
n については,k≠m,m≠n,k≠n,k≧2,m≧2,n≧2 を満たす任意の値を設定してよい
分かる方、よろしくお願いします。
0622デフォルトの名無しさん
2006/11/29(水) 15:11:25http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3052.c
0623デフォルトの名無しさん
2006/11/29(水) 16:02:20同一人物かのう
0624デフォルトの名無しさん
2006/11/29(水) 16:05:53間違ってるのは>521だから
0625デフォルトの名無しさん
2006/11/29(水) 16:12:41>>610
0626デフォルトの名無しさん
2006/11/29(水) 16:20:16調べるプログラムを作成せよ。1行の文章中にキーワードが含まれているときには、その位置を表示します。
例えば、キーワードが"calculus"のとき、次のように表示します。
The development of calculus is a good example.
^
また、キーワードが含まれていない場合には、"not found"を表示します。
これをC言語でプログラミングってどうやるんですか?
三日かけてもわかりませんでした
0627デフォルトの名無しさん
2006/11/29(水) 16:21:57>>1
0628デフォルトの名無しさん
2006/11/29(水) 16:54:50関数の使い方の授業なら
strstr() (#include <string.h>)
を使う。
アルゴリズムの授業ならBM法でも実装しろ
0629デフォルトの名無しさん
2006/11/29(水) 17:09:06調べるプログラムを作成せよ。1行の文章中にキーワードが含まれているときには、その位置を表示します。
例えば、キーワードが"calculus"のとき、次のように表示します。
The development of calculus is a good example.
^
また、キーワードが含まれていない場合には、"not found"を表示します。
[3]C言語(emacs)
[4]2006年11月30日
[5]ポインターまで習ってます
0630デフォルトの名無しさん
2006/11/29(水) 17:13:15http://pc8.2ch.net/test/read.cgi/tech/1164079451/628
0631デフォルトの名無しさん
2006/11/29(水) 17:22:42[2]問題が長かったのでこちらに
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3053.txt
[3]言語はCでWinとLinux両方です
[4]11月30日午前11時
[5]配列やポインタや構造体といった基礎部分は一応一通りやってます
よろしくお願いします
0632629
2006/11/29(水) 17:23:450633デフォルトの名無しさん
2006/11/29(水) 17:29:19#include <stdio.h>
int __________(char *buf,char *w)
{
int i,c;
for (c=0;*buf != '\0';buf++,c++){
for (i=0;*(buf + i) == *(w + i);i++){
if (*(w + i + 1) == '\0'){
return c;
}
}
}
return -1;
}
int main(void)
{
char buf[256],word[64];
int i,j;
gets(buf);
gets(word);
if ((i = __________(buf,word)) > -1){
for (j=0;j < i;j++){
putchar(' ');
}
printf("^\n");
}else{
printf("not found.\n");
}
return 0;
}
0634デフォルトの名無しさん
2006/11/29(水) 17:46:19[2] テキストファイルに書いた英文を読み込み、単語の長さを調べてその頻度を調べるプログラム
を作る。ただし空白、タブ、改行は文字列に含まず、ピリオド、コンマは0文字とする。
(20文字以上は1まとめとする)
[例] 0文字 1文字 2文字 … 20文字以上
3 4 6 0
[3] 環境:Windows XP
言語:C
[4] 期限: ([2006年11月30日9:00まで]
[5] if for while文 1、2次配列位しか習ってないです。それ以外も使っていいことに
なってますがまだ初心者なのでできるだけ簡単なものにしていただけると助かります。
#include<stdio.h>
#include<ctype.h>
int main(void){int c,i,j=0;int res[21];
for(i=0;i<21;i++){res[i]=0;}
while((c=getchar())!=EOF){if(c=='.'||c==','){res[0]++;j=0;}
else{if(j==0){if(isalpha(c)){j=1;}else;}else{if(isalpha(c)){j++;}
else {if (j<20){res[j]++;} else {res[20]++;}j=0;}}}}
for(i=0;i<21;i++){printf("%-2d文字:%-4d回\n",i,res[i]);}
return 0;}
0637デフォルトの名無しさん
2006/11/29(水) 18:21:53[2] 問題文(含コード&リンク):jinkou.txtのデータを用いる。キーボードで範囲を入力し、その範囲内の人口の都道府県名を出力するプログラムをかけ。
jinkou.txtは
北海道 5659
青森 1462
岩手 1402
:
沖縄 1349
となっています。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: lcc
[3.3] 言語: C
0638デフォルトの名無しさん
2006/11/29(水) 18:26:36県名と数字を区切っているものは何?
とかこういうやりとりをするのがめんどくさいからjinkou.txtどこかにうぷれカス
0639デフォルトの名無しさん
2006/11/29(水) 18:52:42[2] 問題文: 一次配列(要素はint型、要素数は30)に格納されている要素を値の小さい順に並べ替える。
配列の初期値は以下のものを使う。
{636, 80, 246, 766, 881, 383, 244, 671, 503, 331,
444, 723, 916, 287, 492, 719, 476, 187, 704, 115,
774, 334, 618, 625, 582, 938, 427, 831, 899, 909}
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:(gcc 3.4 VC 6.0等)
[3.3] 言語:C++
[4] 期限:12/1 Fri
[5] その他の制限:一応アルゴリズムは指定されていて以下の通りです。
データ構造
ソート対象の配列(要素のデータ型は整数型。要素数は定数N)
ソート済み位置(整数型)
現在位置(整数型)
最小値(整数型)
最小値の位置(整数型)
アルゴリズム
1. ソート済み位置を、配列先頭の要素番号-1から1ずつ増やしながら、 配列末尾の要素番号-1になるまで以下の処理を繰り返す。
1-1. ソート済み位置+1の位置に格納されている要素を最小値とし、その 値と位置を保存する。
1-2. 現在位置をソート済み位置+2から配列の末尾まで変えながら以下の 処理を繰り返す。
1-2-1. 現在位置の要素が最小値よりも小さいならば、その値と位置 を最小値と最小値の位置に代入する。
1-3. 最小値の要素とソート済み位置+1の要素を交換する。
2. 配列の各要素を表示する。
よろしくお願いします
0640デフォルトの名無しさん
2006/11/29(水) 19:22:24つれづれなるままに
#include <stdio.h>
#define N 30
void ssorti(int *buf,int n){int i,j,k,tmp;for(i=0;i<n-1;i++)
{k=i;for(j=i+1;j<n;j++)if(buf[k]>buf[j])k=j;if(k!=i){tmp=buf[i];buf[i]=buf[k];buf[k]=tmp;}}}
int main(){int i;int array[N]=
{636, 80, 246, 766, 881, 383, 244, 671, 503, 331,
444, 723, 916, 287, 492, 719, 476, 187, 704, 115,
774, 334, 618, 625, 582, 938, 427, 831, 899, 909};
ssorti(array,N);for(i=0;i<N;i++)printf("%d ",array[i]);return 0;}
0641599
2006/11/29(水) 19:59:43おかしくはなりませんでしたよ?
積分範囲:0.000000...0.785398, 刻み数:10, 積分結果:0.429572
積分範囲:0.000000...0.785398, 刻み数:20, 積分結果:0.430616
積分範囲:0.000000...0.785398, 刻み数:100000, 積分結果:0.430964
Maximaによる結果:integrate(sin(2*x)*cos(x), x, 0, %pi/4);→2/3-sqrt(2)/6==0.43096440627115
0642546
2006/11/29(水) 20:00:44#include <stdio.h>
#include <math.h>
#include <float.h>
#define f(x) ((x)-cos(x))
void main(){
double x=1,xBefore=0,a=0,b=1,fa=f(a),fb=f(b),fx=f(x);
while(fx!=0&&fabs(x-xBefore)>DBL_EPSILON){
xBefore=x;
x=b+(b-a)*fb/(fa-fb); //変更箇所
fx=f(x);
if(fa*fx<0) {
b=x;
fb=fx;
}
else {
a=x;
fa=fx;
}
}
printf("x=%.15fの時f(x)=%.15f\n",x,f(x));
}
0643デフォルトの名無しさん
2006/11/29(水) 20:01:24ありがとうございます。
動作について解説して頂けると今後のために役に立ちます。お願いできませんか?
0644デフォルトの名無しさん
2006/11/29(水) 20:32:13[2] 問題文: 数字を2つ入力し、総積を計算しなさい。
例) 2と6の場合 2*3*・・・*6
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC++2005
[3.3] 言語: C
[4] 期限: 出来れば今日中に・・・
宜しくお願いします。
0645634
2006/11/29(水) 20:35:33ありがとうございます。このプログラムなら何をやっているかがなんとか分かるので助かります。
でもこれだと読み込むテキストファイルの指定がないので動かないのですが…
0646デフォルトの名無しさん
2006/11/29(水) 20:46:19多分リダイレクトしろって事じゃない?
後、いろいろアレなコードだから(英単語に続いて.や,があると英単語がカウントされない、とか)提出するには気を付けて。
0647デフォルトの名無しさん
2006/11/29(水) 20:48:08#include <stdio.h>
void main(){
int a,b,di=1,c=1;
printf("ちんこ\n");
scanf("%d",&a);
printf("まんこ\n");
scanf("%d",&b);
if(a>b) di=-1;
for(int i=a;i*di<=b*di;i+=di) c*=i;
printf("うんこ%d\n",c);
}
0648645
2006/11/29(水) 20:55:42アドバイスありがとうございます。,や.の問題も自分でも直せるようもう少し頑張ってみます。
0649デフォルトの名無しさん
2006/11/29(水) 21:27:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3054.txt
まあ、悪い例ということで。
0650デフォルトの名無しさん
2006/11/29(水) 21:29:29#include<stdio.h>
int keisan(int a,int b);
main(){
int num1,num2;
printf("初めの数字を入力してください");
scanf("%d",&num1);
printf("終わりの数字を入力してください");
scanf("%d",&num2);
printf("総積:%d",keisan(num1,num2));
}
int keisan(int a,int b){
int i, ans=a;
for(i=a+1; i<=b; i++){
ans *= i;
}
return ans;
}
0651デフォルトの名無しさん
2006/11/29(水) 21:30:50C++でお願いできませんか?
0652151
2006/11/29(水) 21:30:590653デフォルトの名無しさん
2006/11/29(水) 21:39:44N0:192.168.0.0/24
N0:192.168.1.0/24
N0:192.168.3.0/24
があり、二つのルータR1、R2で接続されている。
R1はN0,N3に接続しており、それぞれネットワークインターフェースne0に
IPアドレス192.168.0.130、同gifに同192.168.3.1が与えられている。
この時、R2の経路表は例えば以下のように表示できる。
ただし、メトリック(Metric)が1である経路には、
データリンク層を用いて通信可能であることを示すものとする。
Network Destination Netmask Gateway Interface Metric
192.168.0.0 255.255.255.0 192.168.3.1 gif2 2
192.168.1.0 255.255.255.0 192.168.1.66 ep0 1
192.168.3.0 255.255.255.0 192.168.3.2 gif2 1
問1
R1とR2に距離ベクトル型経路制御を導入して動作させることを考える。
R1の経路表を示せ。
0654デフォルトの名無しさん
2006/11/29(水) 21:43:02>N0:192.168.0.0/24
>N0:192.168.1.0/24
>N0:192.168.3.0/24
三つともN0なんですか?
>R1はN0,N3に接続しており
N3が未定義です。
あとスレ違いです。
0655デフォルトの名無しさん
2006/11/29(水) 21:49:26コンパイルしてみれば分かると思うが、>>640はそのままで正しいC++プログラムだ。
俺の趣味でC++風に書き直すとこんな感じ。
#include <algorithm>
#include <iostream>
const int N = 30;
void ssorti(int *buf, int n)
{
for(int i = 0; i < n - 1; i++)
{
int k = i;
for(int j = i + 1; j < n; j++)
if(buf[k] > buf[j])
k = j;
std::swap(buf[i], buf[k]);
}
}
int main()
{
int array[N] = { 636, 80, 246, 766, 881, 383, 244, 671, 503, 331,
444, 723, 916, 287, 492, 719, 476, 187, 704, 115,
774, 334, 618, 625, 582, 938, 427, 831, 899, 909
};
ssorti(array, N);
for(int i = 0; i < N; i++)
std::cout << array[i] << " ";
std::cout << "\n";
}
0656620
2006/11/29(水) 21:52:31実際は
for (i = 1; i < d; ++i) {
s += f(a + i * h);
}
s *= 2;
s += f(a) + f(b);
s *= h / 2;
ですよね?
でも、自分は
for (i = 1; i < d; ++i) {
s += f(a + i * h);
s *= 2;
s += f(a) + f(b);
s *= h / 2;
}
としてました。
これが原因だったようです。
自分のミスなのに、おかしい等と文句言って申し訳ありませんでした。
0657655
2006/11/29(水) 21:58:00まあ、ループもたまには良いでしょう。
0658デフォルトの名無しさん
2006/11/29(水) 22:01:11自分も似たような宿題があるのでやってみましたがうまく動きません。一応プログラム貼りつけとくので
もし634さんがプログラムが完成してたら、どこが間違ってるか教えて下さい。
他の方でも分かる方がいらっしゃったらご指導お願いします。
#include <stdio.h>
#include <stdlib.h>
void main(void){
FILE *fp;
int c=0;
int d=0;
int freg[20];
(fp = fopen("infile.txt", "r")) == NULL;
while ((c = getc(fp)) != EOF) {
switch (c) {
case ' ': freg[d]++; d=0;
break;
case '\n':
break;
case '\t': freg[d]++; d=0;
break;
case ',' : freg[d]++; freg[0]++; d=0;
break;
case '.' : freg[d]++; freg[0]++; d=0;
break;
default: d++; }}
printf("ファイル名: infile.txt\n");
printf("%d ",freg[20]);
fclose(fp);
}
0659デフォルトの名無しさん
2006/11/29(水) 22:04:180660デフォルトの名無しさん
2006/11/29(水) 22:14:13>>650
有難うございました!
0661658
2006/11/29(水) 22:26:42早速fregは21にして、dが20以上の時はfreg[20]が+1なるように改良してみたんですが
やはり実行すると1245112という意味不明な数字がでるだけです…
もっと根本的なところ間違ってませんかね?
0662デフォルトの名無しさん
2006/11/29(水) 22:30:58数を数えたいなら0で初期化するべし。
0665658
2006/11/29(水) 23:45:30アドバイスありがとうございます。おかげで無事できました。
何か初歩的なこと忘れまくりでしたねort
でも659さんや662さんのおかげで凄く勉強になったと思います。
ほんとにありがとうございました。
0666616
2006/11/29(水) 23:46:08ちゃんと動いたかな?
解説しろって言われてもなぁ...当たり前のコードだからなぁ...
お前さんが疑問と思う点を書いてくれれば説明してやれるかも知れん。
0667デフォルトの名無しさん
2006/11/30(木) 00:11:53回答してる側にとっては当たり前すぎてどうわからんのかわからん場合はよくある。
質問してる側もどこが分からんのか分からんくらいに全体的にわからんのかもしれんが、
今後の役に立てようという気概があるくらいならもうちょっとつっこんだ質問をしてくれないと困ると思う。
0669デフォルトの名無しさん
2006/11/30(木) 00:42:46[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3055.txt
[3] 環境
[3.2] Visual Stdio 2003
[3.3] C++
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3056.txt
提出期限過ぎてて現在執行猶予期間。やばいって!ほんとやばいって!!
0670デフォルトの名無しさん
2006/11/30(木) 00:44:220671デフォルトの名無しさん
2006/11/30(木) 00:56:260672デフォルトの名無しさん
2006/11/30(木) 00:56:280673デフォルトの名無しさん
2006/11/30(木) 01:02:50ここまで来ると釣りにしか思えないな。
0674デフォルトの名無しさん
2006/11/30(木) 01:03:25俺の記憶が正しければ君でその問題を丸投げするのは
4人目なんだ
3人目なんかちゃんともう解答済みだと教えてやったのに
「教えてくれるのか教えてくれないのかハッキリしてください」
と逆切れしていたぞ
ひでえ学校だなwww
0675デフォルトの名無しさん
2006/11/30(木) 01:05:46俺のところはクローンがあったら
点数をクローンの数で割るとか言ってたけど
偶然同じになったらどうするのかね
ここで見たことある問題あったし
0676デフォルトの名無しさん
2006/11/30(木) 01:08:46>636のコードで This is a pen. を入力した時の実行結果
0 文字:1 回
1 文字:1 回
2 文字:1 回
3 文字:0 回
4 文字:1 回
pen(3文字)がカウントされていない。
if(c=='.'||c==','){の後にif(j)res[j<21?j:20]++;が必要。
0677デフォルトの名無しさん
2006/11/30(木) 01:09:23void initialize(int account[]) {
int i;
for (i = 0; i < 5; i++) {
account[i] = 0;
}
}
void daily_input(int account[]) {
char* hinmoku[] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク"};
int i;
for(i = 0; i < 5; i++) {
printf("%s :", hinmoku[i]);
scanf("%d", account + i);
}
}
void daily_output(int account[]) {
char* hinmoku[]={"りんご", "みかん", "イチゴ", "ナシ", "イチジク"};
int i;
for(i = 0; i < 5; i++) {
printf("%s :%d\n", hinmoku[i], account[i]);
}
}
0678デフォルトの名無しさん
2006/11/30(木) 01:26:13それだとinputがおかしくね?
という訳で前書いたのを手を入れてコピペ
rand()使ってるから適当に初期化してね
void initialize(int account[]){
for(int i=0;i<=4;i++) account[i]=0;
}
void daily_input(int account[]){
char* hinmoku[]={"りんご","みかん","イチゴ","ナシ","イチジク"};
int tmp;
for(int i=0;i<=4;i++){
printf("%s :",hinmoku[i]);
scanf("%d",&tmp);
account[i]+=tmp;
if(rand()%100==1) account[i]+=700
}
}
void daily_output(int account[]){
char* hinmoku[]={"りんご","みかん","イチゴ","ナシ","イチジク"};
for(int i=0;i<=4;i++){
printf("%s :%d\n",hinmoku[i],account[i]);
}
}
0679676
2006/11/30(木) 01:42:3930分待ってみたけど反応が無いな。もう寝ちゃったかな。
他にも指摘すると、if(j==0){の分岐(不要)とか、そもそもリダイレクトの指定じゃ無いだろ、とか。
まだ回答するには早いんじゃないかな。挑戦も大事だけどじっくり基礎を固めて力をつけてからでも遅くないと思うよ。
0680デフォルトの名無しさん
2006/11/30(木) 01:46:010681デフォルトの名無しさん
2006/11/30(木) 02:01:070682デフォルトの名無しさん
2006/11/30(木) 04:18:42県名と数字はひとつの空白スペースで区切られています。
お願いします。
0683デフォルトの名無しさん
2006/11/30(木) 04:21:28jinkou.txtも作ってくれって事?
君は用意しないの?
0684638
2006/11/30(木) 04:42:29.r-‐i'''''''''''i''''‐-、
o| o! .o i o !o
.|\__|`‐´`‐/|__/|
|_, ─''''''''''''─ ,、 / _
/ \
/ ノ( \ ____ / i
| ⌒ ● {+++} ● | キングブチキレス
!  ̄ ノ
丶_ ノ
0685デフォルトの名無しさん
2006/11/30(木) 04:50:41ケンカ売ってるとしか思えない
0686629
2006/11/30(木) 07:45:48[2]n×nの正方形状に並んだ点からなる地図があり、各店は陸か水(海、湖、川)
のどちらかを表してるとします。地図の周囲を海とみなし、海から縦方向または
横方向に水を現す点を結合してる点を海に表す点に置き換えるプログラムを作成しなさい。
例えば、陸をa、水をb、海をcで表すと左の地図は右の地図に書き換えられます。
bbaaabaaab ccaaacaaac
aaaaabaaba aaaaacaaba
aaaaaaabaa aaaaaaabaa
aaabbbbaaa aaabbbbaaa
aaababaaaa aaababaaaa
aaabbbaaaa aaabbbaaaa
aaaaaabbaa aaaaaaccaa
abbbbaabba accccaacca
abaabaaabb acaacaaacc
aaaabaaaaa aaaacaaaaa
[3]C言語(emacs)
[4]今日中
[5]for,while,if文 ポインター 文字列 1,2次配列
0687デフォルトの名無しさん
2006/11/30(木) 08:23:41[2] 双方向リストを昇順で出力するため、
Sort関数の???の部分を埋めてプログラムを完成させなさい。
なお、関数以外の部分は変えない事。関数内では新たに変数をいくつ追加しても
構わない。
プログラム↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3057.txt
[3.1] SunOS(Solaris10)
[3.2] GCC 3.4
[3.3] C言語
[4] 期限: 2006年12月1日AM8:30
[5] Break,Continue,Goto命令の禁止
2重ポインタの仕組みが全く分からず苦労しています。どうか宜しくお願いします。
0688デフォルトの名無しさん
2006/11/30(木) 08:26:08for(i=0;i<N;i++) {
if(map[0][i] == 'b')
map[0][i] = 'c';
if(map[N-1][i] == 'b')
map[N-1][i] = 'c';
if(map[i][0] == 'b')
map[i][0] = 'c';
if(map[i][N-1] == 'b')
map[i][N-1] = 'c';
}
while(1) {
int f = 1;
for(i=1;i<N-1;i++) {
for(j=1;j<N-1;j++) {
if(map[i][j] == 'b') {
int k;
int di[4] = {-1, 0, 0, 1};
int dj[4] = {0, -1, 1, 0};
for(k=0;k<4;k++) {
if(map[i+di[k]][j+dj[k]] == 'c') {
map[i][j] = 'c';
f = 0;
}
}
}
}
}
if(f)
break;
}
0689デフォルトの名無しさん
2006/11/30(木) 08:33:33二重ポインタさえわかればできるの?
二重ポインタ講座でも始めるか
0690デフォルトの名無しさん
2006/11/30(木) 08:56:01本当にありがとうございます
0691デフォルトの名無しさん
2006/11/30(木) 08:57:34つ 長いぜ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3058.txt
0692デフォルトの名無しさん
2006/11/30(木) 10:37:11ひでえな。循環リストじゃないしダミーリストもないので面倒なんだよなー
0693デフォルトの名無しさん
2006/11/30(木) 10:39:08配列とかはvectorがやっぱり楽だなぁ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3059.txt
0694デフォルトの名無しさん
2006/11/30(木) 12:05:16[2] 問題文(含コード&リンク):整数値を要素にもつ k行m列行列A とm行n列行列B を定義し,それらの要素をキーボー
ドから入力させ,C = A×Bを計算して画面表示するプログラムを作成しなさい.ただし,k,m,
n については,k≠m,m≠n,k≠n,k≧2,m≧2,n≧2を満たす任意の値を設定してよい.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:12月1日まで
[5] その他の制限: なし
授業で触れなかったのでわからなくて・・・よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています