Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 23:56   #1
StudeHt
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 78
По умолчанию С++. Определить номера строк матрицы в которых знаки элементов чередуются

Доброго времени суток Господа программисты. Очень прошу Вашей помощи с решением следующей задачи:Определить номера строк матрицы, в которых знаки элементов чередуются. Результат вывести на экран и в файл.Вот мой код(подозреваю что написан полный бред), но тем не менее выложу:
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void main()
{
        int i,j,m,n;
        float *Mas;
        FILE *F;
        char FileName[20];
        clrscr();
        printf("Введите количество строк матрицы ");
        scanf("%d",&m);
        printf("Введите количество столбцов матрицы ");
        scanf("%d",&n);
        while (m<=1)
          {
            printf("Ошибка!!! Неверно введено количество строк матрицы");
            printf("\nПовторите ввод...");
            scanf("%d",m);
          }
        while (n<=1)
          {
            printf("Ошибка!!! Неверно введено количество столбцов матрицы");
            printf("\nПовторите ввод...");
            scanf("%d",n);
          }
        Mas=(float)*malloc(sizeof (float)* m);
        for (i=0; i<n; i++)
          Mas[i]=(float)*malloc(sizeof(float)*n);
        for (i=0; i<m; i++)
          for (j=0; i<n; j++)
            {
              printf("\nВведите элемент матрицы [%d,%d]:",i,j);
              scanf("%d",&Mas[i][j]);
            }
        clrscr();
        printf("\nИсходная матрица имеет вид:");
        for (i=0; i<m; i++);
          {
            for (j=0; j<n; j++)
              printf("%3d", Mas[i][j]);
              printf("\n");
          }
        for (i=1; i<m; i++)
          {
            for (j=1; j<n; j++)
              {
                if (Mas[i-1]*Mas[i]>=0)
                  {
                    break;
                  }
                if (j==n-1)
                  {
                    printf("\nВ %d строке матрицы, знаки элементов чередуются:",i);
                  }
               }
          }
}
Но я не знаю, что делать дальше, да и компилятор кричит на выделение памяти... Помогите пожалуйста... Буду очень благодарен!

Последний раз редактировалось StudeHt; 03.06.2009 в 23:59.
StudeHt вне форума Ответить с цитированием
Старый 04.06.2009, 04:17   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Память не так выделяете. +синтаксические ошибки.
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
        int i,j,m,n;
        float **Mas;
        FILE *F;
        char FileName[20];

        printf("Введите количество строк матрицы ");
        scanf("%d",&m);
        printf("Введите количество столбцов матрицы ");
        scanf("%d",&n);
        while (m<=1)
          {
            printf("Ошибка!!! Неверно введено количество строк матрицы");
            printf("\nПовторите ввод...");
            scanf("%d",m);
          }
        while (n<=1)
          {
            printf("Ошибка!!! Неверно введено количество столбцов матрицы");
            printf("\nПовторите ввод...");
            scanf("%d",n);
          }
        Mas=(float**)malloc(m*sizeof(float*));
        for (i=0; i<n; i++)
          Mas[i]=(float*)malloc(n*sizeof(float));
       
        for (i=0; i<m; i++)
          for (j=0; j<n; j++)
            {
              printf("\nВведите элемент матрицы [%d,%d]:",i,j);
              scanf("%f",&Mas[i][j]);
            }
            
        printf("\nИсходная матрица имеет вид:");
        for(i=0; i<m; i++)
          {
            for(j=0; j<n;j++)
            printf("%3.0f ", Mas[i][j]);
           printf("\n");
          }
          
        for (i=0; i<m; i++)
          {
            for (j=1; j<n; j++)
              {
                if (Mas[i][j-1]*Mas[i][j]>=0)
                  {
                    break;
                  }
                if (j==n-1)
                  {
                    printf("\nВ %d строке матрицы, знаки элементов чередуются:",i);
                  }
               }
          }
          for(i=0; i<m; i++)
           free(Mas[i]);
          free(Mas); 
          getch();
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.06.2009, 00:37   #3
StudeHt
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 78
По умолчанию

Спасибо Sazary. Помогите пожалуйста еще вывести результат в файл...
StudeHt вне форума Ответить с цитированием
Старый 05.06.2009, 00:53   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

В начале пишете:
Код:
FILE *f = fopen("file.txt","w");
Вот тут:
Код:
if (j==n-1)
 {
 printf("\nВ %d строке матрицы, знаки элементов чередуются:",i);
 }
Делаете так:
Код:
 if (j==n-1)
  {
 printf("\nВ %d строке матрицы, знаки элементов чередуются:",i);
 fprintf(f,"\nВ %d строке матрицы, знаки элементов чередуются:",i);
 }
И в конце:
Код:
fclose(f);
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.06.2009, 01:08   #5
StudeHt
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 78
По умолчанию

Спасибо еще раз. Только у меня еще один вопрос, у меня в файл выводится вместо русских букв, какие-то "корявины". Это связано с тем что у меня досовский компилятор... Возможно ли это как то исправить?
StudeHt вне форума Ответить с цитированием
Старый 05.06.2009, 01:18   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Это вечная проблема консольных приложений (проблема кодировок). Лучше используйте английский.

Откройте исходник, например, в Akelpad, и сохраните в кодировке .866.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.06.2009, 01:27   #7
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Про русский язык обсуждалось тут(хотя не могу сказать наверняка, была ли решена проблема):
http://programmersforum.ru/showthread.php?t=4401&page=2
http://programmersforum.ru/showthrea...t=SetConsoleCP
И вообще, ниче не знаю - нижеследующее работает корректно.
Код:
#include<iostream>
#include<windows.h>
using namespace std;
void main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  FILE *pFile;
  char str[100];
  pFile=fopen("D:/1.txt","w");
  cout<<"Введите слово ";
  cin>>str;
  fputs(str,pFile);
  getchar();
}
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 05.06.2009 в 01:36.
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с поиском max элементов строк матрицы в Паскале annexion Помощь студентам 4 05.04.2010 10:44
Задача: сформировать новый массив, содержащий номера строк матрицы, имеющих отрицательную сумму элементов Striker14 Помощь студентам 1 23.02.2009 23:29
Дана прямоугольная матрица. Определить количество столбцов, произведение элементов которых меньше 5 Sweeney Паскаль, Turbo Pascal, PascalABC.NET 0 10.12.2008 01:41
Дан массив из N элементов (чисел),определить количество элементов кратных 3. Woha Общие вопросы C/C++ 2 08.12.2008 13:12
Найти количество строк, среднее арифметическое элементов которых меньше заданной величины Sergeo_89 Паскаль, Turbo Pascal, PascalABC.NET 3 05.12.2008 21:25