Консультация № 138480
29.05.2008, 13:42
0.00 руб.
0 3 3
Здравствуйте! Решал задачу на каком то стареньком компиляторе и программа нормально работала, но только перекинул код на MS Visual Studio 2005 - возникають ошибки. Так как VS у меня немецкий, то я ничего не понял, но думаю, что проблема именно в именах заголовочных файлов. Посмотрите пожалуйста. Заранее спасибо!

Приложение:
#include <iostream.h>#include <conio.h>#include <stdlib.h>int main(){int* mas;int** matr;extern void zapov(int*,int),vivod(int*,int),kills(int*,int),zapov2(int**,int,int),vivod2(int**,int,int);extern int* form(int);extern int** form_matr(int,int);extern int** radd(int**,int,int);int i,n,m,k;clrscr();clrscr();cout <<"1. Form odnovimir masiv";cout <<"2. Vivedennya odnovimir masivy";cout <<"3. Znischennya v odnovimir masivi";cout <<"4. Form dvovimirn masiv";cout <<"5. Vivedennya dvovimirn masivy";cout <<"6. Dodav do dvovimirn masivy";cout <<"7. Vichid";do{cin >>k;switch (k){case 1:cout <<" n=";cin >>n;mas=form(n);zapov(mas,n);break;case 2:vivod(mas,n);break;case 3:kills(mas,n);break;case 4:;cout << " n=";cin >>n;cout <<" m=";cin >>m;matr=form_matr(n,m);zapov2(matr,n,m);break;case 5:vivod2(matr,n,m);break;case 6:cout <<" m=";cin >>k;m=m+k;matr=radd(matr,n,m);break;}}while (k!=7);}int* form(int n){int* a=new int[n];return a;}void zapov(int* a,int n){int i;for (i=0;i<n;i++){*(a+i)=rand()%100-50;}}void vivod(int*a,int n){int i;for (i=0;i<n;i++){cout <<*(a+i) <<" ";}cout <<"";}void kills(int*a,int n){int i;for (i=0;i<n;i++){if (*(a+i)%2!=0){*(a+i)=0;}}}int** form_matr(int n,int m){int i;int** b=new int*[n];for (i=0;i<n;i++) b[i]=new int[m];return b;}void zapov2(int** b,int n,int m){int i,j;for (i=0;i<n;i++){for (j=0;j<m;j++) b[i][j]=rand()%100-50;}}void vivod2(int** b,int n,int m){int i,j;for (i=0;i<m;i++){cout <<"";for (j=0;j<n;j++) {cout <<b[j][i] <<" ";}}cout <<"";}int** radd(int** a,int n,int m){int i,j,k;int** b=new int*[n];for (i=0;i<n;i++) b[i]=new int[m];for (i=0;i<n;i++){for (j=0;j<m;j++){if (j<k) b[i][j]=rand()%100-50;else b[i][j]=a[i][j-k];}}return b;}

Обсуждение

Неизвестный
29.05.2008, 13:50
общий
это ответ
Здравствуйте, Sashka!

С именами заголовочных файлов проблем быть не должно.
Но есть различия в языке, например переменная, объявленная внутри цикла:
for(int i=0....
после цикла в VS2005 будет не видна, в отличие от VC6

Не совсем по теме:
- MS VC2005 Express бесплатна и позволяет делать Win32API проекты
- www.translate.ru умеет переводить с немецкого
Неизвестный
29.05.2008, 14:58
общий
это ответ
Здравствуйте, Sashka!
Вы правы в вашем случае имеет место ошибка в заголовочном файле.Несколько лет после появления языка С++ он использовал тот же стиль работы с заголовками что и язык С,в нём применялись заголовочные файлы,стандарт С++ также допускает использование заголовчных файлов в стиле языка С, однако стандарт языка С++ предусматривает новый вид заголовка,который используется в стандартной библиотеке.Эти заголовки не являются файлами,они просто представляют собой некие стандартные идентификаторы,которые могут соответствовать файлам, а могут не соответствовать им, поэтому расширение .h в них не ставится.Например <iostream>,<string>.Также при использовании заголовков нового стиля его содержимое погружается в пространство имён std.Пространство имён-это просто область видимости.В данном случае using namespace std, т.е. пространство имён включается в глобальное пространство имён.
Новый стиль заголовков используется в VS начиная с версии 2003.
В приложении слегка скоректированная программа скомпилированная под VS 2003

Приложение:
#include <iostream>#include <conio.h>#include <stdlib.h>using namespace std;void main(){int* mas;int** matr;extern void zapov(int*,int),vivod(int*,int),kills(int*,int),zapov2(int**,int,int),vivod2(int**,int,int);extern int* form(int);extern int** form_matr(int,int);extern int** radd(int**,int,int,int);int i,n,m,k;do{//system("CLS");system("CLS");cout <<"\n1. Form odnovimir masiv\n";cout <<"2. Vivedennya odnovimir masivy\n";cout <<"3. Znischennya v odnovimir masivi\n";cout <<"4. Form dvovimirn masiv\n";cout <<"5. Vivedennya dvovimirn masivy\n";cout <<"6. Dodav do dvovimirn masivy\n";cout <<"7. Vichid\n";//do{cin >>k;switch (k){case 1:cout <<"\n n=";cin >>n;mas=form(n);zapov(mas,n);break;case 2:vivod(mas,n);getch();break;case 3:kills(mas,n);break;case 4:;cout << "\n n=";cin >>n;cout <<" m=";cin >>m;matr=form_matr(n,m);zapov2(matr,n,m);break;case 5:vivod2(matr,n,m);getch();break;case 6:cout <<"\n m=";cin >>k;m=m+k;matr=radd(matr,n,m,k);break;}}while (k!=7);}int* form(int n){int* a=new int[n];return a;}void zapov(int* a,int n){int i;for (i=0;i<n;i++){*(a+i)=rand()%100-50;}}void vivod(int*a,int n){int i;for (i=0;i<n;i++){cout <<*(a+i) <<"\t";}cout <<"\n";}void kills(int*a,int n){int i;for (i=0;i<n;i++){if (*(a+i)%2!=0){*(a+i)=0;}}}int** form_matr(int n,int m){int i;int** b=new int*[n];for (i=0;i<n;i++) b[i]=new int[m];return b;}void zapov2(int** b,int n,int m){int i,j;for (i=0;i<n;i++){for (j=0;j<m;j++) b[i][j]=rand()%100-50;}}void vivod2(int** b,int n,int m){int i,j;for (i=0;i<m;i++){cout <<"\n";for (j=0;j<n;j++) {cout <<b[j][i] <<"\t";}}cout <<"\n";}int** radd(int** a,int n,int m,int k){int i,j;int** b=new int*[n];for (i=0;i<n;i++) b[i]=new int[m];for (i=0;i<n;i++){for (j=0;j<m;j++){if (j<k) b[i][j]=rand()%100-50;else b[i][j]=a[i][j-k];}}return b;}
Неизвестный
31.05.2008, 01:12
общий
это ответ
Здравствуйте, Sashka!

include<iostream> //без .h

/////////////////////////////////////////

nt** radd(int** a,int n,int m){

int i,j,k; // здесь следует проініціалізіровать переменную k либо передать ее
// в качестве параметра

int** b=new int*[n];

for (i=0;i<n;i++) b[i]=new int[m];
for (i=0;i<n;i++){
for (j=0;j<m;j++){
if (j<k) b[i][j]=rand()%100-50;else b[i][j]=a[i][j-k];}
}
return b;
Форма ответа