Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Матрицы 
:(
    Опции темы
seven65
  Дата 17.2.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 1.12.2006
Где: Санкт - Петербург

Репутация: нет
Всего: нет



Решение задач с двумерными массивами

Задание
Написать программу на языке С , которая:
- в матрице А(M,N), где M(число строк) и N(число столбцов) не превышают десяти;
- выполняет действия в соответствии с вариантом заданием;
- выводит в файл значения М и N, исходную матрицу и массив с результатами.
По умолчанию все массивы вещественные.

Вариант задания.

Найти наибольший отрицательный элемент каждой строки матрицы А. Результаты записать в одномерный массив S. Для строк матрицы, не содержащих отрицательных элементов, в результирующий массив записать 0.

Код

#include <stdio.h>
#define m 5
#define n 5
#define Min(A,B) ((A) < (B) ? (A) : (B))
#define Max(A,B) ((A) > (B) ? (A) : (B))
int main(void)

{



int s[n],i,j,c,d,z,z1,l,k[n],g[n],f[n],t[n];


int a[m][n]={
{1,3,-4,0,0},
{-14,3,-7,0,-21},
{10,21,9,1,3},
{0,0,-2,0,1},
{-3,0,-6,0,1} };

FILE *out;
out=fopen("res.txt","w");

for(j=0;j<n;j++)
{ z=a[j][0]; z1=a[j][0];
for(i=0;i<m;i++)
{if(a[j][i]<z) {z=a[j][i]; c=i;}
if (a[j][i]>z1) {z1=a[j][i]; d=i;}
}

k[j]=z; g[j]=z1; f[j]=c; t[j]=d;
}

for (j=0;j<n;j++)
{ if (c<d)
for (i=0;i<m;i++)
{ if(i<c) continue; else {
while(i<d)
{ l=0;
l+=a[j][i];}

}
}
s[j]=l;
}




fprintf(out, " Array a \n");
for( i = 0; i < m; i++ )
{
for(j = 0; j < n; j++)
{
fprintf(out, "%4i ", a[i][j]);
}
fprintf(out, " \n");

}
fprintf(out, " Array s \n");
for( i = 0; i < n ; i++ )
{
fprintf(out,"%4i ", s[i]);
printf("%4i ", s[i]);

}

fclose(out);


}



Но есть проблема программа не вносит в файл результат. Проверти пожалуйста правильно ли вообще написана программа


M
Alexeis
Модератор: используйте подсветку http://forum.vingrad.ru/index.php?showtopic=126445


Это сообщение отредактировал(а) Alexeis - 19.2.2007, 11:24
PM MAIL   Вверх
V.A.KeRneL
  Дата 17.2.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: 7
Всего: 14



seven65, пока не будешь юзать подсветку кода (да и вообще следовать правилам данного форума), помогать не буду!.. 
Да и форматирования исходника никакого нет... 
И имена переменных! Если кому-то что-то говорят, то только тебе самому, да и то не долго, через пару дней забудешь!.. 
Вобщем, мрак! Читать невозможно.


Это сообщение отредактировал(а) V.A.KeRneL - 17.2.2007, 15:12


--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
Greeen
Дата 17.2.2007, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: нет
Всего: 18



V.A.KeRneL прав, если хочешь чтобы люди тебе помогали хоть код отформатировал бы.
Но все равно лови  smile 
Код

#include <stdio.h>

int main()
{
    const int M = 5, N = 5;
    const char* filename = "c:\\res.txt";
    int a[M][N] = 
    {
        {  1,   3,  -4, 0,   0},
        {-14,   3,  -7, 0, -21},
        { 10,  21,   9, 1,   3},
        {  0,   0,  -2, 0,   1},
        { -3,   0,  -6, 0,   1}
    };
    int s[M] = {0};
    FILE* file = fopen(filename, "w");
    int i, j;
    
    if(file == NULL)
        return 1;
    
    // Пишем N и M
    fprintf(file, "%d ", M);
    fprintf(file, "%d\n\n", N);

    // Пишем матрицу и находим минимальные отрицательные элементы
    for(i = 0; i < M; i++)
    {
        int min = 0;
        for(j = 0; j < N; j++)
        {
            if(a[i][j] < min)
                min = a[i][j];
            fprintf(file, "%d ", a[i][j]);
        }
        s[i] = min;
        fprintf(file, "\n");
    }
    
    fprintf(file, "\n");

    // Пишем массив
    for(i = 0; i < M; i++)
        fprintf(file, "%d ", s[i]);

    fclose(file);
    return 0;
}



--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
V.A.KeRneL
Дата 17.2.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: 7
Всего: 14



Да, кстати, вот это ещё интересно: 
Цитата(seven65 @  17.2.2007, 14:38 Найти цитируемый пост)

По умолчанию все массивы вещественные.

А сам всех интами своими смутил!..

Вот небольшая переделка проги Greeen'а под это условие: 
Код

#include <stdio.h>
#include <stdlib.h>

int 
main(void) 
{ 
    const int M = 5, N = 5;
    const char* filename = "c:\\res.txt";
    
    double a[M][N] = 
    {
        {  1,   3,  -4, 0,   0},
        {-14,   3,  -7, 0, -21},
        { 10,  21,   9, 1,   3},
        {  0,   0,  -2, 0,   1},
        { -3,   0,  -6, 0,   1}
    };
    double s[M] = {0};
    FILE* file = fopen(filename, "w");
    int i, j;
    
    if(file == NULL)
        exit(1);
    
    // Пишем N и M
    fprintf(file, "%d ", M);
    fprintf(file, "%d\n\n", N);
    
    // Пишем матрицу и находим минимальные отрицательные элементы
    for(i = 0; i < M; i++)
    {
        double min = 0.0;
        for(j = 0; j < N; j++)
        {
            if(a[i][j] < min)
                min = a[i][j];
            fprintf(file, "%.3lf ", a[i][j]);
        }
        s[i] = min;
        fprintf(file, "\n");
    }
    fprintf(file, "\n");
    
    // Пишем массив
    for(i = 0; i < M; i++)
        fprintf(file, "%.3lf ", s[i]);
    
    fclose(file);
    
    return (0);
}



Это сообщение отредактировал(а) V.A.KeRneL - 17.2.2007, 15:25


--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
Earnest
Дата 17.2.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 2
Всего: 183



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
...
PM   Вверх
seven65
Дата 17.2.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 1.12.2006
Где: Санкт - Петербург

Репутация: нет
Всего: нет



Пожалуйста напишите мне результат этой программы, а то она у меня не вносит в файл результат.
Код


#include <stdio.h>
#define m 5
#define n 5
#define Min(A,B) ((A)<(B) ? (A):(B))
#define Max(A,B) ((A)>(B) ? (A):(B))
int main(void)

{

int s[n],i,j,c,d,z,z1,l,k[n],g[n],f[n],t[n];

int a[m][n]=
   {
    {   1,  3,  -4,  0,   0 },
    { -14,  3,  -7,  0, -21 },
    {  10,  21,  9,  1,   3 },
    {   0,  0,-  2,  0,   1 },
    {  -3,  0,-  6,  0,   1 } 
   };

FILE *out;
out=fopen("res.txt","w");

for(j=0;j<n;j++)
 {   
     z=a[j][0]; z1=a[j][0];
     for(i=0;i<m;i++)
      {
    if(a[j][i]<z)   {z=a[j][i]; c=i;}
    if (a[j][i]>z1) {z1=a[j][i]; d=i;}
      }

     k[j]=z; g[j]=z1; f[j]=c; t[j]=d;
 }

for (j=0;j<n;j++)
 {
   if (c<d)
   for (i=0;i<m;i++)
         
       { 
         if(i<c) continue; else

         { 
                       while(i<d)
            { l=0;l+=a[j][i];}
         }
       }
   
   s[j]=l;
 }




fprintf(out, " Array a  \n");
for( i = 0; i < m;  i++ )
    {
      for(j = 0; j < n;  j++)
        
        { fprintf(out, "%4i ", a[i][j]); }
        
        fprintf(out, " \n");

    }

fprintf(out, " Array s  \n");
for( i = 0; i < n ;  i++ )
    
    {
     fprintf(out,"%4i ", s[i]);
     printf("%4i ", s[i]);
    }

fclose(out);


}


PM MAIL   Вверх
Greeen
Дата 17.2.2007, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: нет
Всего: 18



seven65, уважаемый, тебе же написали прогу по заданию. Разбираться в твоем коде лично у меня нет ни малейшего желания (стоило только взглянуть на объявление переменных) 
Цитата(seven65 @  17.2.2007,  16:19 Найти цитируемый пост)
int s[n],i,j,c,d,z,z1,l,k[n],g[n],f[n],t[n];




--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
apook
Дата 17.2.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 10
Всего: 23



Дружище ты излишне наворотил
Смотри
Код

#include <stdio.h>

#define n 5   // ширина
#define m 5   // высота



int main(void)
{

int s[ n ], i, j, c, z;

int A[ m ][ n ]= {
    {   1,  3,  -4,  0,   0 },
    { -14,  3,  -7,  0, -20 },
    {  10,  21,  9,  1,   3 },
    {   0,  0, -2,  0,   1 },
    {  -3,  0, -6,  0,   1 } 
    };



FILE *out;
out=fopen( "res.txt", "w" );

for( j=0, c=0; j <m; j++, c++ )
{   
    z=0; 
    for( i=0; i <n; i++ )
    {
        if( A[j][i] <0 )
            if( A[j][i] >z && z <0 ) z=A[j][i];
            else if( z==0 ) z=A[j][i];
        }
    s[c]=z;
    }



fprintf( out, " --+-- Array s --+-- \n" );
for( i = 0; i <m ;  i++ )
{
    fprintf( out,"%4i ", s[i] );
    printf( "%4i ", s[i] );
    }

fclose(out);

}


Это сообщение отредактировал(а) Alexeis - 19.2.2007, 11:30


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.