#include <iostream>
#include <ctime>
#include <cmath>
#include <stdio.h>
#include <cstdlib>
using namespace std;
int sr_geo(); //среднее геометрическое
void s_klav(); //ввод с клавиатуры
void mas_vyv(); //вывод на экран
int m_menu(); //меню программы
int iz_faila(); //ввод из фаила
int masv_file(); //вывод в фаил
int **arr;
int Rw = 0; //Размерность матрицы
int sr_geo(int **arr, int n)
{
int sr_geo=0;
float pr=1;
for(int i=0; i<n; i++)
pr*=abs(arr);
sr_geo = (int)exp(log((float)pr)/n);
return sr_geo;
}
int main()
{
char fv;
if(m_menu())
{
cout<<"Resultat: \n";
mas_vyv();
cout<<"Vyvesti v fail? y/n \n";
cin>>fv;
if (fv=='y')
masv_file();
else printf("Exit \n");
}
system("pause");
return 0;
}
void s_klav()
{
srand((unsigned)time(NULL));
int n,i,j;
int sr;
cout<<"Vvedite razmer massiva: ";
cin>>Rw;
arr = new int*[Rw];
cout<<"Massiv: "<<endl;
for(i=0; i<Rw; i++)
{
arr = new int[n];
for(j=0; j < Rw; j++)
{
arr[j]=rand()%9+1;
cout<<arr[j]<<" ";
}
cout<<endl;
}
}
void mas_vyv()
{
int sr = sr_geo(arr,Rw);
cout<<endl;
cout<<"Sformirovannaya matrica:"<<endl;
for(int i=0; i < Rw; i++)
{
for(int j=0; j < Rw; j++)
{
if((i+j)%2==0)
{
arr[j]=sr;
}
cout<<arr[j]<<" ";
}
cout<<endl;
}
delete arr;
}
int m_menu()
{
int cho;
cout<<"1 - vvesti s klaviaturi\n2 - iz faila\n0 - vyhod\n";
cin>>cho;
switch(cho)
{
case 0:
exit('Exit');
break;
case 1:
s_klav();
return 1;
break;
case 2:
if(iz_faila())
return 1;
else return 0;
break;
default: cout<<"vvedite pynkt menu \n";
}
return 1;
}
int iz_faila()
{
FILE *f;
char FileName [80];
printf ("Insert your full address: ");
gets (FileName);
printf ("File name %s\n", FileName);
f=fopen(FileName,"rt");
int nElements = 0, m=0;
char ch;
if(f!=NULL)
{
printf("File was open! \n");
while ( ( ch = getc ( f ) ) != EOF )
{
if((ch != '\n') && (ch != ' ')) nElements++; //Определяем размерность матрицы записанной в файл
printf(" %c ", ch); //Выводим
}
printf("\n Number = %d \n", nElements);
fseek(f,0,SEEK_SET);
/* m = new float * [n];
for (i=0;i<n;i++)
{
m=new float [n];
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
fscanf(f,"%f",&m[j]);
} */
fclose(f);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
return 0;
}
}
int masv_file()
{
// char fname [80];
cout<<"Vvedite polnoe nazvanie fayla: \n";
// gets(fname);
FILE *pFile = fopen("File.txt", "w+");
if(pFile!=NULL)
{
for (int i=0; i < Rw; i++)
for (int j=0; j < Rw; j++)
{
fprintf(pFile,"%d ", arr[j]);
printf(" %d ", arr[j]);
}
fprintf(pFile,"\n");
fclose(pFile);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
return 0;
}
}
матрица, и вывод из\в фаил
не работает так как хотелось бы(, а в чем проблемы я не могу понять((, когда начинает считать матрицу введенную с клавиатуры, просто берет и вылетает, а ошибки как таковой я не нахожу(. пожалуйста помогите!
Ошибку в студию
Код:
#include <iostream>
#include <ctime>
#include <cmath>
#include <stdio.h>
#include <cstdlib>
using namespace std;
int sr_geo(); //среднее геометрическое
void s_klav(); //ввод с клавиатуры
void mas_vyv(); //вывод на экран
int m_menu(); //меню программы
int iz_faila(); //ввод из фаила
int masv_file(); //вывод в фаил
int **arr;
int Rw = 0; //Размерность матрицы
int sr_geo(int **arr, int n)
{
int sr_geo=0;
float pr=1;
for(int i=0; i<n; i++)
pr*=abs(arr);
sr_geo = (int)exp(log((float)pr)/n);
return sr_geo;
}
int main()
{
char fv;
if(m_menu())
{
cout<<"Resultat: \n";
mas_vyv();
cout<<"Vyvesti v fail? y/n \n";
cin>>fv;
if (fv=='y')
masv_file();
else printf("Exit \n");
}
system("pause");
return 0;
}
void s_klav()
{
srand((unsigned)time(NULL));
int n,i,j;
int sr;
cout<<"Vvedite razmer massiva: ";
cin>>Rw;
arr = new int*[Rw];
cout<<"Massiv: "<<endl;
for(i=0; i<Rw; i++)
{
arr = new int[Rw];
for(j=0; j < Rw; j++)
{
arr[j]=rand()%9+1;
cout<<arr[j]<<" ";
}
cout<<endl;
}
}
void mas_vyv()
{
int sr = sr_geo(arr,Rw);
cout<<endl;
cout<<"Sformirovannaya matrica:"<<endl;
for(int i=0; i < Rw; i++)
{
for(int j=0; j < Rw; j++)
{
if((i+j)%2==0)
{
arr[j]=sr;
}
cout<<arr[j]<<" ";
}
cout<<endl;
}
delete arr;
}
int m_menu()
{
int cho;
cout<<"1 - vvesti s klaviaturi\n2 - iz faila\n0 - vyhod\n";
cin>>cho;
switch(cho)
{
case 0:
exit('Exit');
break;
case 1:
s_klav();
return 1;
break;
case 2:
if(iz_faila())
return 1;
else return 0;
break;
default: cout<<"vvedite pynkt menu \n";
}
return 1;
}
int iz_faila()
{
FILE *f;
char FileName [80];
printf ("Insert your full address: ");
gets (FileName);
printf ("File name %s\n", FileName);
f=fopen(FileName,"rt");
int nElements = 0, m=0;
char ch;
if(f!=NULL)
{
printf("File was open! \n");
while ( ( ch = getc ( f ) ) != EOF )
{
if((ch != '\n') && (ch != ' ')) nElements++; //Определяем размерность матрицы записанной в файл
printf(" %c ", ch); //Выводим
}
printf("\n Number = %d \n", nElements);
fseek(f,0,SEEK_SET);
/* m = new float * [n];
for (i=0;i<n;i++)
{
m=new float [n];
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
fscanf(f,"%f",&m[j]);
} */
fclose(f);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
return 0;
}
}
int masv_file()
{
// char fname [80];
cout<<"Vvedite polnoe nazvanie fayla: \n";
// gets(fname);
FILE *pFile = fopen("File.txt", "w+");
if(pFile!=NULL)
{
for (int i=0; i < Rw; i++)
for (int j=0; j < Rw; j++)
{
fprintf(pFile,"%d ", arr[j]);
printf(" %d ", arr[j]);
}
fprintf(pFile,"\n");
fclose(pFile);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
return 0;
}
}
#include <ctime>
#include <cmath>
#include <stdio.h>
#include <cstdlib>
using namespace std;
int sr_geo(); //среднее геометрическое
void s_klav(); //ввод с клавиатуры
void mas_vyv(); //вывод на экран
int m_menu(); //меню программы
int iz_faila(); //ввод из фаила
int masv_file(); //вывод в фаил
int **arr;
int Rw = 0; //Размерность матрицы
int sr_geo(int **arr, int n)
{
int sr_geo=0;
float pr=1;
for(int i=0; i<n; i++)
pr*=abs(arr);
sr_geo = (int)exp(log((float)pr)/n);
return sr_geo;
}
int main()
{
char fv;
if(m_menu())
{
cout<<"Resultat: \n";
mas_vyv();
cout<<"Vyvesti v fail? y/n \n";
cin>>fv;
if (fv=='y')
masv_file();
else printf("Exit \n");
}
system("pause");
return 0;
}
void s_klav()
{
srand((unsigned)time(NULL));
int n,i,j;
int sr;
cout<<"Vvedite razmer massiva: ";
cin>>Rw;
arr = new int*[Rw];
cout<<"Massiv: "<<endl;
for(i=0; i<Rw; i++)
{
arr = new int[Rw];
for(j=0; j < Rw; j++)
{
arr[j]=rand()%9+1;
cout<<arr[j]<<" ";
}
cout<<endl;
}
}
void mas_vyv()
{
int sr = sr_geo(arr,Rw);
cout<<endl;
cout<<"Sformirovannaya matrica:"<<endl;
for(int i=0; i < Rw; i++)
{
for(int j=0; j < Rw; j++)
{
if((i+j)%2==0)
{
arr[j]=sr;
}
cout<<arr[j]<<" ";
}
cout<<endl;
}
delete arr;
}
int m_menu()
{
int cho;
cout<<"1 - vvesti s klaviaturi\n2 - iz faila\n0 - vyhod\n";
cin>>cho;
switch(cho)
{
case 0:
exit('Exit');
break;
case 1:
s_klav();
return 1;
break;
case 2:
if(iz_faila())
return 1;
else return 0;
break;
default: cout<<"vvedite pynkt menu \n";
}
return 1;
}
int iz_faila()
{
FILE *f;
char FileName [80];
printf ("Insert your full address: ");
gets (FileName);
printf ("File name %s\n", FileName);
f=fopen(FileName,"rt");
int nElements = 0, m=0;
char ch;
if(f!=NULL)
{
printf("File was open! \n");
while ( ( ch = getc ( f ) ) != EOF )
{
if((ch != '\n') && (ch != ' ')) nElements++; //Определяем размерность матрицы записанной в файл
printf(" %c ", ch); //Выводим
}
printf("\n Number = %d \n", nElements);
fseek(f,0,SEEK_SET);
/* m = new float * [n];
for (i=0;i<n;i++)
{
m=new float [n];
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
fscanf(f,"%f",&m[j]);
} */
fclose(f);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
return 0;
}
}
int masv_file()
{
// char fname [80];
cout<<"Vvedite polnoe nazvanie fayla: \n";
// gets(fname);
FILE *pFile = fopen("File.txt", "w+");
if(pFile!=NULL)
{
for (int i=0; i < Rw; i++)
for (int j=0; j < Rw; j++)
{
fprintf(pFile,"%d ", arr[j]);
printf(" %d ", arr[j]);
}
fprintf(pFile,"\n");
fclose(pFile);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
return 0;
}
}
нашел ошибку, вот поправил (там надо было не new arr[n] а new arr[Rw] вписать.
а как теперь сделать что бы выводило далее в фаил?, просто теперь когда выскакивает "vyvesti v fayl?" и нужно ввести y или n, что бы подтвердить или отказаться, а оно просто пишет "нажмите любую клавишу для продолжения, и на этом программа завершается.
Код:
int masv_file()
{
// char fname [80];
cout<<"Vvedite polnoe nazvanie fayla: \n";
// gets(fname);
FILE *pFile = fopen("File.txt", "w+");
if(pFile!=NULL)
{
for (int i=0; i < Rw; i++)
for (int j=0; j < Rw; j++)
{
fprintf(pFile,"%d ", arr[j]);
printf(" %d ", arr[j]);
}
fprintf(pFile,"\n");
fclose(pFile);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
return 0;
}
}
{
// char fname [80];
cout<<"Vvedite polnoe nazvanie fayla: \n";
// gets(fname);
FILE *pFile = fopen("File.txt", "w+");
if(pFile!=NULL)
{
for (int i=0; i < Rw; i++)
for (int j=0; j < Rw; j++)
{
fprintf(pFile,"%d ", arr[j]);
printf(" %d ", arr[j]);
}
fprintf(pFile,"\n");
fclose(pFile);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
return 0;
}
}
Внимательно сами поглядите на это кусок и проверьте выходной файл
Код:
int main()
{
char fv;
[COLOR="Red"] if(m_menu())[/COLOR]//возможно это условие не выполняется
{
cout<<"Resultat: \n";
mas_vyv();
cout<<"Vyvesti v fail? y/n \n";
cin>>fv;
if (fv=='y')
masv_file();
else printf("Exit \n");
}
system("pause");
return 0;
}
{
char fv;
[COLOR="Red"] if(m_menu())[/COLOR]//возможно это условие не выполняется
{
cout<<"Resultat: \n";
mas_vyv();
cout<<"Vyvesti v fail? y/n \n";
cin>>fv;
if (fv=='y')
masv_file();
else printf("Exit \n");
}
system("pause");
return 0;
}
а потом это кусок
Собственно в конце выводит то что должно
ЗЫ: Изъясняйтесь точнее вас очень сложно понять, чего вы хотите :)
http://i021.radikal.ru/1012/5e/ef496d3aa1df.jpg
вот собственно в чем проблема, когда считает матрицу с клавиатуры, пишет мол "вывести в фаил? нажмите y/n", и сразу же "для продолжения нажмите любую клавишу". скажите где я прощелкал?, не могу найти ошибку(, и даже не могу проверить дальнейшую работоспособность программы(.
http://s015.radikal.ru/i330/1012/fc/015799135a87.jpg
а вот это выскакивает, когда выбираю пункт меню "2 - iz faila". Как исправить?((
вот собственно в чем проблема, когда считает матрицу с клавиатуры, пишет мол "вывести в фаил? нажмите y/n", и сразу же "для продолжения нажмите любую клавишу". скажите где я прощелкал?, не могу найти ошибку(, и даже не могу проверить дальнейшую работоспособность программы(.
http://s015.radikal.ru/i330/1012/fc/015799135a87.jpg
а вот это выскакивает, когда выбираю пункт меню "2 - iz faila". Как исправить?((
Возьмите учебник, почитайте. Даже не надейтесь, что кто-то сделает за вас вашу работу. Dixi.
cronya, настоятельно не рекомендую делать за него... (зловещий блеск в глазах, рука тянется к минусу...) Помогать советом можно и нужно, но не готовым кодом целиком, ибо ОП не достоин. Имхо.
Код:
#include <iostream>
#include <ctime>
#include <cmath>
#include <stdio.h>
#include <cstdlib>
using namespace std;
int sr_geo(); //ñðåäíåå ãåîìåòðè÷åñêîå
void s_klav(); //ââîä ñ êëàâèàòóðû
void mas_vyv(); //âûâîä íà ýêðàí
int m_menu(); //ìåíþ ïðîãðàììû
int iz_faila(); //ââîä èç ôàèëà
int masv_file(); //âûâîä â ôàèë
int **arr;
int Rw = 0; //Ðàçìåðíîñòü ìàòðèöû
int sr_geo(int **arr, int n)
{
int sr_geo=0;
float pr=1;
for(int i=0; i<n; i++)
pr*=abs(arr);
sr_geo = (int)exp(log((float)pr)/n);
return sr_geo;
}
int main()
{
char fv;
if(m_menu())
{
cout<<"Resultat: \n";
mas_vyv();
cout<<"Vyvesti v fail? y/n \n";
do
{
cin>>fv;
}while(fv!='y' && fv!='n');
if (fv=='y')
masv_file();
else printf("Exit \n");
}
system("pause");
return 0;
}
void s_klav()
{
srand((unsigned)time(NULL));
int n,i,j;
int sr;
cout<<"Vvedite razmer massiva: ";
cin>>Rw;
arr = new int*[Rw];
cout<<"Massiv: "<<endl;
for(i=0; i<Rw; i++)
{
arr = new int[Rw];
for(j=0; j < Rw; j++)
{
arr[j]=rand()%9+1;
cout<<arr[j]<<" ";
}
cout<<endl;
}
}
void mas_vyv()
{
int sr = sr_geo(arr,Rw);
cout<<endl;
cout<<"Sformirovannaya matrica:"<<endl;
for(int i=0; i < Rw; i++)
{
for(int j=0; j < Rw; j++)
{
if((i+j)%2==0)
{
arr[j]=sr;
}
cout<<arr[j]<<" ";
}
cout<<endl;
}
delete arr;
}
int m_menu()
{
int cho;
cout<<"1 - vvesti s klaviaturi\n2 - iz faila\n0 - vyhod\n";
cin>>cho;
switch(cho)
{
case 0:
exit('Exit');
break;
case 1:
s_klav();
return 1;
break;
case 2:
return iz_faila();
break;
default: cout<<"vvedite pynkt menu \n";
}
return 1;
}
int iz_faila()
{
FILE *f;
char FileName [80];
printf ("Insert your full address: ");
gets (FileName);
printf ("File name %s\n", FileName);
f=fopen(FileName,"rt");
int nElements = 0, m=0;
char ch;
if(f!=NULL)
{
printf("File was open! \n");
while ( ( ch = getc ( f ) ) != EOF )
{
if((ch != '\n') && (ch != ' ')) nElements++; //Îïðåäåëÿåì ðàçìåðíîñòü ìàòðèöû çàïèñàííîé â ôàéë
printf(" %c ", ch); //Âûâîäèì
}
printf("\n Number = %d \n", nElements);
fseek(f,0,SEEK_SET);
/* m = new float * [n];
for (i=0;i<n;i++)
{
m=new float [n];
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
fscanf(f,"%f",&m[j]);
} */
fclose(f);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
return 0;
}
}
int masv_file()
{
// char fname [80];
// cout<<"Vvedite polnoe nazvanie fayla: \n";
// gets(fname);
FILE *pFile = fopen("File.txt", "w+");
if(pFile != NULL)
{
for (int i=0; i < Rw; i++)
{
for (int j=0; j < Rw; j++)
{
fprintf(pFile,"%d ", arr[j]);
printf(" %d ", arr[j]);
}
fprintf(pFile,"\n");
puts("");
}
fclose(pFile);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
exit(1);
}
return 1;
}
#include <ctime>
#include <cmath>
#include <stdio.h>
#include <cstdlib>
using namespace std;
int sr_geo(); //ñðåäíåå ãåîìåòðè÷åñêîå
void s_klav(); //ââîä ñ êëàâèàòóðû
void mas_vyv(); //âûâîä íà ýêðàí
int m_menu(); //ìåíþ ïðîãðàììû
int iz_faila(); //ââîä èç ôàèëà
int masv_file(); //âûâîä â ôàèë
int **arr;
int Rw = 0; //Ðàçìåðíîñòü ìàòðèöû
int sr_geo(int **arr, int n)
{
int sr_geo=0;
float pr=1;
for(int i=0; i<n; i++)
pr*=abs(arr);
sr_geo = (int)exp(log((float)pr)/n);
return sr_geo;
}
int main()
{
char fv;
if(m_menu())
{
cout<<"Resultat: \n";
mas_vyv();
cout<<"Vyvesti v fail? y/n \n";
do
{
cin>>fv;
}while(fv!='y' && fv!='n');
if (fv=='y')
masv_file();
else printf("Exit \n");
}
system("pause");
return 0;
}
void s_klav()
{
srand((unsigned)time(NULL));
int n,i,j;
int sr;
cout<<"Vvedite razmer massiva: ";
cin>>Rw;
arr = new int*[Rw];
cout<<"Massiv: "<<endl;
for(i=0; i<Rw; i++)
{
arr = new int[Rw];
for(j=0; j < Rw; j++)
{
arr[j]=rand()%9+1;
cout<<arr[j]<<" ";
}
cout<<endl;
}
}
void mas_vyv()
{
int sr = sr_geo(arr,Rw);
cout<<endl;
cout<<"Sformirovannaya matrica:"<<endl;
for(int i=0; i < Rw; i++)
{
for(int j=0; j < Rw; j++)
{
if((i+j)%2==0)
{
arr[j]=sr;
}
cout<<arr[j]<<" ";
}
cout<<endl;
}
delete arr;
}
int m_menu()
{
int cho;
cout<<"1 - vvesti s klaviaturi\n2 - iz faila\n0 - vyhod\n";
cin>>cho;
switch(cho)
{
case 0:
exit('Exit');
break;
case 1:
s_klav();
return 1;
break;
case 2:
return iz_faila();
break;
default: cout<<"vvedite pynkt menu \n";
}
return 1;
}
int iz_faila()
{
FILE *f;
char FileName [80];
printf ("Insert your full address: ");
gets (FileName);
printf ("File name %s\n", FileName);
f=fopen(FileName,"rt");
int nElements = 0, m=0;
char ch;
if(f!=NULL)
{
printf("File was open! \n");
while ( ( ch = getc ( f ) ) != EOF )
{
if((ch != '\n') && (ch != ' ')) nElements++; //Îïðåäåëÿåì ðàçìåðíîñòü ìàòðèöû çàïèñàííîé â ôàéë
printf(" %c ", ch); //Âûâîäèì
}
printf("\n Number = %d \n", nElements);
fseek(f,0,SEEK_SET);
/* m = new float * [n];
for (i=0;i<n;i++)
{
m=new float [n];
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
fscanf(f,"%f",&m[j]);
} */
fclose(f);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
return 0;
}
}
int masv_file()
{
// char fname [80];
// cout<<"Vvedite polnoe nazvanie fayla: \n";
// gets(fname);
FILE *pFile = fopen("File.txt", "w+");
if(pFile != NULL)
{
for (int i=0; i < Rw; i++)
{
for (int j=0; j < Rw; j++)
{
fprintf(pFile,"%d ", arr[j]);
printf(" %d ", arr[j]);
}
fprintf(pFile,"\n");
puts("");
}
fclose(pFile);
return 1;
}
else
{
cout<<"Oshibka otkritiya!\n";
exit(1);
}
return 1;
}
спасибо немного подправил, теперь первая ошибка исчезла, но появилась другая, когда нажимаешь "y" то есть как бы соглашаешься вывести матрицу в фаил, то пишет "обнаружена ошибка, приложение будет остановлено, отправлить ли отчет на microsoft ....". а в проге пишет "press any key to continue".
а вторая ошибка осталась:
http://s015.radikal.ru/i330/1012/fc/015799135a87.jpg
а вот это выскакивает, когда выбираю пункт меню "2 - iz faila". Как исправить?((
Цитата: koodeer
cronya, настоятельно не рекомендую делать за него... (зловещий блеск в глазах, рука тянется к минусу...) Помогать советом можно и нужно, но не готовым кодом целиком, ибо ОП не достоин. Имхо.
Да вроде я ему в этом посте код вообще не писал свой, тока на ошибку указал). Тем более на сколько заметил человеку совершено помощь не нужна он сам себе велосипед придумывает, хотя ему уже не раз на ошибки указывали.