ポインタで…

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

ポインタで…

#1

投稿記事 by ドラ » 18年前

実行例
数値(0:END):2
現在までの合計:2
一つ前の合計:0
a=2, b=0
数値(0:END):5
現在までの合計:7
一つ前の合計:2
a=2, b=7
数値(0:END):7
現在までの合計:14
一つ前の合計:7
a=14, b=7
数値(0:END):9
現在までの合計:23
一つ前の合計:14
a=14, b=23
数値(0:END):3
現在までの合計:26
一つ前の合計:23
a=26, b=23
数値(0:END):0

↑のようになるようにポインタでやっているんですけど条件式とかがわかりません。
#include <stdio.h>
#include <stdlib.h>

int main() {
int a=0, b=0;
int *now, *prev;
do{
printf("数値(0:END):");
scanf("%d",&a);
now=&a;
prev=&b;
printf("現在までの合計:%d\n一つ前の合計:%d\n", *now, *prev);
printf("a=%d, b=%d\n", a, b);

}while(a!=0);

}

今はこんな感じです…

box

Re:ポインタで…

#2

投稿記事 by box » 18年前

実行例では、aとbの大小関係がところどころ逆転していますが、
間違いなくそういう風に出力したいのでしょうか?

ドラ

Re:ポインタで…

#3

投稿記事 by ドラ » 18年前

そうです。

バグ

Re:ポインタで…

#4

投稿記事 by バグ » 18年前

正直、情報が少なすぎて、何をしたいのかよく意味が分からないですが…。
ポインタを使用するという事ですので、こういうことでしょうか?
一応、ドラさんの意図するような表示になるかと思いますが、かなり推測して作ったので、中身は全然違う事をやっているかもしれません…m(__)m
#include	<stdio.h>

void main(void)
{
	int a, b, c;
	int *now, *prev, *buf;

/* 変数の初期化 */
	a = 0;			// 入力値
	b = 0;			// 現在までの合計
	c = 0;			// 1つ前の合計

/* ポインタの初期化 */
	now = &b;
	prev = &c;
	buf = NULL;

/* メイン処理ループ */
	while (1)
	{
		// 数値入力
		printf("数値(0:END) : ");
		scanf("%d", &a);

		// 入力された値が0ならばループを抜ける
		if (a == 0)
		{
			break;
		}

		// 合計値
		b += a;

		// 表示
		printf("現在までの合計 : %d\n", b);
		printf("一つ前の合計 : %d\n", c);
		printf("a = %d, b =  %d\n", *now, *prev);

		// 一つ前の合計値を保持
		c = b;

		// ポインタをスワップする
		buf = now;
		now = prev;
		prev = buf;
	}
}

ドラ

Re:ポインタで…

#5

投稿記事 by ドラ » 18年前

バグさんありがとうございます。

閉鎖

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