Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-07-2012, 19:47   #1
Parru
Junior Member
 
Iscritto dal: Sep 2005
Messaggi: 8
[C] aiuto per programma

Salve,
sto facendo una serie di esercizi per un esame e mi sono trovato in difficoltà nella realizzazione di un programma. Questo programma deve avere una funzione che verifica le occorrenze dei valori in un array di N interi e le memorizza in una lista che contiene due campi: uno del valore e l'altro dell'occorrenza. Inoltre se un valore della lista non è presente nell'array deve essere eliminato dalla lista. Qui si seguito il codice che ho scritto
Spoiler:

Codice:
#include <stdio.h>
#include <stdlib.h>
typedef unsigned short int Boolean;
#define TRUE 1
#define FALSE 0


struct list {
    int value;
    int occ;
    struct list * next_ptr;
};

void init( struct list ** ptrptr );
void visit( struct list * ptr );
void pre_insert(struct list ** ptrptr, int value, int occ);
void suf_insert( struct list ** ptrptr, int value, int occ );
void conta_occorrenze (struct list **ptrptr, int *V, int N);
int main( int argc, char *argv[] )
{
  Boolean itera = TRUE, found = FALSE;
  int value;
  int scelta;
  struct list * list1_ptr;
  int occ;
  occ=0;
  int i=0;
  int N=0;
  int *V;
  init( &list1_ptr );

  do{



        printf( "1. inserisci elemento lista 1\n" );
        printf( "2. inserisci il vettore\n" );

        printf( "3. conta occorrenze vettore\n");
        printf( "4. esci\n" );
        scanf( "%d", &scelta );
        system("cls");
        switch ( scelta ) {
               case 1:
                      printf( "\ninserisci valore: " );
                      scanf( "%d",&value,"%d",&occ);
                      pre_insert( &list1_ptr, value, occ);
                      break;
                case 2:

                          printf("inserisci dimensione del vettore: ");
                          scanf("%d", &N);


                          int i;
                          V=malloc(N*sizeof(int));
                          for(i=0; i<=N-1; i++){
                          printf("inserisci elemento V[%d]: ", i);
                          scanf("%d", &(V[i]));

                          }
                          break;
                case 3:
                         conta_occorrenze(&list1_ptr, V, N);
                         break;

                case 4: itera = FALSE;
                       break;
               default:
                       printf( "\nscelta errata!" );
                       break;
        }
    } while ( itera );
    visit( list1_ptr );

    if(N!=0){
  for(i=0; i<=N-1; i++)
    printf("\nV[%d]=%d\n", i, V[i]);


  }


  system("PAUSE");
  return 0;
}
void init( struct list ** ptrptr )
{
    *ptrptr = NULL;
}

void visit( struct list * ptr )

{
    while ( ptr != NULL ) {
          printf("%d %d, %d", ptr->value, ptr->occ);

          ptr = ptr->next_ptr;

    }
    ;
}

void suf_insert( struct list ** ptrptr, int value, int occ )

{
    while ( *ptrptr != NULL ) {
          ptrptr = &((*ptrptr)->next_ptr);
    }
    pre_insert( ptrptr, value, occ);
}

void pre_insert( struct list ** ptrptr, int value, int occ )

{
    struct list * tmp_ptr;

    tmp_ptr = *ptrptr;
    *ptrptr = (struct list *) malloc( sizeof(struct list));
    (*ptrptr)->value = value;
    (*ptrptr)->occ = occ;
    (*ptrptr)->next_ptr = tmp_ptr;
}
void conta_occorrenze(struct list ** ptrptr, int *V, int N)
{
    struct list * tmp;
    int j;
    while(*ptrptr!=NULL || N!=0){
	  for(j=0;j<N;j++){
	  if((*ptrptr)->value==V[j]){
	  ((*ptrptr)->occ)++;
	  *ptrptr=(*ptrptr)->next_ptr;
	  }
	  else {

        tmp = *ptrptr;
        *ptrptr = (*ptrptr)->next_ptr;
        free( tmp );}

	  }
    }
  visit(*ptrptr);
  system("PAUSE");
  }


in fase di compilazione non ci sono problemi ma quando vado ad eseguire il programma ho un errore e non riesco a capire da cosa derivi. Spero che possiate essermi d'aiuto. Grazie
Parru è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2012, 08:51   #2
ingframin
Senior Member
 
L'Avatar di ingframin
 
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
Posta l'errore, altrimenti come facciamo ad aiutarti?
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
ingframin è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2012, 14:24   #3
Parru
Junior Member
 
Iscritto dal: Sep 2005
Messaggi: 8
anche te hai ragione
io lancio l'applicazione e una volta inseriti da tastiera i valori dell'array e della lista, quando chiamo la funzione conta_occorrenze il programma mi va in crash. L'errore è sicuramente in quella funzione ma non riesco a capire dove, forse nel passaggio dei paratri
Parru è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Diablo V annunciato a sorpresa: il colpo...
Meno di 5 euro per il 5G: l'offerta Kena...
World of Warcraft: Forever è il Classic+...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Non c'è pace per Trezor: 347.000 e-mail ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:49.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v