実行例
数値(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);
}
今はこんな感じです…
ポインタで…
-
バグ
Re:ポインタで…
正直、情報が少なすぎて、何をしたいのかよく意味が分からないですが…。
ポインタを使用するという事ですので、こういうことでしょうか?
一応、ドラさんの意図するような表示になるかと思いますが、かなり推測して作ったので、中身は全然違う事をやっているかもしれません…m(__)m
ポインタを使用するという事ですので、こういうことでしょうか?
一応、ドラさんの意図するような表示になるかと思いますが、かなり推測して作ったので、中身は全然違う事をやっているかもしれません…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;
}
}