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);
}
Bài liên quan
Dạng như này:
Mà 2 vòng làm chi nhỉ?
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 @@