メディアプレーヤーで、unyounyo.mp3ファイルをおよそ10分置きに再生する。
そんなプログラムはC/C++で書けないでしょうか?
Sleep&&(ShellExecute||CreateProcess)
>>951 i=0;
i=i*10+a[0]-'0';
i=i*10+a[1]-'0';
i=i*10+a[2]-'0';
i=i*10+a[3]-'0';
>>924 配列で保持しておいて消していくところを0にして
0のところをスペースにすれば良いだけでは?
対して処理もいらないと思う。
#define FILENAME xxx.x
main(){
FILE *fp
if((fp=fopen(FILENAME,"r"))==NULL){
printf("cannot open FILENAME,");
exit(1);
}
fclose(fp)
}
ファイルが開けなかった時に
cannot open FILENAMEと出てしまいます。
cannot open xxx.xと表示させるにはどうしたらよいでしょうか。
printfの%s
二次元配列に2桁の数値を文字型で5個入力して、
数値以外を入力した時に、エラー表示を繰り返させたいのですが
どのようにすればいいでしょうか。お願いします。
#include <stdio.h>
#include <stdlib.h>
#define NUM_COLUMNS 2
#define INPUT_NUM 5
int main()
{
char num_buf[INPUT_NUM][NUM_COLUMNS + 1]; // 二次元配列
char buf[256];
int i, dummy;
printf("に %d 桁の数値を %d 個入力してください。\n", NUM_COLUMNS, INPUT_NUM);
for(i = 0; i < INPUT_NUM; i++) // 5 回入力
{
if(fgets(buf, sizeof(buf), stdin) == NULL)
exit(-1);
if(sscanf(buf, "%d", &dummy) == 1 && dummy >= 0 && dummy <= 99)
{
sprintf(num_buf[i], "%02d", dummy);
continue;
}
for(; ; )
priintf("エラー\n"); // エラー表示を繰り返す
}
return 0;
}
> for(; ; )
> priintf("エラー\n"); // エラー表示を繰り返す
素敵だ
無限ループは(;´Д`)
数値入力
10
数値入力
10
数値入力
10
という風にで入力する度に改行するのではなく、
数値入力 10 数値入力 10 数値入力 10
という風に入力を行いたいのですが
どのようにすればいいでしょうか?
厨ですみませんお尋ねします
5×5の配列を与えて1〜100までの数を乱数で与え、
しかも全ての数値が異なる値にするにはどうすればよいでしょうか?
乱数で与えるところまではわかるのですが
同じ値の数値があるかどうかのチェックの仕方がわかりません・・・
/* 1 〜 100 を先にシャッフルし、その先頭要素を切り出す方法 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define swap_int(i, j) do { int tmp = i; i = j; j = tmp; } while(0)
int main()
{
int base_table[100], rand_table[5][5];
int i, j, r;
srand(time(NULL));
for(i = 0; i < 100; i++)
base_table[i] = i + 1;
for(i = 0; i < 99; i++)
{
r = (int)(rand() / (double)RAND_MAX * (99 - i) );
swap_int(base_table[99 - i], base_table[r]);
}
for(i = 0; i < 5; i++) for(j = 0; j < 5; j++)
rand_table[i][j] = base_table[i * 5 + j];
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
printf("%4d", rand_table[i][j]);
putchar('\n');
}
getchar();
return 0;
}
/* 個別に乱数を求め、後で重複チェックして振り直す方法 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int rand_table[5][5];
int i, j, r, i_sub, j_sub;
srand(time(NULL));
for(i = 0; i < 5; i++) for(j = 0; j < 5; j++)
{
try_rnd:
r = (int)(rand() / (double)RAND_MAX * (99 - i) ) + 1;
for(i_sub = 0; i_sub < i - 1; i_sub++) for(j_sub = 0; j_sub < 5; j_sub++)
if(rand_table[i_sub][j_sub] == r)
goto try_rnd;
for(j_sub = 0; j_sub < j - 1; j_sub++)
if(rand_table[i][j_sub] == r)
goto try_rnd;
rand_table[i][j] = r;
}
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
printf("%4d", rand_table[i][j]);
putchar('\n');
}
getchar();
return 0;
}
966 にはバグがありそうだ
1〜25の乱数を一度ずつだけ返す関数。これでも使え。
#define N 25
int one_times_rand(void)
{
static int first = 1, size = N;
static pool[N];
int i, j, t;
if (first) {
for (i = 0; i < N; i++)
pool[i] = i + 1;
first = 0;
}
j = rand() % size--;
t = pool[size]; pool[size] = pool[j]; pool[j] = t;
return pool[size];
}
しまった
static pool[N] → static int pool[N]
まあどっちでも動くが、念のため。
しまった
static pool[N] → static int pool[N]
まあどっちでも動くが念のため。
971 :
デフォルトの名無しさん:03/01/07 22:28
BM法完全版のプログラムを教えてほしいのですが。
初めて書き込みます。VisualC++のことで聞きたいんですが。
VisualC++ のスレがあったはずだが、何でここに来る?
>>975 あなたが何も考えていない事はわかった。
1!〜100!まで表示するのは、<もしよければC言語なら私に聞いてください 48 >に書いちゃった。
マルチポスト?するとこういうことに……
皆様(965さん、966さん、968=969=970さん)色々とヒントをありがとうございました
なんとなく雰囲気はつかめました。
後は実際に自分で書いてみることにします。頑張ります。
ちなみに私は失礼ですが972さんではないです。念のため。
979 :
デフォルトの名無しさん:03/01/08 00:11
引数に与えられる文字列を、数字なら'9'に、大文字なら'A'に、小文字なら'a'に、
その他なら'.'に変更する関数をポインタを用いて作りなさい。
このとき、その関数が正しく実行されるかどうかを確認するための
プログラムの全体を提出しなさい。
ポインタがまだ理解できてないので分からないです。よろしくお願いします。
void f(char *s) {
while ( *s ) {
if ( isdigit(*s) )
*s++ = '9';
else if ( isupper(*s) )
*s++ = 'A';
else if ( islower(*s) )
*s++ = 'a';
else
*s++ = '.';
}
}
void func1(char *str)
{
while (*str) {
if (isdigit(*str)) {
*str = '9';
} else if (isupper(*str)) {
*str = 'A';
} else if (iflower(*str)) {
*str = 'a';
} else {
*str = '.';
}
str++;
}
}
「ポインタを用いる」というのがどんなものを想定しているのかはわからないけど、
こんな感じでいいんじゃないかな。
あと、「プログラム全体」というのは、main関数のことだろうけど、
それくらいは自分で書いてね。
iflower -> islower
タイプミスがあったよ。ごめん。
main関数のところすらうまくできません。こんな感じです。
int main() {
int a,i;
char *b;
scanf("%d",&a);
for(i=0;i<a;i++) {
gets(b);
f(b);
printf("%s",&f);
}
return 0;
}
>>983 char *b;
を
char b[265];
くらいにしとき。
まだできない・・・。
printfのところがおかしいと思うんだけど。
&f → b
やっとできました。
どうもありがとうございました。
988 :
デフォルトの名無しさん:03/01/08 06:01
学校の宿題で全然わからず困っております。問題は以下の通りです。
[問題]CPUのシミュレータ
CPUの動作を模擬するプログラムを書いてみよう。
CPUは、命令をメモリから取り出し、その命令に基づいた動作をする。
動作は例えばメモリからデータを読み出してCPU内のレジスタにコピーしたり、加減乗除演算をしたりする。
この一連の動きを真似るプログラムを書く。
CPUは、8ビット演算、メモリ容量は32ワード、入出力は2進数で表示。
動作の検証には、簡単なプログラムをメモリ上に用意し、
それを1ステップごとに実行した結果を表示する。
命令部分はswitch文を使うのはわかるのですが、
2進数による入出力というのができず、全体的にどのようにすれば良いかもわかりません。
どうかお願いします。
オリジナルアセンブラを作れって事かなぁ…。
>>988 CASL/COMETエミュレータでも提出しとけ。
991 :
デフォルトの名無しさん:03/01/08 09:50
整数をm個入力してソートし、その後(2分)検索をn回行うプログラムを作りなさい。
>>991 man qsort
man binsearch
994 :
C++厨 ◆vKuy6bx7T2 :03/01/08 11:06
次スレ逝きますよ?
995
..
998
999
1000get
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。