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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
skcl

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

#1

投稿記事 by skcl » 7年前

#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: 文字を表示させるプログラムについてわからないことがあるので。

#2

投稿記事 by 朱鷺 » 7年前

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つ左シフトすることになります。

C6b14

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

#3

投稿記事 by C6b14 » 7年前

こういう 場合は コードを 眺めただけ ではわかり にくいのかな と思います。こういう時は 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);
		}
	}
}

skcl
記事: 34
登録日時: 7年前

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

#4

投稿記事 by skcl » 7年前

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

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

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

#5

投稿記事 by みけCAT » 7年前

skcl さんが書きました:visualstudio2015communityをインストールするしかないのでしょうか
いいえ。
C++を使いたければMinGWが(試していませんが)使えるだろうと思いますし、
C言語でよければ学習用C言語開発環境でもいいでしょう。
さらに、IdeoneWandboxなどの、オンラインでコードを実行できるサービスもあります。
ただし、この中のどれもここに書かれているような大量の全角文字を普通では使えない場所に含む特殊なソースコードのコンパイルや、標準でない関数starlenを定義しないでの利用はできないでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

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

#6

投稿記事 by みけCAT » 7年前

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で展開できるはずです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

skcl
記事: 34
登録日時: 7年前

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

#7

投稿記事 by skcl » 7年前

返信ありがとうございます。visual studio2015expressかcommunityにvisual c++はいってるからそちらでもいいですかね?visual studioいれてみます。

C6b14

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

#8

投稿記事 by C6b14 » 7年前

VS2015 で いいのですが VS2008 が 手軽で いいですよ。 私は 両方 使ってますけど VS2008 も Win32 では よく使います。http://dixq.net/forum/viewtopic.php?f=3&t=18577

C6b14

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

#9

投稿記事 by C6b14 » 7年前

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

C6b14

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

#10

投稿記事 by C6b14 » 7年前

どちらも( 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


アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

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

#12

投稿記事 by みけCAT » 7年前

C6b14 さんが書きました:どちらも( VS2015,VS2008 )も C 言語 として 使うと  ときは ファイル の 拡張子 を main.c にするだけです。
main.cpp とすれば C++ です
拡張子はC言語のときはmain.cではなくc、C++のときはmain.cppではなくcppとするべきでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

C6b14

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

#13

投稿記事 by C6b14 » 7年前

あ そうです。すみません。 main は 余分です。( とゆうか へんな ファイル 名 になってしまいます。)

C6b14

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

#14

投稿記事 by C6b14 » 7年前

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

skcl
記事: 34
登録日時: 7年前

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

#15

投稿記事 by skcl » 7年前

先程の確認のプログラムなのですが、C++のwin32アプリケーションで試してよろしいのでしょうか?それともCLRの空のCLRプロジェクトでよろしいのでしょうか?よろしくお願いします。

C6b14

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

#16

投稿記事 by C6b14 » 7年前

[ C++のwin32アプリケーションで試してください] Win32 コンソール・アプリケーション です。

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

skcl
記事: 34
登録日時: 7年前

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

#17

投稿記事 by skcl » 7年前

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

C6b14

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

#18

投稿記事 by C6b14 » 7年前

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

skcl
記事: 34
登録日時: 7年前

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

#19

投稿記事 by skcl » 7年前

プリコンパイル済みヘッダーのチェック外してもstdafx.hとint出たままですね。

C6b14

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

#20

投稿記事 by C6b14 » 7年前

こちらで ためすと 空 になりますね。作る 手順 が違うのかな ?
Win32コンソール・アプリケーションで 新しい プロジェクト をつくったのですよね。 


skcl
記事: 34
登録日時: 7年前

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

#22

投稿記事 by skcl » 7年前

コード:

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

#include "stdafx.h"


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

Egg

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

#23

投稿記事 by Egg » 7年前

空のプロジェクトにチェックを入れれば
ソースファイルなどが何もない状態で作成できます。

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

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

C6b14

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

#24

投稿記事 by C6b14 » 7年前

こうなるのは 多分 [ album] と かいてある ボタン の 上の [コード]ボタン を 押して [コード] で 囲まれてないからだと思います。その中に コード を書く のですが 
"と”  の部分だけ 囲んだ のでしょう。
>#include "stdafx.h"はそのままでよいのでしょうか
いいです。

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

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

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

C6b14

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

#25

投稿記事 by C6b14 » 7年前

あ 失礼。上の 方の いわれる とうり の 方が いいです。

C6b14

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

#26

投稿記事 by C6b14 » 7年前

いま 説明 しずらい のですが C++ を いったん 閉じて あたらしく つくるところから はじめる 方がいいです。

C6b14

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

#27

投稿記事 by C6b14 » 7年前

プリコンパイル ヘッダー という のが わかりますか。

C6b14

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

#28

投稿記事 by C6b14 » 7年前

ごめん。気にせずに 空 だけで いいみたいです。

C6b14

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

#29

投稿記事 by C6b14 » 7年前

空の プロジェクト ができて 次の 手順が 迷う とこなので きいて ください。 ( たの 方 の  説明 どうり )

skcl
記事: 34
登録日時: 7年前

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

#30

投稿記事 by skcl » 7年前

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

C6b14

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

#31

投稿記事 by C6b14 » 7年前

え、 いま よう が あって きがつかなかったけど おなじ になる はずです。 どこか かえた のでは?

C6b14

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

#32

投稿記事 by C6b14 » 7年前

もしかして 文字列 の 長さ = 27 と なっていませんか ?

C6b14

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

#33

投稿記事 by C6b14 » 7年前

i  は 0 からの はずですが 2 重 ループ なので その時点では j は 27 ( ループ を終えた 時点 で +1されています)。

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

C6b14

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

#34

投稿記事 by C6b14 » 7年前

[ 14,15,16…と抜けている数字 ] これは どのことを いわれてるのか 分かりません。

skcl
記事: 34
登録日時: 7年前

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

#35

投稿記事 by skcl » 7年前

14.15.16.17.18.19.20.21.22.23.24.25って最初から順番です。一通り理解出来ました。ありがとうございました。

アバター
milfeulle
記事: 47
登録日時: 10年前
住所: マリーランド
連絡を取る:

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

#36

投稿記事 by milfeulle » 7年前

オフトピック
(見ているか分かりませんが)C6b14さんに対して言わせて下さい。本題とは全く関係のないのですが、誰も指摘しないので一応……。

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

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

他の方が別になんとも思っていないのならいいのですが、せっかくいい掲示板なのに(個人的に)議論の妨げになる行為を多く見かけたので勝手ながら投稿させて頂きました。本トピックに全く関係のない話題で失礼しました。
ζ*'ヮ')ζプログラミングはみんなで奏でるシンフォニー

C614b

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

#37

投稿記事 by C614b » 7年前

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

閉鎖

“C言語何でも質問掲示板” へ戻る