Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
be quiet! debutta nel settore mouse da gaming con Dark Perk Ergo e Dark Perk Sym: due modelli gemelli per specifiche, con polling rate di 8.000 Hz anche in wireless, sensore PixArt PAW3950 da 32.000 DPI e autonomia dichiarata fino a 110 ore. Nel test, a 8.000 Hz si arriva a circa 30 ore reali, con ricarica completa in un'ora e mezza
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-08-2007, 02:38   #1
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
PROBLEMA 4 FUNZIONI

Ciao tranquillo auron ho provato a fare così e per conto mio dato che io e la ragazza abbiamo litigato perchè non gli sta bene il do-while......

Il mio codice di partenza era questo ed è funzionante:
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>

char *subst_string (char *, char *, char *);
void pulisci_e_printa(void);
void reverse(char s[]); 

int main()
{ 
   char stringa1[50],cercare[10],sostituire[10],newstringa[100],*niente[1],opzioni,aggiunta[10];
   int risposta;
   printf("-------------PROVA INUTILE PERDITEMPO ------------\n\n1 - SOSTITUISCI\n2 - TOGLI\n3 - AGGIUNGI\n4 - INVERTI\n\n> ");   
   opzioni = getch();
   switch (tolower(opzioni))
   {
       case '1':
       {
           pulisci_e_printa();
           gets(stringa1);
           printf("Inserisci la parola da cercare e......:\n\n");
           scanf("%s",cercare);
           printf(".....sostituire con:\n\n");
           scanf("%s",sostituire);
           printf("La nuova frase e': %s\n\n",subst_string(stringa1,cercare,sostituire));
           system("pause");
           break;  
       }
       case '2':
       {
            pulisci_e_printa();
            *niente = "";
            gets(stringa1);
            printf("Inserisci la parola da eliminare:\n\n");
            scanf("%s",cercare);
            printf("La nuova frase e': %s\n\n",subst_string(stringa1,cercare,*niente));
            system("pause");
            break;
       }    
       case '3':
       {
           pulisci_e_printa();
           fgets(stringa1, sizeof(stringa1), stdin);
           stringa1[strlen(stringa1)-1] = '\0';
           printf("\n\nInserisci parola da aggiungere:\n\n");
           fgets(aggiunta, sizeof(aggiunta), stdin);
           aggiunta[strlen(aggiunta)-1] = '\0';
           strcpy(newstringa, stringa1);
           strcat(newstringa, " ");
           strcat(newstringa, aggiunta);
           printf("\n\nLa nuova frase: %s\n\n", newstringa);
           system("pause");    
           break;
       }    
       case '4':
       {
           pulisci_e_printa();
           gets(stringa1);
           reverse(stringa1);
           printf("\n\nLa nuova frase: %s\n\n", stringa1);
           system("pause"); 
           break;   
       }    
       default:
       {
           printf("SEI IDIOTA DIGITA UNO DEI CASI PRESENTI!!!\n\n\n");
           break;
       }    
   }
   return 0;
}         


char *subst_string (char *str, char *search, char *subst)
{
    size_t len_search, len_subst, len_r, len_s;
    size_t size = 0, capacity = 0, expand = 256;
    char *start = str, *p, *output = NULL, *output_new;

    len_search = strlen (search);
    len_subst = strlen (subst);

    do {
        p = strstr (start, search);

        if (p != NULL)
        {
            len_r = p - start;
            len_s = len_subst;
        }
        else
        {
            len_r = strlen (start);
            len_s = 0;
        }

        if ((size + len_r + len_s + 1) > capacity)
        {
            capacity = size + len_r + len_s + 1 + expand;
            output_new = (char*) realloc (output, capacity);

            if (output_new == NULL)
            {
                free (output);
                return NULL;
            }

            output = output_new;
        }

        strncpy (&output[size], start, len_r);
        size += len_r;
        strncpy (&output[size], subst, len_s);
        size += len_s;

        start += len_r + len_search;
    } while (p != NULL);

    output[size] = '\0';

    output_new = (char*) realloc (output, size+1);

    if (output_new != NULL)
        output = output_new;

    return output;
}
void pulisci_e_printa(void)
{
    system("cls");
    printf("Inserisci la stringa da modificare:\n\n");
}    

void reverse(char s[]) 
{ 
  int c, i, j; 
    
  for (i=0, j=strlen(s)-1; i < j;i++, j--) 
  { 
    c = s[i]; 
    s[i] = s [j]; 
    s[j] = c; 
  } 
}
ora che ho esportato le funzioni e integrato la funzione do per fare mille modifiche alla frase originale fino a che non decido di uscire tramite lo 0 e 1. Potreste aiutarmi a correggere l'errore e come faccio a restituire il risultato elaborato in stringa1 per una nuova operazione da scegliere tra le 4 funzioni

Mi spiego:

Scrivo frase: Oggi è una bella giornata

Voglio sostituire: bella con brutta

Nuova frase: Oggi è una brutta giornata

Non voglio uscire

ECCO QUI vedo: Oggi è una bella giornata
e non Oggi è una brutta giornata
e così se era rimasto....

Voglio aggiungere (tra l'altro non funziona nel caso do while o funzion esterne da vedere perchè).

e così via fino alla fine o meglio alla scelta dell'utente tra l'uscita e non. Ok? Grazie cordiali saluti

// Questa quella "errata" ////

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>

char *subst_string (char *, char *, char *);
char *sostituiscoparola(char *);
char *tolgoparola(char *);
char *aggiungoparola(char *stringaloc3);
char *invertofrase(char *stringaloc4);

void pulisci_e_printa(void);
void reverse(char s[]); 

int main()
{ 
   char stringa1[50],opzioni;
   int comando,exit;
   pulisci_e_printa();
   gets(stringa1);
   do{
       printf("La frase e': %s\n\n1 - SOSTITUI'\n2 - TOGLIE'\n3 - AGGIUNGE'\n4 - ROVESCIA'\n\n> ",stringa1);   
       opzioni = getch();
       switch (tolower(opzioni))
       {
           case '1':
               sostituiscoparola(stringa1);
               break;  
           case '2':
               tolgoparola(stringa1);
               break;
           case '3':
               aggiungoparola(stringa1);   
               break; 
           case '4':
               invertofrase(stringa1);
               break;      
           default:
               printf("SEI IDIOTA DIGITA UNO DEI CASI PRESENTI!!!\n\n\n");
               system("pause"); 
           break;   
       }
       printf("\n\nVuoi uscire?\n\nPremi 1 se USCIRE\n\nPremi 0 se CONTINUARE AD USARE IL PROGRAMMA\n\n");
       scanf("%d",&comando);
       if (comando == 1){
           exit = 1;
           printf("STO USCENDO DAL PROGRAMMA!\n\nGrazie per aver partecipato allo stupido programma inutile di una feccia");
           sleep(2000);
       }
       else
          exit = 0;             
   }while(exit == 0);    
   return 0;
}         

char *sostituiscoparola(char *stringaloc1)
{
    char cercare[10],sostituire[10];
    printf("Inserisci la parola da cercare e......:\n\n");
    scanf("%s",cercare);
    printf(".....sostituire con:\n\n");
    scanf("%s",sostituire);
    printf("La nuova frase e': %s\n\n",subst_string(stringaloc1,cercare,sostituire));
    system("pause"); 
}    
char *tolgoparola(char *stringaloc2)
{
    char cercare[10],*niente[1];
    *niente = "";
    printf("Inserisci la parola da eliminare:\n\n");
    scanf("%s",cercare);
    printf("La nuova frase e': %s\n\n",subst_string(stringaloc2,cercare,*niente));
    system("pause"); 
} 
char *aggiungoparola(char *stringaloc3)
{
    char newstringa[100],aggiunta[10];
    fgets(stringaloc3, sizeof(stringaloc3), stdin);
    stringaloc3[strlen(stringaloc3)-1] = '\0';
    printf("\n\nInserisci parola da aggiungere:\n\n");
    fgets(aggiunta, sizeof(aggiunta), stdin);
    aggiunta[strlen(aggiunta)-1] = '\0';
    strcpy(newstringa, stringaloc3);
    strcat(newstringa, " ");
    strcat(newstringa, aggiunta);
    printf("\n\nLa nuova frase: %s\n\n", newstringa);
    system("pause"); 
}    
char *invertofrase(char *stringaloc4)
{
    reverse(stringaloc4);
    printf("\n\nLa nuova frase: %s\n\n",stringaloc4);
    system("pause"); 
}    
char *subst_string (char *str, char *search, char *subst)
{
    size_t len_search, len_subst, len_r, len_s;
    size_t size = 0, capacity = 0, expand = 256;
    char *start = str, *p, *output = NULL, *output_new;

    len_search = strlen (search);
    len_subst = strlen (subst);

    do {
        p = strstr (start, search);

        if (p != NULL)
        {
            len_r = p - start;
            len_s = len_subst;
        }
        else
        {
            len_r = strlen (start);
            len_s = 0;
        }

        if ((size + len_r + len_s + 1) > capacity)
        {
            capacity = size + len_r + len_s + 1 + expand;
            output_new = (char*) realloc (output, capacity);

            if (output_new == NULL)
            {
                free (output);
                return NULL;
            }

            output = output_new;
        }

        strncpy (&output[size], start, len_r);
        size += len_r;
        strncpy (&output[size], subst, len_s);
        size += len_s;

        start += len_r + len_search;
    } while (p != NULL);

    output[size] = '\0';

    output_new = (char*) realloc (output, size+1);

    if (output_new != NULL)
        output = output_new;

    return output;
}
void pulisci_e_printa(void)
{
    system("cls");
    printf("Inserisci la stringa da modificare:\n\n");
}    

void reverse(char s[]) 
{ 
  int c, i, j; 
    
  for (i=0, j=strlen(s)-1; i < j;i++, j--) 
  { 
    c = s[i]; 
    s[i] = s [j]; 
    s[j] = c; 
  } 
}
]

il codice è questo però il problema è che se io modifico la prima volta la frase va bene ma
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
SpaceX realizzerà uno smartphone ...
Fire TV Omni QLED, Serie 2 e Serie 4: le...
Con l'Event Horizon Telescope si sta stu...
Milano Cortina 2026, dietro le quinte de...
IA e automazione: le armi per industrial...
SpaceX sta per rimuovere il braccio di a...
Sony a ISE 2026: display, soluzioni imme...
Sony punta sull'IA: brevettati i podcast...
Logitech G Astro A50, le cuffie gaming d...
Lenovo a ISE 2026: smart collaboration, ...
GeForce RTX 5000 SUPER cancellate e RTX ...
Substack conferma violazione: esposti da...
L'IA costa caro. Oracle punta a raccogli...
OpenAI lancia Frontier: il cervello cent...
Questo robot aspirapolvere lava sempre c...
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: 05:48.


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