Автор |
|
anonymousЧет, 03.01.08, 17:17 |
здравейте искам да Ви помоля за помощ за една задача по C++ условието е следното : В едномерен масив са зададени разстоянията между градовете.Запълнете с тях двумерен масив.Отпечатайте го операторите който сме учили са :cout,cin,if,do...while,while и for моят вариант на програмата е :#include<iostream.h> #include<iomanip.h> void main() { int g[10]; int n; do{cout<<"kolko sa gradovete "; cin>>n;}while(n<=0||n>10); int j; for(j=0;j<=n-1;j++){cout<<"kolko e raztoianieto na "<<j<<" miasto "; cin>>g[j]; } int r[10][10]; int m,d; for(m=0;m<=n-1;m++) for(j=m;j<=n;j++)if(m==j)r[m][j]=0; else {d=g[j]; r[m][j]=d; r[j][m]=d; } for(m=0;m<n;m++) {for(j=0;j<n;j++) cout<<setw(10)<<r[m][j]; cout<<"\n"; } } и не мога да разбера каде бъркам благодаря предварително |
|
pdtomovЧет, 03.01.08, 18:05 |
#include<iomanip.h>
int main()
{
int g[10];
int n;
do{cout<<"kolko sa gradovete ";
cin>>n;}while(n<=0||n>10);
int j;
for(j=0;j<=n-1;j++){cout<<"kolko e raztoianieto na "<<j<<" miasto ";
cin>>g[j];
}
int r[10][10];
int m,d;
for(m=0;m<=n-1;m++)
for(j=m;j<=n;j++)if(m==j)r[m][j]=0;
else {d=g[j];
r[m][j]=d;
r[j][m]=d;
}
for(m=0;m<n;m++)
{for(j=0;j<n;j++)
cout<<setw(10)<<r[m][j];
cout<<"n";
}
system("pause");
return 0;
} |
main функцията трябва да е int main()! За да видиш резултата трябва да поставиш накрая system("pause"); Промените съм ги направил в кода. Успех! |
|
anonymousЧет, 03.01.08, 18:25 |
функцията system("pause"); return 0; не съм ги учил няма ли друг начин а също така не мога да открия какви промени си направил би ли бил по точен благодаря |
|
pdtomovЧет, 03.01.08, 18:55 |
return 0; означава, че функцията не връща стойност.Може и без нея, но обикновено се поставя. system("pause"); е системна функция която предотвратява затварянето на конзолният прозорец. Променил съм void main() на int main() и съм поставил горните две функции. Сега забелязах, ако използваш #include<iostream.h> cout<<setw(10)<<r[m][j]; трябва да стане cout<<" "<<r[m][j]; защото функцията setw я няма в iostream.h . |
|
anonymousЧет, 03.01.08, 19:31 |
Той използва и iomanip, където е setw. При мен по този начин излезна търсения резултат. В условието не е казано как да са подредени разстоянията в двумерния масив, затова всички редове от масива ги направих еднакви за по-лесно. Това отдолу "cin>>ATB" съм го сложил, за да видя резултата, понеже не си спомням функцията. Успех. #include<iostream.h>
#include<iomanip.h>
void main()
{
int g[10];
int n;
do{cout<<"kolko sa gradovete ";
cin>>n;}
while(n<=0||n>10);
int j;
for(j=0;j<=n-1;j++)
{
cout<<"kolko e raztoianieto na "<<j<<" miasto ";
cin>>g[j];
}
int r[10][10];
for(int i=0;i<=n-1;i++)
for(int m=0;m<=n-1;m++)
r[i][m]= g[i];
for(int d=0;d<n;d++)
{
cout<<"n";
for(int k=0;k<n;k++)
cout<<setw(10)<<r[d][k];
}
int ATB;
cin>>ATB;
} |
|
|
anonymousЧет, 03.01.08, 19:32 |
for(m=0;m<=n-1;m++) for(j=m;j<=n;j++)if(m==j)r[m][j]=0; else {d=g[j]; r[m][j]=d; r[j][m]=d; } проблемът е в тои оператор извежда ми матрицата но не ми извежда първата стойност а повтаря третата иначе ги подрежда както трябва но не ми извежда първата стойност в матрицата ако да кажем разстоянията са 13 27 54 на мен ми извежда 0 27 54 27 0 54 54 54 0 а трябва да е 0 13 27 13 0 54 27 54 0 ще помоля още веднъж за помощ |
|
pdtomovЧет, 03.01.08, 21:43 |
Има проблем с условието! Матрицата дава разстоянието м/у два града, а тези разстояния не се дефинират точно при въвеждането на входните данни. P.S. Видях, че си пуснал темата в bgdev и Kaldata. Там са ти обяснили някои неща! редактиран от pdtomov на 03.01.08 22:15 |
|
anonymousЧет, 03.01.08, 22:30 |
задачата пак не става не мога да разбера каде бъркаме,пробвах какви ли не варянти сещаш ли се още нещо ??? редактиран от anonymous на 03.01.08 22:44 |
|
pdtomovЧет, 03.01.08, 23:50 |
Трябва да се въведат коректно входните данни. Например: от гр.1 до гр.2 = 13 от 1 до 3 = 27 от 2 до 3 = 54 . които се вкарват така: r[1][2] = 13; r[1][3] = 27; r[2][3] = 54; Както се вижда индексите в двумерния масив r са комбинация без повторение на n елемента от 2 ри клас, т.е. входните данни трябва да се вкарват с комбинация. Затова са се и замотали в bgdev. |
|
anonymousПет, 04.01.08, 00:32 | RE: помощ за c++
Пробвай да заместиш това: ” for(m=0;m<=n-1;m++) for(j=m;j<=n;j++)if(m==j)r[m][j]=0; else {d=g[j]; r[m][j]=d; r[j][m]=d; } „ с това: int r[10][10];
int m,d;
for(m=0;m<=n-1;m++)
for(j=m;j<=n;j++)
if(m==0)
{
if(m==j)r[m][j]=0;
else
{
d=g[j-1];
r[m][j]=d;
r[j][m]=d;
}
}
else
{
if(m==j)r[m][j]=0;
else
{
d=g[j];
r[m][j]=d;
r[j][m]=d;
}
} |
Матрицата с 3 числа се получава, точно както ти си казал в примера си. С четири се получава това: 0 13 27 54
13 0 54 67
27 54 0 67
54 67 67 0 |
|
|