ページ 11

文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月26日(土) 07:11
by skcl
#include <stdio.h>
#include <string.h>

main()

char line[]= ”The C programing language.”;
int len;

len = starlen(line);
for (i=0; i<len; i++){
     for (j=0; j<len; j++){
printf(”%c”, line[ (i+j) % len]) ;

     printf( ” ¥n”);


上の構文なのですが結果はThe C programing language. を一文字ずつずらして繰り返すのですが
for (i=0; i<len; i++){
  for (j=0; j<len; j++){
printf(”%c”, line[ (i+j) % len]) ;の部分がよく分かりません知ってる方いらしゃったら教えて下さい。よろしくお願いします。
         

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月26日(土) 08:33
by 朱鷺
skcl さんが書きました: for (i=0; i<len; i++){
  for (j=0; j<len; j++){
printf(”%c”, line[ (i+j) % len]) ;の部分がよく分かりません知ってる方いらしゃったら教えて下さい。よろしくお願いします。
         
%記号は剰余計算を意味します。
例えば1%3 であれば 1を3で割ったあまりなので1になります。

質問の箇所の意味は
i=0の場合
jを0~lenの間で1ずつ増加させた場合
(i+j)%len は 0 1 2 ... len-1 の順になります。

i=1の場合
jを0~lenの間で1ずつ増加させた場合
(i+j)%len は 1 2 ... len-1 0
となります。

そのためiの値が1つ増加する度に(i+j)%lenの並びが1つ左シフトするため文字の表示の1つ左シフトすることになります。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月26日(土) 16:23
by C6b14
こういう 場合は コードを 眺めただけ ではわかり にくいのかな と思います。こういう時は printf 文 を 沢山 書けば 分かります。 VC++ を C 言語に設定して動かしてみました。こんな 結果になるはずです。
画像

コード:

#include <stdio.h>
#include <string.h>

main()
{
	char line[] = "The C programing language.";
	int len;

	len = strlen(line);    printf("..[文字列の長さ] = %d\n\n", len);

	int i; int j;  // 変数の宣言

	for (i = 0; i < len; i++) {

		for (j = 0; j < len; j++) {

			printf(" %c", line[(i + j) % len]);

		}
		printf(" --- i= %d : j=%d : (i+j)=%d :(i+j) % len=%d\n", i, j - 1, (i + j - 1), (i + j - 1) % len);
	}
}
 
それと 前の方が いわれてる 意味は 次の コードを 動かせば わかると 思います。

コード:

#include <stdio.h>
main()
{
	int len = 26;
	int i, j;

	for (i = 0; i < len; i++) {
		for (j = 0; j < len; j++) {
			printf("[%d を %d で割った余り=%d\n", (i + j), len, (i + j) % len);
		}
	}
}

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 09:14
by skcl
教わった通り理解する為のプログラムを実行してみたいのですがまだ本で勉強している段階なのでc++をインストールしなければならないのですがwindows10だとvisualc++2008やborland c++ compiler 5.5はインストール出来ないのでしょうか?試してみたらみつかりませんでした。visualstudio2015communityをインストールするしかないのでしょうか?その中のvisualc++のc言語モードを使うのでしょうか?c言語モードの切り替え方を教えていただけないでしょうか?よろしくお願いします。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 09:20
by みけCAT
skcl さんが書きました:visualstudio2015communityをインストールするしかないのでしょうか
いいえ。
C++を使いたければMinGWが(試していませんが)使えるだろうと思いますし、
C言語でよければ学習用C言語開発環境でもいいでしょう。
さらに、IdeoneWandboxなどの、オンラインでコードを実行できるサービスもあります。
ただし、この中のどれもここに書かれているような大量の全角文字を普通では使えない場所に含む特殊なソースコードのコンパイルや、標準でない関数starlenを定義しないでの利用はできないでしょう。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 09:41
by みけCAT
skcl さんが書きました:windows10だとvisualc++2008やborland c++ compiler 5.5はインストール出来ないのでしょうか?試してみたらみつかりませんでした。
何を試して何がみつからなかったのですか?
Windows 10でVisual Studio 2008公式には対応していないようですが、ググると動作したという主張もあるようです。

隅っこのおぼえがきノート Visual Studio 2008をインストールしたままWindows 10へアップグレード
Can I use Visual Studio 2008 on Windows 10? - Super User

Visual Studio 2008 Express EditionはWEBインストール版を使ってしまうと登録を要求されてしまうので、ISOイメージからインストールするといいでしょう。
わざわざ物理CD/DVDに焼いたり仮想メディアソフトを用意しなくても、7-Zipで展開できるはずです。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 10:10
by skcl
返信ありがとうございます。visual studio2015expressかcommunityにvisual c++はいってるからそちらでもいいですかね?visual studioいれてみます。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 11:09
by C6b14
VS2015 で いいのですが VS2008 が 手軽で いいですよ。 私は 両方 使ってますけど VS2008 も Win32 では よく使います。http://dixq.net/forum/viewtopic.php?f=3&t=18577

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 11:27
by C6b14
私の場合は VS2015を いれる つもりはないのに Community が 自動で入ったのはですが 一昼夜 掛かって きずいたとき 40GBもへってたし いまみると とても 面倒そう。 VS2008 は それに 比較すれば 「超簡単」 ですよ。
http://cswin10.nisinippon.com/index.html

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 11:50
by C6b14
どちらも( VS2015,VS2008 )も C 言語 として 使うと  ときは ファイル の 拡張子 を main.c にするだけです。
main.cpp とすれば C++ です。

( コマンドプロンプトで は /TC をつかえば なんでも c とななされるので main.txt はよく使います。 そのときは main.cpp でもc に なるので C++ を c と しても 動かしてみたいときは 便利です。)
https://msdn.microsoft.com/ja-jp/library/032xwy55.aspx

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 11:53
by C6b14
すみません。 みなされる です。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 11:55
by みけCAT
C6b14 さんが書きました:どちらも( VS2015,VS2008 )も C 言語 として 使うと  ときは ファイル の 拡張子 を main.c にするだけです。
main.cpp とすれば C++ です
拡張子はC言語のときはmain.cではなくc、C++のときはmain.cppではなくcppとするべきでしょう。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 12:02
by C6b14
あ そうです。すみません。 main は 余分です。( とゆうか へんな ファイル 名 になってしまいます。)

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 13:45
by C6b14
私は ダウウンロード して インストール しましたが そのままで 使えて ます。Windows10 には たぶん そんな 前のレジストリとか チェック 機能 はなくなっていると 思います。 サポート外 ですし 基本的に Windows10 では 動作対象 外なので [VB6 をいまだに 業務 に使っている]  話 と 同じ ような 感じ だと おもいます。 

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 14:17
by skcl
先程の確認のプログラムなのですが、C++のwin32アプリケーションで試してよろしいのでしょうか?それともCLRの空のCLRプロジェクトでよろしいのでしょうか?よろしくお願いします。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年11月27日(日) 14:59
by C6b14
[ C++のwin32アプリケーションで試してください] Win32 コンソール・アプリケーション です。

[ CLRの空のCLRプロジェクト ] は マイクロソフト の 独特な 拡張なので 普通の C は とは 全く違います。( いまは C# と いう言語 に 吸収された 感じ で 使うのは ごく ごく 限られたひと です。 )

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 12:06
by skcl
試している最中なのですが、現在のプロジェクトの設定の所で完了でよろしいのでしょうか。#include "stdafx.h"はそのままでよいのでしょうか。最初からint main()と変数宣言されているのですがそれらは全部消して教わったコードを記述すればよろしいのでしょうか。全部消してコードを記述してビルドしたら失敗1となりました。やり方がちがうのでしょうか。それと最初の方の説明でlen-1 len-10とはなんでしょうか?よろしくお願いします。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 12:29
by C6b14
その問題は 少し ややこしくて 説明がながく なるのですが プロジェクト を作る とき 「プリコンパイル ヘッダー」のチェック を外して 空のプロジェクト を作ってみてください。 多分 ファイル ( stdafx.h )がない 空に なるはずです。(もし おかしかったら こちらで 試します。 とりあえず stdafx.h は プロの人しか 必要無いはずです。-あっても 問題ありません。ただ面倒です。)

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 13:10
by skcl
プリコンパイル済みヘッダーのチェック外してもstdafx.hとint出たままですね。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 13:24
by C6b14
こちらで ためすと 空 になりますね。作る 手順 が違うのかな ?
Win32コンソール・アプリケーションで 新しい プロジェクト をつくったのですよね。 

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 13:26
by C6b14
あ int とは ?

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 13:46
by skcl

コード:

// ConsoleApplication3.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"


int main()
{
    return 0;
}
この画面になってしまいますね。win32コンソールアプリケーション選んでokクリックして次へってクリックしてからですよね。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 14:05
by Egg
空のプロジェクトにチェックを入れれば
ソースファイルなどが何もない状態で作成できます。

その後[ソリューションエクスプローラー]の[ソースファイル]の上で右クリック→[追加]→[新しい項目]で
CPPファイルを選択し、名前をつけて[追加]ボタンを押してください。

この手順はコンソールアプリでも、ウィンドウアプリでも同じです。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 14:09
by C6b14
こうなるのは 多分 [ album] と かいてある ボタン の 上の [コード]ボタン を 押して [コード] で 囲まれてないからだと思います。その中に コード を書く のですが 
"と”  の部分だけ 囲んだ のでしょう。
>#include "stdafx.h"はそのままでよいのでしょうか
いいです。

>// ConsoleApplication3.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 

エントリ ポイント=main  で 気にしなくて いいです。

ホームページのサンプル を コピーで いいです。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 14:11
by C6b14
あ 失礼。上の 方の いわれる とうり の 方が いいです。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 14:18
by C6b14
いま 説明 しずらい のですが C++ を いったん 閉じて あたらしく つくるところから はじめる 方がいいです。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 14:27
by C6b14
プリコンパイル ヘッダー という のが わかりますか。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 14:32
by C6b14
ごめん。気にせずに 空 だけで いいみたいです。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 14:40
by C6b14
空の プロジェクト ができて 次の 手順が 迷う とこなので きいて ください。 ( たの 方 の  説明 どうり )

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 16:02
by skcl
プログラムは動いたのですが、教えて下さった方のように、実行結果を張り付けられればよかったのですが、やり方が分からなかったので貼り付けませんでしたが、27を26で割った余り=1から始まってました。なぜ27からなのですか?0からではないのですか?それと、余りが0からかと思っていました。でも0から25を繰り返していることは、わかりました。14,15,16…と抜けている数字も分かりませんでした。でもこのプログラムでは、とても分かりやすかったです。ありがとうございました。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 17:15
by C6b14
え、 いま よう が あって きがつかなかったけど おなじ になる はずです。 どこか かえた のでは?

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 17:28
by C6b14
もしかして 文字列 の 長さ = 27 と なっていませんか ?

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 17:45
by C6b14
i  は 0 からの はずですが 2 重 ループ なので その時点では j は 27 ( ループ を終えた 時点 で +1されています)。

最初 は わかり ずらいので  文字数 を 5 くらいに すると どうでしょう。すこし ずつ 増やせば わかる と 思います。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 17:54
by C6b14
[ 14,15,16…と抜けている数字 ] これは どのことを いわれてるのか 分かりません。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月01日(木) 18:15
by skcl
14.15.16.17.18.19.20.21.22.23.24.25って最初から順番です。一通り理解出来ました。ありがとうございました。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月02日(金) 17:00
by milfeulle
オフトピック
(見ているか分かりませんが)C6b14さんに対して言わせて下さい。本題とは全く関係のないのですが、誰も指摘しないので一応……。

(指摘1) どうして中途半端な切れ目にスペースを入れて見づらくするのでしょうか?
大変見苦しいので、もしも意図的にそうしているなら止めた方が良いのではないかと……思います。
もしも相手に分かりやすくなるように分かち書きにしているつもりでしたら、もう少し意味のまとまった単位ですると良いと思います。
あと、いろいろ間違いが多いです。
ex1. わかり ずらいので→わかりづらいので
ex2. 説明 どうり→説明どおり

(指摘2) 直前の発言を修正するコメントが散見されますが、とても分かりづらい上に議論の流れが見づらくなって、正直に申し上げますと邪魔です。修正する場合はアカウントを登録して、修正した箇所を明示した上で修正をお願いします。(特に大きな間違いでなければなおさらです。)
同様に、短いコメントを連投するのもあまりよい行為とは言えないので、推敲した上で書き込んだ方がよいと思います。

他の方が別になんとも思っていないのならいいのですが、せっかくいい掲示板なのに(個人的に)議論の妨げになる行為を多く見かけたので勝手ながら投稿させて頂きました。本トピックに全く関係のない話題で失礼しました。

Re: 文字を表示させるプログラムについてわからないことがあるので。

Posted: 2016年12月02日(金) 17:18
by C614b
よくわかりました。手が(あたまと)大変不自由なのともうすぐ皆さんとお別れすることになるで登録はできません。そういう事なら気を付けて書きましょう。