[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
|
メール
| |
雑談スレ。
1
:
獅子
◆Zbmx8wQyk6
:2012/06/06(水) 03:38:47
なんでもいいよ。質問でも雑談でもおk.
11
:
鎌の子
:2012/06/07(木) 06:39:26 ID:FD.mU2OAO
>>10
あ、やっぱCとC++って別物なんだねー(
CをやってればC++もできるようになるんかな?
12
:
獅子
◆Zbmx8wQyk6
:2012/06/07(木) 08:12:18 ID:iLn8rFd60
>>11
C++はCを拡張した言語でCと雰囲気や基礎は同じだし、
互換性があるからCのコードはほぼそのままC++で動く
ただしCをやってるだけじゃC++はできるようにはならないね、
逆にC++やってればCなんて勉強しなくてもかける
13
:
獅子
◆Zbmx8wQyk6
:2012/06/07(木) 08:14:57 ID:iLn8rFd60
ちなみにC++は決して古い言語ではなくてね。いや歴史はプログラム言語の中でもひときわ古いけど今でも活発に進化してて最新標準はC++11、2011年のだから知名度の高い言語では最も新しい言語でもある
14
:
獅子
◆Zbmx8wQyk6
:2012/06/07(木) 08:20:19 ID:iLn8rFd60
C++は楽しいですぞ(*ー*)←布教の目
15
:
鎌の
:2012/06/08(金) 16:19:44 ID:FD.mU2OAO
c++…勉強する時間作りたいんだけどねー!
(どうも時間の使い方が下手でいかんね
16
:
鎌
:2012/06/08(金) 16:20:27 ID:gJrJpzsYC
と言ってる間にプログラミング基礎のお時間
17
:
獅子
◆Zbmx8wQyk6
:2012/06/08(金) 21:27:51 ID:iLn8rFd60
プログラミング基礎ってどういう勉強するんですか?
そうだ、鎌子さんにプログラミング基礎の復習をここに書いてもらえば私大学行く必要なく(ry
18
:
鎌
:2012/06/10(日) 22:43:09 ID:FD.mU2OAO
>>17
んー、なんていうのかな
i++と++iとじゃ意味合いが違うよーとか、breakはこれこれこういうとこで使うよーとか。
プログラムをひたすら解説される感じですかねー
19
:
獅子
◆Zbmx8wQyk6
:2012/06/10(日) 23:35:11 ID:iLn8rFd60
>>18
ほう・・・それは・・・
ま、まぁ重要ですよ
20
:
獅子
◆Zbmx8wQyk6
:2012/06/19(火) 16:26:06 ID:iLn8rFd60
想像以上に誰も書き込まないなヽ(・ω・)ゝ
21
:
鎌の子deadly
:2012/07/21(土) 22:32:34 ID:YGo/gsAY0
#include <stdio.h>
#include <stdlib.h>
#define MAXDATE 10000
int main(void)
{
int x,a[MAXDATE];
int n,i,position;
char filename[20];
FILE *fin;
int l,k,tmp;
int low=0;
int high=20;
int mid;
printf("file name = ");
scanf("%s",filename);
if((fin=fopen(filename,"r"))==NULL){
printf("ファイルをオープンできません\n");
return (1);
}
n=0;
while (fscanf(fin, "%d",&a[n])==1)n++;
fclose(fin);
for(i=0;i<n-1;i++){
l=i;
for (k=i+1;k<n;k++){
if (a[l]>a[k]){l=k;}
}
tmp=a[l];
a[l]=a[i];
a[i]=tmp;
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
while (scanf("%d",&x)==1){
position=-1;
low=0;
high=20;
while (low<=high){
mid=(low+high)/2;
if(a[mid]>x){
high=mid-1;
}
else if(a[mid]<x){
low=mid+1;
}
else if(a[mid]==x){
position=mid;
printf("x=%d ---> %d番目\n",x,position+1);
break;
}
else {
printf("x=%d ---> %d番目\n",x,position+1);
break;
}
}
}
printf("またお会いしましょう\n");
return(0);
}
22
:
鎌の子deadly
:2012/07/21(土) 22:36:59 ID:YGo/gsAY0
二分探索(バイナリサーチ)っていうのをやってるんだけどね、どうしても上手くいかんのよ。
要は「ファイルを開いて、その中に指定した文字があるかどうか。ある場合、それは何番目にあるのか」ってのを計算してくれるプログラムを作りたいんだ。
23
:
鎌の子deadly
:2012/07/21(土) 22:38:22 ID:YGo/gsAY0
で、今書き上げたんだけど、どうしても「見つからなかった場合には0を返す」ってのができない…
24
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 22:45:05 ID:iLn8rFd60
とりあえず、インデントをちゃんとしましょう
25
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 22:45:36 ID:iLn8rFd60
インデントがない時点で読みにく過ぎます、当然バグが発見しにくくなります。
26
:
鎌の子deadly
:2012/07/21(土) 22:51:01 ID:YGo/gsAY0
げ、ホントだ…
コピペしただけじゃいかんねw
27
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 22:51:05 ID:iLn8rFd60
#include <stdio.h>
#include <stdlib.h>
#define MAXDATE 10000
int main(void)
{
int x,a[MAXDATE];
int n,i,position;
char filename[20];
FILE *fin;
int l,k,tmp;
int low=0;
int high=20;
int mid;
printf("file name = ");
scanf("%s",filename);
if((fin=fopen(filename,"r"))==NULL)
{
printf("ファイルをオープンできません\n");
return (1);
}
n=0;
while(fscanf(fin, "%d",&a[n])==1) n++;
fclose(fin);
for(i=0;i<n-1;i++)
{
l=i;
for (k=i+1;k<n;k++)
{
if (a[l]>a[k]) l=k;
}
tmp=a[l];
a[l]=a[i];
a[i]=tmp;
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
while(scanf("%d",&x)==1)
{
position=-1;
low=0;
high=20;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]>x)
{
high=mid-1;
}
else
if(a[mid]<x)
{
low=mid+1;
}
else
if(a[mid]==x)
{
position=mid;
printf("x=%d ---> %d番目\n",x,position+1);
break;
}
else
{
printf("x=%d ---> %d番目\n",x,position+1);
break;
}
}
}
printf("またお会いしましょう\n");
return(0);
}
28
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 22:51:15 ID:iLn8rFd60
まじだw
29
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 22:51:51 ID:iLn8rFd60
#include <stdio.h>
#include <stdlib.h>
#define MAXDATE 10000
int main(void)
{
int x,a[MAXDATE];
int n,i,position;
char filename[20];
FILE *fin;
int l,k,tmp;
int low=0;
int high=20;
int mid;
printf("file name = ");
scanf("%s",filename);
if((fin=fopen(filename,"r"))==NULL)
{
printf("ファイルをオープンできません\n");
return (1);
}
n=0;
while(fscanf(fin, "%d",&a[n])==1) n++;
fclose(fin);
for(i=0;i<n-1;i++)
{
l=i;
for (k=i+1;k<n;k++)
{
if (a[l]>a[k]) l=k;
}
tmp=a[l];
a[l]=a[i];
a[i]=tmp;
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
while(scanf("%d",&x)==1)
{
position=-1;
low=0;
high=20;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]>x)
{
high=mid-1;
}
else
if(a[mid]<x)
{
low=mid+1;
}
else
if(a[mid]==x)
{
position=mid;
printf("x=%d ---> %d番目\n",x,position+1);
break;
}
else
{
printf("x=%d ---> %d番目\n",x,position+1);
break;
}
}
}
printf("またお会いしましょう\n");
return(0);
}
30
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 22:52:25 ID:iLn8rFd60
#include <stdio.h>
#include <stdlib.h>
#define MAXDATE 10000
int main(void)
{
int x,a[MAXDATE];
int n,i,position;
char filename[20];
FILE *fin;
int l,k,tmp;
int low=0;
int high=20;
int mid;
printf("file name = ");
scanf("%s",filename);
if((fin=fopen(filename,"r"))==NULL)
{
printf("ファイルをオープンできません\n");
return (1);
}
n=0;
while(fscanf(fin, "%d",&a[n])==1) n++;
fclose(fin);
for(i=0;i<n-1;i++)
{
l=i;
for (k=i+1;k<n;k++)
{
if (a[l]>a[k]) l=k;
}
tmp=a[l];
a[l]=a[i];
a[i]=tmp;
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
while(scanf("%d",&x)==1)
{
position=-1;
low=0;
high=20;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]>x)
{
high=mid-1;
}
else
if(a[mid]<x)
{
low=mid+1;
}
else
if(a[mid]==x)
{
position=mid;
printf("x=%d ---> %d番目\n",x,position+1);
break;
}
else
{
printf("x=%d ---> %d番目\n",x,position+1);
break;
}
}
}
printf("またお会いしましょう\n");
return(0);
}
31
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 22:52:47 ID:iLn8rFd60
仕方ないから全角使ったがどうしてこうなるんだ
32
:
鎌の子deadly
:2012/07/21(土) 22:53:03 ID:YGo/gsAY0
予期せぬ弊害…www
33
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 22:54:49 ID:iLn8rFd60
まあいいや、でなんだっけ
34
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 22:57:34 ID:iLn8rFd60
コメントが無いねー
35
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 22:57:49 ID:iLn8rFd60
とりあえず変数の意味だけでも書くべきじゃないかな
36
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 23:05:18 ID:iLn8rFd60
とりあえずあんま読んでないけど、まずこれはコンパイルできるの?
37
:
鎌の子deadly
:2012/07/21(土) 23:07:19 ID:YGo/gsAY0
どうも、ありがとね!
えーと…
願望は『数列のファイルを読み込んで、その読み込んだデータにない値が47行目のscanfでxに代入された場合に、74行目のprintfで出力されるpositionの値は0のはずなのに、「x=読み込んだデータに無い数値 ---> 0番目」とは出力されず、無反応になってしまうのをどうにかしたい』って感じです。
38
:
鎌の子deadly
:2012/07/21(土) 23:09:16 ID:YGo/gsAY0
とりあえずコンパイルはできるよー
39
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 23:09:59 ID:iLn8rFd60
>74行目のprintfで出力されるpositionの値は0のはずなのに
なぜ?
40
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 23:16:44 ID:iLn8rFd60
まず何故highが20?これは20行って既に決まってるのかな?
41
:
鎌の子deadly
:2012/07/21(土) 23:17:35 ID:YGo/gsAY0
まず49行目でpositionは「-1」になっていて、その後positionの値はいじらないまま74行目の「printf("x=%d ---> %d番目\n",x,position+1);」に行くから
「-1+1」=「0」になるかなって
42
:
鎌の子deadly
:2012/07/21(土) 23:19:31 ID:YGo/gsAY0
>まず何故highが20?これは20行って既に決まってるのかな?
データの数は20個で固定です。
ごめん、言い忘れてた!
43
:
鎌の子deadly
:2012/07/21(土) 23:21:23 ID:YGo/gsAY0
後半のifの条件がうまく繋がってないんだと思うんだけど…
どこかわからないんよ
44
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 23:24:13 ID:iLn8rFd60
うーん、コンパイルして実行してみたが無反応に放ってないな
45
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 23:24:49 ID:iLn8rFd60
ちょっとコード書き換えてみる少し待ってて
46
:
鎌の子deadly
:2012/07/21(土) 23:27:10 ID:YGo/gsAY0
データの数は「最大20個」かも知れない(自分で書いてて情けないが、把握し切れてない…
ちなみに読み込んでるデータはこんな感じ
a[]=[1、54、8、96、4、85、44、62、35、5、2、3、7、72、14、17、19、58、6]
47
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 23:27:44 ID:iLn8rFd60
ちょおっとまて
48
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 23:37:51 ID:iLn8rFd60
ごめんトイレ行ってた、まさかの下痢(;´∀`)
今から見直す!
49
:
鎌の子deadly
:2012/07/21(土) 23:39:06 ID:YGo/gsAY0
53行目の「while(low<=high)」のせいで最後のelseに行ってないのかも…?
50
:
鎌の子deadly
:2012/07/21(土) 23:39:54 ID:YGo/gsAY0
下痢は…うん、僕も最近冷房でね…(お腹弱い
51
:
鎌の子deadly
:2012/07/21(土) 23:47:24 ID:YGo/gsAY0
きた!
52
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 23:48:52 ID:iLn8rFd60
そっか。せっかくだし自分なりに書きなおして勉強しよっと(*´∀`*)
53
:
鎌の子deadly
:2012/07/21(土) 23:50:38 ID:YGo/gsAY0
while (scanf("%d",&x)==1){
position=-1;
low=0;
high=20;
while (low<=high){
mid=(low+high)/2;
if(a[mid]>x){
high=mid-1;
}
else if(a[mid]<x){
low=mid+1;
}
else{
position=mid;
break;
}
}
printf("x=%d ---> %d番目\n",x,position+1);
}
54
:
鎌の子deadly
:2012/07/21(土) 23:51:44 ID:YGo/gsAY0
獅子子ちゃんありがとね!
半端なく心強かった!
55
:
獅子
◆Zbmx8wQyk6
:2012/07/21(土) 23:52:02 ID:iLn8rFd60
いえ、実際何もしてないwww
56
:
鎌の子deadly
:2012/07/21(土) 23:54:57 ID:YGo/gsAY0
さて、これで晩御飯食べれるぞー!わぁーい!(
57
:
獅子
◆Zbmx8wQyk6
:2012/07/22(日) 01:48:04 ID:iLn8rFd60
#include <stdio.h>
#include <stdlib.h>
#ifdef _DEBUG
# define _DEBUG_PRINTF( str, ... ) printf( str, __VA_ARGS__ );
#else
# define _DEBUG_PRINTF( str, ... )
#endif
int getNumberPosition( int _target, int _array[], int _size )
{
int low = 0;
int high = _size;
if( _target < _array[0] || _target > _array[_size-1] ) return 0;
while(1)
{
int number = (low+high)/2;
int select = _array[ number ];
_DEBUG_PRINTF( "number->%3d: low->%3d: high->%3d: %3d\n",number, low, high, select );
if( select == _target ){
return ++number;
}
else if( select > _target ){
high = number;
if( high-1 == low && _array[number-1] != _target ) return 0;
}
else if( select < _target ){
low = number;
if( high == low+1 && _array[number-1] != _target ) return 0;
}
}
};
void outputArray( int _array[], int _size ){
for(int i = 0; i < _size; ++i )
{
printf("%d ",_array[i]);
}
printf("\n");
};
int main(void)
{
const int numMaxData = 100;
int numData = 0;
int targetNum;
int arrayData[numMaxData];
char filename[32];
FILE* fp;
printf("Please input file name.\nFile name is ");
scanf("%s",filename);
fp = fopen( filename, "r" );
{
if( !fp )
{
printf("** error:: Don't open file!\n");
return 1;
}
while( fscanf( fp, "%d", &arrayData[numData] ) != EOF ) ++ numData;
}
fclose(fp);
for(int i = 0; i < numData-1; ++i )
{
int l=i;
for (int k=i+1;k<numData;k++)
{
if (arrayData[l]>arrayData[k]) l=k;
}
int tmp = arrayData[l];
arrayData[l] = arrayData[i];
arrayData[i] = tmp;
}
outputArray( arrayData, numData );
while( scanf( "%d", &targetNum ) )
{
int result = getNumberPosition( targetNum, arrayData, numData );
result ?
printf("%d -> №%d\n", targetNum, result ):
printf("%d is not found.\n", targetNum );
}
printf("see you again...\n");
return 0;
}
58
:
獅子
◆Zbmx8wQyk6
:2012/07/22(日) 01:48:36 ID:iLn8rFd60
後々気づいたが純粋なCだとエラー出るかも。まぁbetterCだな。
59
:
アオ
:2012/09/23(日) 11:30:32 ID:kjkF29wA0
来ましたー
#include<stdio.h>
void main(void)
{
int hairetu[3][3];
int cur_x,cur_y;
int next_x,next_y;
int no;
int i,j;
/**hairetuの初期化**/
for(j=0;j<3;j++)
{
for(i=0;i<3;i++)
hairetu[j][i]=0;
}
/**1をhairetuに配置する**/
cur_x=1;
cur_y=0;
hairetu[cur_x][cur_y]=1;
/**2〜9をhairetuに配置する**/
for(no=2;no=10;no++)
{
next_x=cur_x+1;
next_y=cur_y-1;
if(next_x>2)/*右にはみ出した*/
next_x=0;
if(next_y<0)/*上にはみ出した*/
next_y=2;
if(hairetu[next_x][next_y]!=0)/*セルが埋まってる*/
{
next_x=cur_x;
next_y=cur_x+1;
}
if(next_y>2)/*下へはみ出した*/
next_y=0;
hairetu[next_x][next_y]=no;/*値をhairetuに配置する*/
/*繰り返し用の変数更新*/
cur_x=next_x;
cur_y=next_y;
}
/**hairetuの要素を表示する**/
for(i=0;i=8;i++)
{
for(j=0;j=8;j++)
printf("%3d",hairetu[i][j]);
printf("\n");
}
}
60
:
獅子
◆Zbmx8wQyk6
:2012/09/23(日) 11:47:38 ID:iLn8rFd60
Twitterでもかきましたがまとめます。
・「=演算子は代入演算子であり比較演算子でない」
これにより無限ループが起きています。等価比較演算子は「==」です。
・「ブロック構文の統一」
「{」「}」はつけるか付けないか統一してください。そもそもブロック構文があるのと無いのでは意味が違うことも合わせて調べてみるといいでしょう。
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板