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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
leshac
0 / 0 / 0
Регистрация: 18.03.2009
Сообщений: 13
#1

_itoa() и двумерные массивы - C++

18.03.2009, 15:34. Просмотров 1039. Ответов 7
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
void main()
{
    int a[5]={1,2,3,4,5};
    char b[5];
 
    for(int i=0;i<5;i++)
    {
        int z=*_itoa(a[i],b,10);
        b[i]=z;
        cout<<b[i];
    }
}
Код работает нормально, а теперь внимание вопрос: Как заставить работать функцию с двумерным массивом? Аля int a[5][5] и char b[5][5]
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2009, 15:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос _itoa() и двумерные массивы (C++):

с++ двумерные массивы - C++
с++ двумерные массивы, можете помочь написать код пожалуйста №1 Заполнить матрицу А(9,9), от левого верхнего угла по диагонали: вправо -...

Двумерные массивы - C++
Привет всем! если есть у кого время, посмотрите что можно сделать, нужна ваша помощь! Сформировать одномерный массив B из максимальных...

Двумерные массивы. - C++
Помогите решить задачку!!!!!! Дана действительная квадратная матрица порядка 2N. Подучить новую матрицу, переставляя ее блоки размера N х...

Двумерные массивы. - C++
для заданной матрицы размером 8x8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом. Как это вообще? Второй день голову...

Двумерные массивы - C++
Ребята, помогите очень прошу! :с По массиву А(n,m) получить массив В(n) (типа boolean), присвоив k-му элементу значение true, если все...

двумерные массивы - C++
Составить программу обмена местами максимального и минимального элементов главной диогонали матрицы 4x4. зарание спасибо!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CppProgrammer
3 / 3 / 0
Регистрация: 18.03.2009
Сообщений: 12
18.03.2009, 15:45 #2
А какая разница, какой размерности массив? Ты передаешь в параметре не массив, а число типа int.
0
leshac
0 / 0 / 0
Регистрация: 18.03.2009
Сообщений: 13
18.03.2009, 15:48  [ТС] #3
Непонимаю как записать чтобы компилятор неругался

C++
1
2
3
4
5
6
7
8
9
for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
        int z=*_itoa(a[i][j],b,10);
        b[i][j]=z;
        cout<<b[i][j];
        }
    }
0
YurA_280784
Заблокирован
18.03.2009, 16:13 #4
Массив b должен быть не 5х5 как ты думаешь а по крайней мере 5хstrlen(symbl), где symbl - твой диджит в текстовой форме.
Предлагаю обойтись вообще без itoa
C++
1
2
3
4
5
6
7
8
9
10
11
char chBuf[256];
char *b = new char *[5];
for(int i=0,j;i<5;i++)  
{       
for(j=0;j<5;j++)//Дядя кто ж в цикле каждый раз j заново объявляет, в 1-м форе объяви и всё     
{       
     b[i][j] = sprintf(chBuf,"%s",a[i][j]);     
    cout<<b[i][j];      
}
cout<<"\r\n";   
}
Добавлено через 10 минут 33 секунды
Так сорри поторопился, хотел оч круто накодить, вот рабочий код!!!Сам только что проверил
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
#include <iostream.h>
#include <stdio.h>
 
int a[][5]=
{
    {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}
};
 
void main()
{
    char chBuf[256];
    char ***b = new char **[5];
    for(int i=0,j;i<5;i++)  
    {
        b[i] = new char *[5];
        for(j=0;j<5;j++)//Дядя кто ж в цикле каждый раз j заново объявляет, в 1-м форе объяви и всё     
        {   
            b[i][j] = new char[sprintf(chBuf,"%d\t",a[i][j])];
            b[i][j] = chBuf;            
            cout<<b[i][j];      
        }
        cout<<"\r\n";   
    }
}
Добавлено через 3 минуты 52 секунды
Так точней будет, просто в предыдущем примере b[i][j] содержит ещё и '\t', в результате если использовать atoi(b[i][j]) можно получить каку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void main()
{
    char chBuf[256];
    char ***b = new char **[5];
    for(int i=0,j;i<5;i++)  
    {
        b[i] = new char *[5];
        for(j=0;j<5;j++)//Дядя кто ж в цикле каждый раз j заново объявляет, в 1-м форе объяви и всё     
        {   
            b[i][j] = new char[sprintf(chBuf,"%d",a[i][j])];
            b[i][j] = chBuf;            
            cout<<b[i][j]<<"\t";        
        }
        cout<<"\r\n";   
    }
}
0
leshac
0 / 0 / 0
Регистрация: 18.03.2009
Сообщений: 13
18.03.2009, 20:03  [ТС] #5
А можно как-то обойтись без двухмерной динамики ? Объясни новичку пожалуйста, что плохо в том что я объявляю каждый раз в циле j заново? Мне изначально дан конкретный размер двухмерного интового массива элементы которого мне необходимо перекинуть в двухмерную строку.
0
Alligieri
CEO
Эксперт С++
2249 / 1238 / 24
Регистрация: 16.03.2009
Сообщений: 3,581
18.03.2009, 20:06 #6
Цитата Сообщение от leshac Посмотреть сообщение
А можно как-то обойтись без двухмерной динамики ? Объясни новичку пожалуйста, что плохо в том что я объявляю каждый раз в циле j заново?
для программ таких размеров - разницы нет, но если бы она была больше, а компьютер на котором ты работаешь - не слишком производительным то разница в скорости работы была б заметной.
0
YurA_280784
Заблокирован
19.03.2009, 11:03 #7
Без двухмерных массивов можно обойтись лишь в случае использования цифр от 0 до 9. Хотя ваще можно вместо цифры делать вот так b[i][j] = (char)a[i][j];Тогда у тебя вместо цифр будут соответствующие символы ansci кодировки, но єт мона юзать если цифиря от -128 до 128, так что решай сам. Ну а за объяву j тебе Alligieri , очень пристойно объяснил,вот.
0
leshac
0 / 0 / 0
Регистрация: 18.03.2009
Сообщений: 13
20.03.2009, 13:35  [ТС] #8


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int a1[2][2]={1,2,3,4};
    char b1[2][2];
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<2;j++)
        {
            
        
            char c = a1[i][j]+48;
        b1[i][j]=c;
    cout<<b1[i][j];
        }
    }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2009, 13:35
Привет! Вот еще темы с ответами:

Двумерные массивы - C++
Никогда особо раньше не занимался программирование,больше как то математикой.И вот на первом курсе стали изучать язык Си на лекциях.На...

Двумерные массивы в С++ - C++
Написать программу, которая дает пользователю ввести 5 фамилий студентов, а затем находит среди них самую длинную фамилию. Все фамилии...

Двумерные массивы - C++
Помогите люди добрые:) Дана целочисленная прямоугольная матрица, определить: 1) Кол-во отрицательных эл-тов тех строк, которые содержат...

про двумерные массивы - C++
Даны два двумерных массива целых чисел с размерами (5х5) эле¬ментов каждый. Подсчитать произведение элементов главных диагоналей в каждом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.03.2009, 13:35
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru