08/02/09 18:37:44
>>125>>126
アドバイスありがとうございます。無事に動作するようになりました。
ASMを勉強していてASMでの書式など有る程度把握出来てきたのですが
c言語は、書式がまるっきり分からず困っていました。
c言語は生活に十分必要な物だと思いますのでこれを機に勉強をしようとおもいます。
とても困っていたので、ほんと感謝の気持ちでいっぱいです。
ありがとうございました。
128:デフォルトの名無しさん
08/02/09 19:32:03
>>117の続き
プログラム
/*パリティビットの生成*/
#include <stdio.h>
#include <string.h>
main(int argc,char *argv[])
{
char dum[256];
int num,cnt;
int i = 0,j;
(41) ;
while(dum[i] != `\0`){
num = cnt = 0; for(j=0;j<15 && dum[i] != `\0`;j++){
(42) ;
num <<= 1;
(43);
}
for (;j < 16; j++)
num <<= 1;
if ( (44) == (1 ー ( (45) ー '0')))
num |= 1;
printf("%x\n",num);
}
}
129:デフォルトの名無しさん
08/02/09 19:44:13
>>128
すいませんm(_ _)m
しばらく書き込み出来なかったもんで..
上記の(41)~(45)を答えるんですが..
(41)の解答群
ア dum = argv イ dum = argv[1] ウ strcpy(dum,argv) エ strcpy(dum,argv[1])
(42)の解答群
ア cnt += 1 イ cnt += dum[i] + 1 ウ cnt += dum[i] - `0' エ cnt += dum[i] + `1'
(43)の解答群
ア num |= dum[i] - `0' イ num |= dum[i++] - `0' ウ num &= dum[i] - `0' エ num &= dum[i++] - `0'
(44)の解答群
ア cnt イ cnt / 2 ウ cnt % 2 エ cnt * 2
(45)の解答群
ア argv[1] イ *argv[1] ウ argv[2] エ *argv[2]
です
130:デフォルトの名無しさん
08/02/09 21:05:59
[1] 授業単元:プログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
input.txt: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C
[4] 期限:2月13日正午
[5] その他の制限:
計算式の記述が分かり辛いですが、どうぞよろしくお願いいたします。
131:デフォルトの名無しさん
08/02/09 22:31:45
>>130
URLリンク(kansai2channeler.hp.infoseek.co.jp)
132:デフォルトの名無しさん
08/02/10 01:19:11
>>131
ありがとうございます!
133:デフォルトの名無しさん
08/02/10 02:10:32
>>114 >>115 >>117
プログラム >>128
解答群 >>129
すいませんm(_ _)m どなたか解答をお願いします。
134:デフォルトの名無しさん
08/02/10 03:15:38
(42):ウ
(43):イ
(44):ウ
(45):ウ
但し(41)の答えが何なのか、これが分らない
135:デフォルトの名無しさん
08/02/10 03:19:59
ごめん、(45)はエだ。
但し(41)の答えがn(ry
自分でやってくれ
136:デフォルトの名無しさん
08/02/10 03:21:16
>>134
エ じゃないかな
137:デフォルトの名無しさん
08/02/10 04:10:18
>>136
一つくらい自分でやらせようとしてたんだが…
138:デフォルトの名無しさん
08/02/10 04:12:39
入門書に確実に載ってる問題を質問するようなヤツが考えるわけもない
ググってもすぐ分かるというのに
139:デフォルトの名無しさん
08/02/10 10:34:58
すいませんm(_ _)m ありがとうございます。
(41)エ
(42)ウ
(43)イ
(44)ウ
(45)エ
これでOKでしょうか?
140:デフォルトの名無しさん
08/02/10 11:03:41
#include <stdio.h>
main()
{
char x[3][7] = {"first","second","third"};
char *z[3] = {"first","second","third"};
char **p;
p = z;
p++;
① printf("%c\n",**p);
② printf("%s\n",*p+1);
③ printf("%s\n",*(p+1)+1);
これだと xの要素数は21個で ポインタ配列zの要素数は19個
①②③のprintfの表示は ①がs ②がecond ③がhird
でいいですかね?
141:デフォルトの名無しさん
08/02/10 11:35:41
>>123
これで合ってるのかな。srandがよくわからない。。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>140
合ってる
142:デフォルトの名無しさん
08/02/10 13:18:18
>ポインタ配列zの要素数は19個
3個だろ
143:54
08/02/10 15:24:52
答えてくれたみなさんありがとうございます!!
めっちゃかんしゃです。
144:デフォルトの名無しさん
08/02/10 15:38:46
度々大変すいませんm(_ _)m どなたか解答をお願いします。
プログラム
/*語尾変換プログラム*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int f_read(void);
int w_cnv(int ln);
#define CHRSIZE sizeof(char)
char str[20][(254 + 2)* CHRSIZE * 2 + sizeof(char)];
main()
{
int ln;
int i;
int cnt;
ln = f_read();
cnt = w_cnv(ln);
for(i=0;i<ln;i++) printf("%s",str[i]);
printf("\n文章中を%d件変換し、\n",cnt);
printf("文末を%d件付加しました。\n",ln);
}
/*ファイル入力*/
int f_read(void)
{
FILE *fp;
145:デフォルトの名無しさん
08/02/10 15:39:16
続き
char buf[256];
int cnt = 0;
if((fp = fopen("word.dat","r")) == NULL){
printf("入力ファイルがオープンできません\n");
exit(1);
}
while( (46) != NULL)
(47) ;
fclose(fp);
return(cnt);
}
/*変換*/
int w_cnv(int ln)
{
int i;
int cnt = 0;
char w_str[256];
for(i=0;i<ln;i++){
while( (48) != NULL){
strcpy(w_str,strstr(str[i],"な") + CHRSIZE * 2);
strcpy(strstr(str[i],"な"),"にゃ");
(49) ;
cnt++;
}
strcpy( (50) ,"にゃ\n");
}
return(cnt);
}
146:デフォルトの名無しさん
08/02/10 15:40:31
(46)の解答群
ア fgets(buf,255,fp) イ fgets(fp,buf,255) ウ fscanf("%s",buf,fp) エ fscanf(fp,"%s",buf)
(47)の解答群
ア strcpy(buf,str[cnt++]) イ strcpy(buf,str[cnt+1],buf) ウ strcpy(str[cnt++],buf) エ strcpy(str[cnt+1],buf)
(48)の解答群
ア strcat(str[i],"な") イ strchr(str[i],"な") ウ strcpy(str[i],"な") エ strstr(str[i],"な")
(49)の解答群
ア strcat(w_str,str[i]) イ strcat(str[i],w_str) ウ strcpy(w_str,str[i]) エ strcpy(str[i],w_str)
(50)の解答群
ア strchr(str[i],`\0') イ strchr(str[i],`\n') ウ strchr(w_str[i],`\0') エ strchr(w_str[i],`\n')
文中の「な」を「にゃ」に変換し、さらに文末の語尾に「にゃ」を付加して表示するプログラムです
(46)~(50)の答はどうなりますかね?
147:デフォルトの名無しさん
08/02/10 16:16:12
>>146
うざいからうpロダ使ってくれないかな。
148:デフォルトの名無しさん
08/02/10 17:03:18
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]
環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C
[4] 期限:2月13日
[5] その他の制限:
前回は本当にありがとうございました。
今回もよろしくお願いいたします。
149:デフォルトの名無しさん
08/02/10 17:42:59
>>148
URLリンク(kansai2channeler.hp.infoseek.co.jp)
150:デフォルトの名無しさん
08/02/10 18:09:40
[1] 授業単元:パターン認識
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]
環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2月13日
[5] その他の制限:
動的計画法についての課題です。問題が図表付きなので圧縮しています。
151:デフォルトの名無しさん
08/02/10 20:25:53
>>149
ありがとうございました。
152:デフォルトの名無しさん
08/02/10 21:05:23
[1] 授業単元:プログラミング
[2] 問題文:入力された文字列を逆に並べて表示せよ(例:TOKYO→OYKOT)
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition
[3.3] 言語:C
[4] 期限:2008年2月13日8:00まで
[5] その他の制限:#include <stdio.h>で使える命令のみ
一次元配列のみ
153:デフォルトの名無しさん
08/02/10 21:10:05
[1]プログラミング
[2]時計の針2本がなす角(中学入試の算数問題でよく出題される問題)
問:キーボード上から時と分を入力し、その時間とそれを指す長針・短針
のなす角を求める。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] bcc32
[3.3] 言語: C
[4] 期限: [2008年2月12日まで]
[5]その他の制限:
入力・計算・出力部分は必ず関数化し、mainの中でそれらを呼び出すようにする
なす角θを計算する部分は成功しましたが(そこまでの完成版はリンクしたプログ
ラムを参照)、キーボード上から入力した時間をうまく表示することができません。出力は、
??:?? なす角:??°
とします。どうか宜しくお願いします。
154:デフォルトの名無しさん
08/02/10 21:11:22
>>152
#include <stdio.h>
int main(void)
{
char *p, str[256];
scanf("%s", str);
p = str;
while(*p) p++;
while(p--!=str) putchar(*p);
return 0;
}
155:デフォルトの名無しさん
08/02/10 21:24:02
>>154
自分の技量不足で申し訳ありませんが質問してもよろしいでしょうか?
関数の*pの*は何か意味があるのでしょうか?
156:デフォルトの名無しさん
08/02/10 21:24:35
>>153
>>149
157:デフォルトの名無しさん
08/02/10 21:24:35
>>153
void output(int s, int t, double r1)
{
printf("%d:%d なす角:(%.1f)°\n", s, t, (double)r1);
}
にしてh1とm1渡すだけじゃね?
158:デフォルトの名無しさん
08/02/10 21:24:52
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ名とバージョン: visual studio 2005
[3.3] 言語: C
[4] 期限: 2008年2月12日午前7時00分
[5] その他の制限:色々な処理方法があるそうですが、
なるべくレベルが低い方法でよろしくおねがいします。
159:デフォルトの名無しさん
08/02/10 21:27:27
>>155
間接参照。
160:デフォルトの名無しさん
08/02/10 21:30:03
>>159
ありがとうございます!
161:デフォルトの名無しさん
08/02/10 21:56:55
>>158
#include <stdio.h>
static int su[9], cnt;
void perm(int *a, int j){
int i;
if(j == 9){
int x = 0, y = 0;
for(i = 0; i < 6; i++) x = 10*x + a[i];
for(i = 6; i < 9; i++) y = 10*y + a[i];
if(x%y == 0){
printf("%d / %d = %d\n", x, y, x/y);
cnt++;
}
return;
}
for(i = 0; i < 9; i++)
if(su[i] == 0){
su[i] = 1;
a[j] = i + 1;
perm(a, j + 1);
su[i] = 0;
}
}
int main(void){
int a[9];
perm(a, 0);
printf("合計パターン数 = %d\n", cnt);
return 0;
}
162:デフォルトの名無しさん
08/02/10 22:35:42
>>158
URLリンク(kansai2channeler.hp.infoseek.co.jp)
163:デフォルトの名無しさん
08/02/10 23:00:27
>>144
>>145
>>146
ですが
解答はいかがでしょうか...
携帯からで見づらくて大変すいません...m(_ _)m
164:デフォルトの名無しさん
08/02/10 23:02:13
>>163
>>1
165:デフォルトの名無しさん
08/02/10 23:15:13
さすがに携帯にうpろだはきつくね?
166:デフォルトの名無しさん
08/02/10 23:15:22
153です。
157番さんのおっしゃる通りにしたら、「output関数における呼び出し時のパ
ラメータが足りない」というエラーが出ました。157番さんの通りにプログラム
を設計するなら、mainの中でoutputなどの各種呼び出しをどのようにすれば良い
のか教えて下さい。プログラミングの基本である自学自習を心掛けていますが
この呼び出し関数の設計などはあまり得意な方でないのでどうかお願いします。
167:123
08/02/10 23:15:37
>>141
ありがとうございます。実行してみたのですが生成される乱数が全て0になってしまいます。
srand関数を使って乱数の種を定めた時のプログラミング例を載せてみます。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
どうかお願いします。
168:デフォルトの名無しさん
08/02/10 23:35:33
>>166
お前どうやって>>153まで自分で出来たんだ?
得意じゃないってレベルじゃねーぞ
output(h1, m1, show1);
169:デフォルトの名無しさん
08/02/10 23:37:49
誰かの回答だろ
170:153
08/02/10 23:57:48
正直に言うと今までに扱った内容を参考にしながらでした。
それでも不足部分は沢山あるのでそれを補えるよう努力しなければと思い
ます。
ちなみにコンパイルできました。ありがとうございました。
171:デフォルトの名無しさん
08/02/11 00:13:35
質問!
エラーがでたわけではないのですが、VC++2003.NETで
ビットマップ画像をインポートして追加しようとしたのですが、
実行するとその画像が表示されません!
実行の際には画像が切り替わっている様子がうかがえるのですが、表示されないのです。
新規作成で追加するとちゃんと表示されるのですが・・。
どなたか原因分かる方いますか?
172:デフォルトの名無しさん
08/02/11 00:13:39
double→int→doubleとか意味不明なことしてるし、
設計を見直すべき。
173:デフォルトの名無しさん
08/02/11 00:17:52
>>146です
すいません 荒らしてしまって...
携帯からなんで うp無理みたいです...
なんかいろいろほんとすいませんでしたm(_ _)m
174:デフォルトの名無しさん
08/02/11 00:21:45
>>167
「10 動的に確保したメモリの解放」
これが抜けてる以外は問題なさそうだけど。
試しに実行してみたら、ちゃんと乱数生成されてるし。
175:デフォルトの名無しさん
08/02/11 00:30:32
>>174
pc環境とか関係するんですかね?とりあえず学内pcにファイルを移して実行してみます。
本当にありがとうございました。
176:50
08/02/11 00:30:47
>>65~73、87の書込みをしてくださった方々
一番難しい課題③を解いていただき、ありがとうございましたm(__)m
177:デフォルトの名無しさん
08/02/11 00:51:27
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual C++ 2005
[3.3] 言語: C
[4] 期限: 2月13日
[5] その他の制限:特にありません
178:デフォルトの名無しさん
08/02/11 01:48:02
>>173
うpろだが使えないとしても、>>1読んでテンプレくらいは使って欲しいところ
まぁ推奨になってるからどうしてもテンプレは使いたくないってのなら止めないけど
179:デフォルトの名無しさん
08/02/11 11:21:06
>>144
>>145
>>146
携帯からの投稿自体 無理がありました すいませんでした...m(_ _)m
できれば解答をいただけると幸いです..
180:デフォルトの名無しさん
08/02/11 14:34:02
[1] 授業単元:
[2] 問題文:
文字列を入力させ、それを表示するプログラムを作成せよ。
ただし、文頭にaが入力された場合はそれを表示せず、
数値が入力された場合はエラーとしてもう1度入力させること。
【実行例】
入力=jgmttgad18j
※エラー※数値が入力されました。
もう1度入力してください
入力=aaaiaueokaki
出力=iaueokaki
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C++
[4] 期限:2008年2月11日22:00まで
[5] その他の制限:
先生が、ヒントで「フラグを使うとできるかも」といってました!
よろしくお願いします!
181:デフォルトの名無しさん
08/02/11 14:54:09
>>180
#include <iostream>
#include <string>
using namespace std;
int main()
{
while(1) {
cout << "入力=";
string s;
cin >> s;
if( s.find_first_of( "0123456789" ) == string::npos ) {
cout << "出力=" << s.substr( s.find_first_not_of( "a" ) ) << "\n";
break;
} else {
cout << "数値が含まれるので、再度入力してください。\n";
}
}
return 0;
}
182:デフォルトの名無しさん
08/02/11 18:40:08
>>180
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[256];
int top;
printf("入力:");
start:
top=0;
fgets(str,256,stdin);
again0:
if(str[top]>=48&&str[top]<=57){
printf("再入力:");
goto start;
}
if(top++<strlen(str))goto again0;
top=0;
again1:
if(str[top]=='a'){
top++;
goto again1;
}
printf("出力:");
again2:
printf("%c",str[top++]);
if(str[top]!=NULL)goto again2;
return 0;
}
183:デフォルトの名無しさん
08/02/11 18:57:58
>>181
>>182
ありがとうございます!
できれば入力に
cin.getlineとか使うくらいの初歩のでもやってほしいんですが..(><)
入力だけでいくと
#include<iostream.h>
main()
{
char a[50] ;
cout<<"a=" ;
cin.getline(a,50) ;
}
こんな感じで・・
サーセン(・_・、)
184:デフォルトの名無しさん
08/02/11 19:38:23
>>180
#include <iostream>
#include <string>
#include <boost/regex.hpp>
int main() {
while (true) {
std::cout << "入力: ";
std::string line;
if (!std::getline(std::cin, line))
break;
boost::regex re_num("\\d+");
if (boost::regex_search(line, re_num)) {
std::cout << "※エラー※数値が入力されました" << std::endl;
std::cout << "もう一度入力してください" << std::endl;
continue;
}
boost::regex re_str("^a+");
std::cout << "出力: "
<< boost::regex_replace(line, re_str, "") << std::endl;
break;
}
}
185:デフォルトの名無しさん
08/02/11 19:41:23
>>183
それなら>>180の
cin >> s;
を
char sz[50]; cin.getline(sz,50); s=sz;
にすればいいが、
初歩というのは、もしかしてstringを使うなと言ってる?
186:デフォルトの名無しさん
08/02/11 19:46:40
>>184
>>185
ありがとうございます!!
stringをならってません(・_・、)
ごめんなさい↓
187:デフォルトの名無しさん
08/02/11 20:00:14
>>186
#include <iostream>
using namespace std;
bool hasDigit( const char* pstr )
{
while(*pstr) {
if( isdigit(*pstr) )
return true;
pstr ++;
}
return false;
}
int main()
{
while(1) {
cout << "入力=";
char sz[50];
cin.getline( sz, sizeof(sz) );
if( !hasDigit( sz ) ) {
char* p;
for( p=sz; *p=='a'; p++ );
cout << "出力=" << p << "\n";
break;
} else {
cout << "数値が含まれるので、再度入力してください。\n";
}
}
return 0;
}
188:デフォルトの名無しさん
08/02/11 22:32:23
[1] 授業単元: プログラム テスト
[2] 問題文 URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: WindowsXP
[3.3] 言語:C言語
[4] 期限: できれば、早いとありがたいです。
よろしくお願いいたします。
189:デフォルトの名無しさん
08/02/11 22:44:53
[1] 授業単元:プログラミング
[2] 問題文
四問あります
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: visual stdio
[3.3] 言語: C
[4] 期限: 2月13日の昼まで
190:デフォルトの名無しさん
08/02/11 22:46:32
>>188
アウエイ
(50)は解なし。強いてあげればイか。
191:189
08/02/11 22:48:29
すいません
>>189には不備がありました
課題1には二つ問題があるのですが
一つtxtファイルが入ってません
それを書き直したものにしますので少々待っててください
192:デフォルトの名無しさん
08/02/11 22:58:36
[1] 授業単元:プログラミング
[2] 問題文
5問あります
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: visual stdio
[3.3] 言語: C
[4] 期限: 2月13日の昼まで
[5]ご迷惑をおかけして申し訳ありません
期限を13日としていますが出来ればなるべく早くお願いします
193:デフォルトの名無しさん
08/02/11 23:07:15
>>192
どれも最近見た気がするが、これって何処の課題なんだろ。
最後の二つは、ちょっと前に俺がうpしたから間違いない。
194:デフォルトの名無しさん
08/02/11 23:15:21
>>193
本当ですか
よろしければその解答を頂けないでしょうか
195:デフォルトの名無しさん
08/02/11 23:18:41
>>194
ちょっと前にうpしたって言ってるじゃん。
ホントに欲しけりゃ、スレから探して持っていけばいいさ。
196:デフォルトの名無しさん
08/02/11 23:30:16
>>195
ありがとうございます
4と5は解決しました
197:デフォルトの名無しさん
08/02/11 23:36:55
アイムジャグラーちっとも勝てません。なぜでしょうか?
URLリンク(www.borujoa.org)
↓参考ページ。
URLリンク(www.htv-net.ne.jp)
198:デフォルトの名無しさん
08/02/11 23:37:55
>>190さん
ありがとうございます。
まぁ結果的に2級は落ちましたが..
少しは勉強になったのでよかったです
皆さん いろいろ迷惑をかけましたがありがとうございましたm(_ _)m
199:デフォルトの名無しさん
08/02/11 23:40:13
試験の問題だったのか。
この程度だと、あんまり取る意味なさそうな気も。
200:デフォルトの名無しさん
08/02/12 00:09:02
>>199さん
確かにそうですよね..
C2級も取れないレベルなんて 俺ってなんなんだろう...
やっぱりバカなんだなぁ つくづく思います。
201:デフォルトの名無しさん
08/02/12 00:40:36
【質問テンプレ】 通りに書き込まなきゃいけないと思うんですが
眠くてやばいんで誰か解き方のだけ速攻教えてください。
C言語で123の数値を合計して6とするにはどうすればいいんでしょうか?
202:デフォルトの名無しさん
08/02/12 00:43:29
>>201
int sum=1+2+3;でおk
203:デフォルトの名無しさん
08/02/12 00:46:27
>>177
URLリンク(kansai2channeler.hp.infoseek.co.jp)
204:デフォルトの名無しさん
08/02/12 00:48:33
>>202
ありがとうございます。
その数値が入力されたものの場合はどうすればいいんでしょうか><
205:199
08/02/12 00:48:33
>>200
いやいや、この程度とは言ったけど、
これを全く勉強せずに解ける人なんて居ないよ。
資格としての意味は薄いにしても、
1つの通過点にするのはいいんじゃないかな。
目標があると励みやすいし。
でさ、本当に2級を取得するだけの力をつけたいんだったら、
このスレで解答を求めたりするんじゃなくて、
自分で試行錯誤して辿り着く方が為になると思うんだけどな。
スレ違いなんでこの辺で。
206:デフォルトの名無しさん
08/02/12 00:51:42
>>204
int sum = val / 100 + (val / 10) % 10 + val % 10;
207:デフォルトの名無しさん
08/02/12 00:52:05
入力された文字列をatoiで変換→数値を合計みたいな問題でやり方がわからないんでヒントもらいたいです。
説明不足でほんとすみません。
208:207
08/02/12 00:54:18
>>206
ありがとうございます。
209:デフォルトの名無しさん
08/02/12 00:54:19
情報を小出しにするな。
210:デフォルトの名無しさん
08/02/12 00:54:39
>>207
説明不足だと思うならちょっとくらい眠くてもテンプレに従えよ
211:デフォルトの名無しさん
08/02/12 00:54:57
>>207
int sum = (str[0] - '0') + (str[1] - '0') + (str[2] - '0');
212:207
08/02/12 00:55:23
>>206
ありがとうございます。
213:デフォルトの名無しさん
08/02/12 01:00:18
!!!!>211さん 眠気がとびました!
そっか atoiを絶対使うと思い込んでいたからできなかったのか><
'0'から引けば結果は数値と同じっすもんね・・・
本当にありがとうございました。
214:デフォルトの名無しさん
08/02/12 01:02:05
>>201 >>207
#include<stdio.h>
#include<stdlib.h>
int main(void){
char buf[16];
int n, sum = 0;
fgets( buf, 16, stdin );
n = atoi( buf );
while( n > 0 )
{
sum += n % 10;
n /= 10;
}
printf("%d\n",sum);
return 0;
}
多分こういうことがやりたいんだろうと思って答えてみる
間違っててもそれは質問の仕方が悪いと思う
215:デフォルトの名無しさん
08/02/12 01:09:38
150ですがどなたかお願いします・・・
216:デフォルトの名無しさん
08/02/12 01:16:23
>>161-162
ありがとうございます。助かりました。
217:デフォルトの名無しさん
08/02/12 03:07:47
>>150
どう表示したらいいか不明なので適当にやった
最小のものが見つかった時点で逐次表示
#include<stdio.h>
int main(void){
int cost[][4][3]={{{3,2,1},{2,3,3},{3,3,2},{0,2,0}},
{{1,1,2},{2,1,3},{3,1,2},{0,2,0}},
{{1,1,2},{1,2,3},{1,1,4},{0,3,0}},
{{3,0,0},{2,0,0},{2,0,0},{0,0,0}}},
c,cmin=9999,p,pmin=9999,x,y,i,k;
for(i=0;i<729;i++){//3^6=729
printf("(0,0)0");
for(k=i,c=p=x=y=0;x<3&&y<3;k/=3)
c+=cost[x][y][k%3],
p++,
x+=(k%3!=0),
y+=(k%3!=1),
printf("→(%d,%d)%d",x,y,c);
if(x==3&&y==3&&cmin>c)cmin=c,printf(" 最小コスト\n");
else if(x==3&&y==3&&pmin>p)pmin=p,printf(" 最短経路\n");
else printf("\r%79s\r","");
}
return 0;
}
218:デフォルトの名無しさん
08/02/12 15:32:39
>>192
課題1
#include <stdio.h>
int main(void)
{
bool exist[10000]={false,};
int temp,i=0,max,min,count=0;
FILE *fp=fopen("input8500.txt","r");
if(!fp) return 1;
while(!feof(fp)){
fscanf(fp,"%d ",&temp);
exist[temp]=true;
}
fclose(fp);
while(!exist[i++]);
min = i;
i = 9999;
while(!exist[i--]);
max = i;
for(i = 0; i < 10000;i++) if(exist[i])count++;
printf("count = %d\nmax - min = %d",count,max-min);
return 0;
}
219:デフォルトの名無しさん
08/02/12 15:38:30
>>192
課題2
#include <stdio.h>
int main(void)
{
int rank[11]={0,};
int temp,i,j;
FILE *fp=fopen("input_histo.txt","r");
if(!fp) return 1;
while(!feof(fp)){
fscanf(fp,"%d ",&temp);
rank[temp/10]++;
}
fclose(fp);
for(i=0;i<11;i++){
printf("\n%3d点台:",i*10);
for(j=0;j<rank[i];j++)printf("*");
}
return 0;
}
220:193
08/02/12 16:59:52
>>192
URLリンク(kansai2channeler.hp.infoseek.co.jp)
(1)~(3)
221:デフォルトの名無しさん
08/02/12 20:27:04
>>218
>>219
>>220
皆さんありがとうございます
これでなんとかなりそうです><
222:デフォルトの名無しさん
08/02/12 21:21:05
先ほど質問スレで質問したのですが場違いだったようなので
こちらで質問したいと思います。
お時間がある方、ご協力いただけると幸いです。
先週からC言語について学び始めた高1です。
明日からプログラミングが学校の授業ではじまり
予習していたのですが、何度やっても思い通りの結果を表示できません
本当に基礎的な問題かも知れませんが、アドバイス、正答などいただけると幸いです。
1.5個の整数データを配列に代入し合計と平均を求めるプログラムをつくれ。
2.問1のデータの最大値を求めるプログラムをつくれ。
3.問1のデータを大きい順に並べ替えるプログラムをつくれ。
本当に程度の低い質問かもしれませんが
悩んでます><よろしくおねがいします。
223:デフォルトの名無しさん
08/02/12 21:24:37
>>1
224:デフォルトの名無しさん
08/02/12 22:06:18
>>222
#include <stdio.h>
int main(int argc, char **argv) {
static int array[5];
int i;
double sum=0.0;
if (argc==6)
{
for(i=0;i<5;i++) {
array[i]=atoi(argv[i]);
sum += array[i];
}
printf("average[%lf] sum[%d]\n", sum/5, (int)sum);
}
return 0;
}
悩んでいるというのであれば何がわからないのかくらい書くべきです。
予想すると何もわからなくて悩んでいるんですよね。
2と3は自分で考えましょう。
225:デフォルトの名無しさん
08/02/12 22:27:32
[1] 画像処理
[2] 画像ファイルを読み込み、マウスでクリックした位置の
水平垂直方向の輝度を表示せよ。
[3.1] Windows XP
[3.2] Visual C++2005 ExpressEdition
[3.3] C++
[4] 期限: 無期限
[5] その他の制限:とくになし。
ファイルダイアログでpicturebox1に画像ファイルを取り込んで、
getpixelでRGB値を取得しています。
pictureboxは640*480なのですが、画像サイズが640*480以外だと、
エラーが出たり、マウスの位置と、取得したRGB値が一致しません。
どうしたものだろうか?
private: System::Void pictureBox1_MouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
Graphics^gr=this->CreateGraphics();
Bitmap^bm = (Bitmap^)(pictureBox1->Image);
int w = pictureBox1->Image->Width; int h = pictureBox1->Image->Height;
int z = 480/h;
int x=e->X/z; int y=e->Y/z;
gr->FillRectangle(Brushes::Black,Rectangle(700,27,128,480));
gr->DrawLine(Pens::LightGray,700+64,27,700+64,27+480);
if(x<w && y<h ){
for (int y=0;y<h-1;y++) {
Color c=bm->GetPixel(x,y);
//平均輝度
int r=c.R; int g=c.G; int b=c.B;
int rgbdiv = (int)((r+g+b)/3);
Color c2=bm->GetPixel(x,y+1);
int r2=c2.R; int g2=c2.G; int b2=c2.B;
int rgbdiv2 = (int)((r2+g2+b2)/3);
gr->DrawLine(Pens::Red,700+rgbdiv/2,27+y*z,700+rgbdiv2/2,27+(y+1)*z);
} } }
226:デフォルトの名無しさん
08/02/12 22:44:17
C++/CLI ?
227:デフォルトの名無しさん
08/02/12 23:12:51
C#?
228:デフォルトの名無しさん
08/02/12 23:21:25
.net
229:デフォルトの名無しさん
08/02/13 01:36:59
>>217
ありがとうございました。
230:デフォルトの名無しさん
08/02/13 10:19:22
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
input.txt: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visual stdio
[3.3] 言語:C
[4] 期限:2月13日中
[5] その他の制限:
期限間近ではありますが、よろしくお願いいたします
231:デフォルトの名無しさん
08/02/13 10:44:46
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(www.uploda.net)
待ち行列の問題です。
pdfの11ページに載っています。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 本日23:59まで
その他の制限: 特になし
丸投げです。よろしくお願いします。
232:デフォルトの名無しさん
08/02/13 13:50:42
>>230
URLリンク(kansai2channeler.hp.infoseek.co.jp)
233:デフォルトの名無しさん
08/02/13 14:43:34
ひどいな
234:デフォルトの名無しさん
08/02/13 14:47:34
ひどすぎるな
235:デフォルトの名無しさん
08/02/13 14:54:57
>while(!feof(fp)){
> fscanf(fp, "%d", &temp);
> data[temp]++;
> }
>while(count <= 100)
236:デフォルトの名無しさん
08/02/13 15:02:22
晒しage
237:デフォルトの名無しさん
08/02/13 15:30:21
>>231
URLリンク(kansai2channeler.hp.infoseek.co.jp)
238:デフォルトの名無しさん
08/02/13 16:19:12
>>230
URLリンク(kansai2channeler.hp.infoseek.co.jp)
239:デフォルトの名無しさん
08/02/13 20:12:05
チョンのあやかり創価学会
偽善者が政治活動、公明党
ニセ仏教、騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
カルトキチガイ・創価騙されバカ信者
カルト・キチガイ・偽善政治活動・公明党
カルト・キチガイ・偽善政治活動・公明党
カルト・キチガイ・偽善政治活動・公明党
240:デフォルトの名無しさん
08/02/13 20:44:17
>>232
>>238
期限間近のものを本当にありがとうございました。
241:デフォルトの名無しさん
08/02/13 20:48:28
>>232は荒らしだから礼は言わなくてよし。
242:デフォルトの名無しさん
08/02/13 21:01:17
>>241
今、実行できる環境がないのですが>>232はなぜ荒らしなのでしょうか。
243:デフォルトの名無しさん
08/02/13 21:08:23
表面上問題文で要求された結果は返すけど、
拡張性が無く再利用できないアルゴリズム。
fclose()してない。
こんなの宿題で提出されたら俺なら赤点つける。
244:デフォルトの名無しさん
08/02/13 21:14:18
>>243
荒らしのプログラムにも気付けない自分が情けないです…
詳しい説明ありがとうございました。
245:デフォルトの名無しさん
08/02/13 22:04:07
宿題丸投げしてる時点で情けないけどな
246:デフォルトの名無しさん
08/02/13 22:20:41
>>243
>>232読んでみたがこれで十分だろ
題意は満たしてるし、時間・空間計算量も小さくなるように組まれてるしな
拡張性について指定がない以上、こういうのも一つの解としてありだろ
247:デフォルトの名無しさん
08/02/13 22:28:18
学生の宿題なんだからむしろ質素な方がいいと思うのですが
>>243さんは一体何のつもりなんでしょうか(苦笑
248:デフォルトの名無しさん
08/02/13 22:36:48
ここはIDが出ないから自演が楽でいいなw
249:デフォルトの名無しさん
08/02/13 22:42:48
>>246
題意満たしてるか?
250:デフォルトの名無しさん
08/02/13 22:42:52
自演以外でいちいち擁護する奴なんていないしなw
251:デフォルトの名無しさん
08/02/13 22:43:53
>>249
何か条件抜けてるか?
252:デフォルトの名無しさん
08/02/13 22:48:30
|┃三 / ̄\
|┃ | |
|┃ \_/
ガラッ. |┃ |
|┃ ノ// ./ ̄ ̄ ̄ \
|┃三 / ::\:::/:::: \
|┃ / <●>::::::<●> \
|┃ | (__人__) | 俺なら赤点つける
|┃三 \ ` ⌒´ /
|┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
253:デフォルトの名無しさん
08/02/13 22:48:33
>>235
254:デフォルトの名無しさん
08/02/13 22:54:02
>>251
合格者がちょうど100人の時にカウントがずれる。
<にすべき比較を<=にしてるという初心者のようなミス。
fclose()していない。
仮にあれが荒らしじゃないとすれば、無能であるという自覚の無い初心者。
ある意味荒らしよりたちに負えない。
255:デフォルトの名無しさん
08/02/13 22:55:30
|┃三 / ̄\
|┃ | |
|┃ \_/
ガラッ. |┃ |
|┃ ノ// ./ ̄ ̄ ̄ \
|┃三 / ::\:::/:::: \
|┃ / <●>::::::<●> \ 表面上問題文で要求された結果は返すけど、
|┃ | (__人__) | 拡張性が無く再利用できないアルゴリズム。
|┃三 \ ` ⌒´ /
|┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
256:デフォルトの名無しさん
08/02/13 22:57:38
|┃三 / ̄\
|┃ | |
|┃ \_/
ガラッ. |┃ |
|┃ ノ// ./ ̄ ̄ ̄ \
|┃三 / ::\:::/:::: \
|┃ / <●>::::::<●> \ 題意は満たしてるし、時間・空間計算量も小さくなるように組まれてるしな
拡張性について指定がない以上、こういうのも一つの解としてありだろ
|┃三 \ ` ⌒´ /
|┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
257:デフォルトの名無しさん
08/02/13 22:59:46
|┃三 / ̄\
|┃ | | ←これなに?
|┃ \_/
ガラッ. |┃ |
|┃ ノ// ./ ̄ ̄ ̄ \
|┃三 / ::\:::/:::: \
|┃ / <●>::::::<●> \
|┃ | (__人__) |
|┃三 \ ` ⌒´ /
|┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
258:デフォルトの名無しさん
08/02/13 22:59:47
>>232はダメだろ。
211回数えてるぞ。
259:デフォルトの名無しさん
08/02/13 23:03:02
最近オプーナAAをよく見かけるな
260:デフォルトの名無しさん
08/02/13 23:03:27
データ210個あるって言ってるのに配列101個分しか用意してないし。
何したいのかわからん。
261:デフォルトの名無しさん
08/02/13 23:04:31
受験生全員が100位タイ以内に収まる場合にずっこける希ガス
262:デフォルトの名無しさん
08/02/13 23:05:02
穴だらけじゃんwwwwwwwwwww
263:デフォルトの名無しさん
08/02/13 23:06:28
>>260
それはお前がバカ
264:デフォルトの名無しさん
08/02/13 23:06:59
>>260
それは点数による度数分布だからおk
0~100以外の点数が来たらNGだが
265:デフォルトの名無しさん
08/02/13 23:07:17
feofでend-of-fileの判定。
266:デフォルトの名無しさん
08/02/13 23:13:22
まとめ
>>232
・今回与えられたデータではたまたま正常に動く
・不正なデータ(100点を超えたりマイナスだったり)に対する備えが無い
・偏ったデータ(全員が100点とか)で無限ループ
・100位以内が丁度100人の時に計算がずれる
・ファイルから点数を直接読み出してないから拡張性が無い
・↑のデータを利用して他の関数を書いてるから再利用できない
・fclose()してない
>>238
・パーフェクト
>>230は好きな方選んで提出したらいいんじゃね?
自力で組めなかったんだし粗悪なプログラムで赤点補習した方が将来のためかもしれないしね。
267:デフォルトの名無しさん
08/02/13 23:14:52
>>266
バカがまとめんなよw
>>232で出る答えは間違ってるし、全員100点でも無限ループなんてしない。
268:デフォルトの名無しさん
08/02/13 23:21:10
>>266
>>238も人数が210人未満のときに間違える。
269:デフォルトの名無しさん
08/02/13 23:22:04
>>232の実行結果
合格者数:105人
合格者平均点:77.7723810点
>>238の実行結果
Success:104
Average:77
270:デフォルトの名無しさん
08/02/13 23:33:34
どうして>>232の答えは間違うんでしょうか?
271:デフォルトの名無しさん
08/02/13 23:34:26
>>270
プログラムが間違ってるからだね。
272:デフォルトの名無しさん
08/02/13 23:37:40
>>270
ループ終了条件をfeofで判定してるため、最後の数を二重に数えてるから。
273:デフォルトの名無しさん
08/02/13 23:37:52
烏賊じゃないんだ
274:デフォルトの名無しさん
08/02/13 23:40:35
まあ>>238のプログラムも入力部分を関数化しろって条件満たしてないんだけどな。
275:デフォルトの名無しさん
08/02/13 23:50:30
>>237
ありがとうございますm(_ _)m
276:デフォルトの名無しさん
08/02/13 23:56:49
>>272
ありがとうございます。
while(!feof(fp))
{
fscanf(fp, "%d", &temp);
data[temp]++;
}
↓
while(fscanf(fp, "%d", &temp) != EOF)
{
data[temp]++;
}
みたいにしたらいいのかな。
277:デフォルトの名無しさん
08/02/13 23:58:10
そうだね
278:デフォルトの名無しさん
08/02/14 00:10:08
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++2005 ExpressEdition
[3.3] 言語:C
[4] 期限:2月15日
[5] その他の制限:特にないです
279:デフォルトの名無しさん
08/02/14 00:14:35
チョンのあやかり創価学会
偽善者が政治活動、公明党
ニセ仏教、騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
カルトキチガイ・創価騙されバカ信者
カルト・キチガイ・偽善政治活動・公明党
カルト・キチガイ・偽善政治活動・公明党
カルト・キチガイ・偽善政治活動・公明党
280:デフォルトの名無しさん
08/02/14 00:18:58
条件なのにできるってなんかおかしくね?
281:デフォルトの名無しさん
08/02/14 00:40:44
>>276
fscanfを使うなら、
while (fscanf(...) == 1)
とするべき。
282:デフォルトの名無しさん
08/02/14 00:50:47
>>278
「double max(double a,double b)関数をとり、引数aとbの大きいほうを返す関数」は、
double max_caller(double (*f)(double, double), double a, double b){
return (*f)(a, b);
}
でよろしいか?
283:デフォルトの名無しさん
08/02/14 07:06:31
>282
いいですよ。
284:デフォルトの名無しさん
08/02/14 09:53:12
>>281
なるほど、それだと読み込みエラーとかでもループを抜けられるんですね。
勉強になりました。ありがとうございました。
285:デフォルトの名無しさん
08/02/14 11:39:45
>>278
URLリンク(kansai2channeler.hp.infoseek.co.jp)
チェックあまりしてない。甘いところはご愛嬌。
286:デフォルトの名無しさん
08/02/14 12:09:39
>>278
問題2
URLリンク(kansai2channeler.hp.infoseek.co.jp)
これもチェックあまりしてない。甘いところはご愛嬌。
287:デフォルトの名無しさん
08/02/14 18:04:30
「nステップによるある一回の酔歩における、格子点上の経路を画面に表示するプログラムを作成せよ。」
って課題が出たんですけど、誰か教えてください。
288:デフォルトの名無しさん
08/02/14 18:19:45
>>287
>>1からやり直し
289:デフォルトの名無しさん
08/02/15 12:03:39
すいません。書き直します。宜しくお願いします。
[1] 授業単元: 一般情報処理C
[2] 問題文(含コード&リンク):「nステップによるある一回の酔歩における、格子点上の経路を画面に表示するプログラムを作成せよ。」
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:c
[4] 期限:2008/2/19
[5] その他の制限:なし
290:デフォルトの名無しさん
08/02/15 14:45:36
急ですみませんが、(1)だけでもいいので、出来る方いらっしゃいましたらよろしくお願いします。
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
崖から鉛直上向きに投げた石の4秒後の鉛直方向位置を求めたい.
(1)オイラー法によりその位置を求めるプログラムを作成し,4秒後の
位置を求めなさい.
(2)理論解との位置の誤差を0.1m以下にするには時間きざみΔtを
いくらにすればよいか考察しなさい.
[3] 環境
[3.1] OS:Vista
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語:C
[4] 期限:2008/2/15 15:50まで
[5] その他の制限:
291:デフォルトの名無しさん
08/02/15 15:11:20
>>290
(1)だけ。
初速に関する条件がなかったけど入力させる形でよかった?
#include <stdio.h>
#include <stdlib.h>
#define GRAVITY (-9.80665)
#define DELTA_T (0.1)
int main(void)
{
char temp[32];
double v0, velocity, time, y;
printf("初速度を入力してください:");
do{
fgets(temp, sizeof(temp), stdin);
v0 = atof(temp);
}while(v0 <= 0);
for(time = 0; time < 4; time += DELTA_T)
{
velocity = v0 + time * GRAVITY;
y += velocity * DELTA_T;
}
printf("4秒後の位置は %f(m) です", y);
return 0;
}
>>289
一口に酔歩って言っても定義はいくつもあるんだけど、
何の前提条件も無しでその問題文がだされたわけ?
292:デフォルトの名無しさん
08/02/15 17:34:59
>>291
えっとその前の課題が「二次元格子上での酔歩におけるnステップによる平均移動距離を、m回のシュミレーションによる統計平均から計算せよ。また、その標準偏差を求めよ」
で、その課題の下に「乱数の発生方法について」とあって、1#include<stdlib.h>によって、stdlib.hヘッダーをインクルードする。2#include<time.h>によって、time.hヘッダーをインクルードする。
3srand((unsigned)time(NULL));によって乱数の種の初期値を現時刻から決める。4rand()/(RAND_MAX+1.0);によって0から1における一様乱数を発生させる。
と書いてあって、その下に上記の課題が書いてあります。
293:デフォルトの名無しさん
08/02/15 20:05:59
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C++
[4] 期限: 2月18日24時まで
[5] その他の制限:考察も書かないといけないので
注訳等も入れてもらえると幸いです。
また期限はギリギリの期限ですので出来るだけ
早く対応していただけると非常に助かります。
294:デフォルトの名無しさん
08/02/15 21:59:30
>>293
元のプログラムがてんでダメダメだな。
295:デフォルトの名無しさん
08/02/15 22:13:23
>>294
あれ、引用のコピペ失敗したかな(´・ω・`)、自分で動かした分には元のプログラムは動いたんだけど
296:293 ◆klsLRI0upQ
08/02/15 22:19:36
>>294
サンプルプログラムの原文HTML化したものはありますけど
そちらをうpった方がいいでしょうか?
297:デフォルトの名無しさん
08/02/15 22:26:43
>>295
67行目に変な文字が入ってるけど、ダメってのはそういう意味じゃない。
元のプログラムの作り自体にセンスが感じられないってこと。
298:293 ◆klsLRI0upQ
08/02/15 22:28:41
>>297
なるほど、そういう事ですか><
299:デフォルトの名無しさん
08/02/16 07:24:05
>>293
URLリンク(kansai2channeler.hp.infoseek.co.jp)
300:デフォルトの名無しさん
08/02/16 10:45:37
>299
ありがとうございます
301:_
08/02/17 08:34:24
|┃三 / ̄\
|┃ | |
|┃ \_/
ガラッ. |┃ |
|┃ ノ// ./ ̄ ̄ ̄ \
|┃三 / ::\:::/:::: \
|┃ / <●>::::::<●> \
|┃ | (__人__) |
|┃三 \ ` ⌒´ /
|┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
302:デフォルトの名無しさん
08/02/17 11:03:44
三 |┃┃
三 |┃┃
|┃┃
∧∧ ..|┃┃
三 ( ;). |┃┃ピシャッ!
/ ⊃.|┃┃
303:_
08/02/17 11:52:13
.. |┃三 .. / ̄\
.. |┃ | |
.. |┃ .. \_/
ガラッ.. |┃ ..|
三 |┃ |
三 |┃ ノ// ./ ̄ ̄ ̄ \
|┃三 / ::\:::/:::: \
∧∧ ..|┃ / <●>::::::<●> \
三 ( ;). |┃ | (__人__) |
/ ⊃.|┃三 \ ` ⌒´ /
シュー |┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
304:_
08/02/17 11:52:33
三 |┃┃
三 |┃┃
|┃┃
∧∧ ..|┃┃
三 ( ;). |┃┃ピシャッ!
/ ⊃.|┃┃
305:デフォルトの名無しさん
08/02/17 12:15:33
【質問テンプレ】
[1] 授業単元: コンピュータ実習
[2] 問題文:(下記のコードに書き加えてファイルに出力しなさい)
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C++)
[4] 期限: 今日
[5] その他の制限: なし
#include <iostream>
#include <string>
#include <fstream>
class write{
private:
string input;
public:
string input(){
cout<<文字列をファイルに書き込みたい;
cin>>input;
return input;
}};
int main(){
write ob;
//書き込み処理
//書き込み処理終了
return 0;
}
306:デフォルトの名無しさん
08/02/17 15:57:43
//書き込み処理
fstream("ファイル", ios::out) << ob.input();
//書き込み処理終了
307:デフォルトの名無しさん
08/02/17 16:06:25
>>306
ofstream使えよ。
308:デフォルトの名無しさん
08/02/17 17:48:53
[1] 授業単元: Cプログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 明日まで
問題はC言語のシグナルの送信に関するものです。
よろしくお願いします。
309:デフォルトの名無しさん
08/02/17 18:10:27
シグナルハンドラとしてSIG_IGNを使う。
あと、シグナルハンドラの中では、非同期シグナルセーフな関数以外は呼び出さない方がいい。
310:デフォルトの名無しさん
08/02/17 21:55:38
[1] 授業単元:C言語II
[2] 問題文(含コード&リンク)
シェルを実装していますが、分からないのは入出力リダイレクションの処理です。
たとえばプロンプトから
$ cat 123 > textout
と、入力して 引数の'>'(もしくは'<') で入出力を切り替える処理を考えています。
どうすればいいのでしょうか?
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc 3.4.4
[3.3] 言語:C
[4] 期限: 2008年2月29日
311:デフォルトの名無しさん
08/02/18 00:26:19
>>308
とりあえずsignal.hなるものの存在を初めて知った
で、<unistd.h>は「unix standard」。
ここまで来ると、Windowsの人間はまるでついていけない……
312:デフォルトの名無しさん
08/02/18 02:30:54
>>308 [kill-main.c]
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
pid_t pid;
void ctrlc(void){
kill(pid,SIGUSR1);
}
int main(){
unsigned int c;
if((pid = fork()) == 0){
execl("kill-child","kill-child",(char *)0);
perror("execl");
exit(EXIT_FAILURE);
}
if(signal(SIGINT,(void*)ctrlc) == SIG_ERR){
perror("sigint");
exit(EXIT_FAILURE);
}
do{
printf("Send signal?(C-c/n)\n");
while((c=getchar()) != EOF)
if(c != '\n')
break;
if(c == 'n')
exit(0);
}while(c != EOF);
}
313:デフォルトの名無しさん
08/02/18 02:32:35
>>308 [kill-child.c]
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void siguser(void){
static int n = 0;
printf("Signal received %d times\n",++n);
if(n == 10)
exit(EXIT_SUCCESS);
}
int main(){
signal(SIGINT,SIG_IGN);
if(signal(SIGUSR1,(void *)siguser) == SIG_ERR){
perror("signal");
exit(EXIT_FAILURE);
}
for(;;){}
}
子まで書き換えないとならないのがミソだな
314:デフォルトの名無しさん
08/02/18 04:08:11
>>312-313
御回答ありがとうございます。
SIG_IGNを使いシグナルを無視させることで無効化するんですね。
勉強になりました!ありがとうございます。
315:デフォルトの名無しさん
08/02/18 14:14:22
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):Cシェルを作成しなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2008年2月19日まで
[5] その他の制限: なし
C言語でシェルを作っているのですが、
>310さんと同じく'>'の入力リダイレクションの処理が分からないです。
自力で途中までは書いているのですが、キー入力の分割処理が上手く行きません。
void parseitファンクション内の処理がおかしいと思われます。
助けて頂けると幸いです。
ソースファイル↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)
316:デフォルトの名無しさん
08/02/18 16:43:12
誰か292頼みます
317:デフォルトの名無しさん
08/02/18 18:15:57
>>316
問題が理解できないのでどうしようもない
まずnステップっていうのがわからない
そもそも、1ステップでどういう動きをするんだ?
ランダムで X 方向 or Y 方向に 1つ動くっていうのか、
それとも、X 方向にランダムでいくつ、Y方向にランダムでいくつって言う風に動くのか
あと表示のしかたも、各ステップ毎のX,Yの値をただ単に並べればいいのか、
図で見せるのかわからない
318:デフォルトの名無しさん
08/02/18 22:56:21
>>315
void parseit 内で、
*params++ = command;
の後のパラメータ分文字を読み飛ばす処理内で、">"の処理をしているのが不味い
a.out > aaa
↑
ここでパラメータ分文字を読み飛ばす処理は終了するので、次のパラメータを探す処理に
移ると、次のパラメータは、">"になる
">" の処理もそのままだと、 ファイル名の前後に空白文字が入る可能性がある(問題ないのかもしれないけど)
あと、void parseit 関数の終わりの*params = '\0'; は、 *params = NULL; じゃね
319:デフォルトの名無しさん
08/02/19 00:16:23
>>318
なるほど、そう言うのが原因なんですね。
確かにテストをすると空白らしくものがファイル名と'>'の前(おそらく)に入ってると思われます
となると、やはり新しいファンクションを増やした方がてっとり早いのでしょうか?
320:デフォルトの名無しさん
08/02/19 00:59:51
>>319
横レスになるけど.
先に ">"の前後で文字列を切り分けてからコマンド部分をあらためて切り分ける方法もあるんじゃないかな。
標準関数を使っていいのなら切り分けはこんな感じ↓
char redirect[20]; // リダイレクト先
_Bool test_parse( char *command, char **param )
{
_Bool ret = false;
char cmd[256]; // コマンド部
int result;
// >の前後で文字列を切り分け
result = sscanf( command, "%255[^>]%*[>]%19s", cmd, redirect );
if( result > 1 ) {
ret = true;
}
getToken( cmd, param ); // ここでコマンド部をパラメータと切り分ける関数を別に作って呼ぶ
return ret;
}
こうするとローカル変数cmdとredirectにそれぞれ>の前後で切り分けた文字が入るはず。
ついでにretで1以外が入っていた場合はredirectにも代入があったことになるからフラグでそれを知らせてます。
321:デフォルトの名無しさん
08/02/19 03:51:32
>>320
レス感謝です。
getTokenでparseitと同様の処理をさせれば良いのでしょうか?
322:デフォルトの名無しさん
08/02/19 06:43:13
>>321
4時か、がんばってるねぇ…
とっくに寝てそうだけど、getTokenでparseitのparamsに入れていく部分の処理を入れればいいと思う。
元のソース見る限りだとredirectは特に同じことをしてなさそうに見えるから。
323:デフォルトの名無しさん
08/02/19 06:54:35
試しに>>320の教えてくれたsscanfを使ってみたのですが、
未だに空白が付いて正しい結果を出しません。
もしかしたらメイン内でやったのがいけなかったのかもしれません。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
324:デフォルトの名無しさん
08/02/19 07:09:34
あー
空白がつくのって
"a.out params > text.txt"
みたいなときに " text.txt"がredirectにはいるってこと?
VC++でコンパイルしたからGCCでは挙動違うのかな?
sscanfの処理を
sscanf( command, "%255[^>]%*[> \t]%19s", cmd, redirect );
って修正してもだめ?
325:デフォルトの名無しさん
08/02/19 07:13:47
すみません>>322の通りにやると文字化けが生じてしまいます。
もしこれが解決出来れば、test_parseファンクションを使えると思うのですが…。
何か解決方法があったら教えてください。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
326:デフォルトの名無しさん
08/02/19 10:37:19
無事に解決できました。
どうやら問題やはcmdの最後の部分に空白があったため、問題が起きていたようです。
なので、最後尾にNULLを追加したらリダイレクションが正常に完了しました。
>>318 >>320 >>322 >>324助言ありがとうございました。
327:デフォルトの名無しさん
08/02/19 10:39:06
>>316
適当解釈。
#include <stdio.h>
#include <stdlib.h>
#define N 10
void suiho(int *x, int *y)
{
int r=rand()%4;
*x+=((r/2)*2-1)*(r%2);
*y+=((r/2)*2-1)*(!(r%2));
printf("(%d,%d)\n",*x,*y);
}
int main(void)
{
int i,x=0,y=0;
srand(time(NULL));
for(i=0;i<N;i++)suiho(&x,&y);
return 0;
}
328:デフォルトの名無しさん
08/02/19 20:29:30
>>327
面白い解釈だ
神龍:どんな問題でも一つだけ聞き流してやろう
ってのが思い浮かんだ
329:デフォルトの名無しさん
08/02/19 21:26:31
誰か終わってないリストチョーライ。
330:デフォルトの名無しさん
08/02/19 22:00:26
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):2問ありますURLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 明日まで
[5] その他の制限: 問題文にそって作る
お手数おかけしますが、よろしくお願いします。
331:デフォルトの名無しさん
08/02/19 22:27:31
因数因数って引数だろ、「ひきすう」で変換すればちゃんと出てくるのに・・・
ってもやもやしながら読んでたらばおで噴いたwwwwwww
332:デフォルトの名無しさん
08/02/19 22:37:55
構造体変数名がlist_tっていうのが違和感あるんだが,これって変数が
list_tって名前なんだよな?
xxx_tって普通,型名につける方法じゃないっけ?
333:デフォルトの名無しさん
08/02/19 23:18:56
ば、ばお・・・ごめんなさいorz
>>332
問題文を確認したら構造体変数名はlist_tとありました。
これが誤っているとすると
typedef struct list{
~
} list_t;
って感じですかね?
334:デフォルトの名無しさん
08/02/20 00:13:00
typedef struct list_t{}list;だろ
_tは普通使わないと思うけど
335:デフォルトの名無しさん
08/02/20 00:15:26
>>334
へぇ 普通はそうなのか
普通って難しいな
336:デフォルトの名無しさん
08/02/20 00:27:17
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2/22
[5] その他の制限:
よろしくお願いします。
337:デフォルトの名無しさん
08/02/20 01:03:12
[1] 情報セキュリティ
[2] 問題文(含コード&リンク):
C言語プログラムのファイルを読み込んで、バッファオーバーラン
の危険性を検出(修正)するサポートツール。
[3] 環境
[3.1]Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2月21
[5] その他の制限: なし
338:デフォルトの名無しさん
08/02/20 01:07:57
さらっと書いてるけど>>337は相当むずかしくないか?
339:デフォルトの名無しさん
08/02/20 01:11:45
gets()が検出できればおkだったりしてな
340:デフォルトの名無しさん
08/02/20 01:16:50
つ lint
341:337
08/02/20 01:25:54
* get * sprintf * strcat * strcpy * vsprintf
が検出できれば OKです
342:デフォルトの名無しさん
08/02/20 01:28:57
先に書けよ
343:337
08/02/20 01:33:14
すみません。
344:デフォルトの名無しさん
08/02/20 04:14:35
・getってなんだよ。
・scanfはスルーかよ。
345:デフォルトの名無しさん
08/02/20 04:23:51
>>337
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFMAX 1024
int main(int argc, char *argv[]) {
FILE *fp;
char buf[BUFMAX];
int line = 0;
if (argc < 2 || (fp = fopen(argv[1], "r")) == NULL) {
printf("Usage: a.out [assemble code file]\n");
exit(0);
}
while (fgets(buf, BUFMAX, fp)) {
++line;
if (!strcmp(buf, "\tcall\tscanf\n") ||
!strcmp(buf, "\tcall\tgets\n") ||
!strcmp(buf, "\tcall\tsprintf\n") ||
!strcmp(buf, "\tcall\tstrcat\n") ||
!strcmp(buf, "\tcall\tstrcpy\n") ||
!strcmp(buf, "\tcall\tvsprintf\n")) {
printf("find at line%d: %s", line, buf);
}
}
fclose(fp);
return 0;
}
こんな感じでいいのかな。アセンブリコードに対して検索した方が楽だよな。
346:デフォルトの名無しさん
08/02/20 04:35:42
>>345
その発想はなかったわw
347:337
08/02/20 07:49:57
ありがとうございます
348:デフォルトの名無しさん
08/02/20 11:53:11
>>330
1問目
URLリンク(kansai2channeler.hp.infoseek.co.jp)
構造体変数名はlist_tとする意図が汲み取れないが、それは無視して作った。
構造体のtypedefした名前をlist_tとするの間違いじゃなかろうか・・・
349:デフォルトの名無しさん
08/02/20 12:13:13
>>330
URLリンク(kansai2channeler.hp.infoseek.co.jp)
問題をそのまま書いた方が良いと思うよ・・・
350:デフォルトの名無しさん
08/02/20 19:57:42
>>336
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
一応作ってみた
考え方が良く分からんから、まぁたぶん大丈夫だろう的なレベル
351:デフォルトの名無しさん
08/02/20 20:47:15
>>348-349
ありがとうございます。
352:デフォルトの名無しさん
08/02/20 21:23:03
>>350
ありがとうございます
353:デフォルトの名無しさん
08/02/22 00:51:17
[1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク):
・リスト構造
アルファベットの文字列をいくつか読み込み、それを、アルファベット順にソートし、以下のコマンドが入力された場合、それぞれの命令を実行せよ。
条件として、リスト構造が使われていること、サブ関数の呼び出し(単純なものでもよい)が使われていること、malloc関数が使われていること。
p :入力された文字列を表示する。
a :指定された文字列をリストに追加する。(アルファベット順に並ぶように)
d :指定された文字列をリストに削除する。(不要になった記憶領域はfree()を使って開放すること。また、指定された文字列がリストに無い場合は、その旨を表示。)
q :プログラムを終了する。
? :使用可能なコマンドの一覧を表示する。
end:データ入力の終了
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2月26日まで
[5] その他の制限:
こんな感じです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
できればなるべく簡単な方法でお願いします。
354:353
08/02/22 00:54:56
ごめんなさい、訂正です。
× d :指定された文字列をリストに削除する。
○ d :指定された文字列をリストから削除する。
355:デフォルトの名無しさん
08/02/22 02:55:06
>>353
BUFSIZE文字以上の入力があった場合に異常動作を起こす他、色々と問題・手抜きは抱えてるが少なくともその実行例は通る
URLリンク(kansai2channeler.hp.infoseek.co.jp)
356:353
08/02/22 03:24:27
>>355
ありがとうございます。
しかし、まんまコピペでコンパイルが通りませんでした…
そしてNode型とかようわからん件…ごめんなさい低級で
とりあえず自分なりにいじってみます。ダメだったらまたくるかも。
357:デフォルトの名無しさん
08/02/22 03:27:56
>>356
あぁ、VC++2008でコンパイルしたから気付かんかったけど
C99形式のコメント(//~)を使ってるからそれかもしれん
その部分を全部消してみてくれ
358:353
08/02/22 03:50:47
>>357
消してみましたが、やはり同じようです。
とりあえずvistaですが、bccでまんまコピペでコンパイルしてみた結果、以下が表示されました。
list.c:
警告 W8060 list.c 24: おそらく不正な代入(関数 insert )
警告 W8060 list.c 24: おそらく不正な代入(関数 insert )
警告 W8060 list.c 32: おそらく不正な代入(関数 insert )
警告 W8060 list.c 32: おそらく不正な代入(関数 insert )
警告 W8060 list.c 56: おそらく不正な代入(関数 deleteNode )
警告 W8060 list.c 56: おそらく不正な代入(関数 deleteNode )
エラー E2468 list.c 100: void 型の値は許されない(関数 appendProc )
警告 W8019 list.c 100: コードは効果を持たない(関数 appendProc )
エラー E2468 list.c 114: void 型の値は許されない(関数 deleteProc )
警告 W8019 list.c 114: コードは効果を持たない(関数 deleteProc )
エラー E2468 list.c 136: void 型の値は許されない(関数 main )
警告 W8019 list.c 136: コードは効果を持たない(関数 main )
*** 3 errors in Compile ***
359:デフォルトの名無しさん
08/02/22 04:01:06
>>358
コメントを消した状態ならこっちではANSI C準拠の設定でgcc通る(警告は出る)以上分かりかねる
bcc捨ててくれとしか言い様がない
使用したgccは以下
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
360:デフォルトの名無しさん
08/02/22 04:21:12
これはbccのバグっぽい
361:デフォルトの名無しさん
08/02/22 04:24:08
多分三項演算子とfgetsの合わせ技でエラーになってんだろうな
bccだとvoid fgetsで定義されてるとかか?
362:デフォルトの名無しさん
08/02/22 04:26:26
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:本日正午まで(恐らく本日中であればなんとかなります)
[5] その他の制限:
なるべく自分でどうやっているプログラムなのか理解した上で提出した方がいいため、
if文やfor文使いまくりでもいいので、簡単なプログラムにしていただけると助かります。
363:デフォルトの名無しさん
08/02/22 04:37:40
>fgets(buf, BUFSIZE, stdin) ? 0 : exit(1);
364:デフォルトの名無しさん
08/02/22 04:39:46
>>358
fgets(buf, BUFSIZE, stdin) ? (void)0 : exit(1);
これで回避できるみたいだが、よくわからんな。
bccの3項演算子の扱いが謎。
365:デフォルトの名無しさん
08/02/22 04:46:17
voidとそうじゃないものを並べちゃいけないみたいだね。
void同士ならOKらしい。
366:デフォルトの名無しさん
08/02/22 05:53:24
>>362
とりあえず適当
(1)
#include<stdio.h>
void num2roma(int num,const char roma[]){
const int mod = num % 10;
const int div = num / 10;
const int mod5 = num % 5;
int i;
if(div)num2roma(div,roma+2);
if(mod5==4){
putchar(roma[0]);
putchar(roma[mod/4]);
}else{
if(mod5!=mod)
putchar(roma[1]);
for(i=0;i<mod5;++i)
putchar(roma[0]);
}
}
int main(void){
int num;
while(scanf("%d",&num)==1){
num2roma(num,"IVXLCDM");
putchar('\n');
}
return 0;
}
367:デフォルトの名無しさん
08/02/22 05:54:59
(2)
#include<stdio.h>
int main(void){
int count[100];
int i,j,h;
for(i=0;i<100;++i){
count[i] = 0;
}
for(i=0;i<30;++i){
if(scanf("%d",&h) != 1){
break;
}
++count[h/5];
}
for(i=0;i<100;++i){
if(count[i] != 0){
printf("%d...%d%8d : ",i*5,i*5+5,count[i]);
for(j=0;j<count[i];++j){
putchar('*');
}
putchar('\n');
}
}
return 0;
}
368:デフォルトの名無しさん
08/02/22 18:01:06
>>362
>>366 はでかいミスがあった それは忘れてこっちを使ってくれ
(2) 3999までの正整数をローマ数字にする int2roman.cpp
URLリンク(kansai2channeler.hp.infoseek.co.jp)
369:デフォルトの名無しさん
08/02/22 19:32:04
ここのスレはソースをはってどこがおかしいか
おしえてくれるスレですか?
かなりながいソースなんですが。
370:デフォルトの名無しさん
08/02/22 19:45:43
>>369
そりゃもう手取り足取り
どれだけ長いソースでも宿題であれば片付けるよ
それが2ちゃんクロリティ
371:デフォルトの名無しさん
08/02/22 19:50:06
ただちょっと専門的な話だから
流れをかいたファイルといろいろこみの
tar.gz形式のファイルでうpします
あとで。
372:デフォルトの名無しさん
08/02/22 19:53:24
>>371
教授から出されたような難解で困難な宿題?
373:デフォルトの名無しさん
08/02/22 23:14:14
[1] 授業単元: 認識
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:月曜日までといいたいところですが
[5] その他の制限:
おねがいします。わからないことがあれば聞きます。
374:373
08/02/22 23:20:53
URLリンク(www12.axfc.net)
こちらです
すいません。
375:デフォルトの名無しさん
08/02/22 23:24:36
>>373
件のファイルが既にありません。
しかも、「実行ファイルを実行せよ」というのはかなり怪しいです。
ウィルスなら誰も手を出しません。
376:373
08/02/22 23:35:20
//としてるとこは全部消してもらってもかまいません。
あとでみたらログチェックしたままのファイルでした
377:デフォルトの名無しさん
08/02/22 23:47:07
誰もがDVIファイル読める環境にあると思うなよw
せめてPDFくらいは・・・
あと実行ファイルは誰も実行せんがな(´・ω・`)
378:373
08/02/22 23:50:28
URLリンク(kansai2channeler.hp.infoseek.co.jp)
すいません。
379:デフォルトの名無しさん
08/02/22 23:53:25
DVIを読むためにいろいろと導入するのが理系の学生だと思うけどなぁ……
でも俺の周りでdvioutとかGhost Scriptとかまで入れてるのは二三人しかいないなぁ……
そもそもTeXすら入れてないってやつが多いし……
Linuxのパッケージ?にはUNIX派生のいろいろが入っているからいいんだろうけど……
380:デフォルトの名無しさん
08/02/23 00:55:59
このスレって理系の学生が答えるスレだったっけ?
381:デフォルトの名無しさん
08/02/23 00:58:44
>>378
そのファイル読んだけど、やってる処理に関する知識を持ってないから全く分からん
その点も説明して貰わんと、分かる人間しか答えられんぞ
382:デフォルトの名無しさん
08/02/23 01:19:49
余計な文消して文消して
コメントをいれるようにしてもう一度うpします。
そっちのほうがわかるとおもうので。
383:373
08/02/23 13:37:46
gaiyou.txtと図をいれてみました。pngもしくはjpg形式です。
お願いします。
URLリンク(www12.axfc.net)
384:デフォルトの名無しさん
08/02/23 16:16:36
チェックしてみようかと思ったが、
コンパイルすら通らずにエラーや警告出まくりなんで止めた。
385:デフォルトの名無しさん
08/02/23 16:21:04
コンパイルはとおるけど
386:デフォルトの名無しさん
08/02/23 17:21:51
>>384
ヘッダファイルをチェックしてみては?
Windowsには無くてLinuxにはある、っていうヘッダがたくさん含まれている可能性もある
387:デフォルトの名無しさん
08/02/23 19:14:26
tarファイルって書いてあるのにgzなのが気になって仕方が無い
388:デフォルトの名無しさん
08/02/23 19:27:17
uploader側で末尾のピリオド以降を拡張子と自動認識されてるんじゃないの
389:デフォルトの名無しさん
08/02/23 19:52:27
それにしてもtar.gzファイルとかtgzファイルとか書き方があると思った
390:デフォルトの名無しさん
08/02/23 23:02:52
宿題がこないね
391:デフォルトの名無しさん
08/02/23 23:08:25
#include <stdio.h>
void main(void)
{
FILE *kadaip;
char buff[256];
int n;
printf("文字を入力してください!\n");
printf("(Enterを入力すると終了)\n");
scanf("%c",&n);
kadaip = fopen("C:\\kadai.txt","w");
if(kadaip != NULL)
{
gets(buff);
while(buff[0] !='\0')
{
buff [256]= fprintf(kadaip,"%c\n",n);
printf("文字を入力してください!\n");
printf("(Enterを入力すると終了)\n");
scanf("%c",&n);
gets(buff);
}
if(buff < 0)
printf("出力エラー!\n");
fclose(kadaip);
}
else
printf("openエラー入力エラー!\n");
}
全然わからなくて、とりあえず作ってみたのがこれです。間違いだらけだと思いますが教えていただけたら嬉しいです。
あと、プログラムの終了条件は文字データの入力がないときです。よろしくお願いいたします。
392:デフォルトの名無しさん
08/02/23 23:09:55
[1] 授業単元:プログラミング
[2] 問題文:キーボードから入力した内容をファイルに保存して表示するプログラムを作りなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: visual stdio
[3.3] 言語: C
[4] 期限:2月25日まで
[5]上のものです。間違って先にプログラムの方を投稿してしまいました。
環境等はこちらです。すみませんでした。
393:デフォルトの名無しさん
08/02/23 23:22:40
>>392
#include <stdio.h>
int main(void)
{
FILE *kadaip;
char buff[256];
int n;
kadaip = fopen("C:\\kadai.txt","w");
if(kadaip != NULL)
{
printf("openエラー入力エラー!\n");
return 1;
}
while(1)
{
printf("文字を入力してください!");
printf("(Enterのみを入力すると終了)\n");
gets(buff);
if(buff[0] =='\0') break;
n=fprintf(kadaip,"%s\n",buff);
if(n<=0)
{
printf("出力エラー!\n");
break;
}
}
fclose(kadaip);
return 0;
}
394:393
08/02/24 00:01:01
>>393 が間違ってたので訂正
if(kadaip != NULL)
↓
if(kadaip == NULL)
395:デフォルトの名無しさん
08/02/24 00:04:26
373ですけど
どうですかね?
バグはみつかりましたか?
396:デフォルトの名無しさん
08/02/24 00:58:57
>>394
訂正のとおりに実行してみたら無事にできました。お早い返答ありがとうございました。
397:デフォルトの名無しさん
08/02/24 01:54:24
URLリンク(www.nicovideo.jp)
これか
398:デフォルトの名無しさん
08/02/24 02:00:08
>>397
どれだよw
399:デフォルトの名無しさん
08/02/24 02:09:19
URLリンク(www.akibablog.net)
こちらか
400:デフォルトの名無しさん
08/02/24 13:10:21
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 巡回セールスマン問題の厳密解を求めるプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 2008 Exp
[3.3] 言語: どちらでも可
[4] 期限: 2/25 12:00 ごろ
動的計画法で求めようとしているのですが、最小コストは求まったものの
そのルートを求める方法がいまいちわかりません。
dist[a][b] には a -> b の距離が入っています (a->b = b->a)
n は巡回頂点数です
URLリンク(kansai2channeler.hp.infoseek.co.jp)
401:デフォルトの名無しさん
08/02/24 15:13:14
>>400
ちょっと質問
ソースとか全然みてないでいうんだが、問題文は「厳密解」になってるけど
動的計画法って「近似解」を求める方法じゃない?
402:デフォルトの名無しさん
08/02/24 15:19:46
>>401
すまn
漏れの勘違いだったorz
403:デフォルトの名無しさん
08/02/25 02:00:32
>>400
URLリンク(kansai2channeler.hp.infoseek.co.jp)
・cost のサイズがでかすぎで手元でコンパイル通らなかったので減らした
・n や dist や CITY_NUM の定義が分からなかったので適当に補間した
以後ソースを挙げるなら定義の部分も含めてくれ
実行可能であることが最も望ましい
404:403
08/02/25 02:01:47
>>403
>コンパイル通らなかったので減らした
これは間違いで、コンパイルは通ったが実行時エラーが出たので減らした
405:デフォルトの名無しさん
08/02/25 17:53:48
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2月29日正午ごろまで(できれば28日中)
[5] その他の制限:
問題文の例の図がずれて見づらくなっちゃってます。すみません。
←valueの行で∥と∥の間が空白の場所は数値が入っておらず、演算子に対応してる位置だと思ってください。
また、大分長くなってしまってもいいので、なるべく簡単なプログラムでお願いします。
可能であればでいいので、何を目的とした部分なのか程度の注釈をいくつかつけてくださると助かります。
406:デフォルトの名無しさん
08/02/25 20:57:34
[1] プログラミング
[2] 問題文長くなるので下に書くごめんなさい
[3] 環境
[3.1] OS: Windows2000
[3.2] すいませんわかりません
[3.3]C 言語
[4] 期限: ([2008年2月26日まで] できるだけ早くお願いしたいです。
[5] 制限は特になし
機動及びmain関数(kin_main.c)
このプログラミングの実行ファイルの名称は(kintai)のする。起動時に因数として勤怠情報ファイルを引数を与える。
>kintai kin0004
引数なしで機動した場合には、ファイル名を入力するようにメッセージを表示させる。
>kintai
>勤怠情報ファイルパスを指定してください。
>
このプログラミングのmain関数。初期化処理(kin_init()),勤怠情報記録ファイル読み込み処理(kin_file_read()),
入力情報論理チェック機能(kin_logic_chk()),勤怠計算機能(kin_calc()),標準出力機能(kin_display),CSVファイル生成機能(kin_create_csv()),
を順次に呼び出し。各関数の戻り値がエラーの場合にはその時点でmain関数に戻る。プログラムを終了にするにはmain関数
出なければならない。エラー情報はいかに示す。
エラーディファイン 出力情報 意味
ERR_INIT 初期化エラー 初期化関数内でエラー
ERR_FILE_ACCESS ファイルアクセスエラー ファイルアクセスに失敗した場合
ERR_LINE_NUM_OVER 勤怠情報ファイル文字数オーバー 勤怠情報ふぁいるの1行分文字数が所定の値を超える場合
ERR_PARSE 勤怠ファイル構文エラー 勤怠情報記録の構文が誤ってる場合
ERR_TIME_LOGIC 論理チェックエラー 入力された勤怠情報に誤りがある場合
NG 内部処理エラー 上記のエラーに該当しない場合。
丸なげでごめん
407:デフォルトの名無しさん
08/02/25 21:04:29
>>406
勤怠情報ファイルのフォーマットもなしどうしろと?
丸なげどころか、情報がたりなすぎる
408:デフォルトの名無しさん
08/02/25 21:19:28
>>407
すまんまだはじめたばっかで
フォーマットを検索してもわからん
でもこんな感じになるはずなんだ
スレリンク(news4vip板)
の>>4と>>5
409:デフォルトの名無しさん
08/02/25 21:24:18
>>408
見えない
なんで検索しないといけないのかも分からんよ
410:デフォルトの名無しさん
08/02/25 21:26:18
>>406
とりあえずツッコミどころが満載だな……
・CSVファイル生成機能(kin_create_csv())でのエラーは捕まえないの?
・エラーを出すのなら、その逆として「●●の処理は成功しました」と順次表示していくと親切じゃない?
・NG→ERR_internal の方がかっこよくない?
・ERR_TIME_LOGICで、「一ヶ月の勤務日数が32日です」とか
「終業時刻+残業時間が、退勤時刻を超えてる」とかも出したほうが親切じゃない?
411:デフォルトの名無しさん
08/02/25 21:32:10
int main(int argc,char **argv){
int Result=0;
if(argc<2){
puts("勤怠情報ファイルのパスを指定してください");
}else{
FILE *pFile=fopen(argv[1],"rb");
if(pFile==NULL){
printf("%s はオープンできないよ\n",argv[1]);
}else{
printf("%s をオープンしたよ\n",argv[1]);
puts("閉じるよ");
Result=kin_init();
if(Result<0)printf("kin_init()が %d だと言ってる\n",Result);
すまんこんな感じになると思うんだ
412:デフォルトの名無しさん
08/02/25 21:34:46
>>410
すごい親切だと思うけどどうやるかさっぱりわからん
413:デフォルトの名無しさん
08/02/25 21:36:34
最初のif else 文からしてあやしい。
fopenを二回やることになるぞ
・引数ありで起動した場合
・引数なしで、ファイルパスを指定(入力?)する場合
414:デフォルトの名無しさん
08/02/25 21:47:15
>>411のは昨日やってもらったやつなんだ
引数与えないと起動しないようにするらしい
kintai kin0004.txtをつけるなければきどうしないようにする
0004は日付が入るyymmでyyが西暦の下二桁mmが該当月
.txt入らないと起動しないようにするみたいなです
415:デフォルトの名無しさん
08/02/25 21:53:12
>>414
「ファイル構文」という用語を持ち出すほどだから、
勤怠情報のファイルフォーマットはxmlくらいのものだと思った
CSV出力があるのなら、最初からCSV形式で勤怠情報のファイルフォーマットを策定すればいいんじゃない?
古い諺だが
データ構造+アルゴリズム=プログラミング
と言うし。
416:デフォルトの名無しさん
08/02/25 21:58:06
>>415
ありがと
でも初心者の俺にはさっぱり意味がわからん
417:デフォルトの名無しさん
08/02/25 22:15:29
もしかして勤怠情報ファイルのフォーマットは決まってないのか?
418:デフォルトの名無しさん
08/02/25 22:32:40
正直フォーマットって言葉がでてこないから決まってないです。
問題文にkintai kin0004.txtだった 。.txtぬけてたすまん
419:デフォルトの名無しさん
08/02/25 23:22:08
週末、勢い込んでカレー作った。
たまねぎ炒めるところから始めて、
かなり気合入れて作った。
たまねぎの量、土日あわせて6玉。
うまかった。
でも今日の屁が死ぬほどくさい。
420:デフォルトの名無しさん
08/02/25 23:27:19
余ったタマネギは犬猫に食べさせちゃだめだよ!!!
でも実験という名目ならいいのかな??
421:デフォルトの名無しさん
08/02/25 23:33:19
だるいから嫌
422:デフォルトの名無しさん
08/02/25 23:33:53
だるいから嫌
423:デフォルトの名無しさん
08/02/25 23:35:56
だるいから嫌
424:デフォルトの名無しさん
08/02/26 00:03:54
だるいから嫌
425:デフォルトの名無しさん
08/02/26 02:25:49
>>405
多少問題文とやり方が違うし、あんま自信ないけど、一応できたのでうp
URLリンク(kansai2channeler.hp.infoseek.co.jp)
426:デフォルトの名無しさん
08/02/26 04:07:54
だるいから嫌
427:デフォルトの名無しさん
08/02/26 07:14:34
>>425
乙です
ありがとう
428:デフォルトの名無しさん
08/02/26 11:45:04
[1] 授業単元: C
[2] 問題文(含コード&リンク):
3次元配列を用いたカレンダー生成プログラム
任意の西暦年数nを与えて、n年のカレンダーを下記の仕様により、作成せよ。
1)3次元配列day[12][6][7]を使用する。
2)出力形式は
1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月
とする。
3)うるう年にも対応させる。
[3] 環境
[3.1] OS:MacOSX 10.5
[3.2] コンパイラ名とバージョン:gcc 4.0.1
[3.3] 言語:Cでお願いします。
[4] 期限:2/27に提出です。
[5] その他の制限:特にありません。できれば、配列に組み込む部分と出力部分には関数を使ってほしいです。
日を配列に組み込むところで、つまってしまい、どうにもならなくなってしまいました。
最終的には理解できるようにしたいので、簡単なコメントなどつけてくれると嬉しいです。
急ぎで申し訳ありませんが、よろしくお願いしますm(_ _)m
429:デフォルトの名無しさん
08/02/26 12:11:46
わざわざ配列に入れる必要なんてないと思うけど
430:デフォルトの名無しさん
08/02/26 12:32:22
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
個人課題 )IDカードを読み込んだら、その番号を"IDList.txt"に出力せよ。
buf[]にはそれぞれ二桁の16進数が入ってるのですが、それを繋げて、
strとしました。このstrに入った値を"IDList.txt"に書き込んでいきたいのです。
略)
sprintf(str, "%02x%02x%02x%02x%02x\n", buf[0], buf[1], buf[2], buf[3], buf[4]);
これ以降をよろしくお願いします。
※カードを読み込むたびにstrは変わります。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:VS2005pro
[3.3] 言語:C++
[4] 期限:特になし
[5] その他の制限:特になし
ド素人な課題で申し訳ないのですがよろしくお願いします。
431:デフォルトの名無しさん
08/02/26 13:21:29
>>430
それ本当にC++の授業なのか?
C++の特色のひとつは、Cから格段に進化した文字列操作だぞ
432:デフォルトの名無しさん
08/02/26 13:31:08
>>430
つーかそれ、FILE * fp = fopen("IDList.txt", "w")してsprintf(str, ...)をfprintf(fp, ...)にすればいいだけじゃん。
433:デフォルトの名無しさん
08/02/26 13:55:13
>>431
C++の授業ではないのですが、C言語の授業の延長の授業で、
環境がC++だったんでそのように書きました、申し訳ありません。
確かにやっていることは++は含んで無いのだと思います。
>>432
ありがとうございます。
"a"にしたら望んでいた物になりました。