[C] Tipo di dato

Messaggioda jarrod » 04/02/2018, 21:44

La funzione vuole ritornare il valore assoluto della differenza tra gli elementi di posizione corrispondenti nei vettori a e b.
Però provando con diversi main.c, il programma non funziona sempre correttamente. Ho l'impressione che l'errore sia per quanto riguarda il tipo di dato.. qualcuno saprebbe dirmi qual è il problema, perchè il programma non è valido per ogni caso?
questo è il main.c
Codice:
#include "bytearray.h"

int main(){

   uint8_t a[] = { 7, 3, 1 };
   uint8_t b[] = { 4, 3, 2 };

   uint8_t *ris = absdiff(a, b, 3);

   return 0;



}

questo è il file.h
Codice:
#if !defined BYTEARRAY_H
#define BYTEARRAY_H
#define _CRT_SECURE_NO_WARNINGS

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


extern uint8_t *absdiff(const uint8_t *a, const uint8_t *b, size_t n);



#endif

questo è il file.c
Codice:
#include "bytearray.h"


uint8_t *absdiff(const uint8_t *a, const uint8_t *b, size_t n){

   if (n == 0){
      return NULL;
   }

   uint8_t *ris = malloc(n * sizeof(int));
   int risTemp;
   for (unsigned int i = 0; i < n; i++){
      risTemp = a[i] - b[i];
      risTemp = abs(risTemp);
      ris[i] = risTemp;
      i++;
   }


   return ris;


}


ps: per tipo di dato, intendo qualche tipo di dato che ho usato nel file.c..
jarrod
Junior Member
Junior Member
 
Messaggio: 123 di 358
Iscritto il: 26/02/2017, 13:23

Re: [C] Tipo di dato

Messaggioda apatriarca » 04/02/2018, 23:16

Non sono sicuro di aver capito la domanda. Vedo però che incrementi due volte i: una volta nel corpo del for e l'altra alla fine del ciclo.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4952 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [C] Tipo di dato

Messaggioda jarrod » 05/02/2018, 09:23

si è vero... era proprio quello il problema, ho appena controllato. Grazie mille!
jarrod
Junior Member
Junior Member
 
Messaggio: 124 di 358
Iscritto il: 26/02/2017, 13:23


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite