Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
OnePlus 15 nasce per alzare l'asticella delle prestazioni e del gaming mobile. Ma non solo, visto che integra un display LTPO 1,5K a 165 Hz, OxygenOS 16 con funzioni AI integrate e un comparto foto con tre moduli da 50 MP al posteriore. La batteria da 7.300 mAh con SUPERVOOC 120 W e AIRVOOC 50 W è la ciliegina sulla torta per uno smartphone che promette di offrire un'esperienza d'uso senza alcun compromesso
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
Vediamo come si comporta il Ryzen 5 7500X3D, nuovo processore di casa AMD che fonde 6 core Zen 4 con la tecnologia 3D V-Cache, particolarmente utile in scenari come il gaming. Annunciato a un prezzo di listino di 279€, il nuovo arrivato sarà in grado di diventare un riferimento per i sistemi budget? Ecco cosa ne pensiamo.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-05-2005, 19:07   #1
darkmax
Senior Member
 
L'Avatar di darkmax
 
Iscritto dal: Nov 2001
Città: Torino
Messaggi: 3092
[C] Programma cerca e cancella!!

Ho fatto un programma in c che chiede una stringa, poi la sottostringa da cercare in esso e poi un'altra sottostringa che sostituisce quella di prima..

Ora però devo fare un programma che.. presa una stringa ad esempio "camino" e poi una sottostringa, ad esempio "ami", me la cancelli.. dando come risultato "cno".. come si modifica il codice?

#include <stdio.h>
#define L1 10
#define L2 10
#define SORG 30
#define VECCHIA 10
#define NUOVA 10
#define DEST 30

typedef enum{FALSO,VERO} bool;

char* sottostringa(char* p, char* s);
bool SostPrimaOcc(char* vecchia, char* nuova, char* sorg, char* dest);

int main()
{
char* ris;
char vecchia[VECCHIA], nuova[NUOVA], sorg[SORG], dest[DEST];
char stringa[L1], pattern[L2];
bool ris1;

int scelta = -1;

while (scelta != 0)
{
printf("1) sottostringa\n2) SostPrimaOcc\n0) Esci\n\nScelta: ");
scanf("%d",&scelta);

switch(scelta)
{
case 1: printf("Inserisci la stringa in cui cercare (max 10 caratteri): ");
scanf("%s",stringa);

printf("Inserisci la sottostringa da cercare (max 10 caratteri): ");
scanf("%s",pattern);

ris = sottostringa(pattern, stringa);

if (ris == NULL)
{
printf("Non ho trovato %s in %s\n\n", pattern, stringa);
}
else
{
printf("Ho trovato %s in %s\n\n", pattern, stringa);
}
break;

case 2: printf("Inserisci la stringa in cui cercare (max 30 caratteri): ");
scanf("%s",sorg);

printf("Inserisci la sottostringa da cercare (max 10 caratteri): ");
scanf("%s",vecchia);

printf("Inserisci la sottostringa da sostituire (max 10 caratteri): ");
scanf("%s",nuova);

ris1 = SostPrimaOcc (vecchia, nuova, sorg, dest);

if (ris1 == FALSO)
{
printf("Non ho trovato %s in %s. La stringa e' rimasta: %s\n\n", vecchia, sorg, dest);
}
else
{
printf("Ho trovato %s in %s. La nuova stringa e': %s\n\n", vecchia, sorg, dest);
}
break;

case 0: break;
default : printf("Scelta non valida!\n\n");
break;
}
}

getch();
}

char* sottostringa (char* p, char* s)
{
char* i = p;
char* j = s;
int ris=0;
int cont=0;
char* found=NULL;

char* k = p;

while (*k != '\0')
{
cont++;
k++;
}

while (*j != '\0')
{
while (*i != '\0')
{
if (*i == *(j+ris))
{
ris++;
if (found == NULL)
found = j;
}
else
break;
i++;
}

if (ris == cont)
{
return found;
}
else
{
ris = 0;
found = NULL;
i = p;
}
j++;
}
return NULL;
}

bool SostPrimaOcc (char* vecchia, char* nuova, char* sorg, char* dest)
{
char* ris=sottostringa(vecchia,sorg);
int j;
char* i = sorg;

if (ris != NULL)
{
int cont=0;

char* k = vecchia;

while (*k != '\0')
{
cont++;
k++;
}

k = nuova;
int cont1=0;

while (*k != '\0')
{
cont1++;
k++;
}

k = dest;

while (i != ris)
{
*k = *i;
k++;
i++;
}

for (j = 0; j < cont1; j++)
{
*k = *nuova;
k++;
nuova++;
}

i += cont;

while (*i != '\0')
{
*k = *i;
k++;
i++;
}

*k='\0';

return VERO;
}
else
{
char* dest1 = dest;

while (*i != '\0')
{
*dest1 = *i;
i++;
dest1++;
}
*dest1='\0';
}

return FALSO;
}

Help vi prego..
darkmax è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 19:09   #2
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
se non indenti io non mi metto a guardare il codice

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 19:15   #3
darkmax
Senior Member
 
L'Avatar di darkmax
 
Iscritto dal: Nov 2001
Città: Torino
Messaggi: 3092
ho fatto copia e incolla dal dev c++.. ma come mai non lo indenta?
darkmax è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 19:42   #4
darkmax
Senior Member
 
L'Avatar di darkmax
 
Iscritto dal: Nov 2001
Città: Torino
Messaggi: 3092
quando scrivo il messaggio me lo vede come indentato.. come mai qui no?
darkmax è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 19:51   #5
Gica78R
Senior Member
 
L'Avatar di Gica78R
 
Iscritto dal: Mar 2005
Messaggi: 1653
Quote:
Originariamente inviato da darkmax
quando scrivo il messaggio me lo vede come indentato.. come mai qui no?
Prova a mettere il codice tra appositi tag 'CODE':

Codice:
int main()
{
 if (metti_i_tag)
    indenta=1;
 else
    indenta=0;
 return 0;
}
Per farlo basta cliccare sul cancelletto (#) che trovi nel menu nella finestra dell'editor del messaggio


Ciao
__________________
gica78r@ncc-1701:~$ tar -c
tar: Codardamente mi rifiuto di creare un archivio vuoto
Gica78R è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2005, 20:08   #6
darkmax
Senior Member
 
L'Avatar di darkmax
 
Iscritto dal: Nov 2001
Città: Torino
Messaggi: 3092
Codice:
#include <stdio.h>
#define L1  10
#define L2  10
#define SORG  30
#define VECCHIA  10
#define NUOVA  10
#define DEST  30

typedef enum{FALSO,VERO} bool;

char* sottostringa(char* p, char* s);
bool SostPrimaOcc(char* vecchia, char* nuova, char* sorg, char* dest);

int main()
{
    char* ris;
    char vecchia[VECCHIA], nuova[NUOVA], sorg[SORG], dest[DEST];
    char stringa[L1], pattern[L2];
    bool ris1;

    int scelta = -1;
    
    while (scelta != 0)
    {
        printf("1) sottostringa\n2) SostPrimaOcc\n0) Esci\n\nScelta: ");
        scanf("%d",&scelta);
        
        switch(scelta)
        {
            case 1: printf("Inserisci la stringa in cui cercare (max 10 caratteri): ");
                    scanf("%s",stringa);
            
                    printf("Inserisci la sottostringa da cercare (max 10 caratteri): ");
                    scanf("%s",pattern);

                    ris = sottostringa(pattern, stringa);
                    
                    if (ris == NULL)
                    {
                        printf("Non ho trovato %s in %s\n\n", pattern, stringa);
                    }
                    else
                    {
                        printf("Ho trovato %s in %s\n\n", pattern, stringa);
                    }
                    break;
                    
            case 2: printf("Inserisci la stringa in cui cercare (max 30 caratteri): ");
                    scanf("%s",sorg);
            
                    printf("Inserisci la sottostringa da cercare (max 10 caratteri): ");
                    scanf("%s",vecchia);
                    
                    printf("Inserisci la sottostringa da sostituire (max 10 caratteri): ");
                    scanf("%s",nuova);
            
                    ris1 = SostPrimaOcc (vecchia, nuova, sorg, dest);
                    
                    if (ris1 == FALSO)
                    {
                        printf("Non ho trovato %s in %s. La stringa e' rimasta: %s\n\n", vecchia, sorg, dest);
                    }
                    else
                    {
                        printf("Ho trovato %s in %s. La nuova stringa e': %s\n\n", vecchia, sorg, dest);
                    }
                    break;
                    
            case 0: break;
            default : printf("Scelta non valida!\n\n");
                      break;
        }
    }
    
    getch();
}

char* sottostringa (char* p, char* s)
{
    char* i = p;
    char* j = s;
    int ris=0;
    int cont=0;
    char* found=NULL;
    
    char* k = p;
    
    while (*k != '\0')
    {
    	cont++;
    	k++;
    }
    
    while (*j != '\0')
    {
    	while (*i != '\0')
    	{
        	if (*i == *(j+ris))
        	{
        		ris++;
        		if (found == NULL)
        			found = j;
        	}
        	else
        		break;
        	i++;
        }
        
        if (ris == cont)
        {
        	return found;
        }
        else
        {
        	ris = 0;
        	found = NULL;
        	i = p;
        }
        j++;
    }
	return NULL;
}

bool SostPrimaOcc (char* vecchia, char* nuova, char* sorg, char* dest)
{
	char* ris=sottostringa(vecchia,sorg);
	int j;
	char* i = sorg;
	
	if (ris != NULL)
	{
		int cont=0;
		
		char* k = vecchia;
		
		while (*k != '\0')
		{
			cont++;
			k++;
		}
		
		k = nuova;
		int cont1=0;
		
		while (*k != '\0')
		{
			cont1++;
			k++;
		}
		
		k = dest;
		
		while (i != ris)
		{
			*k = *i;
			k++;
			i++;
		}
		
		for (j = 0; j < cont1; j++)
		{
			*k = *nuova;
    		k++;
    		nuova++;
    	}
    	
    	i += cont;
    	
    	while (*i != '\0')
    	{
    		*k = *i;
    		k++;
    		i++;
    	}
    	
    	*k='\0';
    	
    	return VERO;
    }
    else
    {
    	char* dest1 = dest;
    	 
    	while (*i != '\0')
    	{
    		*dest1 = *i;
    		i++;
    		dest1++;
    	}
    	*dest1='\0';
    }
    
 	return FALSO;
}
darkmax è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2005, 01:00   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
che casino ragazzo mio, che casino... bastavano 35 righe di codice:
Codice:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main() {
	char s1[0x400], s2[0x400];
	int l1, l2;
	char done = 0;
	int i, max;
	printf("stringa principale: ");
	gets(s1);
	printf("sottostringa da eliminare: ");
	gets(s2);
	l1 = strlen(s1);
	l2 = strlen(s2);
	max = l1 - l2 + 1;
	for (i = 0; i < max; i++) {
		if (!strncmp(s1 + i, s2, l2)) {
			int j;
			for (j = i; j < max; j++) {
				s1[j] = s1[j + l2];
			}
			done = 1;
			break;
		}
	}
	if (done) {
		printf("stringa risultante: %s\n", s1);
	}
	else {
		printf("sottostringa non trovata\n");
	}
	system("pause");
	return 0;
}
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2005, 01:14   #8
darkmax
Senior Member
 
L'Avatar di darkmax
 
Iscritto dal: Nov 2001
Città: Torino
Messaggi: 3092
dammi una mano allora..
darkmax è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2005, 01:43   #9
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
il programma è quello, sta là ed è scritto in C standard
quel programma prende in input due stringhe, cerca la seconda nella prima e se la trova la rimuove, è quello che volevi
sono solo 35 righe di codice, quindi non ci vuole molto a leggerle e capirle
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2005, 10:30   #10
darkmax
Senior Member
 
L'Avatar di darkmax
 
Iscritto dal: Nov 2001
Città: Torino
Messaggi: 3092
Il bello è che devo farlo con i puntatori..
darkmax è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
SONY BRAVIA 8 II e BRAVIA Theatre System 6: il cinema a casa in formato compatto SONY BRAVIA 8 II e BRAVIA Theatre System 6: il c...
KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo KTC H27E6 a 300Hz e 1ms: come i rivali ma a met&...
Grazie ai dati di ESA il calcolo della t...
Rilasciati nuovi video e immagini della ...
Gli astronauti cinesi di Shenzhou-20 son...
Mai così tanti gas serra: il 2025...
Google condannata in Germania: favorito ...
Ubisoft rimanda i risultati finanziari e...
ADATA porta i primi moduli DDR5 CUDIMM 4...
Bob Iger anticipa le novità AI di...
Microsoft Teams 'spierà' i dipend...
Michael Burry chiude Scion e fa di nuovo...
Huawei prepara i nuovi Mate 80: fino a 2...
Una e-Mountain Bike di qualità ma...
Tutte le offerte Amazon Black Friday pi&...
DJI Mini 4K Fly More Combo con 3 batteri...
Crollo di prezzo sui nuovissimi iPhone A...
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: 06:31.


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