va roggg Scrieţi un program C++ care citeşte numerele din fişierul date.in şi afiseaza valorile distincte citite, separate prin câte un spaţiu, respectându-se regula: pe prima linie vor fi scrise numerele impare în ordine crescătoare, iar pe linia a doua numerele pare, în ordine descrescătoare.
Exemplu:
dacă pe prima linie a fişierului date.in se află numerele: 75 12 3 3 18 75 1 3
atunci se va afisa:
1 3 75
18 12
am incercat ,dar nu afiseza nimic (+ nu am stiut cum sa afisez numere distincte)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("date.in");
int main()
{int x,i=0,j=0,n=0,m=0,a[100],b[100],aux;
while(in>>x)
if(x%2!=0)
{i++;
n++;
a[i]=x;}
else
{j++;
m++;
b[j]=x;}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j])
{aux=a[i];
a[i]=a[j];
a[j]=aux;}
for(i=0;i<n;i++)
cout <<a[i]<<" ";
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(a[i]<a[j])
{aux=a[i];
a[i]=a[j];
a[j]=aux;}
for(i=0;i<m;i++)
cout <<b[i]<<" ";
return 0;}
Utilizator anonim:
Nu vad unde ai pus acoladele la "while"
#include <fstream>
using namespace std;
ifstream in("date.in");
int main()
{int x,i=0,j=0,n=0,m=0,a[100],b[100],aux;
while(in>>x)
if(x%2!=0)
{
a[i]=x;
i++;
n++;
}
else
{ b[j]=x;
j++;
m++;
}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(b[i]<b[j])
{aux=b[i];
b[i]=b[j];
b[j]=aux;}
for(i=0;i<m;i++)
cout <<b[i]<<" ";
cout<<endl;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{aux=a[i];
a[i]=a[j];
a[j]=aux;}
for(i=0;i<n;i++)
cout <<a[i]<<" ";
return 0;}
Răspunsuri la întrebare
Răspuns de
2
Pai nai ce face la numerele distincte, dupa ce sortezi vectorul, numerele care se repeta vor fi ordonate si pur si simplu controlezi daca nu scrii un numar ca anteriorul :). De ex: ai vectorul: 1 5 4 3 6 5 2 5, dupa sortare: 1 2 3 4 5 5 5 6, inainte de a afisa un numar, controlezi daca vector[i] nu e egal cu vector[i-1] si astai e totul :). Dar asa, legat de cod, e cam urit scris. Macar puneai swap in cel mai rau caz, sau sort in cel mai bun. Iata un cod correct:
#include <bits/stdc++.h>
using namespace std;
ifstream fin("date.in");
int a[100],b[100],n1,n2,x;
int main()
{
while(fin >> x)
if(x%2==0) a[n1++]=x;
else b[n2++]=x;
sort(a,a+n1,greater<int>());
sort(b,b+n2);
for(int i=0;i<n2;i++)
if(i==0) cout << b[i] << " ";
else if(b[i]!=b[i-1])
cout << b[i] << " ";
cout << endl;
for(int j=0;j<n1;j++)
if(j==0) cout << a[j] << " ";
else if(a[j]!=a[j-1])
cout << a[j] << " ";
return 0;
}
#include <bits/stdc++.h>
using namespace std;
ifstream fin("date.in");
int a[100],b[100],n1,n2,x;
int main()
{
while(fin >> x)
if(x%2==0) a[n1++]=x;
else b[n2++]=x;
sort(a,a+n1,greater<int>());
sort(b,b+n2);
for(int i=0;i<n2;i++)
if(i==0) cout << b[i] << " ";
else if(b[i]!=b[i-1])
cout << b[i] << " ";
cout << endl;
for(int j=0;j<n1;j++)
if(j==0) cout << a[j] << " ";
else if(a[j]!=a[j-1])
cout << a[j] << " ";
return 0;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Engleza,
8 ani în urmă
Chimie,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă