2015-04-25 6 views
0

Доброго утра, я пытался заполнить динамический вектор, но при печати входных данных я получить что-то вроде этого:Как я могу исправить этот массив

input: 1,5,3,4,2 
output: 0,1,5,3,4 

Может кто-нибудь мне помочь? Я не могу это исправить. Я много пробовал и не могу получить. Я apreciatte так (извините за английский)

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

#define MAX_STR 10 

int vecto(); 

char seguir[MAX_STRLEN]; 
int var; 

float* vector; 
char* bv; 

int vecto(){ 
int cont=0,ch; 
char v[MAX_STR]; 
printf ("¿number of elements to order?: "); 
scanf("%d",&var); 
vector = (float*)malloc(var*sizeof(float)); 
while((ch = fgetc(stdin)) != EOF && ch != '\n'){}; 

printf("input number press f for finish \n"); 
    do{ 
     fgets(v,sizeof(v),stdin); 
     if((strcmp(v,"f")!=0)){ 
      cont++; 
      vector[cont]=strtod(v,&bv); 
     } 
    } while(!((cont==var) || (strcmp(v,"f")==0))); 
printf("\n"); 
return 0; 
} 
+0

Я только что получил еще одну ошибку: петля, пока supouse остановиться, когда я достигаю общее количество элементов, которые я указываю до или когда входной «е», но я могу Не понимаю. Когда я вводю «f», цикл продолжается до тех пор, пока i 'cont == var' Я изменю условие на что-то подобное, но все еще не могу: ' while (((cont user2461687

ответ

1

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

Просто поменять ордена

if((strcmp(v,"f")!=0)){ 
      vector[cont]=strtod(v,&bv); 
      cont++; 
     } 
+0

ли массив начинается с 0? – user2461687

+0

Да. Первая позиция массива равна 0, вторая - 1, третья - 2 и так далее! – RafaelC

+0

У меня появилась еще одна ошибка: цикл while - это остановка для остановки, когда я достигаю общего количества элементов, которые я указываю раньше или когда вводя «f», но я не могу его получить. Когда я вводю «f», цикл продолжается до тех пор, пока i 'cont == var' Я изменю условие на что-то подобное, но все еще не могу: ' while (((cont user2461687

1

Вы увеличиваем cont и после того, как использовать его. Таким образом, первый раз доступ к индексу 1 вместо 0.

изменить его на:

if((strcmp(v,"f")!=0)){ 
    vector[cont++]=strtod(v,&bv); 
} 
+0

Вы так много спасли мою жизнь – user2461687

Смежные вопросы