Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

матрица, и вывод из\в фаил

35K
09 декабря 2010 года
life4fun
64 / / 15.11.2010
не работает так как хотелось бы(, а в чем проблемы я не могу понять((, когда начинает считать матрицу введенную с клавиатуры, просто берет и вылетает, а ошибки как таковой я не нахожу(. пожалуйста помогите!

Код:
#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;
    }
}
392
10 декабря 2010 года
cronya
421 / / 03.01.2009
Ошибку в студию
35K
12 декабря 2010 года
life4fun
64 / / 15.11.2010
Код:
#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;
    }
}


нашел ошибку, вот поправил (там надо было не new arr[n] а new arr[Rw] вписать.
а как теперь сделать что бы выводило далее в фаил?, просто теперь когда выскакивает "vyvesti v fayl?" и нужно ввести y или n, что бы подтвердить или отказаться, а оно просто пишет "нажмите любую клавишу для продолжения, и на этом программа завершается.
392
13 декабря 2010 года
cronya
421 / / 03.01.2009
Код:
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;
    }
}

Внимательно сами поглядите на это кусок и проверьте выходной файл
Код:
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;
}

а потом это кусок
Собственно в конце выводит то что должно
ЗЫ: Изъясняйтесь точнее вас очень сложно понять, чего вы хотите :)
35K
13 декабря 2010 года
life4fun
64 / / 15.11.2010
http://i021.radikal.ru/1012/5e/ef496d3aa1df.jpg

вот собственно в чем проблема, когда считает матрицу с клавиатуры, пишет мол "вывести в фаил? нажмите y/n", и сразу же "для продолжения нажмите любую клавишу". скажите где я прощелкал?, не могу найти ошибку(, и даже не могу проверить дальнейшую работоспособность программы(.

http://s015.radikal.ru/i330/1012/fc/015799135a87.jpg

а вот это выскакивает, когда выбираю пункт меню "2 - iz faila". Как исправить?((
297
14 декабря 2010 года
koodeer
1.2K / / 02.05.2009
life4fun, включите наконец голову! Вам уже дважды показывали, как правильно освобождать память в программе. Вы даже тупо скопировать код не способны.
Возьмите учебник, почитайте. Даже не надейтесь, что кто-то сделает за вас вашу работу. Dixi.


cronya, настоятельно не рекомендую делать за него... (зловещий блеск в глазах, рука тянется к минусу...) Помогать советом можно и нужно, но не готовым кодом целиком, ибо ОП не достоин. Имхо.
35K
14 декабря 2010 года
life4fun
64 / / 15.11.2010
Код:
#include <iostream>
#include <ctime>
#include <cmath>
#include <stdio.h>
#include <cstdlib>
 
using namespace std;
int sr_geo(); //&#241;&#240;&#229;&#228;&#237;&#229;&#229; &#227;&#229;&#238;&#236;&#229;&#242;&#240;&#232;&#247;&#229;&#241;&#234;&#238;&#229;
void s_klav(); //&#226;&#226;&#238;&#228; &#241; &#234;&#235;&#224;&#226;&#232;&#224;&#242;&#243;&#240;&#251;
void mas_vyv(); //&#226;&#251;&#226;&#238;&#228; &#237;&#224; &#253;&#234;&#240;&#224;&#237;
int m_menu(); //&#236;&#229;&#237;&#254; &#239;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#251;
int iz_faila(); //&#226;&#226;&#238;&#228; &#232;&#231; &#244;&#224;&#232;&#235;&#224;
int masv_file(); //&#226;&#251;&#226;&#238;&#228; &#226; &#244;&#224;&#232;&#235;
int **arr;
int Rw = 0;        //&#208;&#224;&#231;&#236;&#229;&#240;&#237;&#238;&#241;&#242;&#252; &#236;&#224;&#242;&#240;&#232;&#246;&#251;
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++;    //&#206;&#239;&#240;&#229;&#228;&#229;&#235;&#255;&#229;&#236; &#240;&#224;&#231;&#236;&#229;&#240;&#237;&#238;&#241;&#242;&#252; &#236;&#224;&#242;&#240;&#232;&#246;&#251; &#231;&#224;&#239;&#232;&#241;&#224;&#237;&#237;&#238;&#233; &#226; &#244;&#224;&#233;&#235;
                printf(" %c ", ch);            //&#194;&#251;&#226;&#238;&#228;&#232;&#236;
        }
       
        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". Как исправить?((
392
14 декабря 2010 года
cronya
421 / / 03.01.2009
Цитата: koodeer

cronya, настоятельно не рекомендую делать за него... (зловещий блеск в глазах, рука тянется к минусу...) Помогать советом можно и нужно, но не готовым кодом целиком, ибо ОП не достоин. Имхо.


Да вроде я ему в этом посте код вообще не писал свой, тока на ошибку указал). Тем более на сколько заметил человеку совершено помощь не нужна он сам себе велосипед придумывает, хотя ему уже не раз на ошибки указывали.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог