Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-07-2012, 20: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, 09: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, 15: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


WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
Vuoi clonare un videogioco con l'IA? Cla...
Furto da 6,3 miliardi di dollari, Binanc...
Gli USA dipendono dai robot stranieri: T...
Volkswagen non ha più soldi per l...
Telescopio spaziale Hubble: la NASA cerc...
Più sottile e potente: le nuove i...
Il JPL estende la vita operativa della s...
DAZN Full è in offerta: tutta la ...
GTA 6 su PC potrebbe arrivare prima del ...
Da zero al tracciato in secondi: LibreCo...
Il regista Rian Johnson lancia a 12,99 d...
Microsoft stravolge l'app Sicurezza di W...
Mercato smartphone in caduta libera: -20...
Android 17 QPR3 Beta 3 riporta il blocco...
Le 10 offerte TOP in Amazon del weekend:...
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: 00:31.


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