2014-09-28 4 views
-3

используя такой же i для различного назначения does'nt, кажется, работает нормально, почему это так?не может использовать тот же i для разных задач, почему?

#include<iostream> 
using namespace std; 
int main() 
{ 
    int g,n,i=0,sum; 
    cin>>g; 
    while(i<g) 
    { 
     cin>>n; 
     int a[n]; 
     for(i=0;i<n;i++) 
      cin>>a[i]; 
     for(i=0;i<n;i+=2) 
     {  
      "code" 
     } 
     cout<<sum; 
     i++; 
    } 
    return 0; 
} 

код не работал, если м при использовании таки для в то время как для цикла, Bt он работал, если я использовал различные параметры для обоих. Задача параметра - хранить счетчик. Почему его nt работает?

+1

Вы используете 'i' для двух различных целей - использовать две различные переменные. –

+0

Также 'j' объявляется в объеме' main', но там никогда не используется. И самый внутренний 'for'-loop в' main' сделает 'sum' в конечном итоге суммой первого и последнего элемента массива' a'. Если это то, что вы хотите добиться, цикл не нужен. – robbannn

+0

@Anshul Sheoliha Что означает переменная g? –

ответ

1

Используйте в качестве шаблона для своей программы следующий код. Что касается ошибок в коде вы можете найти их описания в комментариях к посту. :) По крайней мере, этот цикл

for(i=0;i<n;i++) 
    {  
     sum=a[0]; 
     sum+=a[i]; 
    } 

не имеет никакого смысла.

Здесь вы находитесь.

#include <iostream> 

void bubblesort(int a[], size_t n) 
{ 
    for (size_t i = 0; i < n; i++) 
    { 
     for (size_t j = 0; j < n - i - 1; j++) 
     { 
      if (a[j + 1] < a[j]) 
      { 
       int x = a[j]; 
       a[j] = a[j + 1]; 
       a[j + 1] = x; 
      } 
     } 
    } 
} 


int main() 
{ 
    std::cout << "Enter number of elements: "; 

    size_t n = 0; 
    std::cin >> n; 

    if (n != 0) 
    { 
     int *a = new int[n]; 

     std::cout << "Enter " << n << " integers: "; 

     for (size_t i = 0; i < n; i++) std::cin >> a[i]; 

     std::cout << "Original numbers:"; 
     for (size_t i = 0; i < n; i++) std::cout << ' ' << a[i]; 
     std::cout << std::endl; 

     bubblesort(a, n); 

     std::cout << "Sorted numbers:"; 
     for (size_t i = 0; i < n; i++) std::cout << ' ' << a[i]; 
     std::cout << std::endl; 

     long long sum = 0; 

     for (size_t i = 0; i < n; i++) sum += a[i]; 

     std::cout << "Sum of the numbers is " << sum << std::endl; 

     delete [] a; 
    } 

    return 0; 
} 

, если, например, ввести

10 
9 8 7 6 5 4 3 2 1 0 

тогда выход будет

Original numbers: 9 8 7 6 5 4 3 2 1 0 
Sorted numbers: 0 1 2 3 4 5 6 7 8 9 
Sum of the numbers is 45 
+0

спасибо, сэр, что я не знаю, почему внешний цикл работает только один раз, хотя m дает g любое целое число больше 1.I jst отредактировал мой вопрос , может ли plz сказать, что может быть причиной while loop..также, если m использует while (g--), он работает правильно. Какова проблема с while (i

+0

@Anshul Sheoliha Если у вас есть проблемы с другим кодом, вы должны создать поток новый. Поэтому отметьте мой ответ как лучший, чтобы закрыть поток. Что касается вашего нового кода, то он не имеет никакого смысла. Например, переменная сумма не была инициализирована и не указана в коде. –

+0

, у меня возникла проблема с циклом while, а не с bubblesort, хотя я waw извиняюсь за цитирование неправильного заголовка для вопроса ранее .., который касался bubblesort.So ур ответ для bubblesort. Что тоже помогло мне понять проблемы в моем коде. Что касается правильного ответа, я сам это делаю. –

Смежные вопросы