Cerința ---> #1678 modifMat pbinfo (ajutor am nevoie de 100 pct.)
Se citeşte din fişierul de intrare o matrice pătratică A cu n linii şi n coloane conţinând numere naturale. Scrieţi un program care modifică matricea A în modul următor:
I. interschimbă elementele matricei din triunghiul superior cu cele din triunghiul inferior al matricei
II. după aceea interschimbă elementele superprime distincte, care apar în triunghiul din dreapta cu cel din triunghiul din stânga al matricei (ambele elemente trebuie să fie superprime);
Un număr natural n se numeşte superprim dacă printre numerele care pot fi obţinute mutând, pe rând, prima cifră a numărului n şi a celor obţinute pe parcurs, pe ultima poziţie, există cel puţin un număr prim. De exemplu 124 este “superprim” deoarece dintre numerele 241, 412 şi 124, numărul 241 este prim. 15 nu este “superprim” deoarece nici 51, nici 15 nu sunt numere prime.
Date de intrare
Fișierul de intrare matrice.in conține pe prima linie numărul n, iar pe următoarele n linii câte n numere naturale reprezentând elementele matricei.
Date de ieșire
Fișierul de ieșire matrice.out va conține matricea modificată, câte o linie a matricei pe o linie a fişierului, fiecare element al matricei fiind separat prin câte un spaţiu.
Restricții și precizări
3 ≤ n ≤ 50
1 ≤ ai,j ≤ 2000
Nu se iau în considerare elementele de pe cele două diagonale.
Exemplu:
matrice.in:
4
1 3 4 2
8 1 2 7
124 2 1 32
2 5 6 1
matrice.out:
1 5 6 2
8 1 2 7
32 2 1 124
2 3 4 1
Răspunsuri la întrebare
Răspuns de
1
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
int main()
{
ifstream f("matrice.in");
ofstream g("matrice.out");
int mat[50][50],n,i,j,t,c,k,x,u;
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>mat[i][j];
for(i=2;i<n;i++)
{
t=mat[1][i];
mat[1][i]=mat[n-1+1][i];
mat[n-1+1][i]=t;
}
for(i=2;i<n;i++)
{
x=mat[i][1];
k=0;
u=x;
// aflu prima cifra
while(u>9)
u=u/10;
t=u;
/* facem algoritmul pana cand numarul se intoarce la cel initial adica cand ultima cifra devine prima cifra
exemplu :124 412 241 124 */
while(t!=x%10)
{
// exemplu 124 ==> 1240 ===> 1240-100=240 + 1=241
x=x*10-1000+u;
c=0;
for(j=2;j<sqrt(x);j++)
if(x%j==0)
c=c+1;
if(c==0)
{
k=1;
break;
}
}
// interschimb valorile
if(k==1)
{
t=mat[i][1];
mat[i][1]=mat[i][n-1+1];
mat[i][n-1+1]=t;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
g<<mat[i][j]<<" ";
g<<endl;
}
return 0;
}
#include <fstream>
#include <math.h>
using namespace std;
int main()
{
ifstream f("matrice.in");
ofstream g("matrice.out");
int mat[50][50],n,i,j,t,c,k,x,u;
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f>>mat[i][j];
for(i=2;i<n;i++)
{
t=mat[1][i];
mat[1][i]=mat[n-1+1][i];
mat[n-1+1][i]=t;
}
for(i=2;i<n;i++)
{
x=mat[i][1];
k=0;
u=x;
// aflu prima cifra
while(u>9)
u=u/10;
t=u;
/* facem algoritmul pana cand numarul se intoarce la cel initial adica cand ultima cifra devine prima cifra
exemplu :124 412 241 124 */
while(t!=x%10)
{
// exemplu 124 ==> 1240 ===> 1240-100=240 + 1=241
x=x*10-1000+u;
c=0;
for(j=2;j<sqrt(x);j++)
if(x%j==0)
c=c+1;
if(c==0)
{
k=1;
break;
}
}
// interschimb valorile
if(k==1)
{
t=mat[i][1];
mat[i][1]=mat[i][n-1+1];
mat[i][n-1+1]=t;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
g<<mat[i][j]<<" ";
g<<endl;
}
return 0;
}
stassahul:
Pai e gresit, te roaga o sursa de 100 puncte, tu ii pui de 20 :|
Alte întrebări interesante
Geografie,
8 ani în urmă
Istorie,
8 ani în urmă
Chimie,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Engleza,
9 ani în urmă
Istorie,
9 ani în urmă
Limba română,
9 ani în urmă