Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Ввод и вывод из файла

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C/C++ только в данном разделе

Ответ
 
Опции темы
Старый 09.01.2014, 14:29   #1
 Разведчик
Аватар для polzo
 
polzo вызывает надежду
Регистрация: 12.01.2011
Сообщений: 24
Популярность: -20
Сказал(а) спасибо: 19
Поблагодарили 6 раз(а) в 6 сообщениях
Отправить сообщение для polzo с помощью ICQ Отправить сообщение для polzo с помощью Skype™
 
По умолчанию Ввод и вывод из файла

Есть программа. Нужно сделать так, чтобы размерность матрицы можно было считать из файла и чтобы готовую или исходную матрицу можно было записать в файл! Вот код программы:
Код:
#include "stdafx.h"
#include "stdio.h"
#include "locale.h"
#include "conio.h"
#include "stdlib.h"
#include "time.h"
 
 
void writemenu()
{
     system("cls");
     printf("МЕНЮ:\n");
     printf("1) - Ввод данных\n");
     printf("2) - Решение\n");
     printf("3) - Вывод результата\n"); 
     printf("4) - О программе\n");
     printf("5) - Помощь\n");
     printf("6) - Выход\n");     
}
 
void resoutput(int *solved, char **B, int *N)
{
     int i,j;
     if (*solved){
     
      for (i=0; i<*N; i++)
      {
         for(j=0;j<*N;j++)
           {printf("%d  ", B[i+1][j+1]);}
         printf("\n");  
      }
     printf("Нажмите любую клавишу.\n"); _getch();}
     else
     {printf("Сначала выполните пункт 2\n"); _getch();}
}
void output(int *N, double **A)
{
     int i,j;
     
      for (i=0; i<*N; i++)
      {
         for(j=0;j<*N;j++)
           {printf("%.2lf  ", A[i+1][j+1]);}
         printf("\n");  
      }
}
 
void input(int *N, double **A, int *inputed)
{
     int i,j,k;
     char c; 
     double d;    
    
      system("cls");
      do{
        printf("Введите размер матрицы (1..10):\n");
        scanf_s("%d", N);  fflush(stdin);
      }while((*N>10) || (*N<1));
     
      do{
        printf("N=%d\nСлучайная матрица (1) или ручной ввод (2)?\n", *N);
        scanf_s("%d", &k);  fflush(stdin);
      }while((k!=1) && (k!=2));
       
      if (k==1)
      {
       for(i=0;i<*N;i++)
         for(j=0;j<*N;j++) {A[i+1][j+1] = static_cast<double>( rand() ) * 100 / (RAND_MAX + 1);}

      }
     
      if (k==2)
      {
       printf("Вводите %d чисел по одному:\n", (*N)*(*N));
       for(i=0;i<*N;i++)
         for(j=0;j<*N;j++)
         {
           printf("A[%d][%d]=", i,j);
           d=0.089;
           scanf_s("%lf", &d);  fflush(stdin);
           if (d==0.089) {printf("Введите число\n"); fflush(stdin); j--; continue;}
           
           if ((d>32999) || (d<-32999)) {printf("Числа должны быть из диапазона -32999..32999\n"); j--; continue;}
           
           A[i+1][j+1] = d;
           
         }
      }
      
       printf("Вот она:\n", *N);
       for (i=0; i<(*N); i++)
      {
         for(j=0;j<(*N);j++)
           {printf("%.2lf  ", A[i+1][j+1]);}
         printf("\n");  
      }    
 
     *inputed = true;
     printf("Нажмите любую клавишу"); 
     _getch();
}
 
void solve(int *N, double **A, char **B, int *inputed, int *solved)
{
     int i,j;
     char c;
     do{
      output(N, A);
     
      printf("Принять эти данные? (y/n)\n");
      c=' ';
      do {c=_getch();} while ((c!='y')&&(c!='n'));
     if (c=='y') {*inputed = true;}
     }while(!(*inputed));
     
                  
     for (i=1;i<=*N;i++)
      for(j=1; j<=*N; j++)
      {
           B[i][j] = (A[i-1][j-1]==0)&&(A[i-1][j]==0)&&(A[i-1][j+1]==0)&& //проверка на то, нулевой ли A[i][j] и его соседи
                     (A[i][j-1]==0)&&(A[i][j]==0)&&(A[i][j+1]==0)&&
                     (A[i+1][j-1]==0)&&(A[i+1][j]==0)&&(A[i+1][j+1]==0);
      }
 
     *solved=true;
     
}
 
void about()
{
printf("\nАвтор программы: Климкин Алексей. Группа ИНБс-11.\n\n");
 
printf("*******************************************************************\n");
printf("*******************************************************************\n");
printf("**                                                               **\n");
printf("**               ПРОГРАММА \"ДВУМЕРНЫЙ МАССИВ\"                    **\n");
printf("**                                                               **\n");
printf("*******************************************************************\n");
printf("*******************************************************************\n");
 
 
_getch();
}
 
void help()
{
 
printf("Вариант №411 б \n\n"
"Будем называть соседями элемента с индексами ij некоторой матрицы такие\n элементы этой матрицы, соответсвующие индексы которых отличаются \n от i и j не более чем на 1. Для данной целочисленной матрицы [Aij] \n размером mxn найти матрицу из 0 и 1 [Bij], элемент которой b[ij] \n равен 1, когда все соседи a[ij] и само a[ij] равны нулю.");    
 
_getch();
}
 
 
 
int main()
{
    int i,j;
    double **A=new double*[12];
    char **B=new char*[12];
    int *N=new int;
 
    for(i=0;i<12;i++) {A[i] = new double[12]; B[i] = new char[12];}
    
    for (i=0; i<12; i++)
    {
        for(j=0;j<12;j++) {A[i][j]=0; B[i][j]=0;}
    }
    
    
    int *inputed = new int; //истинна, когда значения элементов матрицы определены    
    int *solved = new int;  //истинна, когда решение получено    
    *inputed=false;
    *solved=false;
    
 
    
    setlocale(LC_ALL, "Russian");
 
    do{
      writemenu();
      scanf_s("%d", &i);
      switch(i)
      {
       case 1: {input(N,A,inputed); i=0; break;}
       case 2: {
                 if (*inputed) {solve(N,A,B,inputed,solved); i=0; break;}
                 else {printf("Сначала введите значения\n"); _getch();  break;}
               }
       case 3: {resoutput(solved, B, N); break;}
       case 4: {about(); i=0; break;}
       case 5: {help(); break;}
       case 6: {delete N; delete []A; delete []B; return 0;}
      }
    }while (true);
 
}
  Ответить с цитированием
Старый 08.05.2014, 15:15   #2
 Разведчик
Аватар для im_beetle
 
im_beetle никому не известный тип
Регистрация: 16.04.2012
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ввод и вывод из файла

[Ссылки могут видеть только зарегистрированные пользователи. ] почитай и все поймеш)
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Услуги] Обмен, ввод, вывод WM, LR, QIWI, WU, ЯД, банки, кэш и др. moneysiti Товары/услуги в Сети 4 06.03.2014 08:55
[Обменяю] Яндекс Деньги,WMR,WMZ - Обмен/Ввод/Вывод wmr-yd Товары/услуги в Сети 0 15.09.2013 13:02
[Помогите!] Ввод вывод массива ~Керя~ Вопросы и ответы, обсуждения 6 20.04.2013 20:13
[Услуги] Вывод/Ввод ЯД, QIWI, Сбер, ВТБ24, Приват24 Andrey-int Товары/услуги в Сети 0 08.11.2012 17:25
[Обменяю] Обмен, ввод, вывод - WM, ЯД, Альфа, LR, PM и др. seoprod Товары/услуги в Сети 2 26.03.2012 23:04

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 20:51.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net