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

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


Зададен е едномерен масив от цели числа А0,А1,....А n-1. Да се състави програма, която създава нов масив а0,а1,....,аn-1, като стойността на аi е равна на най-малката цифра на Аi.В програвата да се използват динамични масиви.

 

 

Благодаря предварително!!:)

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


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

#include <iostream>
using namespace std;

void create_array_from_last_digit(int* A, int* a, int n)
{
	int i;
	for (i = 0; i < n; i++)
	{
		a[i] = A[i] % 10;
	}
}


int main()
{
	int i;
	int* A;
	int* a;
	int n;
	cout << "Vavedete dalzhina na masiva -> ";
	cin >> n;
	A = new int[n];
	a = new int[n];
	cout << "\n\n";
	for (i = 0; i < n; i++)
	{
		cout << "vavedete A[" << i << "] -> ";
		cin >> A[i];
	}
	create_array_from_last_digit(A, a, n);
	cout << "\n\n";
	for (i = 0; i < n; i++)
	{
		cout << "a[" << i << "] = " << a[i] << "\n";
	}
	delete[] A;
	delete[] a;
	return 0;
}

 

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


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

А ще можеш ли да кажеш как ще е ако е за най-голямата цифра на Ai

 

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


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

Тея даскали кога ще почнат да ви дават задачи с коректно написани условия?

Най-малката цифра какво би трябвало да значи - цифрата на единиците или най-малката от всички цифри на числото.

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


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

 най-малката от всички цифри на числото  би трябвало да е 


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


Линк към този отговор
Сподели в други сайтове
#include <iostream>
using namespace std;

int find_smallest_digit(int n)
{
	int digit = 10;
	int temp;
	while (n > 0)
	{
		temp = n % 10;
		n = n / 10;
		if (digit > temp) digit = temp;
	}
	return digit;
}

void create_array_from_smallest_digit(int* A, int* a, int n)
{
	int i;
	for (i = 0; i < n; i++)
	{
		a[i] = find_smallest_digit(A[i]);
	}
}


int main()
{
	int i;
	int* A;
	int* a;
	int n;
	cout << "Vavedete dalzhina na masiva -> ";
	cin >> n;
	A = new int[n];
	a = new int[n];
	cout << "\n\n";
	for (i = 0; i < n; i++)
	{
		cout << "vavedete A[" << i << "] -> ";
		cin >> A[i];
	}
	create_array_from_smallest_digit(A, a, n);
	cout << "\n\n";
	for (i = 0; i < n; i++)
	{
		cout << "a[" << i << "] = " << a[i] << "\n";
	}
	delete[] A;
	delete[] a;
	return 0;
}

 

Винаги съм казвал, че феномените нямат себеприрода. Най малката и най малката не е едно и също в различните контексти.

Първия ми отговор е за цифрата на единиците, а втория за най малката цифра

Редактирано от Реджеп Иведик (преглед на промените)

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


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

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

void printArray(int* arr,int arrSize){
    cout<<endl;
    cout<<"-----Start-----"<<endl;
    cout<<"---------------"<<endl;
    for(int i = 0;i<arrSize;i++){
        cout<< "arr["<<i<<"]="<<arr <<endl;
    }
    cout<<"---------------"<<endl;
    cout<<"------End------"<<endl;
    cout<<endl;
}

void initializeRandomArray(int* arr,int arrSize){
    srand (time(NULL));
    for(int i = 0;i<arrSize;i++){
        /*generate random number between 0 and 1,000,000*/
        arr= rand()%1000000 + 1;
    }
}
int getLowestDigit(int num){
    int lowestDigit=num%10;
    num/=10;
    while(num!=0){
        int nextDigit=num%10;
        if(nextDigit<lowestDigit){
            lowestDigit=nextDigit;
        }
        num/=10;
    }
    return lowestDigit;
}

int* buildNewArray(int* arr,int arrSize){
    int* newArray = new int[arrSize];
    for(int i = 0;i<arrSize;i++){
        newArray=getLowestDigit(arr);
    }
    return newArray;
}
int main()
{
    const int n =10;
    int* integerArray = new int[n];
    initializeRandomArray(integerArray,n);
    cout << "Array input:" << endl;
    printArray(integerArray,n);
    int *newArray = buildNewArray(integerArray,n);
    cout << "Array output:" << endl;
    printArray(newArray,n);

    /*cleaning the memory*/
    delete[] integerArray;
    delete[] newArray;

    return 0;
}
 

Ето едно и от мен да си имаш, колегата малко ме изпревари.

Редактирано от someFakeName (преглед на промените)

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


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

Ако числото е 0 или отрицателно функцията ще върне ,че най-малката цифра е 10.

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


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

Ако числото е 0 или отрицателно функцията ще върне ,че най-малката цифра е 10.

#include <iostream>
#include <stdlib.h>
using namespace std;

int find_smallest_digit(int n)
{
	int digit = 10;
	int temp;
	n=abs(n);
	while (n > )
	{
		temp = n % 10;
		n = n / 10;
		if (digit > temp) digit = temp;
	}
	return digit;
}

 

while (n > )

Трябва да има 0 просто не знам защо форума го трие. Явно е по-запознат с програмирането

Редактирано от Zealar
Заради малумният форум как защо (преглед на промените)

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


Линк към този отговор
Сподели в други сайтове
int find_smallest_digit(int n)
{
    if (n<0) n=-n;
    int min=n%10;
    n /= 10;
    while (n)
    {
        int temp = n % 10;
        if (min>temp) min=temp;
        n /= 10;
    }
    return min;
}

 

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


Линк към този отговор
Сподели в други сайтове
преди 4 часа, Moni Slavova написа:

Зададен е едномерен масив от цели числа А0,А1,....А n-1. Да се състави програма, която създава нов масив а0,а1,....,аn-1, като стойността на аi е равна на най-малката цифра на Аi.В програвата да се използват динамични масиви.

 

 

Благодаря предварително!!:)

Нещо условието не ми е много ясно. Значи първо a1 взима най-маката цифра на A1, а за a2,3,4....?

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


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

Нещо условието не ми е много ясно. Значи първо a1 взима най-маката цифра на A1, а за a2,3,4....?

И двете са масиви. На съответните индекси голямо А отговарят същите индекси малко а.

 

Това се има предвид

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


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

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

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

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

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

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

    • от 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();
      }
       
       
    • от 87975865869
      Цяла седмица се опитвам да си завърша курсовата задача по програмиране. Последния срок е утре до 17:00 а съм до никъде. Надробих някакви простотии но не вярвам да ми донесат каквото и да е... Бих бил много благодарен на всякаква помощ.

      Ето го и условието:
      Съставете програма с функция main() и избор чрез меню на функции за:
      - въвеждане от клавиатура данните на К студента (К<=25) от група: фак.номер, оценки по 4 дисциплини от зимен семестър, възраст и съхраняването им в масив GR(25,6) като (GR(I,0) - за фак. номер, (GR(I,1) до (GR(I,4) - за оценка, (GR(I,5) за възраст.
      - изчисляване и извеждане на среден успех по избрана дисциплина; 
      - изчисляване и извеждане на среден успех на студент по зададен фак. номер;
      - намиране и извеждане на броя на студентите над зададена възраст
      - извеждане на екран съдържанието на масива със съответни текст и формати. 

      Когато видите състоянието на кода ми ще се разберете защо публикувам тема.Ако не друго - поне ще се посмеете 
      Ето го и него:
      #include <iostream> #include <string> using namespace std; int input(int x[]); int add(int a); void studentID(int a); int main() { int ch, GR[25][6], n; do { cout << "\Show student data: \n"; cout << "\Show GPA for subject : \n"; cout << "\Show GPA for a FN: \n"; cout << "\Show amount of students over the age of 18: \n"; cout << "\Exit"; do { cout << "\n\nChoice: \n"; cin >> ch; } } int input(int x[]) { int i, n = 0; do { cout << "\n Input size: "; cin >> n; } while (1 > n || n > 25); for (int i = 0; i < n; i++) { cout << "\n Enter element [" << i + 1 << "] = "; cin >> x[i]; } return n; } int add(int a) { char iz; while (1) { cout << "Insert ID:"; cin >> rab[a].id; cout << "Insert grade1:"; cin >> rab[a].g1; cout << "Insert grade2:"; cin >> rab[a].gr2; cout << "Insert grade3:"; cin >> rab[a].gr3; cout << "Insert grade4:"; cin >> rab[a].gr4; cout << "Insert age:"; cin >> rab[a].age; a++; cout << endl << "Do you want to add a new student?" << endl << "type (y) for yes and (n) for no:"; cin >> iz; if (iz == 'n') { return a; break; } return 0; } } void studentID(int a) { char ID[5]; // cout<<a; cout << "Insert ID:"; cin >> studentID; for (int i = 0; i<a; i++) if (!strcmp(studentID, rab[i].studentID)) { cout << "Name:" << rab[i].name << endl << "ID:" << rab[i].id << endl << "Age:" << rab[i].god << endl; } return; } Намерих същата задача във форума ви но е решена без функции а по следния начин:
      #include <iostream> using namespace std; int main() { int K=0; int choice=0; cout << "Vivedete broq na studentite(1-25): "; cin >> K; double GR[K][6]; for(int i=0; i<K; ++i) for(int j=0; j<6; ++j) { cout << "GR("<<i<<","<<j<<") = "; cin >> GR[i][j]; } do { cout << "1. Izchislqvane i izvejdane na sredniq uspeh po izbrana disiplina" << endl; cout << "2. Izchislqvane i izvejdane na sredniq uspeh na student po dazaden vakulteten nomer" << endl; cout << "3. Namirane i izvejdane na broq na studentite nad zadadena vizrast." << endl; cout << "4. Izvejdane na ekrana sidirjanieto na masiwa sys siotvetniq tekst i formati." << endl; cout << "Molq, izberete obciq(1-4): "; cin >> choice; }while(choice>4 || choice<1); if(choice == 1) { int disiplina=0; double srUspeh=0; cout << "Izberete disiplina(1-4): "; cin >> disiplina; if(disiplina > 5 || disiplina < 1) cout << "Greshen vhod!" << endl; for(int i=0; i<K; ++i) srUspeh+=GR[i][disiplina]; cout << "Sredniq uspeh po disiplina " << disiplina << " e : " << srUspeh/K << endl; } else if(choice == 2) { int FKNomer=0; bool isFound=false; double srUspeh=0; cout << "FK Nomer: "; cin >> FKNomer; for(int i=0; i<K; ++i) { if(GR[i][0] == FKNomer) { for(int j=1; j<5; ++j) srUspeh += GR[i][j]; isFound = true; break; } } if(isFound == false) cout << "Ne e nameren student s takiv FK nomer!" << endl; else if(isFound) cout << "Sredniq uspeh na student s FK=" << FKNomer << " e : " << srUspeh/4 << endl; } else if(choice == 3) { int vizrast, br=0; cout << "Vivedete vizrast: "; cin >> vizrast; for(int i=0; i<K; ++i) { if(GR[i][5] > vizrast) { br++; } } cout << "Broq na studentite, koito sa po-golemi ot " <<vizrast << " godini: " << br << endl; } else if(choice == 4) { for(int i=0; i<K; ++i) { cout << "Student " << i+1 << endl; cout << "Fak. Nomer: " << GR[i][0] << endl; cout << "Otsenki: " << GR[i][1] << " " << GR[i][2] <<" "<< GR[i][3] <<" "<<GR[i][4] << endl; cout << "Vizrast: " << GR[i][5] << endl; } } return 0; } Не мисля че това е целта на задачата, така че едва ли ще бъде приета за вярна. 
  • Дарение

×

Информация

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