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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись в массив, запись в массив 
V
    Опции темы
godvinn
Дата 19.11.2008, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

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



есть маленькая программа для вывода гистрограммы

Код

#include <stdio.h>
#define SIZE 5
int main()
{
    int n[SIZE] = {5,8,8,9,1};
    int i, j;
    for(i = 0; i <= SIZE - 1; ++i)
    {
        for(j= 0; j < n[i]; ++j)
        {
            printf("%c", '*');
        }
        printf("\n");
    }
    return 0;
}

как можно организовать запись массива с клавиатуры то есть чтобы пользователь ввел допустимое количество допустип 5 (вместо SIZE) и потом заполнил эти пять элементов в массиве*? smile 


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
REZiaMIX
Дата 19.11.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(godvinn @ 19.11.2008,  15:25)
есть маленькая программа для вывода гистрограммы

Код

#include <stdio.h>
#define SIZE 5
int main()
{
    int n[SIZE] = {5,8,8,9,1};
    int i, j;
    for(i = 0; i <= SIZE - 1; ++i)
    {
        for(j= 0; j < n[i]; ++j)
        {
            printf("%c", '*');
        }
        printf("\n");
    }
    return 0;
}

как можно организовать запись массива с клавиатуры то есть чтобы пользователь ввел допустимое количество допустип 5 (вместо SIZE) и потом заполнил эти пять элементов в массиве*? smile

Код

#include <stdio.h>
int main()
{
    int count =0;
    int *n = new int[count]
    int i, j;
    for(i = 0; i <= count - 1; ++i)
    {
        for(j= 0; j < n[i]; ++j)
        {
            printf("%c", '*');
        }
        printf("\n");
    } 
    delete [] count; 
    return 0;
}

примерно так , тут надо изменить , чтобы в count было нужное число


--------------------
user posted image
PM MAIL   Вверх
DareDevil225
Дата 19.11.2008, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

#include <stdio.h>
int main()
{
    int nCount = 0;
    printf("Введите количество колонок: ");
    scanf("%d\n",&nCount);
    if( nCount <=0 )
       return 0;
    int n[nCount];
    for(int nIndex = 0; nIndex < nCount; nIndex++)
    {
         printf("Значение %d :", nIndex);
         scanf("%d\n", &value);
         n[nIndex] = value;
    }
    int i, j;
    for(i = 0; i < nCount; ++i)
    {
        for(j= 0; j < n[i]; ++j)
        {
            printf("%c", '*');
        }
        printf("\n");
    }
    return 0;

}



Это сообщение отредактировал(а) DareDevil225 - 19.11.2008, 15:40
PM MAIL   Вверх
warmonger_
Дата 19.11.2008, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

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



Код

#include <iostream>



int main(int argc, char **argv)
{
    int size;
    std::cout<<"enter size: ";
    std::cin>>size;
    int *n=new int[size];
    std::cout<<"enter mas: ";
    for (int i=0; i<size; ++i)
        std::cin>>n[i];
    for(int i = 0; i < size; ++i)
    {
        for(int j= 0; j < n[i]; ++j)
        {
            std::cout<<"*";
        }
        std::cout<<"\n";
    }
    return 0;
}

--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
REZiaMIX
Дата 19.11.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Еще)
Код

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    unsigned int count =0;
    cout << "Count:\n";
    cin >> count;
    if(count<1)
        return 0;
    int *n = new int[count];
    for (unsigned int a = 0; a<count;++a)
    {
        cout << "Enter #"<<a<<"\n";
        cin >> n[a];
    }
    int i, j;
    for(i = 0; i <= count; ++i)
    {
        for(j= 0; j < n[i]; ++j)
        {
           cout << "*";
        }
        cout << "\n";
    } 
    delete [] n; 
    return 0;
}


Добавлено через 4 минуты и 3 секунды
warmonger_
Не будет работать!
DareDevil225
А удалить n?))

Это сообщение отредактировал(а) REZiaMIX - 19.11.2008, 15:44


--------------------
user posted image
PM MAIL   Вверх
warmonger_
Дата 19.11.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

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



Цитата(REZiaMIX @  19.11.2008,  14:42 Найти цитируемый пост)

Не будет работать!

почему? проверил - работает...
--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
REZiaMIX
Дата 19.11.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(warmonger_ @ 19.11.2008,  15:48)
Цитата(REZiaMIX @  19.11.2008,  14:42 Найти цитируемый пост)

Не будет работать!

почему? проверил - работает...

Компилятор? Размер массива должен быть константным.

Проверил , действительно не работает:
error C2057: expected constant expression

Это сообщение отредактировал(а) REZiaMIX - 19.11.2008, 15:52


--------------------
user posted image
PM MAIL   Вверх
DareDevil225
Дата 19.11.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(REZiaMIX @ 19.11.2008,  15:42)
DareDevil225
А удалить n?))

Простите, что удалить????? smile 
n создается на стеке - ничего удалять не нужно, это не динамический массив

Добавлено @ 15:56
REZiaMIX, а вот в вашем первом примере n действительно надо удалить, а не count
Цитата

Код

#include <stdio.h>
int main()
{
    int count =0;
    int *n = new int[count]
    int i, j;
    for(i = 0; i <= count - 1; ++i)
    {
        for(j= 0; j < n[i]; ++j)
        {
            printf("%c", '*');
        }
        printf("\n");
    } 
    delete [] count; 
    return 0;

}



Это сообщение отредактировал(а) DareDevil225 - 19.11.2008, 15:57
PM MAIL   Вверх
REZiaMIX
Дата 19.11.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Тьфу , перепутал вас!
Код

warmonger_
Не будет работать!
DareDevil225
А удалить n?))

>>>
warmonger_
А удалить n?))
DareDevil225
Не будет работать, т.к. размер массива должен быть конст.


--------------------
user posted image
PM MAIL   Вверх
warmonger_
Дата 19.11.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

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



Цитата(REZiaMIX @  19.11.2008,  15:03 Найти цитируемый пост)
Тьфу , перепутал вас!

не надо путать. а то я уже думал, что глючит мя....

да, забыл удалить.
--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
DareDevil225
Дата 19.11.2008, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(REZiaMIX @ 19.11.2008,  16:03)
DareDevil225
Не будет работать, т.к. размер массива должен быть конст.

А вот здесь вы правы, еще раз посмотрел что написал, ошибся при написании
Код

#include <stdio.h>
int main()
{
    int nCount = 0;
    printf("Введите количество колонок: ");
    scanf("%d\n",&nCount);
    if( nCount <=0 )
       return 0;
    int *n = new int[nCount];
    int value = 0;
    for(int nIndex = 0; nIndex < nCount; nIndex++)
    {
         printf("Значение %d :", nIndex);
         scanf("%d\n", &value);
         n[nIndex] = value;
    }
    int i, j;
    for(i = 0; i < nCount; ++i)
    {
        for(j= 0; j < n[i]; ++j)
        {
            printf("%c", '*');
        }
        printf("\n");
    }
    delete []n;
    return 0;
}

PM MAIL   Вверх
REZiaMIX
Дата 19.11.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



warmonger_
DareDevil225

Извиняюсь за сбитие с толку.


--------------------
user posted image
PM MAIL   Вверх
godvinn
Дата 20.11.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

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



Код

#include <stdio.h>
#include <iostream>

void arrayPaint(int [], int); //прототип функции
using namespace std; 

int main()
{
    int count = 0;
    cout << "Count line:\n";
    cin >> count;
    if (count < 1)
    {
        cout << "Wanted:: Not correctly entered data \n";
        return 0;
    }
    else {
        int *n = new int[count];
        for (unsigned int a = 1; a < count; ++a)
        {
            cout << "Enter #::  "<< a << "\n";
            cin >> n[a];
        }
        arrayPaint(n, count);
        delete [] n; 
    }
    return 0;
}

void arrayPaint(int n[], int count) 
{
    unsigned int i, j;
    for(i = 1; i <= count - 1; ++i)
    {
        for(j= 0; j < n[i]; ++j)
        {
           cout << "*";
        }
        cout << "\n";
    } 
}


работоет но если ввести чило типа 1111111
получается зацикливание ? почему?

Это сообщение отредактировал(а) godvinn - 20.11.2008, 10:17


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
inside_pointer
Дата 20.11.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



то же на сишнике
Код


#include <stdio.h>
#include <stdlib.h>

/* распечатывает гистограмму */
int main()
{
    long i, j, size = 0;
    int *ip;
    
    printf("Enter the size: ");
    scanf("%ld", &size);
    if (size == 0 || (ip = malloc(size*sizeof(int))) == NULL)
        return 1;
    printf("Enter nums: ");
    for (i = 0; i < size; i++)
        scanf("%d", ip+i);
    
    for(i = 0; i < size; i++) {
        j = ip[i];
        while (j--)
            printf("%c", '*');
        putchar('\n');
    }
    free(ip);
    return 0;
}


если ввести 1111111 она не зацикливается а распечатывает столько звёздочек

Код

[guest@localhost tmp]$ ./t
Enter the size: 3
Enter nums: 1111111 4 2


будет распечатывать 1111111 звёздочек
потом распечатает 4 потом 2, ну долго конечно


Это сообщение отредактировал(а) inside_pointer - 20.11.2008, 11:54
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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