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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2015, 21:49   #1
Valsher
 
Регистрация: 14.12.2015
Сообщений: 6
Печаль Заполнение двумерного массива словами

Здравствуйте! Помогите, пожалуйста, с кодом. Нужно заполнить двумерный массив (в массив символов вводится текст на русском языке, состоящий из нескольких слов.). Распечатать содержимое массива в виде прямоугольной матрицы. Вроде бы заполняю массив правильно, однако либо выводит содержимое массива неполностью, либо с лишними символами, либо программа вообще отказывается работать. Помогите найти ошибку, пожалуйста.

Код:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define N 6
#define P 20
#define Left -10
#define Right 10
#define TElement unsigned char
 
int main()
{
    unsigned char c;
    int k,n;
    system("chcp 866 > NUL");
    TElement mass[N][P];
    k=0;
    n=0;
 
    do
    {
        do
        {
            scanf ("%c",&c);
            if (c!=' ')
            {
                mass[k][n]=c;
 
 
            }
            n++;
        }
        while (c!='\n');
 
 
        k++;
    }
    while (k<N);
    
    for (k=0; k<N; k++)
    {
        for(n=0; n<P; n++)
        {
            printf("%c",mass[k][n]);
        }
    }
 
 
 
    return 0;
}

Последний раз редактировалось Valsher; 14.12.2015 в 21:52.
Valsher вне форума Ответить с цитированием
Старый 14.12.2015, 22:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может тебе делить строку на слова вот так?: http://www.programmersforum.ru/showthread.php?t=214478
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.12.2015, 18:05   #3
Valsher
 
Регистрация: 14.12.2015
Сообщений: 6
По умолчанию

Ну, как я поняла, там нужно просто убрать пробелы и заполнить массив уже буквами. Ибо в дальнейшем в задании идет работа именно с буквами..
Valsher вне форума Ответить с цитированием
Старый 15.12.2015, 21:11   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
scanf ("%c",&c);
Это ввод символа а не строки. Причем Энтер обязателен. Ты вводишь каждую букву отдельно?
слющ давай ты как-то задание прояснишь. Потому что что-то у тебя не клеется именно с постановкой вопроса.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.12.2015, 21:17   #5
Valsher
 
Регистрация: 14.12.2015
Сообщений: 6
По умолчанию

прощу прощения, я мастер объяснений :D В общем, В массив символов вводится текст на русском языке, состоящий из нескольких слов. Учитывая, что строчные буквы русского алфавита в операционной системе MSDOS (кодовая страница 866) рас-положены не подряд, а разбиты на два диапазона (от «а» до «п» и от «р» до «я»), слова, состоящие только из букв одного из диапазонов, поместите в один массив, а другие во второй. Проведите сортировку полученных массивов. Для контроля результата сделайте распечатку массивов, в том числе исходного.
Для одномерного массива это задание выполнялось вполне легко, а вот с двумерным беда..
Valsher вне форума Ответить с цитированием
Старый 16.12.2015, 22:32   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я правильно понял - тебе нужно слова развести в двумерный массив, каждое из слов на новой строке, а его буквы - ячейки в колонке матрицы?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2015, 20:04   #7
Valsher
 
Регистрация: 14.12.2015
Сообщений: 6
По умолчанию

Да, именно так)
Valsher вне форума Ответить с цитированием
Старый 18.12.2015, 20:34   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
// л.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <conio.h>

int _tmain(int argc, _TCHAR* argv[])
{
	int s[100][100]={0},i,j;
	char c=getche();
	for(j=0,i=0;i<100 && c!=13;){
		if(c==' ') {i++;j=0;}; s[i][j++]=c;
		c=getche();
	}
	return 0;
}
Годится идея?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2015, 21:16   #9
Valsher
 
Регистрация: 14.12.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
	int s[100][100]={0}
Немного не понимаю, что происходит в этой строчке. И еще пишет, что stdafx.h не существует
Valsher вне форума Ответить с цитированием
Старый 18.12.2015, 22:37   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что происходит в этой строчке
Задается матрица 100х100 и заполняется нулями.
Цитата:
еще пишет, что stdafx.h не существует
Ну убери его. И не надо копипастить. Тебе это не поможет.
Твоя задача - понять суть примера, а не хватать его как горячий пирожок.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение двумерного массива одномерным Эмиль_C++ Общие вопросы C/C++ 2 12.03.2013 21:30
Заполнение двумерного массива из файла. KorPaEv Общие вопросы C/C++ 6 19.09.2011 17:46
Заполнение двумерного массива pisikaker Паскаль, Turbo Pascal, PascalABC.NET 2 15.05.2011 10:01
заполнение двумерного массива katena88 Общие вопросы Delphi 1 14.12.2010 14:15
[Pascal] заполнение двумерного массива Рамик Помощь студентам 13 18.02.2009 20:08