Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
shulia-katty
0 / 0 / 1
Регистрация: 10.12.2012
Сообщений: 9
1

На экран выводится "мусор"

11.06.2013, 19:30. Просмотров 731. Ответов 10
Метки нет (Все метки)

Вместо создаваемого массива выводит на экран "мусор" какой-то. Не пойму, что не так...
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
#include<stdio.h>
#include<conio.h>
#include<iostream>
 int main(void)
 {   int n, m, i, j;
     printf("Vvedite razmer massiva:");
     scanf("%d%d", &n, &m);
 
     int**arr = new int *[n];
     for( i=0; i<n; i++)
         arr[i] = new int [m];
     
     printf("Vvedite massiv\n\n");
 
     for(i=0; i<n; i++)
        { for(j=0; j<m; j++)
           {
            printf("arr[%d][%d]=", i, j);
            scanf("%d", (*(arr+i)+j));
            printf("\n%d\n", (*(arr+i)+j));}}
 
     printf("Vi vveli %d chisel(la)\n\n", i*j);
     for(i=0; i<n; i++)
        { for(j=0; j<m; j++)
           {
            printf("%9d", (*(arr+i)+j));}
            printf("\n");}
_getch();
 }
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2013, 19:30
Ответы с готовыми решениями:

Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость", "Цена"
Создать запись &quot;Двигатель&quot;, которая содержит элементы &quot;Название&quot;, &quot;Мощность&quot;, &quot;Скорость&quot;,...

Функция дублирует ввод как и должна но добавляется "Мусор"
Функция дублирует ввод как и должна но пробавляются &quot;Мусор&quot; char *duplicate(char *str) { char...

Вместо массива программа выводит "мусор"
#include &quot;stdafx.h&quot; #include&lt;stdio.h&gt; #include&lt;conio.h&gt; int main(void) { int i, n; float...

Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие"
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и...

Если х равно одному из чисел N!/1, N!/2, N!/3, ...,N!/N, то вывести на экран сообщение "Да", иначе - сообщение "Нет"
Даны натуральные числа х и N(x&gt;N). Если х равно одному из чисел N!/1, N!/2, N!/3, ...,N!/N, то...

10
Z_A_S
58 / 58 / 44
Регистрация: 06.10.2012
Сообщений: 98
11.06.2013, 19:49 2
У тебя с вводом элементов массива проблемы
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8130 / 4982 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
11.06.2013, 19:57 3
И с освобождением памяти

Добавлено через 49 секунд
Да и заголовочный файл С++ затесался. Если что, под С89 не пойдет (обычно под него пишут).
Создавайте .c файлы и компилируйте С компилятором
0
shulia-katty
0 / 0 / 1
Регистрация: 10.12.2012
Сообщений: 9
11.06.2013, 20:01  [ТС] 4
Как же мне все эти прелести исправить может подскажете?
0
11.06.2013, 20:01
MrGluck
Форумчанин
Эксперт CЭксперт С++
8130 / 4982 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
11.06.2013, 20:07 5
C
1
scanf("%d", &arr[i][j]);
про память почитайте malloc и free
0
shulia-katty
0 / 0 / 1
Регистрация: 10.12.2012
Сообщений: 9
11.06.2013, 20:47  [ТС] 6
функцию scanf приводила к такому виду, а вот с памятью поковыряться надо бы. спасибо.

Добавлено через 36 минут
Получилось что-то вот такое
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
35
36
37
#include<stdio.h>
#include<conio.h>
#include<iostream>
 int main(void)
 {   int n, m, i, j;
     printf("Vvedite razmer:");
     scanf("%d%d", &n, &m);
 
     int**arr;
     arr = (int**)malloc(n*sizeof(int));
     for(i=0; i<n; i++)
        *(arr+i) = (int*)malloc(m*sizeof(int));
     
 
     printf("Massiv\n\n");
 
     for(i=0; i<n; i++)
        { for(j=0; j<m; j++)
           {
            printf("arr[%d][%d]=", i, j);
            scanf("%d", &arr[i][j]);
            printf("\n%d\n", &arr[i][j]);}
     printf("stroka %d vvedena\n", i+1);}
 
 
     printf("\n\nSpasibo!\n");
 
 
     printf("Vi vveli %d chisel(la)\n\n", i*j);
     for(i=0; i<n; i++)
        { for(j=0; j<m; j++)
           {
            printf("%4d", &arr[i][j]);}
            printf("\n");}
     free(arr);
_getch();
 }
Только и эта версия кода не работает.
0
Z_A_S
58 / 58 / 44
Регистрация: 06.10.2012
Сообщений: 98
11.06.2013, 22:06 7
смотри внимательно за ссылками, вот держи работающий:
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
35
36
37
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stdio.h>
#include<conio.h>
 
 int main(void)
 {   int n, m, i, j;
     printf("Vvedite razmer: ");
     scanf("%d%d", &n, &m);
 
     int **arr;
     arr = (int**)malloc(n*sizeof(int));
     for(i=0; i<n; i++)
        *(arr+i) = (int*)malloc(m*sizeof(int));
     
 
     printf("Massiv\n\n");
 
     for(i=0; i<n; i++)
        { for(j=0; j<m; j++)
           {
            printf("arr[%d][%d]=", i, j);
            scanf("%d", &arr[i][j]);
            printf("\n%d\n", arr[i][j]);}
     printf("stroka %d vvedena\n", i+1);}
 
     printf("\n\nSpasibo!\n");
 
     printf("Vi vveli %d chisel(la)\n\n", i*j);
     for(i=0; i<n; i++)
        { for(j=0; j<m; j++)
           {
            printf("%4d", arr[i][j]);}
            printf("\n");}
     free(arr);
    _getch();
 }
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8130 / 4982 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
12.06.2013, 04:25 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Z_A_S, вам бы тоже не мешало почитать
Цитата Сообщение от MrGluck Посмотреть сообщение
про память почитайте malloc и free
и послушать совета
Цитата Сообщение от MrGluck Посмотреть сообщение
Создавайте .c файлы и компилируйте С компилятором
Добавлено через 6 минут
Вот собственно как надо:
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
35
36
37
38
39
40
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
int main(void)
{  
    int n, m, i, j=0; 
    int **arr;
    
    printf("Vvedite razmer: ");
    scanf("%d%d", &n, &m);
    arr = malloc(n * sizeof(int*));     
 
    printf("Massiv\n\n"); 
    for(i=0; i < n; i++)
    {
        *(arr+i) = malloc(m * sizeof(int));
        for(j=0; j < m; j++)
        {
            printf("arr[%d][%d]=", i, j);
            scanf("%d", &arr[i][j]);
            printf("\n%d\n", arr[i][j]);
        }
        printf("stroka %d vvedena\n", i + 1);
    }
 
    printf("\n\nSpasibo!\n"); 
    printf("Vi vveli %d chisel(la)\n\n", i * j);
    for(i=0; i < n; i++)
    {
        for(j=0; j < m; j++)
            printf("%4d", arr[i][j]);
        printf("\n");
        free(arr[i]);
    }
    free(arr);
    
    _getch();
    return 0;
}
1
Z_A_S
58 / 58 / 44
Регистрация: 06.10.2012
Сообщений: 98
12.06.2013, 09:19 9
Я и не собирался так писать, только исправил ссылки в коде...спасибо за замечания
0
shulia-katty
0 / 0 / 1
Регистрация: 10.12.2012
Сообщений: 9
12.06.2013, 19:29  [ТС] 10
MrGluck,
cпасибо, добрый человек!!! Правда пришлось немного исправить: дописала тип int перед функцией malloc, т к компилятор ругался
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8130 / 4982 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
12.06.2013, 20:17 11
shulia-katty, ну так компилируйте С-компилятором, а не С++
0
12.06.2013, 20:17
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2013, 20:17

Вместо вещественного числа с двойной точностью выводится "1,#IO"
Здравствуйте, подскажите пожалуйста почему вместо вещественного числа с двойной точностью выводится...

Структура "Работники" - для всех людей выводится одна и та же зарплата
Задание состоит в том чтоб сделать структуру с людьми которые работают в цеху, и посчитать их...

При выполнении system ("cls") выводится только первый русскоязычный символ
Поймал неприятную ситуацию. Пишу в CLion, MinGW-64 x86_64-4.9.3-win32-seh-rt_v4-rev1. При...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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