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 15-12-2006, 16:12   #1
mariom86
Junior Member
 
Iscritto dal: Dec 2006
Messaggi: 18
ordinamento lessicografico stringhe in C con mergesort

[i]Qualcuno può aiutarmi con questo esercizio, sono disperato!!!

Ecco il testo:

[b]Scrivere un programma in C che riceva in input un insieme di parole (stringhe, possibilmente lette da un file di testo) e produca in output (possibilmente su file) le parole di input ordinate. Esempio:



Input: “Oggi è proprio una bella giornata. Quasi quasi vado al mare.”



Output:

al

bella

è

giornata

mare

Oggi

proprio

Quasi

quasi

una

vado



Per l’ordinamento utilizzare l’algoritmo di Merge Sort (versione ricorsiva) ovviamente modificato per operare su array di puntatori a char anziché su array di int. Inoltre, lo spazio da allocare in memoria per memorizzare le parole lette da file deve essere dinamico, ovvero bisogna contare prima le parole e poi allocare lo spazio necessario.
mariom86 è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2006, 16:22   #2
mariom86
Junior Member
 
Iscritto dal: Dec 2006
Messaggi: 18
vi prego, devo consegnarlo entro domani sera
mariom86 è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2006, 16:26   #3
lucas87
Bannato
 
Iscritto dal: Oct 2006
Messaggi: 170
Codice HTML:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int caricamento(char *frase);
void ordinamento(char **parole, int );
void swap(char **p, char **q);
void stampa(char **parole, int );

int main(){
   char *frase,**parole,*temp;
   int np,i,j;
   
   frase=(char*)malloc(1);
   if (frase== NULL)
          printf("ERRORE DI ALLOCAZIONE DI MEMORIA");
   

   np=caricamento(frase);
   
   if (np>0){


   parole=new char*[np];
   parole[0]=strtok(frase," ");
   for(i=1;i<np;i++)
      parole[i]=strtok(NULL," ");

   
   ordinamento(parole,np);
   stampa(parole,np);
   }else printf("non hai inserito nulla\n"); 
   system("pause");
}

int caricamento(char *frase){
    int i,np=0;
    
    printf("Inserire frase...\n");
    for(i=0;;i++){
      frase[i]=getchar();
      if(frase[i]==' ') np++;
      else if(frase[i]=='\n'){
         frase[i]='\0';
         if(i!=0) np++;
         break;
      }
   }
   return np;
}


void ordinamento(char **parole, int np){
     int i,j;
     for (i=0;i<np;++i){
         for (j=i+1;j<np;++j){
             if (strcmp(parole[i],parole[j])>0){
                swap(&parole[i], &parole[j]);
                }
         }
     }        
     
}

void swap(char **p, char **q){
     char *temp;
     temp=*p;
     *p=*q;
     *q=temp;   
}

void stampa(char **parole, int np){
     int i;
     printf("Parole ordinate:\n");
     for (i=0;i<np;i++)
         printf("%s\n",parole[i]);  
}

ora qwualcuno sostituisca bubblesort con mergesort e il gioco è fatto
lucas87 è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2006, 21:40   #4
mariom86
Junior Member
 
Iscritto dal: Dec 2006
Messaggi: 18
Qualcuno riesce a modificarlo per ordinare una stringa? Vi prego, devo consegnarlo entro domani sera.




[i]#include <stdlib.h<
#include <stdio.h<

#define MAX 300


/*
* Legge in input il numero n ed n numeri interi
* che memorizza nell'array. Restituisce il numero
* di elementi letti (n).
*/

int leggi_array(int V[]) {
int n, i;

printf("Numero di elementi: ");
scanf("%d", &n);
for (i=0; i<n; i++)
scanf("%d", &V[i]);
return(n);
}


/*
* Stampa in output l'array.
*/

void stampa_array(int V[], int n) {
int i;

for (i=0; i<n; i++) {
printf("%d ", V[i]);
}
printf("\n");
return;
}

/*
* Funzione Merge per la fusione di due
* componenti ordinate dell'array.
*/

void Merge(int A[], int p, int q, int r) {
int i, j, k, B[MAX];

i = p;
j = q+1;
k = 0;
while (i<=q && j<=r) {
if (A[i]<A[j]) {
B[k] = A[i];
i++;
} else {
B[k] = A[j];
j++;
}
k++;
}
if (i<=q) {
while (i<=q) {
B[k] = A;
i++;
k++;
}
} else {
while (j<=r) {
B[k] = A[j];
j++;
k++;
}
}
for (k=p; k<=r; k++)
A[k] = B[k-p];
return;
}


/*
* Funzione ricorsiva MergeSort.
*/

void MergeSort(int A[], int p, int r) {
int q;

if (p<r) {
q = (p+r)/2;
MergeSort(A, p, q);
MergeSort(A, q+1, r);
Merge(A, p, q, r);
}
return;
}


/*
* Funzione principale
*/

int main(void) {
int n, V[MAX];

n = leggi_array(V);
MergeSort(V, 0, n-1);
stampa_array(V, n);
return(1);
}
mariom86 è 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...
Schermi rotti su iPhone Duo: un report s...
Lo stealer VOLTA chiede a Claude, Kimi e...
Intel e Oracle puntano sulle CPU Xeon pe...
Offerte Amazon da urlo: Mac mini M6 a 89...
Bici elettriche a prezzi da record su Am...
Il boom dell'IA fa salire i costi: HP, A...
Cloudflare: 18,2 milioni di attacchi DDo...
GeForce RTX 2080 Ti con 22 GB di VRAM: f...
Dalla padella... ai server AI: Nvidia va...
1.000 cicli e ancora il 90,4% della capa...
SMS of Death fa crashare Android senza i...
BYD Yangwang U9 Xtreme da 2.977 CV fatta...
Altro che Made in USA: cosa si nasconde ...
Binance riapre dopo il maxi furto: gli u...
Ecovacs X12 OmniCyclone crolla a 599€ (p...
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: 12:32.


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