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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание двумерного массива 
:(
    Опции темы
dimmon123
Дата 21.10.2012, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



feodorv, а сам вопрос о координатах редактируемого элемента прально записан?
Код

 /* вопрос об редактируемом элементе (координаты+значение) */
         system ("cls");
         printf (" Enter x,y in [x,y] format: ");


если да, то с клавы в ответ надо вводить значение например "[0,1]"?
PM MAIL   Вверх
feodorv
Дата 21.10.2012, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(dimmon123 @  22.10.2012,  00:08 Найти цитируемый пост)
с клавы в ответ надо вводить значение например "[0,1]"?

Нет, а так как запрограммировано:
Цитата(dimmon123 @  21.10.2012,  23:48 Найти цитируемый пост)
        scanf_s (" %d, %d", &i, &j);

то есть так:
Код

0,1


Добавлено через 2 минуты и 6 секунд
Почему %j остался???

Добавлено через 5 минут и 12 секунд
Цитата(dimmon123 @  21.10.2012,  23:48 Найти цитируемый пост)
feodorv, у нас же везде было i  и j. мы их в самом начаде вводили

А причём здесь %i, %j и i,j? Как они друг с другом связаны? Потому что где-то есть &i, &j, и захотелось аналогично сделать?

Это сообщение отредактировал(а) feodorv - 21.10.2012, 23:42


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
dimmon123
Дата 22.10.2012, 13:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



feodorv, с помощью твоих подсказок  и немного домыслив, получилось все!!!вот исправил ту часть кода, теперь все работает))

Код

/* вопрос об редактируемом элементе (координаты+значение) */
         system ("cls");
         printf (" Enter x,y in [x,y] format: ");
       
         /* меняем значение у mt1 или mt2 */
         int i = 0, j = 0;
         scanf_s ("%d, %d", &i, &j);
         
         printf (" New value: ");
         int tmp = 0;
         scanf_s ("%d", &tmp);
         if( iSelect == '1' ) { mt1[i][j] = tmp; printf (" Value [%d, %d] is: %d", i, j, mt1[i][j]);}
         else { mt2[i][j] = tmp; printf (" Value [%d, %d] is: %d", i, j, mt2[i][j]);}
         
         _getch();


Это сообщение отредактировал(а) dimmon123 - 22.10.2012, 14:13
PM MAIL   Вверх
dimmon123
Дата 22.10.2012, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



feodorv,препод зверствует. как сделать ограничение на вод только цифр в Case3?

PM MAIL   Вверх
feodorv
Дата 22.10.2012, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(dimmon123 @  22.10.2012,  19:12 Найти цитируемый пост)
feodorv,препод зверствует. как сделать ограничение на вод только цифр в Case3?

Не понял, в каком месте?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
dimmon123
Дата 22.10.2012, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



feodorv, у нас во всем коде где есть запросы мы вводим цыфры, если вместо них ввести буквы то  программа глючит, поэтому надо везде где можно поставить ограничение на ввод букв...
PM MAIL   Вверх
feodorv
Дата 22.10.2012, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



ок. Подпрограммы разрешены?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
dimmon123
Дата 22.10.2012, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(feodorv @  22.10.2012,  18:39 Найти цитируемый пост)
ок. Подпрограммы разрешены? 

ограничений никаких нет, надо чтоб при вводе букв писал ошибку и требовал ввести цифры)))
PM MAIL   Вверх
feodorv
Дата 22.10.2012, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Тупое решение:
Код
int getNumber( const char *header )
{
  char line[128], *ptr;
  int number = 0;

  do
  {
    int i, error = 0;

    if( header != NULL ) printf( "%s: ", header);
    if( fgets( line, sizeof(line), stdin) == NULL ) return 0;

    for( i = 0; line[i] != '\n' && line[i] != '\0'; i++)
      if( !(line[i] >= '0' && line[1] <= '9') )
      {
        error = 1;
        break;
      }

    if( i != 0 && !error ) return (int) strtol( line, NULL, 10);
    printf( "Invalid value: %s\n", line);
  } while( 1 );
}

Только для ввода положительных значений!!!


И вместо scanf пользуем getNumber:
Код
       /* вопрос о размерности */
       system ("cls");
       dim = getNumber( "Please, enter matrix dimension" );
       if( dim <= 0 || dim > n )
       {
          printf( "Invalid value %d\n", dim);
          continue;
       }

Остальное - аналогично...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
dimmon123
Дата 22.10.2012, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



feodorv, не проглатывает код то что ты написал,ошибки выдает..
PM MAIL   Вверх
feodorv
Дата 22.10.2012, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(dimmon123 @  22.10.2012,  21:38 Найти цитируемый пост)
feodorv, не проглатывает код то что ты написал,ошибки выдает.. 

Какие именно ошибки? У меня всё проглотилось...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
dimmon123
Дата 22.10.2012, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



feodorv
Код

int getNumber( const char *header )
{
  char line[128], *ptr;
  int number = 0;

  do
  {
    int i, error = 0;

    if( header != NULL ) printf( "%s: ", header);
    if( fgets( line, sizeof(line), stdin) == NULL ) return 0;

    for( i = 0; line[i] != '\n' && line[i] != '\0'; i++)
      if( !(line[i] >= '0' && line[1] <= '9') )
      {
        error = 1;
        break;
      }

    if( i != 0 && !error ) return (int) strtol( line, NULL, 10);
    printf( "Invalid value: %s\n", line);
  } while( 1 );


эту часть в какое место вставляем?
у меня код начинается вот так:
Код

int i,j,k;
 int dim = 0;
 int mt1[n][n];
 int mt2[n][n];
 int res[n][n];
 int tmp = 0;
 
 
void main()
{
   do 
   {
       /* вопрос о размерности */
       system ("cls");
       printf( "Please, enter matrix dimension:" );  
       scanf_s( "%d", &dim);
       if( dim <= 0 || dim > n ) 
       {
          printf( "Invalid value %d\n", dim);
          continue;
       }
 
       /* вопрос о заполнении матрицы (случайно, диагонально, с клавиатуры) */
       system ("cls");
       printf (" (1) - Aftozapolnenie\n (2) - Zapolnenie diagonali\n (3) - Vvod s klaviaturi\n (4) - Exit\n\n Please select: ");
       char iSelect = _getch();
       if( iSelect == '4' ) break;



Это сообщение отредактировал(а) dimmon123 - 22.10.2012, 22:21
PM MAIL   Вверх
feodorv
Дата 22.10.2012, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(dimmon123 @  22.10.2012,  23:20 Найти цитируемый пост)
эту часть в какое место вставляем?

Перед main() smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
dimmon123
Дата 22.10.2012, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



feodorv, в этом коде выдает вот эту ошику: ptr: неиспользованная локальная переменная

Код

#include "stdio.h"
#include "stdafx.h"
#include "windows.h"
#include "math.h"
#include "conio.h"
#include "stdlib.h"
#define n 20

 int i,j,k;
 int dim = 0;
 int mt1[n][n];
 int mt2[n][n];
 int res[n][n];
 int tmp = 0;
 
 int getNumber( const char *header )
{
  char line[128], *ptr;
  int number = 0;

  do
  {
    int i, error = 0;

    if( header != NULL ) printf( "%s: ", header);
    if( fgets( line, sizeof(line), stdin) == NULL ) return 0;

    for( i = 0; line[i] != '\n' && line[i] != '\0'; i++)
      if( !(line[i] >= '0' && line[1] <= '9') )
      {
        error = 1;
        break;
      }

    if( i != 0 && !error ) return (int) strtol( line, NULL, 10);
    printf( "Invalid value: %s\n", line);
  } while( 1 );
}
 
void main()
{
   do 
   {
       /* вопрос о размерности */
       system ("cls");
        dim = getNumber( "Please, enter matrix dimension:" );  
       scanf_s( "%d", &dim);
       if( dim <= 0 || dim > n ) 
       {
          printf( "Invalid value %d\n", dim);
          continue;
       }
 
       /* вопрос о заполнении матрицы (случайно, диагонально, с клавиатуры) */
       system ("cls");
       printf (" (1) - Aftozapolnenie\n (2) - Zapolnenie diagonali\n (3) - Vvod s klaviaturi\n (4) - Exit\n\n Please select: ");
       char iSelect = _getch();
       if( iSelect == '4' ) break;


Добавлено @ 22:39
feodorv, сдела))у тебя ошибка была в коде))
Код

if( !(line[i] >= '0' && line[1] <= '9') )

второй лайн стоит у тебя 1 а не i)заменил и все заработало и на введение букв выдает ошибку, вот только если потом ввести цыфру ничего дальше не происходит, код дальше не считывается почему то

Это сообщение отредактировал(а) dimmon123 - 22.10.2012, 22:41
PM MAIL   Вверх
feodorv
Дата 22.10.2012, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(dimmon123 @  22.10.2012,  23:34 Найти цитируемый пост)
в этом коде выдает вот эту ошику: ptr: неиспользованная локальная переменная

Это не ошибка. ptr можно убрать smile 

Цитата(dimmon123 @  22.10.2012,  23:34 Найти цитируемый пост)
второй лайн стоит у тебя 1 а не i)

А это ошибка)))


Цитата(dimmon123 @  22.10.2012,  23:34 Найти цитируемый пост)
вот только если потом ввести цыфру ничего дальше не происходит, код дальше не считывается почему то

В смысле? Если в строке встретился неправильный символ, ввод значения придётся повторить ;)
Строка вводится завершающим ENTER)))


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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