C/C++の宿題を片付けます 58代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/01/18(水) 03:35:45【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 2.9 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++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/l50#tag993
【過去スレ一覧】
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
0175156
2006/01/19(木) 17:56:33おぉ、ありがとうございます。試してみます
結果
3/15
4/21
5/31
9/ 5
12/29
sort()の同じ月の場合のところにif(dd[i]>dd[j]){}をはさんだのはわかったのですが
結果変わらず…orz
0176173
2006/01/19(木) 17:57:16月だけスワップして、日付変えてないでヤンスw
if(mm[i]>mm[j]){
Q work1=mm[j];
Q mm[j]=mm[i];
Q mm[i]=work1;
Q work2=dd[j]; //ここ追加
Q dd[j]=dd[i]; //
Q dd[i]=work2; //
}
}
0177156
2006/01/19(木) 18:08:14sort()内の
if(mm[i]>mm[j]){
Q work1=mm[j];
Q mm[j]=mm[i];
Q mm[i]=work1;
のあとに
Q work2=dd[j]; //ここ追加
Q dd[j]=dd[i]; //
Q dd[i]=work2; //
}
}
を入れて試してみましたが…変わりません……日付だけ並び変わらないです
自分の入れるところが間違ってるのでしょうか???
0178173
2006/01/19(木) 18:16:17ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1508.txt
そのままコンパイル通るようにQをdefineしてるのは内緒だ。
0179156
2006/01/19(木) 18:24:33おおおできました!できましたよ!
if(mm[i]>mm[j]){のなかでもdd[]の日付を並び替えないといけないんですね
色々時間を取らせてしまってスイマセン。これで心配事が一つ減りました
本当に助かりました。ありがとうございます
0180age
2006/01/19(木) 19:00:010181163
2006/01/19(木) 20:20:01気になってしょうがない
0182173
2006/01/19(木) 20:25:18,〜'´ ̄ヽ
ミハ^^ヽヽ( | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ル ゚∀゚)ζ< 宿題なんだから
, -|  ̄ll~|- 、 | 先生の意向に従っていただこうッ!!
.〈 イ 〈 |___________________
0183163
2006/01/19(木) 20:28:48少なくとも敬おうとは思わない、寝ながら講座開いてんじゃねーよ。
0185デフォルトの名無しさん
2006/01/19(木) 21:17:56もしくは57代目の852さん再アプお願いします。
0186デフォルトの名無しさん
2006/01/19(木) 21:37:18[2] 問題文:次のような英小文字の「変換規則」が複数個入ったファイルを用意する。例えばruleとする。
a -> b
b -> c
b -> x
c -> z
変換規則のファイル名、及び「開始文字」を入力し、変換規則を可能な限り使い、変換できなくなるまで変換の過程を出力せよ。何通りもある場合はせべて出力せよ。ただし、変換過程にループがある場合にはその旨を表示して終了すること。
〜例1〜
変換規則のファイル:rule
開始文字:a
出力:
[1]a -> b -> c -> d
[2]a -> b -> x
〜例2〜
変換規則の例
a -> b
b -> a
開始文字:a
出力:ループがあります。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:borland
[3.3] 言語:C
[4] 期限:2006年1月22日まで
[5] その他の制限:特にありません。
まるで分かりません。助けて下さい…OTL
できるだけ分かりやすいプログラムだとありがたいです。
0187デフォルトの名無しさん
2006/01/19(木) 21:39:18僕にもさっぱり分かりません。
0188デフォルトの名無しさん
2006/01/19(木) 21:45:45a -> a
だけでいいじゃん
0189デフォルトの名無しさん
2006/01/19(木) 21:59:06問題の意味が、サップです
0190デフォルトの名無しさん
2006/01/19(木) 22:04:180191デフォルトの名無しさん
2006/01/19(木) 22:21:130192デフォルトの名無しさん
2006/01/19(木) 22:32:03今でも廃れていない。
0193デフォルトの名無しさん
2006/01/19(木) 22:57:39もう忘れた。
0194デフォルトの名無しさん
2006/01/19(木) 23:16:14するって問題らしいな。
0195デフォルトの名無しさん
2006/01/19(木) 23:19:03要素数を先にスキャンして、何×何の行列を確保するか調べて
おく必要があるな。そこに気をつければ割と簡単かも。
0196デフォルトの名無しさん
2006/01/19(木) 23:22:56[2] 問題文(含コード&リンク):
全部で20個の整数データを順に入力するものとする。
その際,各データを入力する毎に,新たに入力されたデータが,すでに入力されたデータと異なる場合だけ,
そのデータを出力するプログラムを書け。
なお,データは,1行に1つずつ出力せよ.
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特になし。よろしくお願いします。
0197デフォルトの名無しさん
2006/01/19(木) 23:24:25Warshal 推移閉包 でぐぐってみると良い。
0198デフォルトの名無しさん
2006/01/19(木) 23:35:17#include<set>
#include<iostream>
int main(){
using namespace std;
set<int> sets;
for(int i=0,j;i<20 && cin >> j;sets.insert(j),++i)
if(!sets.count(j))cout << j << endl;
}
0199デフォルトの名無しさん
2006/01/19(木) 23:44:04forの条件式には、本当の意味での条件式のみを入れて
読み取りなどはループ本体に書けと何かの本で見た希ガス
0200198
2006/01/19(木) 23:53:18となるとこんな感じかな。
#include<set>
#include<iostream>
int main(){
using namespace std;
set<int> sets;
for(int i=0,j ; i < 20 ; ++i)
if(!(cin >> j))break;
else if(sets.insert(j).second)cout << j << endl;
}
0201デフォルトの名無しさん
2006/01/20(金) 00:16:31[2] 問題文(含コード&リンク):
引数xのn乗を返す関数my_pow設計せよ。ただし、引数の型はx:double,n:int
とし、戻り値はdoubleとする。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月21日でお願いします。
[5] その他の制限:特にないです。
0202デフォルトの名無しさん
2006/01/20(金) 00:21:19かなり適当。入力チェックは皆無。出力形式もいい加減だから自分で適当に直して。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1511.txt
0203デフォルトの名無しさん
2006/01/20(金) 00:24:15適当に
double my_pow(double x,int n){
double r = 1;
unsigned u = n;
if(n<0)u = -n,x = 1/x;
do if(u%2)r *= x;while(x *= x,u/=2);
return r;
}
0204デフォルトの名無しさん
2006/01/20(金) 00:24:26double my_pow(double x, int n)
{
int i = 0;
double base = 1;
for(i = 0; i < n; ++i)
base *= x;
return base;
}
[2] 問題文(含コード&リンク):
1,2,3,4,5,6,7,8,9を一つずつ使ってできる9桁の数(例えば294618375など)をyとする。
また、xを正の整数とする。
そこで、y=x*x が成り立つyとxの値をそれぞれ求め、
y=????????? x=?????
y=????????? x=?????
y=????????? x=?????
上記のような形式で値を出力するプログラムを書け。
[3] 環境
[3.1] OS: Windows XP
[3.2] VC++ 6.0
[3.3] 言語:どちらでも可
[4] 期限: 2006年01月23日20:00まで
[5] その他の制限:特にありません。
一度自分でやってみたのですが、技量不足故に全く手がつきませんでした。
どうかよろしくお願いいたします。
0208デフォルトの名無しさん
2006/01/20(金) 00:56:46#include <stdio.h>
#include <math.h>
int match(int y){
int flg = 0;
if(y<123456789||987654321<y) return 0;
while(y){
int p = 1<<(y%10);
if(p&1||flg&p) return 0;
flg|=p;
y/=10;
}
return 1;
}
main(){
int begin = (int)floor(sqrt(123456789));
int end = (int)ceil(sqrt(987654321));
int x;
for(x=begin; x<end; ++x) if(match(x*x)) printf("y=%d x=%d\n", x*x, x);
}
0209デフォルトの名無しさん
2006/01/20(金) 00:58:29#include <stdio.h>
int chk[10];
int check(int y){
int i, r, z;
if(y < 100000000) return -1;
if(y > 999999999) return 0;
for(i = 0; i < 10; i++) chk[i] = 0;
z = y;
while(z > 0){
r = z % 10;
if(chk[r] == 0 && r != 0) chk[r] = 1;
else return -1;
z /= 10;
}
return 1;
}
int main(void){
int x = 1, y, c;
while(1){
y = x * x;
c = check(y);
if(c == 0) break;
else if(c == 1) printf("y=%d x=%d\n", y, x);
x++;
}
return 0;
}
0210デフォルトの名無しさん
2006/01/20(金) 01:00:22#include<algorithm>
#include<iostream>
#include<math.h>
int main(){
int y[9];
for(int i=1;i<10;++i)y[i-1]=i;
do{
int value = 0;
for(int i=0;i<9;++i)value = value * 10 + y[i];
int x = static_cast<int>(sqrt((double)value));
if(x*x == value)std::cout << "y="<<value << " x="<<x<<std::endl;
}while(std::next_permutation(y,y+9));
}
0211デフォルトの名無しさん
2006/01/20(金) 01:01:16[2] 問題文(含コード&リンク):
int x;
scanf("%d",&x);
printf("%d",x);
上記のようにprintf()では引数に&を使わないのにscanf()では
使う理由を説明せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月22日でお願いします。
[5] その他の制限:特にないです。
0212デフォルトの名無しさん
2006/01/20(金) 01:03:560213デフォルトの名無しさん
2006/01/20(金) 01:07:02ライブラリ設計者に聞いてみたいところだが
0214デフォルトの名無しさん
2006/01/20(金) 01:08:14scanf("%s",buf);
printf("%s",buf);
上記のようにscanfで&を使うとは限らない。
単なる仕様
0215デフォルトの名無しさん
2006/01/20(金) 01:11:08#include <cmath>
#include <cstdio>
using namespace std;
bool isOK( int y ) {
bool digit[10]={};
for( int i = 0, j = 100000000; i < 9; ++i, j/=10 ) {
int n = y / j;
y %= j;
digit[n] = true;
}
for( int i = 1; i <= 9; ++i ) if( !digit[i] ) return false;
return true;
}
int main( ){
// 123456789 <= x*x <= 987654321 より x上限がわかる
int max_x = (int)floor( sqrt( 987654321.0 ));
int min_x = (int)ceil( sqrt( 123456789.0 ));
for( int x = min_x; x <= max_x; ++x ) {
int y = x * x;
if( isOK( y )) printf( "y=%d x=%d\n", y, x );
}
}
0216デフォルトの名無しさん
2006/01/20(金) 01:13:21scanfでは与えられた引数の値を書き換える必要があるため。
もしscanfがポインタ渡しではなかったとしたら、
クライアント側で宣言した引数の値をscanf関数が変更することはできない。
printfは与えられた引数の値の変更が一切発生しないため、値渡しでよい。
0217デフォルトの名無しさん
2006/01/20(金) 01:17:39大筋は>>216でいいと思うが、>>214の様に例外もあるわけで
問題がおかしいと答えとけ
0218デフォルトの名無しさん
2006/01/20(金) 01:22:43printf( "%p", &hoge )
みたいに&付けたりあり得るしな。
0219205 ◆Tjwqg0YZug
2006/01/20(金) 01:25:11>>209
>>210
>>215
質問してまだあまり経っていませんが、直ぐにお答えしていただいて有難うございます。
皆さんの優しさに本当に感謝いたします。
これからも皆さんを見習って、私も誰かに教えられるような腕前になるまで努力していこうと思います。
本当に有難うございました。
0220デフォルトの名無しさん
2006/01/20(金) 01:31:33>>211ではまず例を提示しており、
その例を引き合いにして、「printfでは&を使わず、scanfでは&を使う。なぜか?」と聞いている。
scanfでは&を「必ず」使うとは書いていないし、
printfでは&を「必ず」使わないとも書いていない。
まあ、悪文ではあるわな。
0221211
2006/01/20(金) 01:33:13質問してきます。ありがとうございました。
0222デフォルトの名無しさん
2006/01/20(金) 01:35:36scanfが値を格納する関数であることを考えれば
引数は左辺値でなければならないことは自明だし
そうであれば少なくとも値型であるintでは
左辺値とするためにアドレス演算子を使うのは至極当然
0223デフォルトの名無しさん
2006/01/20(金) 02:19:52[2] 問題文(含コード&リンク): ポインタ配列の変数を下記の文字列(”JANUARY”〜”DECEMBER”)で初期化
1 ’R’が含まれている文字列を表示
2 各文字列で’R’が最初に見つかった所は先頭から何文字目かを表示する
初期化文字列:"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"
○実行結果例 Rがある月はJANUARYで6文字目です
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] C
[4] 20日24:00
[5] strchr()
0224デフォルトの名無しさん
2006/01/20(金) 02:28:070225デフォルトの名無しさん
2006/01/20(金) 02:31:04#include <stdio.h>
#include <string.h>
int main() {
const char *Month[] = { "JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER",NULL };
const char **aaa;
char *bbb;
for(aaa=Month; *aaa!=NULL; aaa++)
{
bbb = strchr(*aaa,'R');
if (bbb != NULL){ printf("%s %d\n", *aaa, bbb-*aaa+1); }
}
return 0;
}
0226デフォルトの名無しさん
2006/01/20(金) 02:32:10#include <stdio.h>
#include <string.h>
int main(void)
{
char* month[] = {"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"};
char* p;
int i;
for( i = 0 ; i < 12 ; i++ ) {
p = strchr(month[i], 'R');
if( p != NULL ) printf("Rがある月は%sで%d文字目です\n", month[i], p - month[i] + 1);
}
return 0;
}
脳内コンパイル
0227デフォルトの名無しさん
2006/01/20(金) 02:36:48出題者がxをどうにかしたいと思っているから、と答えれ
0228デフォルトの名無しさん
2006/01/20(金) 02:42:42その問題解けないようじゃ
C/C++なんかやめて
JAVAに行きなさい
0229211
2006/01/20(金) 02:43:160230211
2006/01/20(金) 02:45:26俺じゃないです。
0231名無し
2006/01/20(金) 03:06:19[2] 問題文:[入力]6以下の自然数N(決して7以上の数を入力しないよう!)
[処理]N!を再帰法を使って計算する。[出力]入力の階乗(factorial)!の計算結果を出力。
[説明]fac(n)=1 n=1の時,fac(n)=n*fac(n-1) n>1の時、が階乗!の再帰的な定義である。
この定義をそのまま、関数(再帰的関数)として定義せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[2006年1月22日9:00まで]
[5] その他の制限:
お願いします。
0232デフォルトの名無しさん
2006/01/20(金) 03:10:09#include <stdio.h>
int kaijo(int n)
{
if (n==1)
return 1;
return kaijo(n-1)*n;
}
int main()
{
int n,ans;
scanf("%d", &n);
ans=kaijo(n);
printf("%d\n", ans);
return 0;
}
0233名無し
2006/01/20(金) 03:16:49[2] 問題文:[入力]32個の異なる二桁の自然数[操作]32個の自然数の中で最大値(MAX)と最小値(MIN)を求める。
[出力]入力データ、最大値(MAX)と最小値(MIN)
[説明]入力された32個のデータを配列に記憶。記憶された32個のデータを集合と考え、配列の添数(インデックス index) m,n(m<nを仮定)を
使って配列のm番目からn番目までのデータを含む部分集合は添数を使って(m,n)で表せる。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[2006年1月22日9:00まで]
[5] その他の制限:
0234デフォルトの名無しさん
2006/01/20(金) 03:21:03求めるっつーことはソートの関数作れって事でしょ
バブルソートなんかは簡単だから自分で作ってみなさいな
0235デフォルトの名無しさん
2006/01/20(金) 03:24:08単元が分割統治と再帰だからソートを実装するのが
求められてるのだとしたら、バブルじゃなく
クイック・マージが妥当だろ
0236デフォルトの名無しさん
2006/01/20(金) 03:26:230237デフォルトの名無しさん
2006/01/20(金) 03:35:470238デフォルトの名無しさん
2006/01/20(金) 03:41:32オーバーフローじゃね?
確か16bit整数型だと8!でオーバーフロー起こす
もっともそれでも7!がダメな理由が分からんが
それにlongや(C99なら)long long使えばもっと伸びるしな
0239デフォルトの名無しさん
2006/01/20(金) 10:59:270240デフォルトの名無しさん
2006/01/20(金) 11:50:030241デフォルトの名無しさん
2006/01/20(金) 12:30:49[2] 問題文
学生20人の成績を入力すると、上位5人の成績・全体の平均点・
最低点を出力するプログラムを作成せよ。
[3] 環境
[3.1] WindowsXP
[3.3] C言語
[4] 期限: 1月22日午前10時
[5] その他の制限: 初心者なのでできるだけ簡単な方法でお願いします。
理解できるのは、if,for,while,配列,関数がかろうじて少し…といった
レベルです。
どなたかよろしくお願いします!!
0242デフォルトの名無しさん
2006/01/20(金) 12:44:19[2] 問題文:符号なし16進数を文字列s[]に変換する関数ItoH(n,s)を作りなさい。
nを16で割った余りが16進数の一番低位の数となります。これを'0'〜'9'または'A'〜'F'
の文字に変換します。次に16で割った商を新しいnとして上の変換を繰り返していきます。
できあがった文字列は、逆順に並んでいますので、文字列の順序を入れ替えていきます。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 一時間以内でお願いします。
[5]<string.h>を使ってください。
おながいします
0243デフォルトの名無しさん
2006/01/20(金) 12:45:58(゚Д゚)ノ ァィ
#include<stdio.h>
int main(void){
int ten[20],i,k,c;
float s=0.0;
for(i=0;i<20;i++){
scanf("%d",&ten[i]);
s += ten[i];
}
s /= 20;
for(i=0;i<5;i++)
for(k=19;k>i;k--)
if(ten[k]>ten[k-1]){
c = ten[k];
ten[k] = ten[k-1];
ten[k-1] = c;
}
for(i=0;i<5;i++)
printf("%d\n",ten[i]);
printf("平均点:%f点\n",s);
return 0;
}
0244デフォルトの名無しさん
2006/01/20(金) 13:06:31さ〜て間に合うかな(・∀・)ニヤニヤ
0245デフォルトの名無しさん
2006/01/20(金) 13:09:200246デフォルトの名無しさん
2006/01/20(金) 13:16:47<string.h>ってどこに使うんだ?
0247デフォルトの名無しさん
2006/01/20(金) 13:17:160248デフォルトの名無しさん
2006/01/20(金) 13:20:03ッシ!!
0249デフォルトの名無しさん
2006/01/20(金) 13:23:04無理やり使えないことはないが何か違う気がする
0250デフォルトの名無しさん
2006/01/20(金) 13:25:24string.h使うならC++まで拡張して逆方向反復子が使えて便利だったのに
0251デフォルトの名無しさん
2006/01/20(金) 13:26:050252デフォルトの名無しさん
2006/01/20(金) 13:36:360253241
2006/01/20(金) 13:38:40素早い回答ありがとうございます!
もうお返事あるとは思わず少し感動…。
なのですが、これだと上位5人の成績表示されないと思うのですが…
どう直せばよいのかも分からずorz
すみません、どなたかお願いします!!
0254デフォルトの名無しさん
2006/01/20(金) 13:44:21あれでおkだよ。ソートしてんじゃん。
0255デフォルトの名無しさん
2006/01/20(金) 13:45:06(゚Д゚)ノ 悪い最低点忘れてたw
#include<stdio.h>
int main(void){
int ten[20],i,k,c;
float s=0.0;
for(i=0;i<20;i++){
scanf("%d",&ten[i]);
s += ten[i];
}
s /= 20;
for(i=0;i<19;i++)
for(k=19;k>i;k--)
if(ten[k]>ten[k-1]){
c = ten[k];
ten[k] = ten[k-1];
ten[k-1] = c;
}
puts("上位点");
for(i=0;i<5;i++)
printf("%d\n",ten[i]);
printf("最低点:%d\n",ten[19]);
printf("平均点:%f点\n",s);
return 0;
}
0256デフォルトの名無しさん
2006/01/20(金) 13:46:17そろそろ行くか
#include<stdio.h>
#include<string.h>
void ItoH(int,char*);
void ItoH(int n,char *s){
char str[]="0123456789ABCDEF";
int i=0;
do{
s[i] = str[n%16];
n = n/16;
i++;
}while(n>0);
s[i] = '\0';
strrev(s);
}
int main(void){
char s[256];
int n;
printf("数字入力:");
scanf("%d",&n);
ItoH(n,s);
printf("%s\n",s);
return 0;
}
0257デフォルトの名無しさん
2006/01/20(金) 14:45:06[2] 問題文(含コード&リンク):
ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。ブロック内の更新データの先頭はアドレスは16進で入力する。
更新データは2桁で1バイトの16進データを入力する。
:実行例:
a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
ADR->12
DATA->a1a2a4
000200: 64 69 2e 68 3e・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e a1 a2 a4 ・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d 0a 09・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
DATA->_
ADR->_
Change OK?->y
BLNo.->
[3] 環境 Windows C言語
[4]2006/01/20 18:00まで
0258デフォルトの名無しさん
2006/01/20(金) 14:54:18ttp://pc8.2ch.net/test/read.cgi/tech/1136768567/409
0259256
2006/01/20(金) 15:11:53これをいじれば出来ると思うのですが上手くいきません。
お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1512
0260デフォルトの名無しさん
2006/01/20(金) 15:19:390261デフォルトの名無しさん
2006/01/20(金) 15:21:00なんで単発スレ立ててるんだよ
もうくるな
0262デフォルトの名無しさん
2006/01/20(金) 15:24:01[2] 問題文(含コード&リンク):
ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。ブロック内の更新データの先頭はアドレスは16進で入力する。
更新データは2桁で1バイトの16進データを入力する。
:実行例:
a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
ADR->12
DATA->a1a2a4
000200: 64 69 2e 68 3e・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e a1 a2 a4 ・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d 0a 09・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
DATA->_
ADR->_
Change OK?->y
BLNo.->
[3] 環境 Windows C言語
[4]2006/01/20 18:00まで
ここまで作りましたhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1512
0263デフォルトの名無しさん
2006/01/20(金) 15:24:470264デフォルトの名無しさん
2006/01/20(金) 15:25:340265デフォルトの名無しさん
2006/01/20(金) 15:26:280266デフォルトの名無しさん
2006/01/20(金) 15:28:380267デフォルトの名無しさん
2006/01/20(金) 15:29:03[2] 問題文(含コード&リンク): 文字列sの中の異なった文字の数を(種類)を数える関数SuteStr(s,t)を作りなさい。
文字列t[]には文字の種類を入れることにします。
<ヒント>
文字列sの要素*sを1つずつチェックしていきます。t[]には、今まで出てきた文字の種類を
入れておきます。文字*sと同じ文字がt[]の中になかったら、t[]の後に追加します。文字列
s[]の中に'\0'が出てくるまで繰り返します。
<実行例>
Input String: C-language
Different char number is 8
Output String:C-langue
[3] 環境
[3.1] OS: mac osX 10.4.4
[3.2] コンパイラ名とバージョン: X code2.0
[3.3] 言語: C言語
[4] 期限: 今日の五時まで
[5] その他の制限: なし
もう無理。教えてください。
0268デフォルトの名無しさん
2006/01/20(金) 15:29:22できないとはっきり言え
0269デフォルトの名無しさん
2006/01/20(金) 15:30:33だから 意味が分らない=できない
のつもり^^;
0270デフォルトの名無しさん
2006/01/20(金) 15:30:380271デフォルトの名無しさん
2006/01/20(金) 15:32:37英数字だけ?
それとも2バイト文字も含む訳?
0272デフォルトの名無しさん
2006/01/20(金) 15:33:15>>271::>>262 → >>267
0273デフォルトの名無しさん
2006/01/20(金) 15:39:34int count(char *s)
{
int table[256] = {0};
int i, sum = 0;
for (; *s; s++)
table[(unsigned char) *s]++;
for (i = 0; i < 256; i++)
if (table[i])
sum++;
return sum;
}
0274デフォルトの名無しさん
2006/01/20(金) 15:40:38前スレで作ってもらったのは無視?
ttp://pc8.2ch.net/test/read.cgi/tech/1136768567/409
■ このスレッドは過去ログ倉庫に格納されています