Тази седмица сме на вълна програмиране тук във форума, та реших да ви позанимавам и с мои работи.
Един приятел ме помоли да му напиша код за двумерен масив - въвеждат се данните и ако има отрицателна стойност ,тя се копира в едномерен масив и резултатът се извежда на екрана.
// имах идея да ползвам вектор за втория масив, но те не са го учили.
//проверката за валидност на данните също е тъпа и се дъни тук там, но това са //им преподавали
Аз написах един код и той работи, но нещо не ме кефи заради повторното претърсване на масива (за отрицателните числа). При опит да ги наблъскам в един for не мога да избегна грешките и кода ми не работи.
Как може да се направи елегантно? Това е за собствено удоволствие, иначе на прпиятеля изпратих следния код:
#include <iostream>
using namespace std;
const int S1=3, S2=4, S3=S1*S2;
int main()
{
double masive[S1][S2], otricatelni[S3];
cout<<"Zadaite stoinostite na masiva"<<endl;
for(int i=0,j=0;i<S1;)
{ bool b;
do{
b=0;
cout<<"stoinostta na element["<<i+1<<"]["<<j+1<<"] e ";
cin>>masive[j];
if(cin.fail()){
cin.clear();
char ch;
cin>>ch;
b=1;}
}while (b);
for(j=1;j<S2;)
{ bool v;
do{
v=0;
cout<<"stoinostta na element["<<i+1<<"]["<<j+1<<"] e ";
cin>>masive[j];
if(cin.fail()){
cin.clear();
char ch;
cin>>ch;
v=1;}
}while (v);
j++;
}
j=0;
i++;
}
for(int a=0,b=0,c=0;a<S1;){
if(masive[a]<0){otricatelni[c]=masive[a];
cout<<otricatelni[c]<<endl;}
c++;
for(b=1;b<S2;){
if(masive[a]<0){otricatelni[c]=masive[a];
cout<<otricatelni[c]<<endl;}
c++;
b++;
}
b=0;
a++;
}
return 0;
}
ЕДИТ: Download.bg малко са ми орязали кода : cin>>masive[j] излиза като cin>>masive[j]. Може и на други места да реже ,но аз това забелязах. На редовните потребители проблема им е известен и се надявам да схванат общия смисъл на кода.
Пак добавка: правилно е да има едно преди [j] но гледам че го реже
бесен едит: има ендо инт и преди джей - нали е двумерен масив.
ДБГ, трябва ли винаги кода да се огражда с код=с++ за да е адекватно ???????? И защо редакциите ми са с тоя тъп шрифт?????