無題
Re:無題
質問に答えるために幾つかお願いがあります。スムーズに回答するために必要な事柄ですのでぜひお願いします。
・ 使用している環境やコンパイラ(VisualC++2008ExpressEdition等)、自分が習っている言語の規格(CにもC89やC99など幾つか規格があります)を教えて下さい。
・ 自分はどこまで理解しているのか、学校ではどこまで習ったのか明確にして下さい。特に使って良い関数の制限などが分かると答えやすいです。無制限なら無制限と書いて下さいね。
・ 自分で書いたソースプログラムがあるなら提示をお願いします。
・ ソースが有る場合は、自分が書いたソースプログラムはどこからどこまでなのか教えて下さい。
詳しくはこの掲示板の使い方をご覧ください→ http://dixq.net/board/board.html
・ 使用している環境やコンパイラ(VisualC++2008ExpressEdition等)、自分が習っている言語の規格(CにもC89やC99など幾つか規格があります)を教えて下さい。
・ 自分はどこまで理解しているのか、学校ではどこまで習ったのか明確にして下さい。特に使って良い関数の制限などが分かると答えやすいです。無制限なら無制限と書いて下さいね。
・ 自分で書いたソースプログラムがあるなら提示をお願いします。
・ ソースが有る場合は、自分が書いたソースプログラムはどこからどこまでなのか教えて下さい。
詳しくはこの掲示板の使い方をご覧ください→ http://dixq.net/board/board.html
Re:無題
>softya さん
使用している環境やコンパイラはubuntuでEmacsというものを使わされています。
どこまで理解できているかというとオライリーのC実践プログラミングで
9章の変数スコープおよび関数というところまでは進んだのですが実際にCを習い始めてから
半年もたっていないのでほとんど初心者です。
関数については特に制限などは設けられていないので無制限です。
自分で書いたソースコードはありません。
次からは掲示板の使い方を読んでから質問させていただきます。すみませんでした。
>ハッカー さん
>文字 11
この出力は教員が問題に口頭で追加したものだったので
そのことを問題文中に記述するのを忘れていました。
誤解を招いてしまいすみませんでした
使用している環境やコンパイラはubuntuでEmacsというものを使わされています。
どこまで理解できているかというとオライリーのC実践プログラミングで
9章の変数スコープおよび関数というところまでは進んだのですが実際にCを習い始めてから
半年もたっていないのでほとんど初心者です。
関数については特に制限などは設けられていないので無制限です。
自分で書いたソースコードはありません。
次からは掲示板の使い方を読んでから質問させていただきます。すみませんでした。
>ハッカー さん
>文字 11
この出力は教員が問題に口頭で追加したものだったので
そのことを問題文中に記述するのを忘れていました。
誤解を招いてしまいすみませんでした
Re:無題
>使用している環境やコンパイラはubuntuでEmacsというものを使わされています。
gccの可能性が高いですね。
Emacsはエディタです。
「オライリーのC実践プログラミング」の目次を見てみましたが
http://www.oreilly.co.jp/books/4900900648/
ポインタの理解がまだだと思われるので、char型配列で文字列を処理した方が良いと思われます。
ところで文字列は、どの様にしてプログラムで使いますか?
読み込むんでしょうか?
それとも、文字列として定義するんでしょうか?
とりあえずわかる範囲で良いでプログラムを書いてみて下さい。
gccの可能性が高いですね。
Emacsはエディタです。
「オライリーのC実践プログラミング」の目次を見てみましたが
http://www.oreilly.co.jp/books/4900900648/
ポインタの理解がまだだと思われるので、char型配列で文字列を処理した方が良いと思われます。
ところで文字列は、どの様にしてプログラムで使いますか?
読み込むんでしょうか?
それとも、文字列として定義するんでしょうか?
とりあえずわかる範囲で良いでプログラムを書いてみて下さい。
Re:無題
自分で書いてみたソースコードです。
最初はchar型で処理してみようと頑張ってみたのですが
エラーの内容もわからないので諦めてこのような内容になりました。
このプログラムだとgetcharで1文字づつ処理しています。
#include<stdio.h>
int main()
{
printf("英語の文字列を入力してください\n");
int code;
int count = 0,count2 = 0,count3;
for (;;) {
code = getchar();
if (code =='\n') {
break;
}
if (code == ' ') {
++count;
}
else
++count2;
}
count3 = count+1;
printf("\n空白 = %d\n", count);
printf("文字 = %d\n", count2);
printf("語 = %d\n", count3);
return(0);
}
最初はchar型で処理してみようと頑張ってみたのですが
エラーの内容もわからないので諦めてこのような内容になりました。
このプログラムだとgetcharで1文字づつ処理しています。
#include<stdio.h>
int main()
{
printf("英語の文字列を入力してください\n");
int code;
int count = 0,count2 = 0,count3;
for (;;) {
code = getchar();
if (code =='\n') {
break;
}
if (code == ' ') {
++count;
}
else
++count2;
}
count3 = count+1;
printf("\n空白 = %d\n", count);
printf("文字 = %d\n", count2);
printf("語 = %d\n", count3);
return(0);
}
Re:無題
まずは入力した文字列を、そのまま表示するだけの
プログラムを作ってみてはどうでしょう。
それしてもらって、
自分がどのデータに対して処理を
行おうとしているのか理解することが
必要かと思います。
【Programming Place Plus】
http://www.geocities.jp/ky_webid/index.html
コンテンツのC言語編を読み進めて下さい。
プログラムを作ってみてはどうでしょう。
それしてもらって、
自分がどのデータに対して処理を
行おうとしているのか理解することが
必要かと思います。
【Programming Place Plus】
http://www.geocities.jp/ky_webid/index.html
コンテンツのC言語編を読み進めて下さい。
Re:無題
>C言語だと変数はブロックの先頭にまとめて宣言しておかなければならなかったと記憶していますが・・・
それはC89規格の制限でC99規格のコンパイラなら問題ありません。
http://ja.wikipedia.org/wiki/C99
それはC89規格の制限でC99規格のコンパイラなら問題ありません。
http://ja.wikipedia.org/wiki/C99
Re:無題
【Programming Place Plus】
http://www.geocities.jp/ky_webid/index.html
コンテンツのC言語編
9章の関数を読んでみてください。
>スペースだけだろうと自分で判断しました。
はっきりとさせておいた方が良いでしょう。
大まかな流れは、
1.文字列を入力する gets( str ) ;
2.入力した文字列を関数に送る
3.文字数と語数を調べる
4.値を返す
5.値を表示する
// 戻り値に構造体を使った場合の部分的な抜き出しです。
// 足りない定義は調べましょう。
for( s=strtok(str," "); s!=NULL; s=strtok( NULL," ") )
{
a.moji += strlen( s ) ;
a.div++ ;
}
http://www.geocities.jp/ky_webid/index.html
コンテンツのC言語編
9章の関数を読んでみてください。
>スペースだけだろうと自分で判断しました。
はっきりとさせておいた方が良いでしょう。
大まかな流れは、
1.文字列を入力する gets( str ) ;
2.入力した文字列を関数に送る
3.文字数と語数を調べる
4.値を返す
5.値を表示する
// 戻り値に構造体を使った場合の部分的な抜き出しです。
// 足りない定義は調べましょう。
for( s=strtok(str," "); s!=NULL; s=strtok( NULL," ") )
{
a.moji += strlen( s ) ;
a.div++ ;
}
Re:無題
言語不明なので勝手に解釈します。
単に空白類文字で区切ればよいのであれば...
単に空白類文字で区切ればよいのであれば...
#include <iostream> #include <string> #include <sstream> int main() { std::string str; std::getline(std::cin, str); std::istringstream iss(str); int n_words = 0, n_letters = 0; while (iss >> str) { ++n_words; n_letters += str.size(); } std::cout << "文字 " << n_letters <<std::endl; std::cout << "語数 " << n_words <<std::endl; }でよいのではないでしょうか?
Re:無題
ご本人が
>オライリーのC実践プログラミングで9章の変数スコープおよび関数というところまでは進んだのですが
http://www.oreilly.co.jp/books/4900900648/
とおっしゃっていますので、C++とかstrtokを使ったポインタも難しいんじゃないでしょうか。
>オライリーのC実践プログラミングで9章の変数スコープおよび関数というところまでは進んだのですが
http://www.oreilly.co.jp/books/4900900648/
とおっしゃっていますので、C++とかstrtokを使ったポインタも難しいんじゃないでしょうか。
Re:無題
そもそも英語だという指定はされていませんね。
英語またはヨーロッパ諸語だとした場合、ピリオドやクエスチョンマークの直後には空白を入れなければならない決まりになっていますので、連続は基本的に考える必要はありません。
連続している場合も実際にはあるのですが、abc co.,ltd.のような会社名だと、co.がひとつの単語になります。
スペイン語の場合、文頭に¿が来ることがあるので、これを除外しなければなりません。
あと、ギリシャ文字やキリル文字を使う言語もありますので、それらを対象にするのかどうかも考慮しなければなりませんし、アクセント記号やトレマ、ßやœなどの特殊文字を使う言語もどうするのか考慮しなければなりません。
というわけで、プログラミング言語も不明、データの言語も不明だと、どこまで考えてよいのかわかりませんね。
英語またはヨーロッパ諸語だとした場合、ピリオドやクエスチョンマークの直後には空白を入れなければならない決まりになっていますので、連続は基本的に考える必要はありません。
連続している場合も実際にはあるのですが、abc co.,ltd.のような会社名だと、co.がひとつの単語になります。
スペイン語の場合、文頭に¿が来ることがあるので、これを除外しなければなりません。
あと、ギリシャ文字やキリル文字を使う言語もありますので、それらを対象にするのかどうかも考慮しなければなりませんし、アクセント記号やトレマ、ßやœなどの特殊文字を使う言語もどうするのか考慮しなければなりません。
というわけで、プログラミング言語も不明、データの言語も不明だと、どこまで考えてよいのかわかりませんね。
無題
#include "DxLib.h"
#define size (20)
#define PI_H (9)
#define PI_W (9)
#pragma warning(disable:4996)
int MyDrawPixel(int x, int y, int color){
int sx, sy, Wh=GetColor(255,255,255), Bl=GetColor(70,70,255), col[/url] = {Wh,Bl};
sx=x*size; sy=y*size;
DrawBox(sx, sy, sx+size-1, sy+size-1, Wh, TRUE);DrawBox(sx+2, sy+2, sx+size-1-2, sy+size-1-2, col[colo[/url], TRUE);
DrawLine(sx,sy, sx+size-1, sy+size-1,col[colo[/url]);DrawLine(sx,sy+size-2,sx+size-1,sy-1,col[colo[/url]);
return 0;
}
int YokoPixel(int x, int y, int color){
int sx, sy, Wh=GetColor(255,255,255), Bl=GetColor(170,170,255), Yl=GetColor(249,230,100);
int Gr=GetColor(170,255,170),Rd=GetColor(255,170,170), col[/url] = {Wh,Bl,Rd,Yl,Gr};
sx=size*PI_W+x*size; sy=y*size;
DrawBox(sx, sy, sx+size-1, sy+size-1, col[colo[/url], TRUE);
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
int SetFontThickness(int TinckPal),CheckHitKey(int KeyCode), MouseX, MouseY;
int WorkData[PI_H][PI_W] = {0}, PixelData[PI_H][PI_W],PixellData[PI_H][PI_W]={0};
int i, j, y=0,Bk,Wh,Min=0; FILE *file;
file=fopen("yokoiro.txt","r");
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
fscanf(file,"%d", &PixellData[j]);
}
}
fclose(file);
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
YokoPixel(j, i, PixellData[j]);
}
}
file=fopen("masu2.txt","r");if(file==NULL){printfDx("FILE ERORR");exit(0);}
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
fscanf(file,"%d", &PixelData[j]);
}
}
fclose(file);
ChangeWindowMode(TRUE); if(DxLib_Init() == -1){return -1;}
Bk=GetColor(0,0,0); Wh=GetColor(255,255,255);
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
MyDrawPixel(j, i, 0);
}
}
SetMouseDispFlag(TRUE);
while(!ProcessMessage()){
if(memcmp(PixelData, WorkData, sizeof(int)*PI_H*PI_W) == 0) break;
if(GetMouseInput() & MOUSE_INPUT_LEFT){
while (GetMouseInput() & MOUSE_INPUT_LEFT);
GetMousePoint(&MouseX, &MouseY);
MouseX = MouseX/size;
MouseY = MouseY/size;
if(Min<=MouseX&&MouseX<PI_W&&Min<=MouseY&&MouseY<PI_H){
WorkData[MouseY][MouseX]++;
if(WorkData[MouseY][MouseX] > 1) WorkData[MouseY][MouseX] = 0;
MyDrawPixel(MouseX, MouseY, WorkData[MouseY][MouseX]);
}
}
}
DrawString(40,330,"Game Clear!",Wh);
WaitTimer(2000);DxLib_End();return 0;
}
イラストロジックを作成しましたが、白いセルの横にカラーのセルを表示させようとすると、
画面が出てきません。
col[colo[/url]の配列を見ると、すべて0になっていました。
YokoPixel(j, i, PixellData[j]);
の関数にエラーが出るのですが、
どこか間違えているのでしょか?
横色の配列は、
1 2 3 4 0 0 0 0 0
1 2 2 3 4 4 0 0 0
1 2 2 3 4 4 0 0 0
1 2 2 3 4 4 0 0 0
1 2 2 3 4 4 0 0 0
1 2 2 3 4 4 0 0 0
1 2 3 4 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
完成図は
1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
を入力しました。
よろしくお願いします。
#define size (20)
#define PI_H (9)
#define PI_W (9)
#pragma warning(disable:4996)
int MyDrawPixel(int x, int y, int color){
int sx, sy, Wh=GetColor(255,255,255), Bl=GetColor(70,70,255), col[/url] = {Wh,Bl};
sx=x*size; sy=y*size;
DrawBox(sx, sy, sx+size-1, sy+size-1, Wh, TRUE);DrawBox(sx+2, sy+2, sx+size-1-2, sy+size-1-2, col[colo[/url], TRUE);
DrawLine(sx,sy, sx+size-1, sy+size-1,col[colo[/url]);DrawLine(sx,sy+size-2,sx+size-1,sy-1,col[colo[/url]);
return 0;
}
int YokoPixel(int x, int y, int color){
int sx, sy, Wh=GetColor(255,255,255), Bl=GetColor(170,170,255), Yl=GetColor(249,230,100);
int Gr=GetColor(170,255,170),Rd=GetColor(255,170,170), col[/url] = {Wh,Bl,Rd,Yl,Gr};
sx=size*PI_W+x*size; sy=y*size;
DrawBox(sx, sy, sx+size-1, sy+size-1, col[colo[/url], TRUE);
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
int SetFontThickness(int TinckPal),CheckHitKey(int KeyCode), MouseX, MouseY;
int WorkData[PI_H][PI_W] = {0}, PixelData[PI_H][PI_W],PixellData[PI_H][PI_W]={0};
int i, j, y=0,Bk,Wh,Min=0; FILE *file;
file=fopen("yokoiro.txt","r");
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
fscanf(file,"%d", &PixellData[j]);
}
}
fclose(file);
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
YokoPixel(j, i, PixellData[j]);
}
}
file=fopen("masu2.txt","r");if(file==NULL){printfDx("FILE ERORR");exit(0);}
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
fscanf(file,"%d", &PixelData[j]);
}
}
fclose(file);
ChangeWindowMode(TRUE); if(DxLib_Init() == -1){return -1;}
Bk=GetColor(0,0,0); Wh=GetColor(255,255,255);
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
MyDrawPixel(j, i, 0);
}
}
SetMouseDispFlag(TRUE);
while(!ProcessMessage()){
if(memcmp(PixelData, WorkData, sizeof(int)*PI_H*PI_W) == 0) break;
if(GetMouseInput() & MOUSE_INPUT_LEFT){
while (GetMouseInput() & MOUSE_INPUT_LEFT);
GetMousePoint(&MouseX, &MouseY);
MouseX = MouseX/size;
MouseY = MouseY/size;
if(Min<=MouseX&&MouseX<PI_W&&Min<=MouseY&&MouseY<PI_H){
WorkData[MouseY][MouseX]++;
if(WorkData[MouseY][MouseX] > 1) WorkData[MouseY][MouseX] = 0;
MyDrawPixel(MouseX, MouseY, WorkData[MouseY][MouseX]);
}
}
}
DrawString(40,330,"Game Clear!",Wh);
WaitTimer(2000);DxLib_End();return 0;
}
イラストロジックを作成しましたが、白いセルの横にカラーのセルを表示させようとすると、
画面が出てきません。
col[colo[/url]の配列を見ると、すべて0になっていました。
YokoPixel(j, i, PixellData[j]);
の関数にエラーが出るのですが、
どこか間違えているのでしょか?
横色の配列は、
1 2 3 4 0 0 0 0 0
1 2 2 3 4 4 0 0 0
1 2 2 3 4 4 0 0 0
1 2 2 3 4 4 0 0 0
1 2 2 3 4 4 0 0 0
1 2 2 3 4 4 0 0 0
1 2 3 4 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
完成図は
1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
を入力しました。
よろしくお願いします。