Да се въведе масив от M елемента и после друг от N елемента. Да се отпечата колко пъти първия масив се повтаря във втория.
По желание***: Да се отпечатат всички части от първия масив, които се срещат поне веднъж във втория и колко пъти се повтарят.
Да се въведе масив от M елемента и после друг от N елемента. Да се отпечата колко пъти първия масив се повтаря във втория.
По желание***: Да се отпечатат всички части от първия масив, които се срещат поне веднъж във втория и колко пъти се повтарят.
Трябва да влезете, за да публикувате коментар.
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int n,m; cout<<"Wuwedete broi elementi za masiwite "; cin>>n>>m; int masiv1[n],masiv2[m]; cout<<"Wuwedete "<<n<<" elementa za purwi masiv: "; for (int i=0,x;i<n;i++) { cin>>x; masiv1[i]=x; } cout<<"Wuwedete "<<m<<" elementa za wtori masiv: "; for (int i=0,x;i<m;i++) { cin>>x; masiv2[i]=x; } for (int i=0,br=0;i<n;i++) { for (int j=0;j<m;j++) if (masiv1[i]==masiv2[j]) br++; if (br!=0) cout<<i+1<<". "<<masiv1[i]<<" se sreshta "<<br<<" puti\n"; br=0; } system("PAUSE"); return EXIT_SUCCESS; }Моята интерпретация на условието по желание. Не съм сигурен дали това се е имало предвид в задачата.
Не точно това се има в предвид – ти си направил колко пъти всяка стойност от първия масив се съдържа във втория. А идеята е колко пъти поредицата от стойности от първия масив се съдържа (в този ред) и във втория масив.
Но решението е интересно. Само няма нужда при въвеждането на масивите първо да въвеждаш в x, а после да присвояваш на елемента от масива.
int arr[100],brr[100],M,N,i,s=0,br=0; cout << "Vavedete M elementa: "; cin >> M ; for(int i=0 ; i<M ; i++){ cout << "Vuvedete chislo: "; cin >> arr[i] ; } cout << "Vavedete N elementa: "; cin >> N ; for(int i=0 ; i<N ; i++){ cout << "Vuvedete chislo: "; cin >> brr[i] ; } //Kolko puti se namira purviq masiv vuv vtoriq for(int j=0 ; j<N ; j++){ if(arr[0]==brr[j]){ for(int i=0; i<M ;i++){ if(arr[i]==brr[j+i]) s++; } } else i=0; if(s==M){ br++; s=0; } else s=0; } cout << "Purviq masiv se povtarq: " << br << " puti vuv vtoriq!" << endl ;Ники, верни са ти разсъжденията, но ненужно усложнени. Ето ти малко съкратен и променен вариант на твойта програма:
int arr[100],brr[100],M,N,i,s=0,br=0; cout << "Vavedezdane na po-kasia masiv:\n"; cout << "Vavedete M: "; cin >> M ; cout << "Vuvedete "<<M<< elementa": "; for(int i=0 ; i<M ; i++) cin >> arr[i] ; cout << "Vavedezdane na po-dalgia masiv:\n"; cout << "Vavedete N: "; cin >> N ; cout << "Vuvedete "<<N<< elementa": "; for(int i=0 ; i<N ; i++) cin >> brr[i] ; // проверяваме колко пъти първият масив се среща във вторият for(int j=0 ; j<(N-M+1); j++){ // проверяваме дали дадените елементи се срещат в масива for(int i=0; i<M ;i++) if(arr[i]==brr[j+i]) s++; // ако сме открили целия масив if(s==M) br++; // започваме отначало s=0; } cout << "Purviq masiv se povtarq: " << br << " puti vuv vtoriq!" << endl ; return 0;