1. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    Программа возводит в степень сумму двух матриц,одна из которых единичная(на главной диагонали стоят единицы)

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <locale.h>   
    #include<stdlib.h>
    int main () 
    {
        setlocale(LC_ALL,"Rus");//русский язык
        int i, j, n;//переменные
            char nameInput[30];//имя файла(длина)
            char nameOutput[30];//имя файла(длина)
            FILE *f1,*f2;//используем 2 файла
            printf("Введите имя файла: ");
            scanf("%s",&nameInput);
            f1=fopen(nameInput,"w");//открываем файл1
        printf("Введите порядок матриц:\n");
        printf("n = "); 
        scanf("%u", &n);
        int E[n][n];//единичная матрица
        int A[n][n]; //квадратичная матрица
        int resultat[n][n];//сумма 2ух матриц в квадрате
             for (i=0; i<n; i++)//цикл заполнения единичной матрицы
                    for (j=0; j<n; j++) 
                    {
                            if (i==j)
                            E[i][j]=1;
                            else 
                            E[i][j]=0;
                    }
              for (i = 0; i < n ; i++)//цикл ввода массива
              {
                 for (j = 0; j < n ; j++)
                       { 
                        printf("A[%d][%d] = ", i, j); //На экран выводится 'X[i][j] = '
                        scanf("%d", &A[i][j]);//вводим с клавиатуры целые числа
                       }
              }
        printf("\nВведите имя файла с результатом: ");
        scanf("%s",&nameOutput);
        f2=fopen(nameOutput,"w");//открываем файл2
                  for (i=0; i<n; i++) //цикл вычесления результативной матрицы 
                    {
                    for (j=0; j<n; j++) 
                        {
                            A[i][j]*=A[i][j];
                            resultat[i][j]=(E[i][j]+A[i][j]);//получение резудьтативной матрицы
                            fprintf(f2,"%d ",resultat[i][j]);//сохранение данных результата
                        }
                    fprintf(f2,"\n");
                    }
        printf("\n"); //Переход на следующую строку
        printf("\tОперация выполнена(результат)\n");
              for (i = 0; i < n ; i++) //цикл вывода результата на экран монитора
              { 
        printf("\n\n"); //Переход на следующую строку
                 for (j = 0; j < n ; j++)
                        {
                        printf(" %i", resultat[i][j]); //На экран выводится результат нашего ввода
                        }
              }
    fclose(f1);//закрытие файла1
    fclose(f2);//закрытие файла2
    getch(); //Экран не закрывается, пока не нажата любая клавиша
    }
    
    Не могу понять следующее:
    1)нужно чтобы массив заполнялся с клавиатуры
    2)и в то же время реализовать считывание из файла f1 и запись в файл f2(запись сделал)

    Как это сделать?

    сейчас в программе массив заполняется с клавиатуры выводит результат на экран и в файл f2 имя которого введешь с клавиатуры
     
    #1 A.N.O.N.I.M, 2 Jun 2011
    Last edited: 2 Jun 2011
  2. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    почитай про scanf, fopen ну и т.д. примеров уйма)
     
  3. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    не я знаю как работать с файлами,просто надо и вручную вводить и из файла,выходит надо какое то меню делать "Нажмите 1 ручной ввод нажмите 2 из файла" или как иначе
     
  4. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    578
    Likes Received:
    203
    Reputations:
    13
    В лабораторных обычно с помощью таких меню всё и делают.
     
  5. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    как сделать чтобы программа сама определяла размерность матрицы из файла(используется динамический массив)?????
     
  6. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    578
    Likes Received:
    203
    Reputations:
    13
    Посчитать количество строк и столбцов.
     
  7. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    как это сделать какие операторы нужны?
     
  8. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Вот этот: http://tinyurl.com/5tlsnoc
    Немного вот этого: http://tinyurl.com/5w76jct
    И обязательно вот этот: http://tinyurl.com/68fmlas

    Уж извини, но для того, чтобы писать программы нужно хотя бы примерно представлять себе алгоритм работы будущей программы, а ты кажется и слова такого не знаешь...
    Не ленись, почитай литературу, набросай на бумажечке блок-схемку или алгоритм, потихоньку реализуй его.
    Code:
    например твою задачу можно разбить изначально на 3:
      определение размерности
      чтение из файла массива
      запись массива  в файл
    Определение размерности можно разбить на 2 части
    (тут еще важно в каком виде ты массив сохраняешь в текстовом или еще в каком?)
      определить количество столбцов
      (если в текстовом, то считай количество разделителей между числами)
      определить количество строк
      (если в текстовом то просто считай строки в файле)
    Потом устанавливаешь размерность и читаешь из файла.
    По ходу дела задавай вопросы, никто же не против.
    Но писать программу за тебя никто не будет!
     
    #8 xophet, 3 Jun 2011
    Last edited: 3 Jun 2011
  9. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    многие не знают как в динамическом массиве определять размерность,ты и подавно
     
  10. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    мы перешли на личные оскорбления?
    Но мы ведем разговор не обо мне, а о тебе, я ведь пытался тебе помочь в другой теме, но что я могу сделать, если ты даже не знаешь синтаксиса языка и его операторов? Ты хочешь, чтобы тебе под твою задачу дали операторы, потом объяснили как с ними работать, потом нашли ошибки в твоей или написали за тебя программу.
    P.S. поверь, знаю.
    не в С, потому как давно с ним не работал, но ты должен понимать, что [​IMG] знает все. Знает ответ на любой вопрос, а тем более такие примитивные.
    P.P.S. Внимательно перечитай мое предыдущее сообщение, пока ты тут пытался меня обидеть :D :D :D я тебе там алгоритм накидал, может поможет...
     
    #10 xophet, 3 Jun 2011
    Last edited: 3 Jun 2011
  11. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Лично я вообще не вижу связи между словами "динамический массив" и "определить размерность". Динамический массив - это всего лишь память, выделенная с помощью malloc в случае Си.
     
  12. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    я не кого не оскорблял(или не хотел если получилось),но лучше ничего не писать чем в такой форме.

    мне бы просто имя оператора,дальше я бы сам нашел,в гугле полно проблем как у меня и нигде не дано четкого ответа
     
  13. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Ты скажи, какой именно оператор тебе нужен? Что ты хочешь сделать? "Определить размерность динамического массива" - это бред в контексте программирования на Си.
     
  14. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Да оператор то тут ни при чем, вот в чем вопрос.
    а) Тут нужно понимать последовательность действий
    б) Формат, в котором хранится массив в файле

    вот для случая а)
    ты думаешь мне нужно:
    а.1) считать строку из файла
    а.2) посчитать количество значений в нем
    а.3) установить размерность массива (не знаю как в С, в Delphi это нужно делать)

    Допустим а.1) и а.3) ты знаешь как сделать, но не знаешь как а.2)
    ты думаешь
    а.2.1) (допустим) у меня значения разделены пробелом и перед первым значением и после последнего пробелов нет, значит чтобы посчитать количество значений мне нужно узнать количество пробелов в строке и добавить 2
    делаешь запрос в гугл:
    "посчитать количество символов в строке" и ищешь при помощи каких операторов это делается и узнаешь количество столбцов.

    Т.е. научись сложную задачу делить на набор простых!
     
  15. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Сколько много текста. А что мешает для решения задачи считывания просто записывать в файл первые два DWORD'а - размеры матрицы, а дальше все остальные DWORD'ы - непосредственно данные матрицы. Читать-писать сразу в двоичном виде и не трахаться с преобразованиями и просчетами.
     
    #15 GRRRL Power, 3 Jun 2011
    Last edited: 3 Jun 2011
    1 person likes this.
  16. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    я привел пример для текстового файла