30/09/2018, 20:16

Vòng lặp lồng nhau

nguyên tắc của vòng lặp lồng nhau là chạy 1 lần vòng lặp Cha rồi xuống tới vòng lặp con và chạy hết vòng lặp con. Giờ mình muốn xóa bỏ nguyên tắc đó thì làm kiểu gì?
p/s: tks trước.

VD đoạn code sau (tính tổng các số chính phương từ đoạn i -> n):

#include <stdio.h>
#include <conio.h>
#include <math.h>

void Nhap(int &n)
{
	printf("Nhap vao so nguyen duong n = ");
	scanf ("%d", &n);
}

int Tongchinhphuongg(int n)
{
	int Tongchinhphuongg = 0;
for (int i = 1; i < n; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			if ((int)sqrt((double)i) == sqrt((double)j))  /* theo nguyên tắc thì nó sẽ 
chạy hết vòng lặp j này =>... (giả sử nhập 5 => in ra màn hình 3 con 1.. dẫn đến tổng sẽ tính thử và => sai. Vậy khắc phục thì làm như thế nào?
*/
			{
				printf("
So chinh phuong = %d", j);
				Tongchinhphuongg += j;
			}
		}
	}
	return Tongchinhphuongg;
}
int main()
{
       Nhap(n);
       int tongchinhphuong = Tongchinhphuongg(n);
       printf("
Tong cac so chinh phuong = %d", tongchinhphuong);
}
X viết 22:25 ngày 30/09/2018

Dạng như này:

int tong = 0;
for(;;)
{
	temp = 0;
	for(;;)
	{
		......
	}
	tong += temp;
}

return tong;

Mà 2 vòng làm chi nhỉ?

quy viết 22:29 ngày 30/09/2018

dùng 1 vòng lặp thôi chạy từ i <= n, lúc i sẽ là một số nào đó trong đoạn i đến n, xong cho cái if vào nếu là chính phương thì cộng dồn vào, làm 2 vòng lặp chi @@

Bài liên quan
0