Премини към съдържанието

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Георги Шарапанов

Помощ за две задачи с масив за C++

Препоръчан отговор


Това са задачите, какво съм объркал

 

1.Да се допълни кодът на  функцията  different, така че да връща резултат  true,
ако масивът а с  n  на брой елементи се състои от различни елементи и  false  в противен
случай.

bool different(int a[n], int n) {
 bool b;
 int i=-1, j
 do {  i++;
     j=i+1;
     do {j++;
     b=(a!=a[j]);
     } while (b && j<n-1);
 } while (b && i<n-2);
 return b;
}

 

2.Да се допълни кодът на функцията  chetni  така че да връща като резултат броя
на четните елементи на нечетни индекси в масива а с n на брой елементи.

int chetni (int a[], int n)
{ int broi=0, i=0 ;
while (i<n){
if (i<=n-1) broi++;
i=i+1;
}
return broi;
}

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

За 2 задача: Напишете една функция за намиране на четно и нечетно число. Като аргумент се подава числото и се връща true или false.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

За първата задача не е ли по-лесно да пуснете цикъл от втория елемент до края и да сравнявате с първия елемент и ако има несъвпадение изход от цикъла със сетване на флага false. Така става само един for и при него е много по-лесно да следите за проблеми

За втората задача никъде не проверявате дали елемента е четно числи, нито дали индекса е нечетно

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Не знам каква е твоята намеса, но първата задача може да стане така:

 

bool different(int n = 5, int a[n]) {

 int i = -1, j;

 do {

   i++;
j = i + 1;

   do {
 
     if (a == a[j]) {
     
       return false
     }

 

  j++;
     
  } while (j < n - 1);
   
  } while (i < n - 2);
 
  return true;
 
}

 

-------------------------------------------------------------------------

 

А втората ей така:

 

int chetni (int a[], int n) {
 
 int broi = 0;
 int i = 1;
 
 while (i < n) {
   
   if (a % 2 == 0) {
   
     broi++;
     
   }
   
   i = i + 2;
   
 }

 return broi;
 
}

 

-------------------------------------------------------

Отделно, ако се използват for цикли би било много по-прегледно, но ваша си работа :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Извинете забравих да поставя кода който да бъде попълнен.

 

За първа задача.

bool different (int a[], int n) {
 bool b;
 int i=-1, j;
 do {
   i++;
   j=…;
   do {
     j++;
     b=(a!=a[j]);
   } while (b && …….);
 } while (b && …….);
 return ……;
}

 

За втора задача.

int chetni (int a[], int n)
{ int broi=0, i=......;
while (i<n){
if (...............) broi++;
i=.........;
}
return ..........;
}


Сподели този отговор


Линк към този отговор
Сподели в други сайтове

  • Разглеждащи това в момента   0 потребители

    Няма регистрирани потребители разглеждащи тази страница.

  • Горещи теми в момента

  • Подобни теми

    • от Smile Box
      Здравейте моля ви за помощ опитвах няколко пъти но така и не успях да си направя задачата ето това е условието ако трябва ще платя. Благодаря предварително: 
      Даден е двумерен масив A с m реда и n стълба. Да се състави блок схема на алгоритъм, чрез който се създава нов масив b1, b2 ..., bn, като стойноста на bj е равна на средно аритметичното на отрицателните елементи в j -ия стълб. Да се състави програма по този алгоритъм.
    • от nisanx
      Здравейте!Трябва ми помощ направих две програми обаче незнам как да ги слея в 1 програма,по такъв начин че да не се промени нищо.И да ми изведе двете програми една под друга на команд пропта! Нов съм в програмирането затова ще се радвам ако ми помогнете да ги слея.
      #include <iostream>
      #include <stdlib.h>
      #include <time.h>
      using namespace std;
      #define N 30
      int A[N], n, i;
      void inputkeyboard()
      {
          do
       {
           cout<<"\n Razmer na masiva: ";
           cin>>n;
       }
       while (n<0 || n>N);
          for (i=0; i<n; i++)
          {
            cout<<"\n A["<<i+1<<"] = ";
            do
            {
              cin>>A;
            }
            while (A<100 || A>999);
          }
      }
      void inputrandom()
      {
          srand(time(0));
             do
       {
           cout<<"\n Razmer na masiva: ";
           cin>>n;
       }
       while (n<0 || n>N);
          for (i=0;i<n;i++)
          {
          A =100+rand()%900;
          }
          for (i=0;i<n;i++)
          {
              cout<<"\n A["<<i+1<<"] = "<<A;
          }
      }
      int main()
      {
          inputrandom();
          int P[10] = {};
          int p, max;
          
          for (i=0;i<n;i++)
          {
              P[A%10]++;
              p= A/10;
              P[p%10]++;
              P[p/10]++;
          }
         
          max = -1;
          for (i=0;i<10; i++) 
              if (P>max) 
                  max=P;
          
          for (i=0; i<10; i++)
              if (P==max) 
                  cout <<"\n Nai-chesto sreshtanata cifra e " << i << "  " << max << " broia\n";
                  
          system("pause");
          return 0;
      }
      //това е първата програмка//
       
      #include <iostream>
      using namespace std;
      int array[] = { 151,152,123,694,255,956,427,218,769,320 };
      int count = sizeof(array) / sizeof(int);
      int first(int an_array[],int  members)
      {
      int a, j, b, *T;
        
               T = new int [members];
               
               for (a = 0, j = 0; a < members; a++)
               {
                       b = an_array[a]; 
                       if (b % 2)
                              T[j++] = b;
               }
               for (a = 0; a < members; a++)
               {
                       b = an_array[a]; 
                       if (!(b % 2))
                              T[j++] = b;
               }
               cout << "\n\nIztinskiqt masiv e:\n"; 
               for (a=0;a<members; a++)
                       cout << an_array[a] << " ";
               cout << "\n\nV nachaloto sa nechetnite a sled tqh chetnite:\n"; 
               for (a=0;a<members;a++)
                       cout << T[a] << " ";
               
               cout << endl;
               delete [] T;
      }
      main()
      {
                first(array,count);
                         
                system("pause");
                return 0;
      } //а това е втората програмка//
      Благодаря ви предварително !!
       
       
    • от barry
      Здравейте,
      имам един масив от цели числа
      int a[] = {1, 2, 3, 4, 5, 6}; а израза
      (1 + 3)[a] - a[0] + (a + 1)[2] е равен на 8. По принцип i-тия елемент на масива е
      a[i] или *(a+i) но не разбирам другите две конструкции. Може ли някой да обясни как се изчисляват те?
      Благодаря предварително.
    • от HelloWorld
      Здравейте,
      Някой може ли да помогне с презаписването на масив в друг масив, т.е входните данни се записват в даден масив, но след това трябва да се прехвърлят на друг в отделна функция. 
    • от Aspire_bg
      Здравейте, някои може ли да ми помогне с откриването на грешките на тази задача?
      Задачата е следната:
      Програма с фунция main() чрез меню на функции за:
      1.Вивеждане от клавиатура на размерност (с проверка за коректност) и елементи на масив от цели числа K(L) (L<=30);
      2.Изчисляване на средно-аритметично от числата в масива, които се делят без остатък ;
      3.Изчисляване на сумата на различните от нула числа и броя на нулевите числа в масива;
      4.Намиране на максималното отрицателно число в масива и неговия пореден номер;
      5.Извеждане на екран на резултатите от съответното изчисляване, както и на въведените числа в масива (с подходящи текстове).
      #include<iostream>
      using namespace std;
      const int L=30;
      int F[L];
      int N;

      void input()
      {
      int i;
              do
              {
                      cout<<"Vavedete razmernost na masiva ne poveche ot 30"<<endl;
                      cin>>N;
              }
              while(N<1||N>30);
              for(i=0;i<N;N++);
              {
                      cout<<"Vavedete element na masiv"<<i+1<<endl;
                      cin>>F;
              }
          
      }
      void average() 
      {int sum; 
      int m,i; 
      int br=0; 
      for(i=0;i<N;i++) 
      m=F%6; 
      if(m==0); 
      sum+=F; 
      br++; 
      cout<<"Sredno aritmetichnoto na chislata v masiva koito se delqt bez ostatuk na 6"<<sum/br<<endl; 

      void sum0() 

      int i; 
      int sum; 
      int br=0; 
      for(i=0;i<N;i++); 
      if(F!=0) 
      sum+=F; 
      else 
      br++; 
      cout<<"Sumata na razlichnite chisla ot nula"<<sum<<endl; 
      cout<<"Broq na nulevite chisla v masiva e "<<br<<endl; 

      void maxn() 
      { double max; 
      int i; 
      int n; 
      for(i=0;i<N;i++); 
      if(F>0&&max>F); 
      {max=F; 
      n=i; 

      cout<<"Maximalnoto otricatelno chislo v masiva e"<<max<<endl; 
      cout<<"Poredniqt mu nomer e"<<n<<endl; 

      void menu()
      {
          int izbor;
          do{
              cout<<"1.Vavejdane na razmernost na masiva i negovite stoinosti"<<endl;
              cout<<"2.Izchislqvane na sredno aritmetichno ot chislata ,koito se delqt bez ostatuk na 6"<<endl;
              cout<<"3.Izchislqvane na sumata na razlichnite ot nula chislq i broq na nulevite chisla"<<endl;
              cout<<"4.Namirane na maksimalnoto polojitelno chislo i negoviqt poreden nomer"<<endl;
              cout<<"5.Krai na programata"<<endl;
              cin>>izbor;
              while((izbor<1)||(izbor>5))
              switch(izbor)
              {
                  case 1:
                   cout<<"Vavejdane na chisla:"<<endl;
                  input();
       
                  case 2:
                  cout<<"Sredno aritmetichno na chislata koito se delqt bez ostatuk na 6"<<endl;
                  average();
       
                  case 3:
                  cout<<"Sumata na razlichnite ot nula chislq i broq na nulite:"<<endl;
                  sum0();
       
                  case 4:cout<<"Maksimalnoto otricatelno chislo i negoviq nomer"<<endl;
                  maxn();
                  case 5: cout<<"Krai na programata"<<endl;
                  return;
       
              }
          }while(1);
      }
       
      void main()
      {
      menu();
      }
       
       
  • Дарение

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.