Announcement

Collapse
No announcement yet.

Code của mình bị lỗi ???

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Code của mình bị lỗi ???

    Đề: In ra tổng lớn nhất của k phần tử liên tiếp trên mảng. Đây là đoạn code của mình
    Code:
    #include <stdio.h>
    #include <math.h>
    #include <conio.h>
    [COLOR="#0000FF"]void[/COLOR] nhap([COLOR="#0000FF"]int[/COLOR] a[], [COLOR="#0000FF"]int[/COLOR] &n)
    {
    	printf([COLOR="#B22222"]"Nhap n phan tu = "[/COLOR]);
    	scanf([COLOR="#B22222"]"%d"[/COLOR], &n);
    	for ([COLOR="#0000FF"]int[/COLOR] i = 0; i < n; i++)
    	{
    		printf([COLOR="#B22222"]"Nhap a[%d]= "[/COLOR], i);
    		scanf([COLOR="#B22222"]"%d"[/COLOR], &a[i]);
    	}
    }
    
    [COLOR="#0000FF"]void[/COLOR] tinhtongmax([COLOR="#0000FF"]int[/COLOR] a[], int n)
    {
    	[COLOR="#0000FF"]int[/COLOR] k, max, dem = 0, s = 0;
    	printf([COLOR="#B22222"]"Nhap k phan tu lien tiep: "[/COLOR]);
    	scanf([COLOR="#B22222"]"%d"[/COLOR], &k);
    	[COLOR="#0000FF"]for [/COLOR]([COLOR="#0000FF"]int[/COLOR] i = 0; i < n; i++)
    	{
    		[COLOR="#0000FF"]if[/COLOR] (max < a[i]) max = a[i];
    	}
    	[COLOR="#0000FF"]for[/COLOR] ([COLOR="#0000FF"]int[/COLOR] j = max; j >0; j--)
    	{		
    		[COLOR="#0000FF"]for[/COLOR] ([COLOR="#0000FF"]int[/COLOR] i = 0; i < n; i++)
    		{
    			[COLOR="#0000FF"]if[/COLOR] (j == a[i]) dem++;
    			[COLOR="#0000FF"]if[/COLOR] (dem < k) s = s + j;
    		}
    	}
    	printf([COLOR="#B22222"]"Tong lon nhat cua k phan tu lien tiep la: %d"[/COLOR], s);
    }
    [COLOR="#0000FF"]void[/COLOR] main()
    {
    	[COLOR="#0000FF"]int[/COLOR] a[100], n;
    	nhap(a, n);
    	tinhtongmax(a, n);
    }
    Build thì không có lỗi nhưng tới đoạn Debug lại xuất hiện lỗi ~.~
    Ai giúp mình với.

  • #2
    Mình không biết thuật toán bạn đúng không nhưng mình nghĩ đoạn này sai.
    if (max < a[i]) max = a[i];
    max của bạn chưa có gì thì sao so sánh được. gán mặc định max = a[0] chẳng hạn.
    Có điều xuống dưới bạn lại viết:
    for (int j = max; j >0; j--){...}
    Hình như có gì đó không đồng bộ giữa 2 cái max này. một là chỉ số, một lại là giá trị của phần tử
    :love:
    Tương lai khóc hay cười phụ thuộc vào độ lười của quá khứ.
    :cry:

    Comment


    • #3
      Có cách nào chạy 1 vòng for mà ra kết quả không ta?

      Comment


      • #4
        bạn patse cái lỗi lên thì mọi người sẽ giúp chính xác và nhanh hơn

        Comment


        • #5
          [MENTION=60099]14520235[/MENTION] bạn xem reply của anh [MENTION=11649]11520139[/MENTION], anh đó nhận xét đúng rồi đó bạn.


          [MENTION=11837]11520327[/MENTION] mình có code chạy 1 vòng lặp
          PHP Code:
          #include <iostream>
          #include <cstdlib>
          using namespace std;
          int main()
          {
              
          //
              // Khoi tao
              //
              
          int arr[19] = {12341, -2, -36237171841, -2, -3}; 
              
          int length sizeof(arr) / sizeof(*arr);
              
              
          //
              // Nguoi dung nhap so k
              //
              
          int k;
              
          cout << "Nhap so k : ";
              
          cin >> k;


              
          //
              // Khoi tao cho max bang tong k so dau tien
              // max = sum = arr[0] + arr[1] + ... arr[k - 1]
              //
              
          int max 0;
              
          int sum 0;
              for(
          int counter counter ; ++ counter)
                  
          sum sum arr[counter];
              
          max sum;

              
          //
              // Duyet mang
              // Tim ra tong lon nhat
              // Lien tuc them phan tu cuoi, va bo di phan tu dau tien
              // Vi du sum = arr[0] + arr[1] + ... arr[k - 1]
              // sum tiep theo sum = sum - arr[0] + arr[k]
              //
              
          for(int counter counter length ; ++ counter){
                  
          //
                  // Them phan tu cuoi, bo phan tu dau tien
                  
          sum sum arr[counter] - arr[counter k];

                  
          //
                  // So sanh voi max
                  
          if(sum max)
                      
          max sum;
              }


              
          //
              // In ra ket qua
              //
              
          cout << "Tong " << << " so lien tiep lon nhat la : " << max;
              
          cout << endl;


              
          //
              // Thong bao chay thanh cong
              //
              
          return 0;

          nguyendauit@gmail.com

          Comment


          • #6
            Mình giải quyết được rồi, cảm mọi người :byebye:

            Comment

            LHQC

            Collapse
            Working...
            X