Консультация № 107189
29.10.2007, 01:49
0.00 руб.
0 5 5
в консоли вывожу массив, оказывается там все нули. Как так может быть?
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
float xr[5][6]={{1,2,3,4,5,7},{1,7,4,8,3,7},{3,5,2,2,1,7},{2,3,1,2,1,5},{4,5,7,8,9,5}};
int N=6;
int n=5;
for (int i=0; i<N; i++) {
for (int r=0; r<n; r++) {
printf("xr[%i][%i] = %i\n",r,i, xr[r][i]);
}
}

getch();
return 0;
}

Обсуждение

Неизвестный
29.10.2007, 02:18
общий
это ответ
Здравствуйте, Mart!
У вас неправильный формат вывода. Вы пытаетесь вывести третью переменную как целочисленную. А надо как вещественную

Приложение:
printf("xr[%d][%d] = %5.3f\n",r,i, xr[r][i]);%d - integer type%f - double type (%5.3f - пять символов для вывода и 3 знака после запятой)
Неизвестный
29.10.2007, 02:20
общий
это ответ
Здравствуйте, Mart!

Потому что вы выводите их как int. а они float. В строке формата должно быть "xr[%i][%i] = %f\n"
Неизвестный
29.10.2007, 12:59
общий
это ответ
Здравствуйте, Mart!
%i - это для целых чисел!
%f - это для вещественых!
измените функцию printf на:
printf("xr[%i][%i] = %f\n",r,i, xr[r][i]);
или измените тип массива на int! так как у вас и так все значения целые!

См примеры различных форматов в приложении


Приложение:
преобразования| аргумент |--------------------------------------------------------------------- числовые данные--------------------------------------------------------------------- d | целое | целое десятичное со знаком i | целое | целое десятичное со знаком o | целое | целое восьмеричное без знака u | целое | целое десятичное без знака x | целое | целое шестнадцатеричное без знака | | (с буквами a, b, c, d, e, f) X | целое | целое шестнадцатеричное без знака | | (с буквами A, B, C, D, E, F). f |с плавающей | значение со знаком в форме [-]dddd. | точкой | dddd e |с плавающей | значение со знаком в форме [-]d.dddd | точкой | e[+/-]ddd g |с плавающей | значение со знаком либо в форме f, либо | точкой | в форме e, с данным значением и точнос- | | тью. Хвостовые нули и десятичная точка | | печатаются только при необходимости E |с плавающей | так же, как в случае e, только с буквой | точкой | E для обозначения степени G |с плавающей | так же, как в случае g, только с буквой | точкой | E для обозначения степени--------------------------------------------------------------------- Символьные данные.--------------------------------------------------------------------- C | символьное | один символ S | указатель | печатает символы до тех пор, пока не | на строку | встретится нулевое окончание, либо не | | будет достигнута точность. % | нет символа| печатается только знак %.--------------------------------------------------------------------- Указатели--------------------------------------------------------------------- n | указатель | сохраняется (по адресу, указанному во | на целое | входном аргументе) кол-во только что за- | | писанных символов. P | указатель | печатает входной аргумент,как указатель; | | дальние указатели печатаются, как | | XXXX:YYYY, ближние указатели печатаются, | | как YYYY (только смещение).---------------------------------------------------------------------
Неизвестный
29.10.2007, 18:33
общий
это ответ
Здравствуйте, Mart!
Видите ли, у Вас описан вещественный массив, а при выводе Вы указываете тип преобразования как целый. Либо опишите массив как int, либо исправьте строчку с выводом след. образом:
printf("xr[%i][%i] = %f\n",r,i, xr[r][i]);
Здесь полседний тип преобразования %i заменяется на %f.
Неизвестный
29.10.2007, 22:32
общий
это ответ
Здравствуйте, Mart!
С кодом у Вас почти всё нормально.Просто Вы немного переусердствовали. На мой скромный взгляд совершенно не нужны строки
int N=6;
int n=5;
Так же я использовал фунцию cout
Смотрике код в приложении.

Приложение:
//107189#include <iostream.h>//#include <stdio.h>#include <conio.h>#pragma hdrstop//---------------------------------------------------------------------------//#pragma argsusedint main(int argc, char* argv[]){ float xr[5][6]={{1,2,3,4,5,7} ,{1,7,4,8,3,7} ,{3,5,2,2,1,7} ,{2,3,1,2,1,5} ,{4,5,7,8,9,5}}; //int N=5; //int D=6; for (int i=0; i<5; i++) { for (int j=0; j<6; j++) { //printf("xr[%i][%i] = %i\n",i,j, xr[i][j]); cout<<"x["<<i<<"]["<<j<<"]="<<xr[i][j]<<"\n"; } } getch(); return 0;}
Форма ответа