Форум программистов, компьютерный форум CyberForum.ru

Ошибка вывода данных в массиве строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них окружность делила это множество на группы http://www.cyberforum.ru/cpp-beginners/thread774926.html
На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них окружность делила это множество на группы, различающиеся по числу точек минимально. Определить радиус и центр этой окружности. Пожалуйста помогите с написанием кода.
C++ Проход по лабиринту Описать класс, реализующий стек. Написать программу, использующую этот класс для отыскания прохода по лабиринту. Лабиринт представляется в виде матрицы, состоящей из квадратов. Каждый квадрат либо открыт, либо закрыт. Вход в закрытый квадрат запрещен. Если квадрат открыт, то вход в него возможен со стороны, но не с угла. Каждый квадрат определяется его координатами в матрице. После отыскания... http://www.cyberforum.ru/cpp-beginners/thread774915.html
C++ как задать такие точки?
такое задание создать программу, которая проверяет действительность точки заштрихованной области.
C++ Прервать выполнение функции в потоке
Здравствуйте, у меня вопрос, возможно ли прервать функцию извне, при этом сама функция является "чёрным ящиком", то есть мы не знаем что там? Например, у нас есть некий поток, в которому на выполнение передали функцию. В момент выполнения функции, поток получает сигнал (событие), которое ему приказывает срочно завершить все действия, но при этом не использовать terminate(). Как потоку в этом...
C++ Задача по сортировкам http://www.cyberforum.ru/cpp-beginners/thread774901.html
Всем доброго времени суток) есть исходник программы, которая выводит слова из строки, по заданному символу с клавиатуры #include<iostream.h> #include<string.h> int i,j,l,m,n; char a,c; main() { cout << "Введите количество слов n="; cin >> n;
C++ Определить сумму и произведение членов последовательности Всем привет Уважаемые пользователи помогите сделать задачу (С + + или Visual C + +) если не трудно. Вот у меня произошла проблема в написать программы: Данные целые положительные числа N, К, М, а1, .... аn. Используя только элементарные арифметические операции (+, =, *, /), определить сумму и произведение членов последовательности а1 ... аn, кратных К и некратные М. Массивы не использовать.... подробнее

Показать сообщение отдельно
Cuurjol
0 / 0 / 0
Регистрация: 01.01.2013
Сообщений: 12

Ошибка вывода данных в массиве строк - C++

30.01.2013, 03:32. Просмотров 363. Ответов 7
Метки (Все метки)

Здравствуйте.

Есть программа, где создается динамический массив строк, заносится туда информация с клавиатуры и выводится сам массив. Алгоритм рабочий, но волнует один момент в моем коде, а именно, если заменить функции puts() и gets() на printf() и scanf(), а именно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
printf ("Введите %d фамилий:\n",n);
    flushall();
    for (i = 0; i < n; i++)
    {
        massive[i] = new char [m];
        scanf ("%s",&massive[i]);
    }
        printf ("Результат:\n");
    for (i = 0; i < n; i++)
    {
        printf ("\n%s",massive[i]);
    }
то при такой замене, возникает ошибка программы на момент вывода результата. Возникает два вопроса: почему при использовании gets() и puts() всё ОК, а при printf() и scanf() возникает проблема? И как эту проблему решить? Хотя даже очень странно, при использовании для того куска кода сначала gets() потом printf () - все работает, если наоборот - сначала scanf() потом puts - ошибка программы. Помогите, пожалуйста.



Это рабочая программа без ошибок.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
 
void main ()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char **massive;
    int n,m,i,j;
    do
    {
        printf ("Введите размерность массива строк и количество символов для каждой строки через пробел: ");
        scanf ("%d %d",&n,&m);
    }
    while ((n <= 0) && (m <= 0));
    massive = new char *[n];
    printf ("Введите %d фамилий:\n",n);
    flushall();
    for (i = 0; i < n; i++)
    {
        massive[i] = new char [m];
        gets (massive[i]);
    }
    printf ("Результат:\n");
    for (i = 0; i < n; i++)
    {
        puts (massive[i]);
    }
    for (i = 0; i < n; i++)
        delete [] massive[i];
    delete [] massive;
    getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru