Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Укажыте ошыбку пожалуйста

86K
19 декабря 2012 года
dark8eider
4 / / 19.12.2012
Доброе время суток. Задание к программе: нужно вводить символьные строки пока не встретиться какая либо цыфра, если встретилась цыфра прекратить ввод строк и вывести их на екран. Накидал протопип программы но она не перестает принимать введенные строки (в етой программе выход зделан на цыфру 4 для теста работоспособности программы)
Вот сам код:

Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

int main()
{
     int i, j, z=0;
     char list[j][i];
     printf("Vvedite stroku");
     while (list[i] != "4")
      {
           i++;
           gets (list[j]);
           if (list[i] == "\n")
           {
                j++;
                z++;
           }
      }
      printf("Vu vvelu:\n");
      for (j=0; j<z; j++)
      {
          puts(list[j]);
      }
       getch();
}
Подскажыте пожалуйста где ошыбка, буду очень признательным.
446
19 декабря 2012 года
Meander
487 / / 04.09.2011
Дело в том, что ты на C++ пишешь также как и на русском. (пожалуйста - пишется через "а": пАжалуйста)
86K
19 декабря 2012 года
dark8eider
4 / / 19.12.2012
Цитата: Meander
Дело в том, что ты на C++ пишешь также как и на русском. (пожалуйста - пишется через "а": пАжалуйста)



А я думал что проблема в самом коде!

446
19 декабря 2012 года
Meander
487 / / 04.09.2011
вот что ты имел ввиду, когда писал:
 
Код:
char list [j][i];
, где i = j = 0?
446
19 декабря 2012 года
Meander
487 / / 04.09.2011
далее, булевы операции не определены для массивов символов, поэтому записи типа:
 
Код:
list[i] != "4"
//или
list[i] == "\n"
на самом деле, сравнивают не то, о чем ты мог бы подумать!
446
19 декабря 2012 года
Meander
487 / / 04.09.2011
и наконец, по поводу самого алгоритма. Строка - это одно слово, или произвольный набор символов, включая пробелы и т.д.? Алгоритм должен прекращать работу сразу после ввода искомого символа?
1
19 декабря 2012 года
kot_
7.3K / / 20.01.2000
И Ж, Ш - пиши через И
446
19 декабря 2012 года
Meander
487 / / 04.09.2011
я бы сделал так:
1. Указал заранее размерность массива символов. Так как программа консольная, то можно ограничиться 128 символами в строке и 1000 строк. Еще понадобится вспомогательная переменная в которой будем хранить текущий, введенный пользователем символ.
 
Код:
char c, list[1000][128];
2. Цикл считывания символов будет работать пока не введен искомый символ. Если текущий символ - перевод строки, то увеличим счетчик строк и обнулим счетчик символов в строке. Иначе, присвоим символ очередной позиции в массиве и увеличим счетчик символов в строке.
 
Код:
int i = 0,j = 0,z = 0;    
while((c = getchar()) != '4')
{      
  if(c == '\n') j++, i = 0;
  else    list[j][i++] = c;
}
3. После ввода искомого символа можно продолжать вводить строку, но в итоговом массиве соответствующих символов не будет:
 
Код:
printf("Vu vvelu:\n");
for(;z<=j;z++) puts(&list[z][0]);
4. Безусловный переход при вводе искомого символа можно осуществить функцией getche(), но она не переносима и просто так не работает с кириллицей.
86K
19 декабря 2012 года
dark8eider
4 / / 19.12.2012
Эта программа расчитана на латинницу. Большое спасибо за идею, кажеться смысл понял
86K
19 декабря 2012 года
dark8eider
4 / / 19.12.2012
Цитата: Meander
и наконец, по поводу самого алгоритма. Строка - это одно слово, или произвольный набор символов, включая пробелы и т.д.? Алгоритм должен прекращать работу сразу после ввода искомого символа?



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

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог